当前位置:网站首页>vtk体绘制代码报错的解决办法(代码在vtk7,8,9中都能运行),以及VTK数据集网站
vtk体绘制代码报错的解决办法(代码在vtk7,8,9中都能运行),以及VTK数据集网站
2022-08-01 18:56:00 【宗浩多捞】
链接:vtk7.1.1官方文档
链接:官方示例代码
链接:VTK资源网站(需要什么资源搜索就行,官网示例中的数据集、资源基本都有)
体绘制代码运行不了,一直报错的解决方案
- 大家应该都看过VTK图形图像进阶那本书了,那本书的VTK版本为5.10.1,随书代码中体绘制部分在VTK7 8 9版本中是不能运行的,需要稍微改一些东西(没有《VTK图形图像进阶》这本书和随书代码的可以找我私聊,我可以发百度网盘)
- 还需要注意添加:
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);否则会报错
#include<vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
#include <vtkSmartPointer.h>
#include <vtkImageData.h>
#include <vtkStructuredPoints.h>
#include <vtkStructuredPointsReader.h>
#include <vtkVolumeRayCastCompositeFunction.h>
#include <vtkGPUVolumeRayCastMapper.h>
#include <vtkVolumeRayCastMapper.h>
#include <vtkColorTransferFunction.h>
#include <vtkPiecewiseFunction.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkVolumeProperty.h>
#include <vtkAxesActor.h>
#include <vtkImageShiftScale.h>
#include <vtkImageCast.h>
#include <vtkFixedPointVolumeRayCastMapper.h>
// ../data/mummy.128.vtk
int main(int argc, char *argv[])
{
vtkSmartPointer<vtkStructuredPointsReader> reader =
vtkSmartPointer<vtkStructuredPointsReader>::New();
reader->SetFileName(../data/mummy.128.vtk);
reader->Update();
//vtkSmartPointer<vtkVolumeRayCastCompositeFunction> rayCastFun = vtkSmartPointer<vtkVolumeRayCastCompositeFunction>::New(); // 舍弃了
vtkSmartPointer<vtkFixedPointVolumeRayCastMapper> volumeMapper = vtkSmartPointer<vtkFixedPointVolumeRayCastMapper>::New();
volumeMapper->SetInputDataObject(reader->GetOutput());
//volumeMapper->SetVolumeRayCastFunction(rayCastFun); // 舍弃了
vtkSmartPointer<vtkVolumeProperty> volumeProperty = vtkSmartPointer<vtkVolumeProperty>::New();
volumeProperty->SetInterpolationTypeToLinear();
volumeProperty->ShadeOn(); //打开或者关闭光照着色
volumeProperty->SetAmbient(0.4);
volumeProperty->SetDiffuse(0.6);
volumeProperty->SetSpecular(0.2);
vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity = vtkSmartPointer<vtkPiecewiseFunction>::New();
compositeOpacity->AddPoint(70, 0.00);
compositeOpacity->AddPoint(90, 0.40);
compositeOpacity->AddPoint(180, 0.60);
volumeProperty->SetScalarOpacity(compositeOpacity); //设置不透明度传输函数
vtkSmartPointer<vtkPiecewiseFunction> volumeGradientOpacity = vtkSmartPointer<vtkPiecewiseFunction>::New();
volumeGradientOpacity->AddPoint(10, 0.0);
volumeGradientOpacity->AddPoint(90, 0.5);
volumeGradientOpacity->AddPoint(100, 1.0);
//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.52, 0.30);
color->AddRGBPoint(190.0, 1.00, 1.00, 1.00);
color->AddRGBPoint(220.0, 0.20, 0.20, 0.20);
volumeProperty->SetColor(color);
vtkSmartPointer<vtkVolume> volume = vtkSmartPointer<vtkVolume>::New();
volume->SetMapper(volumeMapper);
volume->SetProperty(volumeProperty);
vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();
ren->SetBackground(1, 1, 0);
ren->AddVolume( volume );
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(ren);
renWin->SetSize(640, 480);
renWin->Render();
renWin->SetWindowName("VolumeRenderingApp");
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
ren->ResetCamera();
renWin->Render();
iren->Start();
std::cin.get();
return EXIT_SUCCESS;
}
边栏推荐
- Tower Defense Shoreline User Agreement
- 在全志V853开发板试编译QT测试
- 2022,程序员应该如何找工作
- Selenium在远程中的截图
- Golang协程调度器scheduler怎么使用
- 【神经网络】一文带你轻松解析神经网络(附实例恶搞女友)
- Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021: Interpretation
- Clip-on multimeter use method, how to measure the voltage, current, resistance?
- TestNG多个xml进行自动化测试
- Prometheus的Recording rules实践
猜你喜欢

在表格数据上,为什么基于树的模型仍然优于深度学习?

Flowable-based upp (unified process platform) running performance optimization

【木棉花】#夏日挑战赛# 鸿蒙小游戏项目——数独Sudoku(3)

Leetcode75. 颜色分类

深入浅出Flask PIN

PanGu-Coder:函数级的代码生成模型

How to solve the dynamic binding of el-form-item prop attribute does not take effect

A simple Flask PIN

Leetcode73. Matrix Zeroing

odoo coding conventions (programming conventions, coding guidelines)
随机推荐
亚马逊云科技Build On2022技能提升计划第二季——揭秘出海爆款新物种背后的黑科技
ExcelPatternTool: Excel表格-数据库互导工具
生命周期和作用域
【Translation】OpenMetrics cultivated by CNCF becomes an incubation project
#yyds干货盘点# 面试必刷TOP101: 链表中倒数最后k个结点
Heavy cover special | build the first line of defense, cloud firewall offensive and defensive drills best practices
将ENS域名转化为音乐需要几步?
无需破解,官网安装Visual Studio 2013社区版
重保特辑|拦截99%恶意流量,揭秘WAF攻防演练最佳实践
Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021: Interpretation
C#/VB.NET Extract table from PDF
请你说说多线程
英国伦敦大学|眼科强化学习:潜在应用和实施挑战
Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021:解读
odoo coding conventions (programming conventions, coding guidelines)
Use of message template placeholders
【服务器数据恢复】服务器Raid5阵列mdisk组中多块磁盘离线的数据恢复案例
Leetcode73. 矩阵置零
Hardware Bear Original Collection (Updated 2022/07)
日志工厂(详细)