Перевернуть ось Y в vtk - PullRequest
       18

Перевернуть ось Y в vtk

2 голосов
/ 15 декабря 2009

Есть ли способ заставить VTK наклонить ось Y (при увеличении значений), а не вверх?

Я бы хотел, чтобы мои окна VTK соответствовали моим окнам, отличным от VTK, при отображении данных, у которых все оси Y спускаются вниз.

Ответы [ 4 ]

5 голосов
/ 09 февраля 2011

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

Попробуйте что-то вроде этого:

// To look "into" the X axis, with Y-axis pointing downwards
vtkCamera * cam = myRenderer->GetActiveCamera();

cam->SetPosition(1, 0, 0);
cam->SetFocalPoint(0, 0, 0);
cam->SetViewUp(0, -1, 0);

// To view the full bounds of your scene
myRenderer->ResetCamera();

Управляя этими иварами, вы сможете довольно легко разобраться. Если вы хотите сделать что-то более сложное, вы можете установить vtkTransform для камеры, используя camara-> SetUserTransform (), и манипулировать преобразованием вместо того, чтобы пытаться определить положение камеры.

Обратите внимание, что ВТК всегда предполагает правую систему координат. В моем примере выше, смотрящем на X и вниз по Y, ось Z увеличивается в направлении левой части экрана. Это может вызвать некоторую путаницу, если вы работаете с левой системой.

0 голосов
/ 30 августа 2016

В моей ситуации я использую QVtkWidget для отображения аксиального объема DICOM с директориями [-1, -1, 1]. Вот что у меня работает:

vtkSmartPointer<vtkImageViewer2> imageViewer= 
                            vtkSmartPointer<vtkImageViewer2>::New();
vtkCamera * cam = imageViewer->GetRenderer()->GetActiveCamera();
cam->SetFocalPoint (0, 0, 0);
cam->SetPosition   (0, 0, -1); // Camera in Z so it display XY planes. 
cam->SetViewUp     (-1, 0, 0); // Up direction is the X not the y.  
imageViewer->GetRenderer()->ResetCamera( );
0 голосов
/ 18 сентября 2011

Вы можете рассмотреть более новый код диаграммы в VTK, например, vtkChartXY. Я добавил тест, показывающий простой линейный график на трехмерной сцене, TestChartsOn3D.cxx , и класс vtkAxis предназначен для того, чтобы вы могли устанавливать минимальное и максимальное движение в любом направлении. Это будет полностью независимо от 3D-сцены, но вы можете делать все, что захотите, чтобы она соответствовала 2D-диаграмме или нет. Вам нужно будет использовать VTK 5.8.0 или более позднюю версию.

0 голосов
/ 15 декабря 2009

Я не знаком с VTK, но вам может понадобиться функция SetReverseYAxis().

...