一、三维文字的显示
ActiViz提供了三维文字vtkVectorText类,可在三维窗口中实现三维文字的输出。效果如下:
C#实现方法(在原有示例的基础上),添加vtkVectorText的“Source”、“Mapper”和“Actor”。主要代码如下:
// Source部分
vtkVectorText text3D = new vtkVectorText();
text3D.SetText("VTK");
// Mapper部分
vtkPolyDataMapper text3DMapper = vtkPolyDataMapper.New();
text3DMapper.SetInputConnection(text3D.GetOutputPort());
// Actor部分
vtkActor text3DActor = new vtkActor();
text3DActor.SetMapper(text3DMapper);
text3DActor.SetScale(0.3, 0.3, 0.5); // 大小
text3DActor.AddPosition(0, 0, 0); // 位置(文字左下角坐标)
text3DActor.GetProperty().SetColor(0.0, 1.0, 0.0); // 颜色
// 渲染部分
render1.AddActor(text3DActor);
注意:
1.vtkVectorText类不支持中文输入。
2.vtkVectorText类的vtkActor对象(三维文字)会随视点变化,如上图效果。
二、“告示板”效果
若希望不论视点如何变换,都能看到文字的正面,那就要用到“告示板”技术了。所谓“告示板”,就是在三维控件中用一个单面显示一个特定内容,当视角变化时,该面也对应发生旋转,始终正面对着视点。VTK封装了vtkFollower类,可以简便的实现告示板效果。修改三维文字示例,可以实现如下效果: