cube wire_frame fix using vtkOutlineSource
authorozantonkal <ozantonkal@gmail.com>
Mon, 15 Jul 2013 14:47:19 +0000 (16:47 +0200)
committerozantonkal <ozantonkal@gmail.com>
Tue, 16 Jul 2013 07:06:14 +0000 (09:06 +0200)
modules/viz/src/precomp.hpp
modules/viz/src/shape_widgets.cpp

index df3a970..73a1a85 100644 (file)
@@ -43,6 +43,7 @@
 #include <vtkPlaneSource.h>
 #include <vtkSphereSource.h>
 #include <vtkArrowSource.h>
+#include <vtkOutlineSource.h>
 #include <vtkIdentityTransform.h>
 #include <vtkTransform.h>
 #include <vtkTransformPolyDataFilter.h>
index 2272e17..8981806 100644 (file)
@@ -269,19 +269,24 @@ template<> cv::viz::CylinderWidget cv::viz::Widget::cast<cv::viz::CylinderWidget
 /// cylinder widget implementation
 
 cv::viz::CubeWidget::CubeWidget(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame, const Color &color)
-{
-    vtkSmartPointer<vtkCubeSource> cube = vtkSmartPointer<vtkCubeSource>::New ();
-    cube->SetBounds (pt_min.x, pt_max.x, pt_min.y, pt_max.y, pt_min.z, pt_max.z);
+{   
+    vtkSmartPointer<vtkDataSetMapper> mapper = vtkSmartPointer<vtkDataSetMapper>::New ();   
+    if (wire_frame)
+    {
+        vtkSmartPointer<vtkOutlineSource> cube = vtkSmartPointer<vtkOutlineSource>::New();
+        cube->SetBounds (pt_min.x, pt_max.x, pt_min.y, pt_max.y, pt_min.z, pt_max.z);
+        mapper->SetInput(cube->GetOutput ());
+    }
+    else
+    {
+        vtkSmartPointer<vtkCubeSource> cube = vtkSmartPointer<vtkCubeSource>::New ();
+        cube->SetBounds (pt_min.x, pt_max.x, pt_min.y, pt_max.y, pt_min.z, pt_max.z);
+        mapper->SetInput(cube->GetOutput ());
+    }
     
-    vtkSmartPointer<vtkDataSetMapper> mapper = vtkSmartPointer<vtkDataSetMapper>::New ();
-    mapper->SetInput(cube->GetOutput ());
-
     vtkSmartPointer<vtkLODActor> actor = vtkSmartPointer<vtkLODActor>::New();
     actor->SetMapper(mapper);
     
-    if (wire_frame)
-        actor->GetProperty ()->SetRepresentationToWireframe ();
-    
     WidgetAccessor::setProp(*this, actor);
     setColor(color);
 }