图形显示图形轮廓
1.要显示图形的轮廓线可以通过设置Actor的属性
(1)Actor->GetProperty()->EdgeVisibilityOn(); (2)Actor->GetProperty()->SetRepresentationToWireframe();
方法(2)对比方法(1)而言,会去除面的显示,只保留线。
上述例子中,Actor对象是一个《vtkActor》类。
三维等直面颜色映射问题
在VTK中使用【vtkContourFilter】方法获取等值面后,很可能出现等直面颜色无法映射问题。
显示的等值面显示为黑色,随角度不同,可能会有部分颜色显示,但基本也是颜色不对。
查阅资料了解到,是因为通过【vtkContourFilter】方法,不会计算图形的法线,所以无法正常显示光照效果。
所以在调用完vtkContourFilter后需要调用【vtkPolyDataNormals】方法重新计算法线。
例:
//vtkRenderer *renderer;
//vtkMultiBlockDataSet *mb;
//省略数据生成过程
vtkNew<vtkContourFilter> contour;
contour->SetInputData(mb);
contour->SetNumberOfContours(1);
contour->SetValue(0, 35.8423996);
vtkNew<vtkPolyDataNormals> normals;
normals->SetInputConnection(contour->GetOutputPort());
vtkNew<vtkCompositeDataGeometryFilter> geom;
//geom->SetInputConnection(0, contour->GetOutputPort(0));
geom->SetInputConnection(0, normals->GetOutputPort(0));
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(0, geom->GetOutputPort(0));
vtkNew<vtkActor> actor;
actor->SetMapper(mapper);
renderer->AddActor(actor);