diff --git a/modules/viz/include/opencv2/viz/viz3d.hpp b/modules/viz/include/opencv2/viz/viz3d.hpp index 3e7d999355..f118dd6bbd 100644 --- a/modules/viz/include/opencv2/viz/viz3d.hpp +++ b/modules/viz/include/opencv2/viz/viz3d.hpp @@ -62,7 +62,7 @@ namespace cv void setRenderingProperty(const String &id, int property, double value); double getRenderingProperty(const String &id, int property); - void setDesiredUpdateRate(double time); + void setDesiredUpdateRate(double rate); double getDesiredUpdateRate(); void setRepresentation(int representation); diff --git a/modules/viz/include/opencv2/viz/widgets.hpp b/modules/viz/include/opencv2/viz/widgets.hpp index 1adc9fccd2..4769073a2d 100644 --- a/modules/viz/include/opencv2/viz/widgets.hpp +++ b/modules/viz/include/opencv2/viz/widgets.hpp @@ -14,7 +14,6 @@ namespace cv OPACITY, LINE_WIDTH, FONT_SIZE, - COLOR, REPRESENTATION, IMMEDIATE_RENDERING, SHADING @@ -162,7 +161,7 @@ namespace cv class CV_EXPORTS Text3DWidget : public Widget3D { public: - Text3DWidget(const String &text, const Point3f &position, double text_scale = 1.0, const Color &color = Color::white()); + Text3DWidget(const String &text, const Point3f &position, double text_scale = 1.0, bool face_camera = true, const Color &color = Color::white()); void setText(const String &text); String getText() const; diff --git a/modules/viz/src/shape_widgets.cpp b/modules/viz/src/shape_widgets.cpp index 84fdc77287..f10c39fb34 100644 --- a/modules/viz/src/shape_widgets.cpp +++ b/modules/viz/src/shape_widgets.cpp @@ -521,21 +521,32 @@ template<> cv::viz::GridWidget cv::viz::Widget::cast() /////////////////////////////////////////////////////////////////////////////////////////////// /// text3D widget implementation -cv::viz::Text3DWidget::Text3DWidget(const String &text, const Point3f &position, double text_scale, const Color &color) +cv::viz::Text3DWidget::Text3DWidget(const String &text, const Point3f &position, double text_scale, bool face_camera, const Color &color) { - vtkSmartPointer textSource = vtkSmartPointer::New (); - textSource->SetText (text.c_str()); - textSource->Update (); + vtkSmartPointer textSource = vtkSmartPointer::New(); + textSource->SetText(text.c_str()); + textSource->Update(); - vtkSmartPointer mapper = vtkSmartPointer::New (); - mapper->SetInputConnection (textSource->GetOutputPort ()); + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetInputConnection (textSource->GetOutputPort()); - vtkSmartPointer actor = vtkSmartPointer::New (); - actor->SetMapper (mapper); - actor->SetPosition (position.x, position.y, position.z); - actor->SetScale (text_scale); + if (face_camera) + { + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + actor->SetPosition(position.x, position.y, position.z); + actor->SetScale(text_scale); + WidgetAccessor::setProp(*this, actor); + } + else + { + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + actor->SetPosition(position.x, position.y, position.z); + actor->SetScale(text_scale); + WidgetAccessor::setProp(*this, actor); + } - WidgetAccessor::setProp(*this, actor); setColor(color); } diff --git a/modules/viz/src/viz3d.cpp b/modules/viz/src/viz3d.cpp index ba323c243e..eeea94277f 100644 --- a/modules/viz/src/viz3d.cpp +++ b/modules/viz/src/viz3d.cpp @@ -84,7 +84,7 @@ void cv::viz::Viz3d::setBackgroundColor(const Color& color) { impl_->setBackgrou void cv::viz::Viz3d::setRenderingProperty(const String &id, int property, double value) { getWidget(id).setRenderingProperty(property, value); } double cv::viz::Viz3d::getRenderingProperty(const String &id, int property) { return getWidget(id).getRenderingProperty(property); } -void cv::viz::Viz3d::setDesiredUpdateRate(double time) { impl_->setDesiredUpdateRate(time); } +void cv::viz::Viz3d::setDesiredUpdateRate(double rate) { impl_->setDesiredUpdateRate(rate); } double cv::viz::Viz3d::getDesiredUpdateRate() { return impl_->getDesiredUpdateRate(); } void cv::viz::Viz3d::setRepresentation(int representation) { impl_->setRepresentation(representation); } diff --git a/modules/viz/src/viz3d_impl.cpp b/modules/viz/src/viz3d_impl.cpp index 765e71b224..fd6a82eb46 100644 --- a/modules/viz/src/viz3d_impl.cpp +++ b/modules/viz/src/viz3d_impl.cpp @@ -189,10 +189,10 @@ cv::Affine3f cv::viz::Viz3d::VizImpl::getWidgetPose(const String &id) const } ///////////////////////////////////////////////////////////////////////////////////////////// -void cv::viz::Viz3d::VizImpl::setDesiredUpdateRate(double time) +void cv::viz::Viz3d::VizImpl::setDesiredUpdateRate(double rate) { if (interactor_) - interactor_->SetDesiredUpdateRate(time); + interactor_->SetDesiredUpdateRate(rate); } ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/modules/viz/src/viz3d_impl.hpp b/modules/viz/src/viz3d_impl.hpp index 98c2c45547..26d817a13c 100644 --- a/modules/viz/src/viz3d_impl.hpp +++ b/modules/viz/src/viz3d_impl.hpp @@ -24,7 +24,7 @@ public: void updateWidgetPose(const String &id, const Affine3f &pose); Affine3f getWidgetPose(const String &id) const; - void setDesiredUpdateRate(double time); + void setDesiredUpdateRate(double rate); double getDesiredUpdateRate(); /** \brief Returns true when the user tried to close the window */