#include
<
vtkTetra
.
h
>
#include
<
vtkCellArray
.
h
>
#include
<
vtkXMLUnstructuredGridReader
.
h
>
#include
<
vtkDataSetMapper
.
h
>
#include
<
vtkActor
.
h
>
#include
<
vtkRenderer
.
h
>
#include
<
vtkRenderWindow
.
h
>
#include
<
vtkRenderWindowInteractor
.
h
>
#include
<
vtkXMLUnstructuredGridWriter
.
h
>
#include
<
vtkUnstructuredGrid
.
h
>
#include
<
vtkPointData
.
h
>
#include
<
vtkVertexGlyphFilter
.
h
>
int main()
std
::string
filename
=
"ou.vtu"
;
vtkSmartPointer
<
vtkPoints
>
points
=
vtkSmartPointer
<
vtkPoints
>
::New
();
points
->
InsertNextPoint(
0
,
0
,
0
);
points
->
InsertNextPoint(
1
,
0
,
0
);
points
->
InsertNextPoint(
1
,
1
,
0
);
points
->
InsertNextPoint(
0
,
1
,
1
);
vtkSmartPointer
<
vtkTetra
>
tetra
=
vtkSmartPointer
<
vtkTetra
>
::New
();
tetra
->
GetPointIds()
->
SetId(
0
,
0
);
tetra
->
GetPointIds()
->
SetId(
1
,
1
);
tetra
->
GetPointIds()
->
SetId(
2
,
2
);
tetra
->
GetPointIds()
->
SetId(
3
,
3
);
vtkSmartPointer
<
vtkCellArray
>
cellArray
=
vtkSmartPointer
<
vtkCellArray
>
::New
();
cellArray
->
InsertNextCell(tetra);
vtkSmartPointer
<
vtkUnstructuredGrid
>
unstructuredGrid
=
vtkSmartPointer
<
vtkUnstructuredGrid
>
::New
();
unstructuredGrid
->
SetPoints(points);
unstructuredGrid
->
SetCells(VTK_TETRA, cellArray);
vtkSmartPointer
<
vtkXMLUnstructuredGridWriter
>
writer
=
vtkSmartPointer
<
vtkXMLUnstructuredGridWriter
>
::New
();
writer
->
SetFileName(filename
.
c_str());
writer
->
SetInput(unstructuredGrid);
writer
->
Write();
vtkSmartPointer
<
vtkXMLUnstructuredGridReader
>
reader
=
vtkSmartPointer
<
vtkXMLUnstructuredGridReader
>
::New
();
reader
->
SetFileName(filename
.
c_str());
reader
->
Update();
vtkSmartPointer
<
vtkDataSetMapper
>
mapper
=
vtkSmartPointer
<
vtkDataSetMapper
>
::New
();
mapper
->
SetInputConnection(reader
->
GetOutputPort());
vtkSmartPointer
<
vtkActor
>
actor
=
vtkSmartPointer
<
vtkActor
>
::New
();
actor
->
SetMapper(mapper);
vtkSmartPointer
<
vtkRenderer
>
renderer
=
vtkSmartPointer
<
vtkRenderer
>
::New
();
vtkSmartPointer
<
vtkRenderWindow
>
renderWindow
=
vtkSmartPointer
<
vtkRenderWindow
>
::New
();
renderWindow
->
AddRenderer(renderer);
vtkSmartPointer
<
vtkRenderWindowInteractor
>
renderWindowInteractor
=
vtkSmartPointer
<
vtkRenderWindowInteractor
>
::New
();
renderWindowInteractor
->
SetRenderWindow(renderWindow);
renderer
->
AddActor(actor);
renderer
->
SetBackground(
.3
,
.6
,
.3
);
renderWindow
->
Render();
renderWindowInteractor
->
Start();
return
0
;
#include vtkVersion.h>#include vtkSmartPointer.h>#include vtkTetra.h>#include vtkCellArray.h>#include vtkXMLUnstructuredGridReader.h>#include vtkDataSetMapper.h>#include vtkActor.h>#include vtk
VTK
框架里,大多数的类都是从
vtk
Object派生,
vtk
Object实现了观察者/命令(Observer/Command)设计模式,内部维护一个修改时间,用于控制可视化管线的执行。可视化管线是
VTK
里的重要概念,管线的连接应该使用SetInputConnection()/GetOutputPort()接口进行连接。
VTK
采用“惰性赋值”(Lazy Evaluation)的方案来控制管线的执行,只有当发出“请求
数据
”时,管线才会被执行。
具体讲,惰...
主要采用
vtk
XMLUnstructuredGridReader()类读取非结构化网格结构的
vtk
XML格式的
文件
。
#include
vtk
XMLUnstructuredGridReader.h>
#include
vtk
SmartPointer.h>
#include
vtk
DataSetMapper.h>
#include
vtk
Actor.h>
#include
vtk
RenderWi
from paraview.simple import *
r = Legacy
VTK
Reader(FileNames=['input.
vtk
'])
w = XMLUnstructuredGridWriter()
w.FileName = 'output.
vtu
'
w.UpdatePipeline()
VTK
(Visualization Toolkit)是 Kitware 公司发布的开源免费软件系统,受到国内外高等院校与科研机构的欢迎,广泛地应用于计算机图形学、图像处理与三维可视化等领域。
VTK
独立于系统的图形界面接口(GUI),可方便的嵌入到其他的相关软件中。同时开发人员可以基于
VTK
独立的基础类库开发自己的库函数,拓展
VTK
的应用范围。
VTK
采用面向对象思想,基于 OpenGL 开发出目标函数库。它将将一些常用的算法封装为类的形式,用户在开发过程中可以直接调...
VTK
的编译与环境搭建
这部分目前已经有了大佬做了成熟的傻瓜式配置,大家可以参考这篇文章:
VTK
+VS2019(或其他版本均可) 傻瓜式一站式 配置_Nancy_fairy的博客-CSDN博客_vs2019
vtk
VTK
一般渲染流程
这部分的介绍也很多,大家可以参考这篇文章:
VTK
笔记-了解
VTK
_黑山老妖的博客.
VTK
能做什么?
三维计算机图形、图像处理及可视化是
VTK
主要的应用方向。通过
VTK
可以将科学实验
数据
如建筑学、气象学、医学、生物学或者航空航天学,对体、面、光源等等的逼真渲染,从而帮助人们理解那些采取错综复杂而又往往规模庞大的数字呈现形式的科学概念或结果。
VTK
的特点
强大的三维图形功能。
VTK
既支持基于体素的体绘制(Voxel-Based Volume Rendering),又保留...
可以使用下面的代码将STL
文件
转换为
VTK
数据
结构:// 创建读取器
vtk
SmartPointer<
vtk
STLReader> reader =
vtk
SmartPointer<
vtk
STLReader>::New();
reader->SetFileName (STL_FILE_NAME);// 转换为
VTK
数据
结构
vtk
SmartPointer<
vtk
PolyData> polyData =
vtk
SmartPointer<
vtk
PolyData>::New();
polyData->SetPoints(reader->GetOutput()->GetPoints());
polyData->SetPolys(reader->GetOutput()->GetPolys());