VTK_Learning_Day_Two_Basic_Syntax

Basic syntax


上面的文章链接很好的讲述了VTk中基本的一些类库。


下面我就来摘抄一下其中重要的部分。


当我们去看舞台剧的时候,我们坐在台下,展现在我们面前的是一个舞台,舞台上有各式的灯光,各样的演员。演员出场的时候肯定是会先化妆,有些演员可能会打扮成高富帅,有些演员可能会化妆成白富美。观众有时还会与台上的演员有一定的互动。

整个剧院就好比VTK程序的渲染窗口(vtkRenderWindow);舞台就相当于渲染场景(vtkRenderer);而那些高富帅、白富美就是我们程序中的Actor(有些文献翻译成“演员”,有些翻译成“角色”,这里我们不作翻译);台上的演员与台下观众的互动可以看成是程序的交互(vtkRenderWindowInteractor);演员与观众的互动方式有很多种,现场的观众可以直接上台跟演员们握手拥抱,电视机前的可以发短信,电脑、移动终端用户等可以微博关注、加粉等等,这就好比我们程序里的交互器样式(vtkInteractorStyle);舞台上的演员我们都能一一分辨出来,不会把高富帅弄混淆,是因为他们化的妆、穿的服饰都不一样,这就相当于我们程序里vtkActor的不同属性(vtkProperty);台下观众的眼睛可以看作是vtkCamera,前排的观众因为离得近,看台上演员会显得比较高大,而后排的观众看到的会显得小点,每个观众看到的东西在他的世界里都是唯一的,所以渲染场景Renderer里的vtkCamera对象也是只有一个;舞台上的灯光可以有多个,所以渲染场景里的vtkLight也存在多个。可以参考一下图3.2,加深理解。


注:此文章部分截取与CSDN东灵工作室

下面就是对这些代码的理解

#include "vtkSmartPointer.h"
#include "vtkRenderWindow.h"   // stadium
#include "vtkRenderer.h"             // stage
#include "vtkActor.h"                     // actor
#include "vtkCylinderSource.h"    // cylinder
#include "vtkPolyDataMapper.h"  // data type
#include "vtkRenderWindowInteractor.h"   // interactor
#include "vtkInteractorStyleTrackballCamera.h" //interactor style

int main(){
	//generate cylinder object
	vtkSmartPointer <vtkCylinderSource> cylinder = vtkSmartPointer <vtkCylinderSource>::New();
	cylinder->SetHeight(4.0);
	cylinder->SetRadius(4.0);
	cylinder->SetResolution(10);

	// draw contours of cylinder
	vtkSmartPointer <vtkPolyDataMapper> cylinderMapper = vtkSmartPointer <vtkPolyDataMapper>::New();
	cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

	// generate Actor
	vtkSmartPointer <vtkActor> cylinderActor = vtkSmartPointer <vtkActor>::New();
	cylinderActor->SetMapper(cylinderMapper);

	// depict the stage
	vtkSmartPointer <vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	renderer->SetBackground(0.4, 0.3, 0.2);
	renderer->AddActor(cylinderActor);

	// add stage to stadium
	vtkSmartPointer <vtkRenderWindow> reWin = vtkSmartPointer<vtkRenderWindow>::New();
	reWin->AddRenderer(renderer);

	// set the interactor	
	vtkSmartPointer <vtkRenderWindowInteractor> iren = vtkSmartPointer <vtkRenderWindowInteractor>::New();
	iren->SetRenderWindow(reWin);

	// set the interactor style
	vtkSmartPointer <vtkInteractorStyleTrackballCamera> style = vtkSmartPointer <vtkInteractorStyleTrackballCamera>::New();
	iren->SetInteractorStyle(style);

	// get the iren
	iren->Initialize();
	// start the project
	iren->Start();
	return 0;
}

CMake

cmake_minimum_required (VERSION 2.8)
project (RenderCylinder)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
add_executable(RenderCylinder RenderCylinder.cpp)
target_link_libraries(RenderCylinder vtkRendering vtkCommon)












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值