2009-12-15 186 views
2

有沒有一種方法可以使VTK的Y軸向下(當增加值時)而不是向上?在vtk中翻轉Y軸

我想我VTK窗口,以匹配顯示數據,它們都具有Y軸下去我非VTK窗口。

回答

0

我不熟悉VTK,但功能SetReverseYAxis()可能是你所需要的。

+0

不完全,因爲這隻適用於vtkXYPlotActor。我希望我的整個場景Y翻轉,其中包含其他演員。 – Alex77 2009-12-15 14:49:20

5

取決於你想要做什麼,你可以逃脫操控相機。

嘗試這樣:

// 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(); 

操縱這些實例變量,你應該能夠解決事情很容易。如果你想做一些更復雜的事情,你可以使用camara-> SetUserTransform()來設置一個vtkTransform到攝像機,並且操縱變換而不是試圖找出攝像頭位置。

不過請注意,這VTK總是假定右手座標系。在我上面的示例中,查看X並向下看Y,Z軸向着屏幕左側增加。如果您使用左手系統,這可能會導致一些混淆。

+0

除非我誤解了你的例子,否則你似乎在移動相機並翻轉它。雖然這翻轉了Y軸,但它也翻轉了X軸,這不是我想要的。 隨着數據量的增加,我的數據會「下降」,而VTK會「上升」。這可能是VTK的基礎,而不是用戶可更改的。 – Alex77 2011-02-25 18:19:50

+0

如果您正在查看+ z的XY平面,並且相機向上= + y,則y軸向上,x軸向右。如果將相機移至-z並將相機向上滾動以使相機朝上= y,則y軸將向下,x軸將朝右。 – 2011-12-12 02:13:28

0

你可能會考慮新的圖表代碼VTK,如vtkChartXY。我添加了一個測試,在3D場景中顯示一個簡單的線條圖,TestChartsOn3D.cxx,而vtkAxis類旨在允許您設置在任一方向上的最小值和最大值。這完全獨立於3D場景,但你可以在那裏做任何你想做的事情,使它與2D圖表匹配或不匹配。不過,您需要使用VTK 5.8.0或更高版本。

0

在我的情況下,我正在使用QVtkWidget以方向[-1,-1,1]顯示DICOM軸向體積。這對我很有用:

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();