在vtk中翻转Y轴

时间:2009-12-15 14:34:13

标签: c++ visualization 3d vtk

有没有办法可以让VTK让Y轴下降(增加值时)而不是上升?

我希望我的VTK窗口能够匹配我的非VTK窗口显示数据,这些数据都会使Y轴下降。

4 个答案:

答案 0 :(得分: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轴向屏幕左侧增加。如果你正在使用左撇子系统,这可能会引起一些混乱。

答案 1 :(得分:0)

我不熟悉VTK,但函数SetReverseYAxis()可能就是您所需要的。

答案 2 :(得分:0)

您可以考虑使用VTK中较新的图表代码,例如vtkChartXY。我添加了一个测试,在3D场景TestChartsOn3D.cxx上显示一个简单的线图,而vtkAxis类旨在允许您设置任一方向的最小值和最大值。这将完全独立于3D场景,但您可以做任何您想要的事情,使其与2D图表匹配。您需要使用VTK 5.8.0或更高版本。

答案 3 :(得分: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( );