Как заставить Nvidia FleX вращать объекты так же, как Blender, Unity или другое 3D-программное обеспечение? - PullRequest
0 голосов
/ 01 ноября 2018

Я вращаю некоторые объекты в FleX, экспортирую их и отображаю их в Blender. Я понял, что вращения, которые я применяю к объектам в FleX, не вращают объекты так же, как Блендер. Если я понял это правильно, я узнал, что FleX использует матрицу преобразования для вращения объектов, но Blender [не обязательно] делает это. Я также поговорил с кем-то, кто использует плагин FleX в Unity, и он сказал, что у него схожие проблемы. Это касается как углов Эйлера, так и кватернионов. Ниже приведен фрагмент кода, который я использую для поворота объектов в FleX. Я довольно новичок в FleX и не знаю, какие функции мне следует использовать, чтобы получить те же повороты, что и в Blender, без ненужных преобразований. Может ли кто-нибудь помочь мне с этим?

Для вращения с углами Эйлера:

obj->Transform(RotationMatrix(rx, Vec3(1.0f, 0.0f, 0.0f)));
obj->Transform(RotationMatrix(ry, Vec3(0.0f, 1.0f, 0.0f)));
obj->Transform(RotationMatrix(rz, Vec3(0.0f, 0.0f, 1.0f)));

Для вращения с кватернионами:

obj->Transform(RotationMatrix(Quat(qx, qy, qz, qw)));

1 Ответ

0 голосов
/ 02 ноября 2018

Это происходит из-за разной интерпретации осей в Blender и Flex. [x, y, z] в Blender интерпретируется как [-y, z, x] в Nvidia FleX.

...