Написание скриптов для Blender 2.49 - страница 32
>
> stalkob =
>Tools.addmeshobject(scene,stalkverts,stalkfaces,
> name='stalk')
> stalkob.makeParent([head])
Все, что осталось сделать - нужно сгруппировать зерна и лепестки в отдельных группах (выделено), и затем все части подсолнуха в целом группируются, чтобы было легко ссылаться на него:
> kernelgroup = Blender.Group.New('kernels')
> kernelgroup.objects=kernels
> petalgroup = Blender.Group.New('petals')
> petalgroup.objects=petals
> all = Blender.Group.New('sunflower')
> all.objects=sum([kernels,petals],[head,stalkob])
Функция addmeshduplicate(), используемая в коде, объявлена в модуле Tools следующим способом:
>def addmeshduplicate(scn,me,name=None):
> ob=scn.objects.new(me)
> if name : ob.setName(name)
> scn.objects.active=ob
> me.remDoubles(0.001)
> me.recalcNormals()
> for f in me.faces: f.smooth = 1
> me.update()
> Blender.Window.RedrawAll()
> return ob
Принимая сцену, меш, и имя (необязательное) для объекта, она добавляет новый объект в сцену. Меш-объект принимается как аргумент, и может использоваться снова и снова для создания новых объектов, которые ссылаются на этот же меш.
Вновь созданные объекты становятся автоматически выбранными, но не делаются активными, так что следующий шаг должен сделать вновь-созданный объект активным (выделено в предыдущем коде). Не необходимы, но, возможно, удобны пользователю следующие два действия: обеспечение того, чтобы все нормали граней были единообразно направлены наружу, и удаление всех вершин, которые слились слишком близко вместе. Эти последние два действия можно выполнить только в меше, который вставлен в объект.
Также, для удобства, мы установили атрибут smooth (плавно) для всех граней, чтобы получить более гладкие изображения при рендере. Наконец, мы обновляем (update) список отображения для этого меша и уведомляем всё окно Блендера, что имеется изменение.
Одна из вещей, которую Вы можете заметить - то, что мы разместили семена в специфической спирали. Этот тип спирали, где последующие позиции вдоль спирали расположены идующими с так называемым Золотым сечением, называется спираль Ферма (Fermat's spiral). Такой спиралью получается естественным образом во многих семенных головках, когда цветочки или семена формируются в середине и выталкиваются наружу, в результате получается очень рациональная (плотная) упаковка.
Когда мы увидели, размещение семян также кажется, следует за обоими левым и правым поворотами кривых. Количество этих кривых обычно является парой из последовательности Фибоначчи [ 1 1 2 3 5 8 13 21 ] и отношение такой пары чисел стремится сойтись в Золотом сечении, когда они становятся больше. (В двух иллюстрациях нашей семенной головы внизу мы можем различить 13 спиралей против часовой стрелки и 21 спираль по часовой стрелке.) Фибоначчи изобрёл эту серию в попытке моделирования роста населения кроликов. Больше о подсолнухах (и, возможно, кроликах), можно обнаружить здесь: http://en.wikipedia.org/wiki/Sunflower.
Итог
В этой главе мы увидели, как создавать сложные объекты, и как сделать задачу конфигурирования этих объектов легкой для конечного пользователя, предоставив графический интерфейс, который помнит предыдущие настройки. Мы также увидели, что можно привлечь Блендер, как инструмент командной строки, для автоматизации часто выполняемых задач.
Мы также узнали, как создавать отношение родитель-потомок между объектами и сделали первый шаг в редактировании мешей. В подробностях, мы увидели как:
• Создать конфигурируемый меш-объект
• Разработать графический интерфейс пользователя
• Заставить ваш скрипт сохранять выборы пользователя для многократного использования впоследствии
• Выбирать вершины и грани в меше
• Делать родителем объекта другой объект
• Создавать группы
• Модифицировать меш
• Запускать Блендер с командной строки и рендерить в фоновом режиме
• Обрабатывать параметры командной строки
В следующей главе мы увидим, как можно назначать группы вершин и материалы нашим мешам.
3