2

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

我希望我的 VTK 窗口在显示数据时与我的非 VTK 窗口匹配,这些窗口的 Y 轴都向下。

4

4 回答 4

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

操纵这些 ivars,你应该能够很容易地解决问题。如果你想做更复杂的事情,你可以使用 camara->SetUserTransform() 为相机设置一个 vtkTransform 并操纵变换而不是尝试计算相机位置。

但是请注意,VTK 始终假定为右手坐标系。在上面的示例中,查看 X 并向下查看 Y,Z 轴向屏幕左侧增加。如果您使用的是左撇子系统,这可能会引起一些混乱。

于 2011-02-09T08:05:41.847 回答
0

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

于 2009-12-15T14:45:25.827 回答
0

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

于 2011-09-18T18:57:44.773 回答
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( );
于 2016-08-30T08:52:30.483 回答