Странное поведение при преобразовании объектов с использованием матрицы преобразования 4x4 - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь преобразовать одно координатное пространство в другое.У меня есть два набора объектов, представляющих точки в пространстве.Кроме того, у меня есть в общей сложности 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).Я ставлю игру на паузу на ноль, она не двигается, но когда я возобновляю игру, она становится -4.47034.

Я использую эту сцену, чтобы проверить мою трансформацию.Обычно я должен применить это преобразование к лазерному сканеру в системе координат Unity, и хотя это ни на что не влияет и объекты находятся в правильном положении, я боюсь, что это может вызвать проблемы, когда я хотел применить это преобразование в Unity и лазерном сканерепреобразование системы координат.Потому что это не работает, как это работает в тестовой сцене.Может ли быть так, что я делаю ошибку, используя MultiplyPoint?Вот мой взгляд инспектора: я перехожу из синего координатного пространства в красное.Заранее благодарим за любую помощь!

enter image description here

...