Ограничения в Блендере связаны с объектами Блендера верхнего уровня или Bone-объектами и представлены в виде объекта Constraint
. У Объектов Блендера и Bone-объектов есть атрибут constraint
, с помощью которого осуществляется последовательность ограничений. Также выше перечисленные объекты имеют методы, для добавления, удаления, и изменения ограничений в этой последовательности.
Когда ограничение связано с объектом, результатом будет объединение параметров ограничений и расчетных параметров объекта. Атрибут influence
(влияние) определяет, насколько сильно параметры ограничения будут влиять на объект анимации.
Различия между управляющими объектами (drivers) и ограничениями
Управляющие объекты и ограничения похожи тем, что они влияют на изменение свойств пути (Blender.Constraint
за подробной информацией.
Типы Ограничений
TrackTo
Стандартные атрибуты
Target (target object)
Track (axis to track)
Типы Ограничений
Floor
Стандартные атрибуты
Target (target object)
Типы Ограничений
StretchTo
Стандартные атрибуты
Target (target object)
Типы Ограничений
CopyLocation
Стандартные атрибуты
Copy (выбор компонента(тов) для копирования )
Заметьте, что возможно анимировать влияние ограничения (параметр influence), когда с Объектом связано IPO типа constraint.
Программирование ограничений
Блендер имеет много ограничений, которые Вы можете применить к объекту. Некоторые из них похожи на управляющие объекты (drivers), в том смысле, что они не ограничивают движение объекта, но могут копировать некоторые параметры, такие как вращение или расположение (location). С точки зрения разработчика, каждому объекту Блендера присущ атрибут constraints
, который является последовательностью объектов ограничений. В эту последовательность можно добавлять элементы и удалять их из неё. Также можно менять порядок элементов.
Метод
append(
Действие
Добавляет новое ограничение к объекту и возвращает ограничение
Пример
ob.constraints.append( Constraint.Type.TRACKTO)
Метод
remove(
Действие
Удаляет ограничение с объекта
Пример
ob.constraints.remove( ob.constraints[0])
Метод
moveUp(
moveDown(
Действие
Изменят позицию ограничения в списке ограничений
Пример
ob.constraints.moveDown( ob.constraints[0])
Метод
[]
Действие
Доступ к атрибутам ограничений
Пример
Con = ob.constraints[0]
Con[Constraint.Settings. TARGET] = other
Новые Ограничения не становятся экземплярами объектов посредством конструктора, но посредством вызова метода append()
атрибута constraints
вместе с переданным ему типом ограничения. на выходе append()
мы получаем новое Ограничение, параметры настроек которого уже можно изменять.
Программирование кривых IPO
IPO-каналы управляются из скриптов так же, как и ограничения, но они по своей сути более разнообразны, чем ограничения, поскольку существует много различных типов IPO-каналов, и некоторые из них, особенно текстурные каналы и ключи формы, нуждаются в специальной обработке. Про них существует отдельная глава (Глава 6: Ключи формы, IPO, и Позы), но различные варианты использования Питона для IPO - каналов будут показаны ниже.