Поэтому я создаю в Nuke плагин (из The Foundry), который будет имитировать поведение анимации в Maya. У меня есть родитель, ребенок, а затем варианты для точки, ориентации, цели, родительских ограничений. Все это работает довольно хорошо, однако моя самая большая проблема на данный момент — это ограничение цели.
Немного предыстории:
Работа с Nuke Matrix4 класс
Стоит отметить, что эта матрица 4×4, в которой первые 3 столбца первых 3 строк применяются к поворотам / шкале, а последний столбец первых 3 строк — перевод (X, Y, Z)
в Vector3 классы
Я получаю исходную и целевую позицию. Целевой источник = ST
Затем я настраиваю плоскость Y (одна перевернутая, другая нет)
Затем я получаю произведение corss моей точки ST и плоскости Y, а затем другое перекрестное произведение моей плоскости ST и инвертированной плоскости Y. (когда родитель находится позади ребенка, чтобы перевернуть его)
Затем я получаю перекрестное произведение моего ST и результат моего ST.cross (y_plane)
Ограничение прицеливания на самом деле работает довольно хорошо, но я получаю большое вращение по оси Z в своей камере (дочернем элементе), когда родитель находится в определенных положениях. Я хочу быть в состоянии избежать этого вращения Z. Кто-нибудь знает, как это сделать?
Если вы эмулируете систему ограничений Maya, Maya обрабатывает поворот Z через up vector
, который регулирует ваше вращение Z, чтобы выровнять с одним из пяти вариантов:
scene up
направляет верх вашей камеры на +Y
object up
направляет верхнюю часть камеры на третий объектobject rotation up
соответствует повороту Z камеры на XYZ
вращение третьего объектаvector
направляет верх вашей камеры на этот векторnone
Не пытается ориентировать верх вашей камеры с чем-либо. Это должно быть то, что у вас есть в настоящее время.Кроме того, есть up vector
который определяет то, что является «вершиной вашей камеры» так же, как aim vector
определяет, куда должна указывать камера