VTK和体绘制——C++和python两种实现方法

更新时间:2023-07-28 05:46:42 阅读: 评论:0

VTK和体绘制——C++和python两种实现⽅法⽤VTK实现体绘制的基本流程:
C++:
#include<vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL);
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
#include<vtkSmartPointer.h>
#include<vtkMetaImageReader.h>
#include<vtkFixedPointVolumeRayCastMapper.h>
#include<vtkColorTransferFunction.h>
#include<vtkPiecewiFunction.h>
#include<vtkVolumeProperty.h>
#include<vtkVolume.h>
#include<vtkRenderer.h>
#include<vtkRenderWindow.h>
#include<vtkRenderWindowInteractor.h>
int main(int argc,char*argv[])
{
vtkSmartPointer<vtkMetaImageReader> reader =
vtkSmartPointer<vtkMetaImageReader>::New();
小孩简单画画reader->SetFileName("3Dircadb1.1.mhd");
reader->Update();
// 固定点光线投射
vtkSmartPointer<vtkFixedPointVolumeRayCastMapper> volumeMapper =
vtkSmartPointer<vtkFixedPointVolumeRayCastMapper>::New();
volumeMapper->SetInputConnection(reader->GetOutputPort());
// 设置光线采样距离
//volumeMapper->SetSampleDistance(volumeMapper->GetSampleDistance()*4);
// 设置图像采样步长/投影光线间隔
//volumeMapper->SetAutoAdjustSampleDistances(0);
//volumeMapper->SetImageSampleDistance(4);
/
/ 定义体绘制属性
vtkSmartPointer<vtkVolumeProperty> volumeProperty =
亲密的反义词
vtkSmartPointer<vtkVolumeProperty>::New();
volumeProperty->SetInterpolationTypeToLinear();
volumeProperty->ShadeOn();// 打开或者关闭阴影设置
volumeProperty->SetAmbient(0.4);
柳州螺蛳粉volumeProperty->SetDiffu(0.6);// 漫反射
volumeProperty->SetSpecular(0.2);// 镜⾯反射
// 设置标量值不透明度
vtkSmartPointer<vtkPiecewiFunction> compositeOpacity =
vtkSmartPointer<vtkPiecewiFunction>::New();我的世界如何骑马
compositeOpacity->AddPoint(70,0.00);
compositeOpacity->AddPoint(90,0.40);
compositeOpacity->AddPoint(180,0.60);
volumeProperty->SetScalarOpacity(compositeOpacity);// 设置灰度不透明度传递函数
// 设置梯度不透明度属性
vtkSmartPointer<vtkPiecewiFunction> volumeGradientOpacity =
vtkSmartPointer<vtkPiecewiFunction>::New();
volumeGradientOpacity->AddPoint(70,0.00);
volumeGradientOpacity->AddPoint(90,0.40);
volumeGradientOpacity->AddPoint(180,0.60);
volumeProperty->SetGradientOpacity(volumeGradientOpacity);// 设置梯度不透明度传递函数
/
/ 设置颜⾊属性
vtkSmartPointer<vtkColorTransferFunction> color =
vtkSmartPointer<vtkColorTransferFunction>::New();
color->AddRGBPoint(0.000,0.00,0.00,0.00);
color->AddRGBPoint(64.00,1.00,0.0,0.0);
color->AddRGBPoint(190.0,0.00,1.00,0.00);
color->AddRGBPoint(190.0,0.00,1.00,0.00);
color->AddRGBPoint(220.0,0.0,0.0,1.0);
volumeProperty->SetColor(color);
vtkSmartPointer<vtkVolume> volume =
vtkSmartPointer<vtkVolume>::New();
volume->SetMapper(volumeMapper);// 设置mapper对象  volume->SetProperty(volumeProperty);// 设置属性对象  vtkSmartPointer<vtkRenderer> ren =
vtkSmartPointer<vtkRenderer>::New();
ren->SetBackground(1,1,1);
ren->AddVolume(volume);
ren->RetCamera();
vtkSmartPointer<vtkRenderWindow> rw =
vtkSmartPointer<vtkRenderWindow>::New();
rw->AddRenderer(ren);
rw->SetSize(640,480);
rw->Render();
rw->SetWindowName("VolumeRendering C/VTK");
vtkSmartPointer<vtkRenderWindowInteractor> rwi =
vtkSmartPointer<vtkRenderWindowInteractor>::New();  rwi->SetRenderWindow(rw);
rwi->Initialize();
rwi->Start();
return EXIT_SUCCESS;
n卡驱动安装失败}
Python:
import vtk
# 读取数据
reader = vtk.vtkMetaImageReader()
reader.SetFileName("3Dircadb1.1.mhd")
reader.Update()
# 固定光线投影
volumeMapper = vtk.vtkFixedPointVolumeRayCastMapper() volumeMapper.SetInputConnection(reader.GetOutputPort()) # 定义体绘制的属性
volumeProperty = vtk.vtkVolumeProperty() volumeProperty.SetInterpolationTypeToLinear() volumeProperty.ShadeOn()# 打开阴影volumeProperty.SetAmbient(0.4)
volumeProperty.SetDiffu(0.6)# 漫反射volumeProperty.SetSpecular(0.2)# 镜⾯反射
nfc是什么功能
# 设置标量值不透明度
compositeOpacity = vtk.vtkPiecewiFunction() compositeOpacity.AddPoint(70,0.00) compositeOpacity.AddPoint(90,0.40) compositeOpacity.AddPoint(180,0.60) volumeProperty.SetScalarOpacity(compositeOpacity)
# 设置梯度不透明度
volumeGradientOpacity = vtk.vtkPiecewiFunction() volumeGradientOpacity.AddPoint(70,0.00) volumeGradientOpacity.AddPoint(90,0.40) volumeGradientOpacity.AddPoint(180,0.60) volumeProperty.SetGradientOpacity(volumeGradientOpacity) # 设置颜⾊传递函数
colorFunction = vtk.vtkColorTransferFunction() colorFunction.AddRGBPoint(0.000,0.000,0.000,0.000) colorFunction.AddRGBPoint(64.00,1.000,0.000,0.000) colorFunction.AddRGBPoint(190.00,0.000,1.000,0.000) colorFunction.AddRGBPoint(220.00,0.000,0.000,1.000) volumeProperty.SetColor(colorFunction)
volume = vtk.vtkVolume()
volume.SetMapper(volumeMapper)
位图图片volume.SetProperty(volumeProperty)
ren = vtk.vtkRenderer()
ren.SetBackground(1,1,1)
ren.AddVolume(volume)
ren.RetCamera()
rw = vtk.vtkRenderWindow()
rw.AddRenderer(ren)
rw.SetSize(640,480)
rw.Render()
rw.SetWindowName("VolumeRendering Pyhton")
rwi = vtk.vtkRenderWindowInteractor()
rwi.SetRenderWindow(rw)
rwi.Initialize()带兰的诗句
rwi.Start()
绘制结果:

本文发布于:2023-07-28 05:46:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1099574.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设置   透明度   绘制   光线
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图