vtk通过交互类改动已加载的actor中的数据(vtkpolyData)的实现的步骤

本文介绍了如何在C++中通过自定义的callbacknew类来实现在vtk交互操作中改变vtkActor的数据,即vtkPolyData。主要步骤包括创建callbacknew类,设置Actor,响应LeftButtonPressEvent事件,修改点坐标,更新并重新渲染Actor。
摘要由CSDN通过智能技术生成

实际操作中我们经常会用到通过交互操作改变vtkactor的数据vtkpolydata,比如光滑物体某个三角网格,移动某一个线条,或者某一点,而保持其他的不变,简单来说就是在class  中实现对vtkpolydata的重新写入,再使得重新渲染。实现步骤整理如下:

class  callbacknew  :public vtkCommand

{public:
    static callbacknew *New()
    {
        return new callbacknew;
    }

void SetActor(vtkActor * mainActor)

{this->classActor=mainActor;

this->pd=vtkPolyData::SafeDownCast(mainActor->GetMapper()->GetInputAsDataSet());//或者通过建立public函数进行直接赋值也行

}

virtual void Execute(vtkObject *, unsigned long event, void *)

{    if(event == vtkCommand::LeftButtonPressEvent){

//这里常用函数列出来

    vtkSmartPointer<vtkIdList>pts = vtkSmartPointer<vtkIdList>::New();

polyda->GetCellPoints(cellid, pts);//不推荐polyda->GetCellPoints(CellId, npt, pIds); 

double PointPos[3];

polyda->Ge

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值