2009-12-15 143 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();