vtk 模型建立 基础入门

 

 

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
#include<vtkSmartPointer.h>
#include<vtkStructuredPointsReader.h>
#include<vtkPolyDataMapper.h>
#include<vtkMarchingCubes.h>
#include<vtkActor.h>
#include<vtkRenderer.h>
#include<vtkRenderWindow.h>
#include<vtkRenderWindowInteractor.h>
#include<vtkStringArray.h>
#include <vtkStdString.h>
#include <vtkPNGReader.h>
#include <vtkImageViewer2.h>
#include <vtkStdString.h>
#include <vtkPoints.h>
#include <vtkTubeFilter.h>
#include <vtkImplicitModeller.h>
#include <vtkContourFilter.h>


#include<windows.h>
using namespace std;


int main() {

	vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
	vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();
	vtkSmartPointer<vtkPolyData> profile = vtkSmartPointer<vtkPolyData>::New();

	points->InsertNextPoint(0,0,0);
	points->InsertNextPoint(0,2,0);
	points->InsertNextPoint(2,4,0);
	points->InsertNextPoint(4,4,0);

	lines->InsertNextCell(4);
	lines->InsertCellPoint(0);
	lines->InsertCellPoint(1);
	lines->InsertCellPoint(2);
	lines->InsertCellPoint(3);

	profile->SetLines(lines);
	profile->SetPoints(points);

	//tube
	vtkSmartPointer<vtkTubeFilter> tube = vtkSmartPointer<vtkTubeFilter>::New();
	tube->SetInputData(profile);
	tube->SetRadius(.5);
	tube->SetNumberOfSides(12);


	vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	mapper->SetInputData(profile);
	vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
	actor->SetMapper(mapper);

	
	vtkSmartPointer<vtkPolyDataMapper> tubeMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	tubeMapper->SetInputConnection(tube->GetOutputPort());
	vtkSmartPointer<vtkActor> tubeActor = vtkSmartPointer<vtkActor>::New();
	tubeActor->SetMapper(tubeMapper);


	//Implicit Modeller

	vtkSmartPointer< vtkImplicitModeller> imp = vtkSmartPointer< vtkImplicitModeller>::New();
	imp->SetInputData(profile);
	imp->SetSampleDimensions(100,100,100);
	imp->SetMaximumDistance(0.25);
	imp->SetModelBounds(-10,10, -10, 10, - 10, 10);
	vtkSmartPointer<vtkContourFilter> contour = vtkSmartPointer<vtkContourFilter>::New();
	contour->SetInputConnection(imp->GetOutputPort());
	contour->SetValue(0,0.5);

	vtkSmartPointer<vtkPolyDataMapper> conMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	conMapper->SetInputConnection(contour->GetOutputPort());
	vtkSmartPointer<vtkActor> contourActor = vtkSmartPointer<vtkActor>::New();
	contourActor->SetMapper(conMapper);
	contourActor->SetPosition(5,0,0);

	vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
	vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();





	renWin->AddRenderer(renderer);
	renderer->SetBackground(0.5, 0.3, 0.4);
    renderer->AddActor(actor);
	renderer->AddActor(tubeActor);
	renderer->AddActor(contourActor);

	
	renWin->SetSize(840, 880);
	renWin->Render();

	interactor->SetRenderWindow(renWin);
	interactor->Initialize();
	interactor->Start();

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小道士写程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值