Nuke — Matrix4 камера ограничитель блокировки Z вращение

Поэтому я создаю в 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. Кто-нибудь знает, как это сделать?

3

Решение

Если вы эмулируете систему ограничений Maya, Maya обрабатывает поворот Z через up vector, который регулирует ваше вращение Z, чтобы выровнять с одним из пяти вариантов:

  • scene up направляет верх вашей камеры на +Y
  • object up направляет верхнюю часть камеры на третий объект
  • object rotation up соответствует повороту Z камеры на XYZ вращение третьего объекта
  • vector направляет верх вашей камеры на этот вектор
  • none Не пытается ориентировать верх вашей камеры с чем-либо. Это должно быть то, что у вас есть в настоящее время.

Кроме того, есть up vector который определяет то, что является «вершиной вашей камеры» так же, как aim vector определяет, куда должна указывать камера

1

Другие решения


По вопросам рекламы [email protected]