我创建了一个传递给vtkPolyDataMapper的vtkLineSource
,传递给vtkActor。
actor->GetProperty()->SetLineStipplePattern(0xf0f0);
就像一个魅力。然而
actor->GetProperty()->SetLineWidth(5.0);
什么也没做。
两种方法都标记为"这仅适用于OpenGL。"
以下是片段:
vtkSmartPointer<vtkLineSource> line1 = vtkSmartPointer<vtkLineSource>::New();
line1->SetPoint1(posvel1.x, posvel1.y, posvel1.z);
line1->SetPoint2(posvel2.x, posvel2.y, posvel2.z);
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(line1->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetLineWidth(2.0); // TODO: Has no effect.
actor->GetProperty()->SetColor(1, 1, 1);
actor->GetProperty()->SetOpacity(0.5);
actor->GetProperty()->SetLineStipplePattern(0xf0f0);
actor->GetProperty()->SetLineStippleRepeatFactor(1);
// Further up, add actor to vtkAssembly
线条显示并有点画图案,但宽度不受我传递给SetLineWidth的任何值的影响。
编辑:我的代码中已有评论。 &#34;用vtkPoints替换多边形绘图而不是需要LineSource ......&#34;经测试:没有解决问题,点画模式存在,线宽不起作用。
==编辑== 什么替代有用vtk在3D场景中绘制2D虚线/虚线?