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