Примечание. Понятнее всего DAG-терминология описана в документации в разделе «Для взрослых», а именно в описании ноды DAG Node. Во всех остальных разделах можно найти лишь циклические ссылки, притом скороговоркой, с более чем лаконичными разъяснениями.

Циклы в дереве зависимостей и их последствия. Поднимание себя за уши

Если можно соединять атрибуты различных нод Hypergraph в любой последовательности, теоретически возможна ситуация, когда возникают циклы. Другими словами, путешествуя по связям в Hypergraph в направлении стрелок можно вернуться к ноде, с которой начиналось путешествие. Например, если создать три цилиндра, можно без проблем соединить в Connection Editor вращения первого и второго цилиндров (через атрибуты rotate), затем вращения второго и третьего, а затем - третьего и первого. И получится, что все цилиндры управляют друг другом. Попытка повращать любой объект не приведет к успеху, так как атрибуты rotate всех объектов заблокированы связями с другими объектами. Это похоже на попытку поднять самого себя за уши. И хотя MAYA формально позволяет устраивать такие связи, ни к чему хорошему это не приведет, особенно если ваше дерево зависимостей не столь уж примитивно. Наличие циклов может приводить к довольно непредсказуемым и трудно отлавливаемым ошибкам, так как связи между атрибутами продолжают функционировать, но порядок и результат их выполнения неоднозначен. Примером «непреднамеренного» создания циклов может служить попытка «приконстрейнить» родительский объект к одному из своих потомков. В этом случае родитель управляет потомком через иерархию, а потомок управляет родителем через констрейн.

MAYA однако проявляет ангельское терпение, стараясь не «упасть» от таких циклических издевательств и даже сообщает пользователю о наличии циклов в сцене. Поэтому стоит очень внимательно относиться к появлению в Script Editor сообщения типа:

it Warning: Cycle on ‘pCube2.rotate’ may not evaluate as expected.

// (Use ‘cycleCheck -e off’ to disable this warning.) //

В случае появления такого приговора следует внимательно пересмотреть связи между объектами и атрибутами, чтобы выявить некорректные зависимости.

Только в одном случае не стоит паниковать при появлении такого сообщения. При использовании динамики твердых тел, после возвращения в первый кадр, MAYA весело сообщает о наличии циклов. Не пугайтесь, так устроена динамика, а точнее, понятие начального положения твердого тела. В этом случае просто не обращайте внимания на сообщение о циклах.

Expression как нода совершенно произвольного назначения. Природа expressions. Входы, выходы и сиротливые expressions

Я уже упоминал о том, что можно рассматривать ноды как простые вычислители принимающие и передающие данные. У каждой ноды собственные правила, по которым она вычисляет выходные данные. Но если вам вдруг понадобится сделать вычисления по собственным формулам, то создавать собственные ноды можно только с помощью специально обученных людей, знающих C++ и умеющих компилировать плагины. В этом случае, на помощь приходят expressions. Те, кто уже знаком с правилами написания expressions, знают, что с их помощью устанавливается связь между атрибутами различных объектов, запрограммированная на языке MEL.


⇐ вернуться назад | | далее ⇒