一、VTK 场景的基本概念
- 定义
- 组成元素
- 几何对象(Geometric Objects):包括点、线、多边形等基本几何形状。例如,一个简单的三角形可以作为一个几何对象放在场景中。这些几何对象可以是通过数据转换而来,也可以是直接创建的简单形状,用于构建更复杂的模型。
- 数据源(Data Sources):是场景中数据的来源。如 vtkPolyData、vtkImageData 等。以医学影像数据为例,vtkImageData 可以作为数据源,它包含了医学图像(如 CT、MRI 等)的像素信息,这些信息在场景中经过处理和可视化后,可以帮助医生观察人体内部结构。
- 可视化对象(Visualization Objects):像 Mapper(映射器)和 Actor(演员)。Mapper 负责将数据从数据源转换为可以被渲染的图形原语,而 Actor 则用于在场景中表示一个可视化对象,它包含了几何对象和可视化属性(如颜色、透明度等)。
二、场景的导入与导出
场景的导入(1mport)与导出(Export)是指将渲染场景中的对象,包括光照、相机、Actor、属性、变换矩阵等信息写入文件中,或者从外部文件中将这些对象导入渲染场景中,一般所导入的文件含有多个数据集。
Import类可以生成 vkRenderWindow和 vtkRenderer 实例,用户也可以另外指定 vtkRenderWindow 和 vtkRenderer 对象。
VTK 中一般以关键字 Importer 和Exporter 命名的类是与场景的导入与导出相关的。Importer 类可以导入由其他 3D 模型软件(如 3DS MAX)所生成的模型文件;Exporter 则可以将 VTK 里的场景生成可被其他 3D 模型软件所处理的文件。
支持的
Import 类: vtk3DSImporter 和vtkVRMLImporter
Exporter 类: vtkRIBExporter、vtkGL2PSExporter、vtkIVExporter、vtkOBJExporer、vtk00GLExporter、vtkVRMLExporter、vtkPOVExporter、vtkX3DExporter 等。
三、示例
private void RenderImporter(){vtk3DSImporter importer = vtk3DSImporter.New();importer.SetFileName("F:\\code\\VTK\\TestActiViz\\bin\\Debug\\data\\R8.3ds");importer.ComputeNormalsOn();importer.Read();vtkRenderer renderer = importer.GetRenderer();vtkRenderWindow renderWindow = importer.GetRenderWindow();vtkRenderWindowInteractor renderWindowInteractor = vtkRenderWindowInteractor.New();renderWindowInteractor.SetRenderWindow(renderWindow);renderer.GradientBackgroundOn();renderer.SetBackground(1.0, 1.0, 1.0);renderer.SetBackground2(0.0, 0.0, 0.0);vtkRenderWindow renWin = renderWindowControl.RenderWindow;importer.SetRenderWindow(renWin);renWin.AddRenderer(renderer);renWin.Render();}