vtkCutter 效率提升 vtkPlaneCutter

vtkPlaneCutter作为vtkCutter的特化版本,在切割数据集时表现出更高的效率,尤其是在使用vtkPlane进行切割时。尽管初始化可能耗时较长,但后续操作速度显著提升。然而,vtkPlaneCutter的输出需要通过vtkCompositePolyDataMapper来显示,因为其结果数据结构不同于输入,并且在处理结果数据时可能需要额外的转换步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vtkPlaneCutter是vtkCutter算法的特化,在使用vtkPlane切割同一数据集时,vtkPlaneCutter的效率会显著高于vtkCutter。

代码示例

//和vtkCutter基本一致
vtkSmartPointer<vtkPlaneCutter> planeCutter = vtkSmartPointer<vtkPlaneCutter>::New();
planeCutter->SetInputData(polyData);//数据源不变化的情况下只需设置一次
planeCutter->SetPlane(cutPlane);//vtkPlaneCutter只允许用vtkPlane来切割
planeCutter->Update();

vtkPlaneCutter在第一次Update时由于需要构建初始数据结构等,耗时会较长(即便如此,大部分情况也比vtkCutter要快一下),后续在数据源不变的情况下耗时大幅减少。

切割后数据显示

由于内部的数据结构,vtkPlaneCutter的output是一块一块的,无法直接用vtkPolyDataMapper来显示,需要使用vtkCompositePolyDataMapper。

代码示例

//主要的流程
vtkSmartPointer<vtkCompositePolyDataMapper> compositePolyDataMapper = vtkSmartPointer<vtkCompositePolyDataMapper>::New();
compositePolyDataMapper->SetInputConnection(planeCutter->GetOutputPort());//主要是这一步
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(compositePolyDataMapper);

目前存在的问题

如上所说,vtkPlaneCutter的结果类型和输入并不一致,如果需要结果中的数据,或者对结果做处理的话,需要自己做些处理,不过我对它返回的数据结构也不是很清楚,还不知道要怎么做。有大佬知道或者研究出来的话,希望可以分享一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值