Читаем Написание скриптов для Blender 2.49 полностью

Но есть препятствие. Если мы используем Shift + D, вместо Alt + D мы получим одинаковые копии мешей объектов, вместо того чтобы просто воспользоваться ссылкой на первый объект. К тому же, мы ожидаем, что скопировали и остальные атрибуты объекта, такие как материалы, текстуры и IPO. Блендер, по-умолчанию, не дублирует вышеперечисленные категории, копируя только сам объект. Это получится неуклюже, так как изменение IPO первого поршня, к примеру, затронуло бы все остальные.

Мы могли бы сделать остальные копии уникальными впоследствии (нажав на поле количества пользователей этих кривых IPO, например, и подтвердив своё согласие со всплывающим вопросом make single user?), но было бы слишком утомительным повторять это для каждой копии отдельно. 

Лучшим способом будет изменить настройки копирования объектов (Duplicate with object) в панели Edit Methods, как показано на скриншоте выше. Таким образом, кривые IPO, связанные с объектом, будут превращены в уникальные копии при дублировании объекта.

Результат нашей работы, четырехцилиндровый двигатель, передающий движение от ведущего вала к поршням доступен как engine001.blend. Изображение анимации доступной по адресу http://vimeo.com/7170769, показано на следующем скриншоте.

<p>Добавление простых ограничений</p>

Ограничения (Constraints) могут быть применены к объектам и костям. В обоих случаях ограничение добавляется вызовом метода append() атрибута constraints. Наш следующий пример покажет, как мы можем ограничить движение стрелок часов из rigged clock (Глава 3, Группы вершин и материалы) для вращения вокруг оси Z. Код, определяющий функции для достижения поставленной задачи начинается с двух определений import, которые уменьшат длину кода:

from Blender.Constraint import Type

from Blender.Constraint import Settings

Функция принимает два аргумента: obbones, ссылка на объект Блендера, данные которого являются арматурой (то есть, не объект арматуры непосредственно) и  bone, название кости, которую мы будем ограничивать. Важно понимать, что ограничение, которое мы связываем с костью, является не свойством арматуры, а позой объекта, содержащего арматуру.  Множество объектов могут обращаться к одной и той же  арматуре, и все позы будут связаны с объектами, таким образом различные объекты, обращающиеся к той же самой арматуре, смогут принимать различные позы.

Итак, стартуя, функция сначала получает позу, а затем ссылку на кость, которую мы хотим ограничить. Выделенная строка показывает, как привязать ограничение (это аналогично тому, как если бы мы связывали ограничение с объектом Блендера вместо кости):

def zrotonly(obbones,bone):

    poseob = obbones.getPose()

    bigarmpose = poseob.bones[bone]

    c=bigarmpose.constraints.append(Type.LIMITROT)

     c[Settings.LIMIT]=Settings.LIMIT_XROT|

                          Settings.LIMIT_YROT

    c[Settings.XMIN]=0.0

    c[Settings.XMAX]=0.0

    c[Settings.YMIN]=0.0

    c[Settings.YMAX]=0.0

    poseob.update()

Вновь присоединенное ограничение сохраняется в переменную c и в последующих  строках видно, что различные атрибуты ограничения, становятся доступны подобно словарю. Сначала мы настраиваем атрибут LIMIT (это битовая маска), для ограничения вращения по осям X и Y. Далее, мы устанавливаем минимальное и максимальное значение вращения вокруг этих осей равным 0.0, таким образом мы останавливаем любое движение. Например, в риггинге реалистичного скелета животного этими значениями можно задать пределы величин вращения к значениям, сопоставимыми с реальными соединениями между костями. И в конце, чтобы сделать изменения pose (позы) видимыми, мы обращаемся к методу update().

<p>Определяем сложные ограничения</p>

Там, где pydrivers предоставляют нам возможность управлять изменением одной IPO-кривой посредством изменения другой, PyConstraints (питон-ограничения) предоставляют нам способы задавать пределы изменения свойств объекта.

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

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных