作为医学领域使用广泛的渲染类库,VTK本身也是基于OpenGL作为底层开发的,其渲染模式与另一个三维视觉类库OSG类似,其实本身这样的三维图形库基本都是来源于对OpenGL的封装。
通过VTK将科学实验数据如建筑学、气象学、医学、生物学或者航空航天学,对体、面、光源等等的逼真渲染,从而帮助人们理解那些采取错综复杂而又往往规模庞大的数字呈现形式的科学概念或结果。特别是医学方面,有时候我们需要根据仪器枯燥的数据抽象出一个具体的、可视化强的三维模型,以便于医生分析人体各个器官的细节,VTK真是基于这种需求而发展起来的,它的体绘制满足了根据诸多的CT切片而构造三维模型的要求。
相比于OSG,VTK更加侧重对数据模型的真实性的反应,比如人体器官的某一个截面或者某一块区域,这当然得益于它的数据源——体数据!体数据需要很多的类似CT切片的数据,当然也包括其他格式的图像,比如bmp、jpeg、tiff等格式。
最近一直在研究VTK的三维体绘制,其读取bmp图像的代码(部分)如下:
vtkSmartPointer<vtkBMPReader> reader =vtkSmartPointer<vtkBMPReader>::New();
reader->SetDataExtent(0,749,0,569,24,100);
//reader->SetFilePrefix("F:\\Visualstudio2010projects\\testVTK\\testVTK\\my");
reader->SetFilePrefix("F:\\VTKbmpData\\my007");
reader->SetFilePattern("%s%03d.bmp");
reader->SetDataSpacing (1, 1, 0.2);//像素间的间隔
reader->SetDataOrigin(0.0,0.0,0.0);
reader->SetAllow8BitBMP (8) ;