Получить предыдущие преобразования Maya

Есть ли способ использовать NODES для получения предыдущих преобразований или, в моем случае, переводов из времени? Я написал простое выражение, которое делает именно это, но я действительно хочу добиться этого с помощью узлов.

$ транскс = getattr 'objname.tx' -frame time -1;

Или что-то подобное, во всяком случае, я не могу полностью вспомнить, но это использовало getatrr в выражении.

Любые идеи?


person Shannon Hochkins    schedule 03.02.2013    source источник


Ответы (1)


Узлы выражений — это узлы, жесткий getAttr внутри узла выражения прерывает узловой поток. Но да, вы можете сохранить значение из предыдущего запуска с помощью узла frameCache. Или вы можете просто сохранить значение внутри атрибута в выражении.

node.tx = node.cacheTx;
node.cacheTx = objname.tx;

Это намного быстрее, так как не нарушает поток оценки атрибутов. У обоих этих механизмов есть недостаток: они не будут оценивать вне временного контекста, если он изменился между сменой кадра. Что постоянно делают пользователи Maya, что приводит к плохой обратной связи с пользователями. На самом деле вы мало что можете сделать с такой реализацией очень запутанного пользовательского узла.

Причина, по которой это сложно, заключается в том, что пользователи Maya преуспели в своих практических действиях, чтобы сломать механизм времени Maya. Затем разработчики капитулировали под давлением пользователя и разрешили это, но это нарушило цикл оценки времени Mayas, так что не все можно запросить со сдвигом временного контекста. Усложняет создание решателей дифференциальных уравнений в Maya. Конечно, в данном конкретном случае узел не особенно сложен в изготовлении, но узел, который действительно работает в большинстве случаев, сложен.

person joojaa    schedule 03.02.2013
comment
Я действительно не понимаю, как предоставленный вами код получит предыдущий переводX, разве они не будут просто равны одинаковым значениям? - person Shannon Hochkins; 18.02.2013
comment
@JulianMann Да, и я сделал - person joojaa; 21.09.2013