Как вы трансформируете Skinned Mesh во время загрузки и обработки сетки? - PullRequest
2 голосов
/ 03 ноября 2011

Я создал свой собственный загрузчик сетки с кожей.Это работает нормально, но моя проблема в том, что я не знаю, как преобразовать (масштабировать и повернуть) очищенную сетку, чтобы преобразования «запекались» в вершинах.Если бы это была просто геометрия, преобразование вершин - это кусок пирога, но теперь, когда требуется информация о скинах, например, если я делаю масштаб, моя сетка растягивается.Я знаю, что мне тоже нужно преобразовать данные скинов, но какие части?Все матрицы связывания?Обратные матрицы представления связывания?Кажется, я не могу понять, как это сделать.

Моя реализация в C # и OpenTK, и я специально загружаю файлы Skinned Collada, экспортированные из Blender 2.6.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 ноября 2013

Я не знаю C # и OpenTK, но я пытаюсь помочь с теоретической точки зрения.Вершины преобразуются с помощью взвешенной глобальной матрицы преобразования.Чтобы сформировать глобальное преобразование, вам нужно объединить локальное преобразование каждого соединения.Чтобы создать локальное преобразование, вам нужно объединить локальное преобразование, вращение и масштабирование.Вес пришел бы из сустава.Поэтому я думаю, что вам нужно получить совместное локальное вращение / перевод / масштабирование вашей позы связывания, затем манипулировать этими локальными матрицами и формировать их в глобальную матрицу.После этого вы применяете веса к глобальному преобразованию, а затем преобразовываете вершины.

Следующая ссылка может быть похожа на ваш вопрос. COLLADA: Позиция обратного связывания в неправильном пространстве?

Я создал этот проигрыватель файлов collada, но использую C ++.http://www.youtube.com/watch?v=bXBfVl-msYw

...