Аддон для экспорта

Главная Форумы Python и дополнения Аддон для экспорта

В этой теме 3 ответа, 2 участника, последнее обновление Артем Слаква Артем Слаква 1 месяц, 1 неделя назад.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #3209

    Mihon
    Участник

    Здравствуйте. Собрался написать скрипт для экспорта объектов из блендера в обычный текстовый файл.

    import bpy
    
    f = open("./Объекты.txt", "w")
    objects = bpy.context.visible_objects
    for obj in objects:
       if obj.type == 'MESH':
    
          f.write("\n//obj: %s %s" % (obj.name, "\n"))
          pos = obj.location
          mesh = bpy.data.meshes[ obj.name ]
          
          print(obj.matrix_local)
          f.write("\nvertices\n")
          for vertex in mesh.vertices:
             vc = obj.matrix_world * vertex.co
             f.write("%9.6f %9.6f %9.6f\n" % (vc.x, vc.y, vc.z))
          f.write("\nnormals\n")
          for vertex in mesh.vertices:
             no = obj.matrix_world * vertex.normal
             f.write("%9.6f %9.6f %9.6f\n" % (no.x, no.y, no.z))
    
             
    f.close()

    Если всё правильно, то в файл должны сохранятся меши и нормали объектов. Но помимо этого мне нужно записать текстурные координаты, пути к файлам текстур и свойства материалов. Как это можно сделать с помощью питоновского скрипта?

    #3211
    Артем Слаква
    Артем Слаква
    Хранитель

    Текстурные координаты:

    bpy.context.object.active_material.texture_slots[0].texture_coords

    Пути к файлам текстур:

    bpy.data.images["имя текстуры"].filepath

    Ну а свойств материалов много… Вот аж сколько:
    http://www.blender.org/documentation/blender_python_api_2_69_10/bpy.types.Material.html?highlight=materials

    #3213

    Mihon
    Участник

    Если я не ошибаюсь, свойство active_material это материал выделенного объекта или выделенной грани этого объекта. А как же тогда остальные материалы, если они будут, к ним ведь тоже могут быть привязаны текстуры, как их тогда прочитать?

    #3214
    Артем Слаква
    Артем Слаква
    Хранитель

    Все верно говорите! Наверное нужно перебрать все объекты в сцене, а потом подставляя имя объекта (или его идентификатор) вытаскивать все материалы.

    Хотя я почти уверен, что можно вытащить все материалы без привязки к объектам. Ведь при импортировании в сцену одних материалов из другого blend-файла такая функция доступна. Но в Вашем случае просто набор материалов без привязки к объекту не нужен, поэтому нужно явно указать, какой материал какому объекту принадлежит.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)

Для ответа в этой теме необходимо авторизоваться.


О сайте

На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.

Контакты

Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:

Email:
info@blender3d.com.ua

Следите за нами

Подписывайтесь на наши страницы в социальных сетях.

На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.

Помимо уроков по Blender, Вы сможете найти готовые 3D-модели и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.