Michel Anders - Написание скриптов для Blender 2.49

Тут можно читать онлайн Michel Anders - Написание скриптов для Blender 2.49 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Программы. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Написание скриптов для Blender 2.49
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.38/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Michel Anders - Написание скриптов для Blender 2.49 краткое содержание

Написание скриптов для Blender 2.49 - описание и краткое содержание, автор Michel Anders, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Расширьте мощность и гибкость Блендера с помощью Питона: высокоуровневого, легкого для изучения скриптового языка

Написание скриптов для Blender 2.49 - читать онлайн бесплатно полную версию (весь текст целиком)

Написание скриптов для Blender 2.49 - читать книгу онлайн бесплатно, автор Michel Anders
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

bighand.head = bigarm.tail

bighand.tail = vec(0.0,1.50,0.57)

bighand.parent = bigarm

ar.bones['BigHand'] = bighand

… <���аналогичный код для маленькой руки опущен> …

ar.update()

obbones.makeParent([ob])

Важные моменты выделены. Сначала, мы отключаем envelopes и свойства vertexGroups у объекта арматуры. Это может показаться странным, но эти свойства являются остатками от того времени, когда арматура не была модификатором, приложенным к мешу, а работала через родительское (parented) влияние на Меш-объект (по крайней мере, насколько Я могу судить, доступная документация немного невнятна в этом месте). Мы определяем, какое влияние использовать, устанавливая свойства в модификаторе арматуры .

После связывания арматурного модификатора с нашим Меш-объектом, мы создадим нашу арматуру кость за костью. Прежде, чем мы добавим какие-либо кости в арматуру, мы должны вызвать её метод makeEditable() . Заметьте, что этот режим редактирования для арматуротличен от режима редактирования для других объектов, которые можно задавать с помощью функции Blender.Window.editMode() ! Как только мы закончим, мы возвращаемся в нормальный режим снова, вызывая метод update() .

Вы можете обратить внимание, что при создании нашей арматуры мы создём экземпляры объектов Editbone . Вне режима редактирования эти те же кости ссылаются на объекты типа Bone. Оба ссылаются на одну и ту же кость, но предлагают различную функциональность и атрибуты, подходящие для режима редактирования или для режима объектов . Для того, чтобы снабдить нас тем же подходом, Блендер также предоставляет объекты PoseBone для манипуляции костями в режиме Позы.

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

Кости в составе арматуры индексируются их именем. Если свойство модификатора арматуры VGROUPS установлено, имя кости должно быть идентично имени группы вершин, на которую она влияет.

Последняя строка кода нашего примера также важна; необходимо сделать арматуру родителем Меш-объекта. Это может показаться излишним в ситуациях, где арматура и меш остаются в одном и том же месте, и перемешаются только отдельные кости в арматуре; но если не сделать этого, это приведёт к неустойчивому отображению меша при интерактивном изменении позы (Вы должны переводить меш в режим редактирования и обратно, например, чтобы видеть эффект от позы на арматуре, который полностью непригоден для работы). Результат нашей оснастки будет выглядеть похожим на это (мы установили режим отображения арматуры в x-ray, чтобы сделать её видимой через меш):

Отрендеренный результат выглядит так Мы могли бы захотеть ограничить движение - фото 46

Отрендеренный результат выглядит так:

Мы могли бы захотеть ограничить движение отдельных костей до точных вращений - фото 47

Мы могли бы захотеть ограничить движение отдельных костей до точных вращений вокруг оси z, и это можно сделать добавлением ограничений ( constraints ). Мы столкнемся с ограничениями в следующем разделе.

Get a bit of backbone boy!

Всё, что мы узнали уже об остнастке, может быть применено также к creepycrawlies.py . Если мы хотим расширить функциональность сгенерированной модели, мы можем соединить модификатор арматуры со сгенерированным мешем. Мы также создадим объект арматуры с подходящим набором костей.

Наша задача уже облегчена, потому что мы уже сгруппировали вершины частей тела в модуле mymesh, так что связывание их с группой вершин и соответствующей костью тривиально. Не таким тривиальным будет создание самих костей, так как их может быть много, и их нужно разместить и соединить правильным способом.

Давайте посмотрим на то, как могли бы быть осуществлены некоторые существенные элементы (полный код смотрите в creepycrawlies.py). Сначала мы должны создать арматуру и сделать её редактируемой для добавления костей:

ar = Blender.Armature.New('BugBones')

ar.autoIK = True

obbones = scn.objects.new(ar)

ar.makeEditable()

Мы можем также задать любые атрибуты, которые изменяют поведение арматуры или способ её отображения. Здесь мы просто включаем свойство autoIK, так как это сделает манипуляции хвостом нашего создания, возможно очень длинным, намного проще для аниматора.

Следующий шаг - это создание костей для каждого набора вершин. Список vgroup в следующем коде содержит кортежи ( vg,vlist,parent,connected ), где vg - имя группы вершин а vlist - список индексов вершин, принадлежащих этой группе. Каждая кость, которую мы создаем, может иметь родителя и может физически быть соединена с родителем. Эти условия задаются частями кортежа parent (родитель) и connected (соединён):

for vg,vlist,parent,connected in vgroup:

bone = Blender.Armature.Editbone()

bb = bounding_box([verts[i] for i in vlist])

Для каждой кости, которую мы создаем, мы вычисляем габаритный ящик (bounding box) всех вершин в группе, на которые эта кость будет влиять. Дальше мы должны разместить кость. При способе, которым мы настраивали наше создание, все сегменты его тела вытягивались вдоль оси y, за исключением крыльев (wing) и ног (leg). Они вытягивались вдоль оси x. Мы сначала проверяем этот факт, и соответственно устанавливаем переменную axis (ось):

axis=1

if vg.startswith('wing') or vg.startswith('leg'):

axis = 0

Кости в составе арматуры индексируются по имени и позиции концов костей, сохраненных в их атрибутах head (голова) и tail (конец) соответственно. Так, если у нас есть родительская кость, и мы хотим определить её среднее значение координаты y, мы можем вычислить это следующим способом:

if parent != None :

parenty = (ar.bones[parent].head[1] +

ar.bones[parent].tail[1])/2.0

Мы вычисляем эту позицию, поскольку такие части как, например, ноги и крылья имеют родительские кости (то есть, они перемещаются вместе с родительской костью), но не подсоединены головой к хвосту. Мы разместим эти кости, начиная в центре родительской кости, и для этого нам нужна позиция родителя по y. Кости сегментов, лежащих вдоль оси y, сами позиционируются вдоль оси y, и, таким образом, имеют нулевые координаты x и z. Координаты x и z ног и сегментов крыльев берутся из их габаритных ящиков. Если кость подсоединена (connected), мы просто устанавливаем позицию её головы в копию позиции хвоста родителя (выделено ниже).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Michel Anders читать все книги автора по порядку

Michel Anders - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Написание скриптов для Blender 2.49 отзывы


Отзывы читателей о книге Написание скриптов для Blender 2.49, автор: Michel Anders. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x