SceneKit: математический вопрос о позиционировании узла камеры - PullRequest
0 голосов
/ 25 октября 2019

Я работаю на Galaxy Explorer, используя SceneKit. У меня есть математический вопрос, который я не могу понять.

enter image description here

На изображении выше, узел cameraNode завис над объектом NGC 5824, глядя прямовниз в плоскость изображения. Мне нужно рассчитать новую позицию для cameraNode, чтобы смотреть прямо на объект, на который указывает красная стрелка.

В основном, cameraNode имеет текущую позицию и поворот. Я не хочу, чтобы вращение менялось, но я хочу изменить положение, чтобы камера находилась над новым объектом.

Проблема тривиальна, если камера смотрит прямо вниз по оси z. Я просто установил x, y позицию cameraNode в x, y позицию нового целевого узла. Однако, если у камеры есть существующее вращение по оси z (как на изображении), то решение является более сложным.

Это должно быть полупростое преобразование, но я не могу обернуть его вокруг. Кто-нибудь может дать необходимую подсказку?

1 Ответ

0 голосов
/ 27 октября 2019

ОК, я понял это. По сути, вам необходимо выяснить перевод между новым объектом и старым объектом (deltaX, deltaY и deltaZ). Затем примените этот перевод к точке зрения. Это позиционирует точку зрения в том же относительном положении над новым объектом, что и над старым объектом.

...