2.1 一个稍微复杂的VTK程序
创建VTK程序的步骤可以参考上一篇,这里直接列出CMakeLists.txt 和2.1_RenderCylinder.cpp内容
CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.13.4)
PROJECT(Chap02)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(2.1_RenderCylinder 2.1_RenderCylinder.cpp)
TARGET_LINK_LIBRARIES(2.1_RenderCylinder ${VTK_LIBRARIES} )
2.1_RenderCylinder.cpp
#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
int main(){
vtkSmartPointer<vtkCylinderSource> cyLinder=
vtkSmartPointer<vtkCylinderSource>::New();
cyLinder->SetHeight(3.0);
cyLinder->SetRadius(1.0);
cyLinder->SetResolution(10);
vtkSmartPointer<vtkPolyDataMapper> cyLinderMapper=
vtkSmartPointer<vtkPolyDataMapper>::New();
cyLinderMapper->SetInputConnection(cyLinder->GetOutputPort());
vtkSmartPointer<vtkActor> cyLinderActor=
vtkSmartPointer<vtkActor>::New();
cyLinderActor->SetMapper(cyLinderMapper);
vtkSmartPointer<vtkRenderer> renderer=
vtkSmartPointer<vtkRenderer>::New();
//renderer->AddActor(cyLinderActor);
renderer->SetBackground(0.1,0.2,0.4);
vtkSmartPointer<vtkRenderWindow> renWin=
vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
renWin->SetSize(300,300);
vtkSmartPointer<vtkRenderWindowInteractor> iren=
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style=
vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
return 0;
}
运行效果:

详解:
(1)vtkCylinderSource
生成的数据类型是vtkPolyData,柱体。

(2)vtkPolyDataMapper
将输入的数据转换为几何图元(点、线、多边形)进行渲染。

(3

本文详细介绍了VTK(Visualization Toolkit)中的关键组件及其在三维渲染和数据可视化中的应用。从Cylinder的渲染开始,深入讲解了VTK管线的工作流程,包括数据源、映射器、Actor、渲染器、渲染窗口和交互器的概念与使用。同时,探讨了灯光、相机、坐标系统和空间变换等三维场景基本要素。
最低0.47元/天 解锁文章
317

被折叠的 条评论
为什么被折叠?



