UE4坐标变换运算

> 旋转顺序很重要。不同旋转顺序,造成的结果可能就不同。

上图中A、B为两个垂直于屏幕的旋转轴,X为物体,首先将X绕A轴逆时针转90°,然后绕B轴逆时针转90°,那么X会回到最开始的地方。

上图中,若将X先绕B轴逆时针转90°,再绕A轴逆时针转90°,那么X最终会运动到X'''处。

> FRotator, FTransform, FMatrix乘法都是先运用左边的变换,再运用右边的变换。FQuaternion乘法是先运用右边的变换,再运用左边的变换。规定以下变换均为FTransform形式表示。

> 如有世界系变换A,再有一个世界系变换B,假设从A变换到B还需要的世界系变换增量为D,则A * D = B。再来一个最重要的例子:父节点世界系变换为P,子节点世界系变换为C,设D为从P运动到C的世界系变换,则P * D = C。设L为子节点在父节点下的局部变换,因为P就是父节点到世界系的坐标变换,因此 L * P = C,其理解就是父节点没有初始变换时,L就是子节点的世界系变换描述,这时父节点进行P变换,会带动子节点进行同样的世界系变换P,此时子节点的世界系变换C = L * P。注意这里的D和L的区别,它俩是不同的坐标系变换描述,D是世界系变换,L是局部系变换。这两个等式的意义和用法是UE4的坐标变换里最最重要的东西,一定要搞清楚。

还有一种应用,是逻辑上将子节点看做是父节点,变换子节点时,父节点随子节点做相同变换,这种情况下,父节点与子节点的相对关系是不变的,即上面说的L是固定的。

猜你喜欢

转载自my.oschina.net/zhoubaojing/blog/1628987
UE4