Как вы трансформируете Skinned Mesh во время загрузки и обработки сетки?
Я создал свой собственный загрузчик сетки с кожей. Он работает нормально, но моя проблема в том, что я не знаю, как преобразовать (масштабировать и повернуть) очищенную сетку, чтобы преобразования "запекались" в вершинах. Если бы это была просто геометрия, преобразование вершин - это кусок пирога, но теперь, когда необходима информация о скинах, например, если я делаю масштаб, моя сетка растягивается. Я знаю, что мне тоже нужно преобразовать данные скинов, но какие части? Все матрицы связывания? Обратные матрицы представления связывания? Я не могу понять, как это сделать.
Моя реализация в C# и OpenTK, и я специально загружаю файлы Skinned Collada, экспортированные из Blender 2.6.
Заранее спасибо.
1 ответ
Я не знаю C# и OpenTK, но я стараюсь помочь с теоретической стороны. Вершины преобразуются с помощью взвешенной глобальной матрицы преобразования. Чтобы сформировать глобальное преобразование, вам нужно объединить локальное преобразование каждого соединения. Чтобы создать локальное преобразование, вам нужно объединить локальное преобразование, вращение и масштабирование. Вес пришел бы из сустава. Поэтому я думаю, что вам нужно получить совместное локальное вращение / перевод / масштабирование вашей позы связывания, а затем манипулировать этими локальными матрицами и формировать их в глобальную матрицу. После этого вы применяете веса к глобальному преобразованию, а затем преобразовываете вершины.
Следующая ссылка может быть похожа на ваш вопрос. КОЛЛАДА: Обратная позиция связывания в неправильном пространстве?
Я создал этот проигрыватель файлов Collada, но использую C++. http://www.youtube.com/watch?v=bXBfVl-msYw