Не корректно работает Skinning. OpenGL & ASSIMP

Пытаюсь повторить уроки по OpenGL на C++, но использую OpenGL и C#, для загрузки модели использую AssimpNet 4.1.0.

Шейдер GLSL:

mat4 view =  viewRotation  * viewTranslation;
mat4 viewProjection = projection * view;

vec4 transformedPosition     = (boneTransform[boneID.x] * vec4(position, 1)) * boneWeight.x;
transformedPosition     += (boneTransform[boneID.y] * vec4(position, 1)) * boneWeight.y;
transformedPosition     += (boneTransform[boneID.z] * vec4(position, 1)) * boneWeight.z;
transformedPosition     += (boneTransform[boneID.w] * vec4(position, 1)) * boneWeight.w;
        
gl_Position   = viewProjection * transformedPosition;

Код C#:

List<Matrix4x4> transforms = new List<Matrix4x4>();

for (int i = 0; i < bones.Length; i++) {
    //TRS это комбинированная матрица, = node.Parent.Transform * node.Transform 
    //TRS и offset получаю из Assimp
    transforms.Add(TRS * offset);
}
GL.UniformMatrix4fv(material.boneTransformLocation, transforms.Count, false, transforms.ToArray());

Результат (слева как должно быть, справа что у меня):

Почему-то у меня робот получился немного вытянутым вверх и сплющенным по бокам, но это другая проблема, в целом кости тут на своих местах. описание

При масштабировании происходит смещение, масштаб по оси Y был 1.5 и смещение было на ту же величину. описание Вращается не вокруг своей кости, а смещается, будто вращается вокруг центра модели. описание

В чём же искать проблему, неправильно работают матрицы или я делаю не в том порядке как нужно? Update: главная проблема была найдена в импорте модели, я пытался изменить размер модели и делал это не правильно, это как-то портило кости, придётся мириться с масштабом x100 при импорте FBX модели.

Однако, тогда появилась другая проблема:

Моя система координат отличается от той, что используется в Assimp. описание

Для решения я использовал Matrix4x4.Decompose, затем инвертировал X и Y в position и rotation, то есть в -x, y, -z, затем из них снова создал матрицу.

В итоге проблема была в масштабе и перевёрнутой системе координат.


Ответы (0 шт):