minor mesh load fixes
authorAnatoly Baksheev <no@email>
Mon, 15 Jul 2013 12:46:39 +0000 (16:46 +0400)
committerAnatoly Baksheev <no@email>
Mon, 15 Jul 2013 12:46:39 +0000 (16:46 +0400)
modules/viz/src/types.cpp

index 311ad9d..d3ba6c4 100644 (file)
@@ -73,8 +73,6 @@ struct cv::viz::Mesh3d::loadMeshImpl
         reader->SetFileName(file.c_str());
         reader->Update();
         vtkSmartPointer<vtkPolyData> poly_data = reader->GetOutput ();
-
-        typedef unsigned int uint32_t;
         
         vtkSmartPointer<vtkPoints> mesh_points = poly_data->GetPoints ();
         vtkIdType nr_points = mesh_points->GetNumberOfPoints ();
@@ -82,11 +80,12 @@ struct cv::viz::Mesh3d::loadMeshImpl
 
         mesh->cloud.create(1, nr_points, CV_32FC3);
 
-        double point_xyz[3];
+        Vec3f *mesh_cloud = mesh->cloud.ptr<Vec3f>();
         for (vtkIdType i = 0; i < mesh_points->GetNumberOfPoints (); i++)
         {
-            mesh_points->GetPoint (i, &point_xyz[0]);
-            mesh->cloud.ptr<cv::Point3f>()[i] = cv::Point3d(point_xyz[0], point_xyz[1], point_xyz[2]);;
+            Vec3d point;
+            mesh_points->GetPoint (i, point.val);
+            mesh_cloud[i] = point;
         }
 
         // Then the color information, if any
@@ -105,14 +104,15 @@ struct cv::viz::Mesh3d::loadMeshImpl
         if (poly_colors && (poly_colors->GetNumberOfComponents () == 3))
         {
             mesh->colors.create(1, nr_points, CV_8UC3);
-            unsigned char point_color[3];
+            Vec3b *mesh_colors = mesh->colors.ptr<cv::Vec3b>();
 
             for (vtkIdType i = 0; i < mesh_points->GetNumberOfPoints (); i++)
             {
-                poly_colors->GetTupleValue (i, &point_color[0]);
+                Vec3b point_color;
+                poly_colors->GetTupleValue (i, point_color.val);
 
-                //RGB or BGR?????
-                mesh->colors.ptr<cv::Vec3b>()[i] = cv::Vec3b(point_color[0], point_color[1], point_color[2]);
+                //RGB or BGR? should we swap channels????
+                mesh_colors[i] = point_color;
             }
         }
         else