其实很简单,使用vtkImageReslice这个类就可以。一般这个类都被用作切片了,很少有关于它对旋转平移等操作的使用说明。
以下为简单的demo
vtkTransform* tranForm = vtkTransform::New();//通过vtkTransForm进行坐标变换操作,当然大佬们可以自己算坐标变换矩阵。
tranForm->RotateY(90);
tranForm->Translate(0, 0, -3);
/*以下为旋转矩阵的使用方法*/
//double axialElements0[16] = { 1,0,0,0, 0,-1,0,0, 0,0,-1,0, 0,0,0,1 };
//vtkMatrix4x4* axis = vtkMatrix4x4::New();
//axis->DeepCopy(axialElements0);
vtkImageReslice* changes = vtkImageReslice::New();
changes->SetInputData(smth->GetOutput());//设置vtkimageData类型的数据
//changes->SetResliceAxes(axis);//这个是用坐标旋转矩阵的
changes->SetInformationInput(smth->GetOutput());
changes->SetResliceTransform(tranForm);//通过此函数调用坐标变换
changes->SetInterpolationModeToLinear();
changes->SetOutputDimensionality(3);
changes->Update();
//之后取changes的输出就可以了
vtkFixedPointVolumeRayCastMapper* mp = vtkFixedPointVolumeRayCastMapper::New();
mp->SetInputData(changes->GetOutput());