Книга: Написание скриптов для Blender 2.49
Добавление простых ограничений
Добавление простых ограничений
Ограничения (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()
.
- Акцентируем внимание на свойствах анимации
- Различия между управляющими объектами (drivers) и ограничениями
- Программирование ограничений
- Программирование кривых IPO
- Управляющие объекты (PyDrivers)
- Ограничения на Питоне (PyConstraints)
- Установка времени - один управляет всеми
- Внутреннее сгорание — корреляция сложных изменений
- Добавление простых ограничений
- Определяем сложные ограничения
- Итог
- Имена индексов ограничений
- 6.3. Добавление фоновой музыки
- Добавление, изменение и удаление элементов списка
- Добавление, изменение и удаление столбцов списка
- Добавление и изменение представления списка
- Добавление документов
- Добавление рисунков
- Добавление цели в рабочую область для собраний
- Добавление повестки в рабочую область для собраний
- Добавление участников в рабочую область
- Добавление списка необходимых предметов
- Добавление веб-части на страницу