使用4x4转换矩阵转换对象时的怪异行为

时间:2018-12-05 11:14:09

标签: c# unity3d matrix coordinate-transformation

我正在尝试从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时出错了吗?这是我的检查器视图:我正在从蓝色坐标空间转换为红色坐标。预先感谢您的帮助!

enter image description here

0 个答案:

没有答案