OpenGL GLSL иерархическое масштабирование

Недавно я пишу гуманоидную анимационную систему на OpenGL + GLSL. Гуманоидное представление — это иерархическая система трансформации. Многие кости делают локальное вращение, перевод и масштабирование. Когда они нарисованы, локальные преобразования умножаются для получения глобальных преобразований. Глобальные преобразования прошли через шейдеры для преобразования вершин. Отлично работает, когда есть только ротация и перевод. Я реализовал ИК + интерполяцию. Однако недавно один из моих наставников отметил, что системе нужна функция масштабирования для костей. Это полностью испортило систему.

Я храню локальный вектор перевода, кватернион вращения и вектор масштаба в кости. Затем умножьте их на порядок TRS, чтобы получить матрицу локального преобразования. Однако, наоборот, масштабирование будет выполняться для всех дочерних узлов. Я попытался удалить масштабирование родительского узла путем умножения инверсии матрицы масштабирования родительского узла. Это было нормально без вращения, но с вращением все испортилось. Все масштабирование работает только с глобальной осью, но без ожидаемого локального масштабирования оси. Детские узлы также были плохо масштабированы … Кто-нибудь может мне помочь?

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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