Проблемы с использованием функции подъема камеры VTK

Приходится реализовать какое-то прохождение через ВТК (через череп например) и навигацию по клавиатуре.

Моя идея состоит в том, чтобы манипулировать моей камерой, чтобы я мог перемещаться вокруг объекта. В VTK вы можете управлять камерой с помощью таких функций, как Азимут, Высота, Поворот и так далее.

Каждая функция работает нормально и делает то, что должна, за исключением функции Elevation. Этот должен перемещать мою камеру вверх или вниз вокруг фокуса. Это то, что он на самом деле делает, пока не достигнет примерно 90 градусов в направлении вверх или вниз. Как только он достигает 90 градусов, он как бы нелогично поворачивает мой объект. Это трудно объяснить, но это не продолжает возвышаться вокруг моей фокусной точки.

Я уже посмотрел, как реализована функция, но не могу найти причину, почему она так себя ведет.

Кто-нибудь знает, что может быть причиной этой проблемы?


person Perfmastah    schedule 01.03.2014    source источник


Ответы (1)


Необходимо пересчитать вектор ViewUp, чтобы заставить его быть перпендикулярным вектору фокуса камеры.

Вызовите метод OrthogonalizeViewUp() вашей камеры после того, как вы применили свои значения к азимуту и ​​высоте.

myVtkCamera->OrthogonalizeViewUp();
person JohnnyQ    schedule 08.08.2014
comment
Спасибо, у меня были проблемы с ->Elevation переворачиванием вида камеры при переходе на 180 градусов, и это решило мои проблемы. Настройка камеры VTK оказалась настоящей головной болью. - person Alessi 42; 29.02.2020