Как я могу заставить команды камеры паравью действовать одновременно

Добрый вечер, у меня есть скрипт, который вращает камеру в паравью. Похоже на это.

camera.Elevation(45)  
camera.Roll(90) 
Render()

Дело в том, что изменение порядка команд меняет конечную ориентацию, поскольку камера поворачивает вторую команду, начиная с уже повернутой позиции. Есть ли способ заставить обе команды действовать одновременно? Спасибо за любые предложения


person john    schedule 05.04.2018    source источник
comment
Мне непонятно, какой должна быть окончательная ориентация камеры, если бы вы каким-то образом применяли их одновременно.   -  person Cory Quammen    schedule 10.04.2018


Ответы (2)


Для объекта vtkCamera существует метод ApplyTransform, который позволит вам применить объект vtkTransform к вашей камере.

Объекты vtkTransform имеют намного больше методов для преобразования, чем простые, представленные в интерфейсе vtkCamera. Вы даже можете использовать несколько объектов преобразования для создания системы преобразования. Если у вас уже есть матрица преобразования для камеры, вы можете передать ее объекту vtkTransform с помощью метода SetMatrix.

https://www.vtk.org/doc/nightly/html/classvtkTransform.html

person Stuart Buckingham    schedule 11.04.2018

Вы не можете применить две команды одновременно. Более того, две операции (Возвышение и Крен) некоммутативны:

Действительно, вы можете увидеть здесь: https://www.paraview.org/Wiki/ParaView_and_Python что Roll(angle) выполняет вращение вокруг оси, определяемой направлением взгляда и исходной точкой набора данных.

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

person jcgiret    schedule 12.04.2018