我使用VTK + Paraview为演示文稿生成一些不错的图像。我的问题如下:我有一系列相机姿势和相应的灰度图像,我想在3D空间中将它们可视化。对于相机,我使用一个圆锥体并将其置于正确的位置,我将变换滤镜应用于它:
vtkSmartPointer<vtkConeSource> coneSource = vtkSmartPointer<vtkConeSource>::New();
coneSource->SetHeight(0.02);
coneSource->SetRadius(0.01);
coneSource->SetResolution(4);
double direction[3] = {-1,0,0};
coneSource->SetDirection(direction);
coneSource->Update();
vtkSmartPointer<vtkTransform> cone_transform = vtkSmartPointer<vtkTransform>::New();
cone_transform->Translate(translation.x()+0.16,translation.y()+0.12,translation.z()-0.2);
cone_transform->RotateWXYZ(rotation.angle(),rotation.axis().x(),rotation.axis().y(),rotation.axis().z());
vtkSmartPointer<vtkTransformPolyDataFilter> cone_transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
cone_transformFilter->SetInputConnection(coneSource->GetOutputPort());
cone_transformFilter->SetTransform(cone_transform);
cone_transformFilter->Update();
然后我将其保存为.vtp文件。
对于图像,我认为将它存储在vtkImageData对象中是个好主意,但后来我不知道如何对其应用变换。
在网上搜索没有帮助。
拜托,有人可以告诉我如何正确地做到这一点吗?
谢谢!
编辑:
我尝试使用vtkImageReslice,如下所述:
http://www.vtk.org/pipermail/vtkusers/2010-July/061266.html
但没有结果:(
编辑2:
@Kenneth
我试过这种方式:
vtkSmartPointer<vtkImageData> imageData = vtkSmartPointer<vtkImageData>::New();
...
vtkSmartPointer<vtkTransformFilter> transformFilter = vtkSmartPointer<vtkTransformFilter>::New();
//transformFilter->SetInput(imageData);
transformFilter->SetInputConnection(imageData->GetProducerPort());
transformFilter->SetInformation(imageData->GetInformation());
transformFilter->SetTransform(vTransform);
transformFilter->Update();
但是我收到了这个错误:
错误:在/build/buildd/vtk-5.8.0/Filtering/vtkExecutive.cxx,第756行 vtkStreamingDemandDrivenPipeline(0x13106e0):算法vtkTransformFilter(0x130fc80)返回请求失败:vtkInformation(0x1310220)
调试:关闭
修改时间:1961年
参考人数:1
注册事件:(无)
请求:REQUEST_DATA_OBJECT
ALGORITHM_AFTER_FORWARD:1
FROM_OUTPUT_PORT:0
FORWARD_DIRECTION:0
有关如何解决它的想法吗?
答案 0 :(得分:2)
我在这里找到答案:
http://public.kitware.com/pipermail/vtkusers/2009-January/050239.html
基本上,vtkImageData必须始终是轴对齐的。如果要将变换应用于网格,最好使用vtkStructuredGrid。
答案 1 :(得分:0)
另一种可能性是在actor / prop上set a user transform而不是实际转换对象。您只需修改场景,而不是更改对象。
您可能会发现TransformActor
示例很有用。