3D TD здесь, определяя "кривую Безье" и ориентацию вдоль нее с преобразованиями объектов управления.
У меня возникают проблемы с интерполяцией «Вверх» между Control Objects
таким образом, чтобы я мог иметь разность управления более 180 градусов, поэтому я ограничен в том, как сильно могу крутить.
Я использую SideFX Houdini, который имеет C-подобный язык, называемый VEX
для их достижения. Здесь вы можете видеть элементы управления, маркеры Безье (голубой, желтый) и панель преобразования для одного из них.
Чтобы сгенерировать кадры, Безье подвергается повторной выборке в ломаную линию, и начиная с каждой Control Object
соответствующей точки, существует Параллельный транспорт кадров до Control Object
соответствующей точки.
Это приведет к разрывам в непрерывности кадров, поэтому я выполняю взвешенное вращение вокруг оси касательной, чтобы кадры «« Вверх » постепенно выравнивались со следующими Control Object
' s "Up Vector" .
Проблема заключается в том, что это выравнивание выполняется путем проверки угла между двумя векторами Переход кадра вверх и следующий Control Object Up
в одной плоскости. Который самый большой отличается 180 градусов. Помимо этого он переворачивается на другую сторону: Клип с переворачивающимися рамками
Теперь у меня может быть больше 180, если применить такой поворот или крен, как смещение Frame Transport и последующее выравнивание, но это дополнительный шаг.
Поворот выше 180 как смещение
Я понимаю, что при работе с матрицами нет понятия поворотов, и поэтому это может быть невозможно с тем, что я извлекаю из объектов, поставляемых с Эйлером . Но у меня есть ощущение, что может быть решение вокруг кватернионов, я обычно использую их как Axis-Angle , но я не полностью понимаю их концептуально.
Похоже, моя проблема заключается в том, как я связываю один объект управления со следующим, чтобы я мог понять, как много крутится, чтобы перейти от одного к другому.
Ищу ссылки, которые я должен изучить, чтобы разобраться в этом. Если это вообще возможно ...
Спасибо