vtk对polydata的bool运算

更新时间:2023-06-25 02:51:26 阅读: 评论:0

vtk对polydata的bool运算
1.vtk可以对implicit data运算,通常的polydata需要转化为implicit 进⾏运算。
经查,⽹上有vtkImplicitPolyData类可以将polydata转化。
夏道行2. 将这些polydata通过vtkImplicitPolyData过滤后丢给vtkClipPolydata,作为clippolydata的裁剪函数让clippolydata做裁剪操作
3.clipdata还需要原始的polydata,丢给他。
4.把裁剪结果丢给polydatamapper。
5.⾛流⽔线
完事。
上段关键代码:
// 1.读进来⼀个⽜的模型,丢到renderer⾥淳朴的近义词
vtkOBJReader *wavefront = vtkOBJReader::New();
wavefront->SetFileName("E:\\data\\Viewpoint\\cow.obj"); //我在windows平台
wavefront->Update();
vtkPolyDataMapper *cowMapper = vtkPolyDataMapper::New();
cowMapper->SetInput(wavefront->GetOutput());
vtkActor *cow = vtkActor::New();
cow->SetMapper(cowMapper);
虾需要煮多久ren->AddActor(cow);
//2. 创建⼀个圆柱体,先变换,再三⾓化(似乎是必须的!)
vtkCylinderSource *cylinderB = vtkCylinderSource::New();
cylinderB->SetRadius(0.2);
cylinderB->SetResolution(21);
cylinderB->CappingOn();
英国歌曲vtkTransform *trans = vtkTransform::New();大脸图片
trans->Translate(5.1, 2.0, 0.0);
trans->Scale(0.5, 0.5, 0.5);
trans->RotateZ(90);
vtkTransformPolyDataFilter *tf = vtkTransformPolyDataFilter::New();
tf->SetInput(cylinderB->GetOutput());
tf->SetTransform(trans);
vtkTriangleFilter *triangle = vtkTriangleFilter::New();
文学论文
triangle->SetInput(tf->GetOutput());
vtkPolyDataNormals *norm = vtkPolyDataNormals::New();
norm->SetInput(triangle->GetOutput());
vtkPolyDataMapper *CylinderBMapper = vtkPolyDataMapper::New();
CylinderBMapper->SetInput(norm->GetOutput());
// Append
vtkAppendPolyData *append = vtkAppendPolyData::New();
append->AddInput(CylinderBMapper->GetInput());
vtkActor *CylinderBActor = vtkActor::New();
周日常CylinderBActor->SetMapper( CylinderBMapper );
CylinderBActor->GetProperty()->SetColor(0,1,0);
//3.将圆柱体转化为implicitpolydata 。
vtkImplicitPolyData *polyToImplicitDataB = vtkImplicitPolyData::New();
岳梅
polyToImplicitDataB->SetTolerance(0.5);
polyToImplicitDataB->SetInput(append->GetOutput());
//4.我要裁剪!
vtkClipPolyData *clipper = vtkClipPolyData::New();
clipper->SetInput((vtkPolyData *)cow->GetMapper()->GetInput());  //我要裁剪谁?⽜是吧,拿来
clipper->SetClipFunction(polyToImplicitDataB);                                //你要裁剪不是要⽅程么?也拿来 clipper->InsideOutOff();
clipper->GenerateClipScalarsOn();
//5.剪好了⾛流⽔线去!
vtkPolyDataMapper *newmapper = vtkPolyDataMapper::New();
newmapper->SetInput(clipper->GetOutput());
cow->SetMapper(newmapper);
ren->AddActor(CylinderBActor);
ren->GetActiveCamera()->Azimuth(50);
ren->RetCamera();
//done!
renWin->Render();
结果图:

本文发布于:2023-06-25 02:51:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1033246.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:裁剪   圆柱体   需要   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图