我刚接触过堆栈溢出和c#,所以请不要犹豫,给我更多的提示来问更好的问题。
我试图了解更多关于Matrix4x4.TRS函数的信息。我已经看到它背后有一个很大的数学部分,比如四元数旋转,Vector3来平移和缩放。我想了解更多关于数学的知识,这样我就可以创建我自己的matrix4x4 TRS,而不用使用Unity提供的。
发布于 2022-10-21 21:15:25
非常简单的任务,一旦你意识到什么数据去哪里。在这里考虑Vector4
的4列:
c0 c1 c2 c3
Xx , Yx , Zx , Tx
Xy , Yy , Zy , Ty
Xz , Yz , Zz , Tz
0 , 0 , 0 , 1
c0
/X
-x方向(以0结尾)
c1
/Y
-y方向(以0结尾)
c2
/Z
-z方向(以0结尾)
c3
/T
-翻译(以1结尾)
// inputs:
Vector3 position = new Vector3(1f, 2f, 3f);
Quaternion rotation = Quaternion.Euler(100f, 200f, 300f);
Vector3 scale = new Vector3(1f, 2f, 3f);
// calculations:
Vector4 c0 = new Vector4( rotation * new Vector3(scale.x,0,0) , 0 );
Vector4 c1 = new Vector4( rotation * new Vector3(0,scale.y,0) , 0 );
Vector4 c2 = new Vector4( rotation * new Vector3(0,0,scale.z) , 0 );
Vector4 c4 = new Vector4( position , 1 );
// output:
Matrix4x4 TRS = new Matrix4x4( c0, c1, c2, c3 );
从内存中编写的
^代码,所以请原谅我在什么地方出错了.
https://stackoverflow.com/questions/74156286
复制相似问题