我正在尝试从1个坐标空间转换为另一个坐标空间。我有两组对象代表空间中的点。另外,我总共有6个对象,我正在它们之间找到转换矩阵,并使用以下代码将此转换应用于第7个对象:
TestObject.transform.position = TransformationMatrix.MultiplyPoint(InitPosition);
TestObject.transform.rotation = Quaternion.LookRotation(TransformationMatrix.GetColumn(1),
TransformationMatrix.GetColumn(2))* InitQT;
Debug.Log("Test object is at" + TestObject.transform.position+"
local position"+TestObject.transform.localPosition+" Calculation is "
+ TransformationMatrix.MultiplyPoint(InitPosition));
此代码有效,但是我平移或旋转了第二组对象(点),但是我在检查器中意识到的是我的测试对象具有不同的坐标。我在控制台中看到
Test object is at(12.5, 2.5, 0.0) local position(12.5, 2.5, 0.0) Calculation is (12.5, 2.5, 0.0)
但是在检查器中,我得到结果(12.5,2.5,-4.47034)
。我将游戏设置z暂停为零,它不会移动,但是当我恢复游戏时,它变成-4.47034
。
我正在使用此场景来测试我的转换。通常,我必须将此变换应用到Laser扫描仪到Unity坐标系,即使这不影响任何东西并且对象位于正确的位置,我担心当我想在Unity和激光扫描仪中应用此变换时,这可能会引起问题。坐标系转换。因为那样无法在测试场景中正常工作。可能是我在使用MultiplyPoint
时出错了吗?这是我的检查器视图:我正在从蓝色坐标空间转换为红色坐标。预先感谢您的帮助!