Чтение онлайн

на главную - закладки

Жанры

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Larsson Thomas

Шрифт:

#----------------------------------------------------------

# File __init__.py

#----------------------------------------------------------

# Addon info

bl_info = {

"name": "Multifile",

'author': 'Thomas Larsson',

"location": "View3D > UI panel > Add meshes",

"category": "3D View"

}

#
Для поддержки правильной перезагрузки, пробуем обратиться

# к переменной пакета, если она есть, перезагрузить всё

if "bpy" in locals:

import imp imp.reload(mycube)

imp.reload(mysphere)

imp.reload(mycylinder)

print("Reloaded multifiles")

else:

from . import mycube, mysphere, mycylinder

print("Imported multifiles")

import bpy

from bpy.props import *

#

# class AddMeshPanel(bpy.types.Panel):

#

class AddMeshPanel(bpy.types.Panel):

bl_label = "Add meshes"

bl_space_type = "VIEW_3D"

bl_region_type = "UI"

def draw(self, context):

self.layout.operator("multifile.add",

text="Add cube").mesh = "cube"

self.layout.operator("multifile.add",

text="Add cylinder").mesh = "cylinder"

self.layout.operator("multifile.add",

text="Add sphere").mesh = "sphere"

#

# class OBJECT_OT_AddButton(bpy.types.Operator):

#

class OBJECT_OT_AddButton(bpy.types.Operator):

bl_idname = "multifile.add"

bl_label = "Add"

mesh = bpy.props.StringProperty

def execute(self, context):

if self.mesh == "cube":

mycube.makeMesh(-8)

elif self.mesh == "cylinder":

mycylinder.makeMesh(-5)

elif self.mesh == "sphere":

mysphere.makeMesh(-2)

return{'FINISHED'}

#

# Регистрация

#

def register:

bpy.utils.register_module(__name__)

def unregister:

bpy.utils.unregister_module(__name__)

if __name__ == "__main__":

register

Простой
импортёр и экспортёр obj-файлов

Формат OBJ часто используется для обмена данными меша между различными приложениями. Первоначально изобретеный для Wavefront Maya, он стал отраслевым стандартом. Это простой ASCII-формат, который содержит строки следующего вида:

v x y z

Координаты вершин как

(x, y, z)

vt u v

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

(u, v)

f v1 v2 ... vn

Грань с n углами, в вершинах

v1, v2, ... vn
. Для мешей без координат UV.

f v1/vt1 v2/vt2 ... vn/vtn

Грани с n углами. Углы — это вершины

v1, v2, ... vn
в 3D-пространстве и
vt1, vt2, ... vtn
в текстурном пространстве.

Больше конструкций, например, для настройки материала или групп граней, имеются в полноценном экспортёре-импортёре OBJ-формата.

Есть две вещи, которые надо принять во внимание. Во-первых, большинство приложений (насколько мне известно, все, кроме Блендера) используют соглашение, что ось

Y
указывает вверх, в то время как Блендер использует ось
Z
для направления вверх. Во-вторых, Майя начинает подсчет вершин с
1
, тогда как Блендер начинает отсчет от
0
. Это означает, что углы граней на самом деле расположены в вершинах
v1– 1, v2– 1, ... vn– 1
в 3D-пространстве и в
vt1– 1, vt2– 1, ... vtn– 1
в пространстве текстур.

Простой экспортёр-импортёр OBJ-файлов — это пакет Питона, который состоит из трех файлов: два файла, которые фактически выполняют работу экспорта/импорта, и

__init__.py
, который делает каталог пакетом.

Простой экспорт OBJ-файлов

Этот скрипт экспортирует выбранный меш как OBJ-файл.

#----------------------------------------------------------

# File export_simple_obj.py

# Простой OBJ-экспортёр, который записывает только вершины, грани и текстурные вершины

Поделиться:
Популярные книги

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Попаданка 3

Ахминеева Нина
3. Двойная звезда
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка 3

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

Адвокат

Константинов Андрей Дмитриевич
1. Бандитский Петербург
Детективы:
боевики
8.00
рейтинг книги
Адвокат

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Локки 5. Потомок бога

Решетов Евгений Валерьевич
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Локки 5. Потомок бога

На границе империй. Том 10. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 4