simplification of cloud collection
authorAnatoly Baksheev <no@email>
Sat, 11 Jan 2014 12:44:01 +0000 (16:44 +0400)
committerAnatoly Baksheev <no@email>
Sun, 19 Jan 2014 14:38:53 +0000 (18:38 +0400)
modules/viz/src/clouds.cpp
modules/viz/src/precomp.hpp

index e7759e3..9ea1d76 100644 (file)
@@ -112,15 +112,8 @@ void cv::viz::WCloudCollection::addCloud(InputArray cloud, InputArray colors, co
     vtkSmartPointer<vtkCloudMatSource> source = vtkSmartPointer<vtkCloudMatSource>::New();
     source->SetColorCloud(cloud, colors);
 
-    vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
-    transform->SetMatrix(pose.matrix.val);
+    vtkSmartPointer<vtkPolyData> polydata = VtkUtils::TransformPolydata(source->GetOutputPort(), pose);
 
-    vtkSmartPointer<vtkTransformPolyDataFilter> transform_filter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
-    transform_filter->SetInputConnection(source->GetOutputPort());
-    transform_filter->SetTransform(transform);
-    transform_filter->Update();
-
-    vtkSmartPointer<vtkPolyData> polydata = transform_filter->GetOutput();
     vtkSmartPointer<vtkLODActor> actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
     CV_Assert("Incompatible widget type." && actor);
 
index 98de7b7..df46f70 100644 (file)
@@ -256,17 +256,22 @@ namespace cv
                 return normals_generator->GetOutput();
             }
 
-            static vtkSmartPointer<vtkPolyData> TransformPolydata(vtkSmartPointer<vtkPolyData> polydata, const Affine3d& pose)
+            static vtkSmartPointer<vtkPolyData> TransformPolydata(vtkSmartPointer<vtkAlgorithmOutput> algorithm_output_port, const Affine3d& pose)
             {
                 vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
                 transform->SetMatrix(vtkmatrix(pose.matrix));
 
                 vtkSmartPointer<vtkTransformPolyDataFilter> transform_filter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
                 transform_filter->SetTransform(transform);
-                transform_filter->SetInputConnection(polydata->GetProducerPort());
+                transform_filter->SetInputConnection(algorithm_output_port);
                 transform_filter->Update();
                 return transform_filter->GetOutput();
             }
+
+            static vtkSmartPointer<vtkPolyData> TransformPolydata(vtkSmartPointer<vtkPolyData> polydata, const Affine3d& pose)
+            {
+                return TransformPolydata(polydata->GetProducerPort(), pose);
+            }
         };
     }
 }