За исключением всех связанных свойств, единичная вершина является в основном точкой в 3D-пространстве. В объекте Blender.Mesh любое количество вершин организовано в списке объектов Blender.Mesh.MVert . В полученном меш-объекте me этот список может быть доступен как me.verts . Реброявляется линией, соединяющей две вершины в Блендере и представлено объектом Blender.Mesh.MEdge . Его основные свойства - это v1 и v2 , которые являются ссылками на объекты MVert . Список рёбер в Меш-объекте может быть доступен как me.edges .
Объект грани MFace похож на ребро, в основном это список ссылок на вершины, которые определяют его. Если у нас есть MFace -объект face, этот список может быть доступен как face.verts .
Эта путаница объектов, содержащих другие объекты, может вызвать неразбериху, так что держите предыдущую диаграмму в уме, и давайте посмотрим на некоторый пример кода, чтобы разъяснить это. Мы определим куб. Куб состоит из восьми вершин, связанных двенадцатью рёбрами. Восемь вершин также определяют шесть сторон (или граней) куба.( corners переводится как углы, sides — стороны — прим. пер. )
from Blender import Mesh,Scene
corners=[ (-1,-1,-1), (1,-1,-1), (1,1,-1), (-1,1,-1),
(-1,-1, 1), (1,-1, 1), (1,1, 1), (-1,1,1) ]
sides= [ (0,1,2,3), (4,5,6,7), (0,1,5,4), (1,2,6,5),
(2,3,7,6), (3,0,4,7) ]
me = Mesh.New('Cube')
me.verts.extend(corners)
me.faces.extend(sides)
scn = Scene.GetCurrent()
ob = scn.objects.new(me, 'Cube')
Window.RedrawAll()
Мы начинаем с определения списка углов. Каждый из восьми углов представлен кортежем трех чисел - это координаты x, y, и z. Затем мы определяем список кортежей, задающих грани куба. Стороны куба являются квадратами, так что каждый кортеж содержит четыре целых - каждое целое является индексом в списке углов. Важно получить эти индексы в правильном порядке: если мы захотим указать первую сторону как (0,1,3,2), мы получим грань, искривленную, как галстук-бабочка.
Теперь мы можем определить Меш-объект и назвать его Cube (выделенная часть в предыдущем коде). Как отмечено раньше, вершины Меш-объекта доступны как список с именем verts . Он имеет метод extend() , который может взять список кортежей, представляющих позиции вершин, чтобы определить дополнительные объекты MVert в нашем Меше.
Точно так же мы можем добавить дополнительные грани к списку граней faces Меш-объекта, вызывая его метод extend() со списком кортежей. Поскольку все рёбра куба являются рёбрами граней, нет необходимости добавлять какие-либо рёбра отдельно. Это произойдёт автоматически, когда мы применяем extend() к списку граней.
Меш-объект, который мы определили, теперь можно вставить в объект Блендера, который может быть добавлен к активной сцене. Заметьте, что вполне допустимо иметь Меш-объект и Объект Блендера с одинаковым именем ( Cube в данном случае), поскольку различные типы объектов в Блендере имеют отдельные пространства имён. В графическом интерфейсе пользователя Блендера имена всегда имеют двухбуквенный префикс, чтобы различать их. (например, LA для лампы, ME для меша, или OB для объекта Блендера)
При создании Меш-объекта много внимания нужно уделять всем добавляемым вершинам, рёбрам и граням, и правильно их нумеровать. Это только вершина айсберга при создании мешей. В Главе 2, Создание и Редактирование Объектов , мы увидим, что прячется под водой.
Распространение скриптов
В предыдущих секциях мы видели, что для того, чтобы внедрить наш скрипт в систему меню и систему помощи Блендера, мы должны расположить скрипт в каталоге .blender\scripts . Полностью интегрированный скрипт может быть большим преимуществом, но этот метод имеет очевидный недостаток: человек, который хочет использовать этот скрипт должен разместить его в правильном каталоге. Это может быть проблемой, если этот человек не знает, где расположен этот каталог или не имеет разрешения устанавливать скрипты в этом каталоге. Эту последнюю проблему можно преодолеть, настроив альтернативный каталог скриптов в Пользовательских Настройках , но не каждый может быть настолько технически подкованным.
Жизнеспособной альтернативой этому может быть распространение скриптов в виде текста внутри .blend файла. .blend файл может быть сохранен со скриптом, ясно видимым в главном окне, и одна из первых строк комментария скрипта, вероятно, может выглядеть так “Press ALT-P to start this script" (нажмите ALT-P для запуска скрипта). Этим способом скрипт сможет использовать любой, кто знает, как открывать .blend файл.
Читать дальше