最近做了一个ART动作捕捉设备,可以实时驱动UE场景中的人体。 然而ART动作捕捉设备生成的数据是在右手坐标系中,而UE4使用的是左手坐标系。 如果想让动作捕捉数据驱动UE4场景中的人体,首先必须将原来右手坐标系中的数据转换为左手坐标系中的数据。 运动捕捉数据有六个自由度、三个位移和三个旋转unity 左手坐标系unity 左手坐标系,我们将单独讨论。
地点和翻译
位置和位移的转换是一样的,都是顶点位置,转换比较简单。 只需将 X、Y、Z 中的任意值取反即可。例如,Y 轴取反:将右手坐标系(X、Y、Z)的坐标转换为左手坐标系的坐标作为(X,-Y,Z)。
回转
旋转起来相当麻烦。 找了好久,终于从一个共享文档中找到了正确答案。 事实上,这很简单。 中间需要使用一个矩阵,直接输入公式:
//右手坐标系下旋转 RR,那么左手坐标系下的旋转LR应为
Matrix M = {1,0,0,0
0,-1,0,0
0,0,1,0
0,0,0,1};
LR = M*RR*M;
矩阵 M 与单位矩阵非常相似,但事实并非如此。 它的第二行有一个-1,这是转换的关键。 事实上,将单位矩阵中的任意1改为-1,就可以改变右手坐标系的旋转。 是左手坐标系的旋转3D场景,
但必须与Location和Translation的取反后的值保持一致。 也就是说,如果Location是倒置的Y轴游戏素材,那么矩阵M的第二行一定是-1,其他两个轴一定是对应的。
另外,上面是把右手变成左手,同样的原理也适用于把左手变成右手。
最后附上文档并点击打开链接。
文章来源:https://blog.csdn.net/shenshen211/article/details/78933416