diff --git a/modules/gfx/pymod/export_render_options.cc b/modules/gfx/pymod/export_render_options.cc index cb5a530b7b0f84b41e1851870bd8aca578ce2522..5d2a951725552e236ed86a7e22b879b6b2190fec 100644 --- a/modules/gfx/pymod/export_render_options.cc +++ b/modules/gfx/pymod/export_render_options.cc @@ -79,6 +79,7 @@ void export_RenderOptions() ; class_<CartoonRenderOptions, boost::shared_ptr<CartoonRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CartoonRenderOptions") + .def(init<optional<bool> >()) .def("SetSplineDetail", &CartoonRenderOptions::SetSplineDetail) .def("GetSplineDetail", &CartoonRenderOptions::GetSplineDetail) .def("SetPolyMode", &CartoonRenderOptions::SetPolyMode) diff --git a/modules/gfx/src/impl/cartoon_renderer.cc b/modules/gfx/src/impl/cartoon_renderer.cc index 887e4c449d82292ef2a517442bbfaf8c42bd4f85..e9b750232ed57e27da7f6dbaf68aaeb048ab372c 100644 --- a/modules/gfx/src/impl/cartoon_renderer.cc +++ b/modules/gfx/src/impl/cartoon_renderer.cc @@ -32,7 +32,7 @@ using namespace impl; CartoonRenderer::CartoonRenderer(BackboneTrace& trace, bool force_tube): TraceRendererBase(trace, 3), force_tube_(force_tube), - options_(new CartoonRenderOptions()) + options_(new CartoonRenderOptions(force_tube)) { if(force_tube){ this->SetName("Smooth Tube"); diff --git a/modules/gfx/src/render_options/cartoon_render_options.cc b/modules/gfx/src/render_options/cartoon_render_options.cc index 1f3428c15f2d3fe7ceeca12d8edb1e9b617ba892..30996bfd1288bcdf80aafc1c391682b7b66b3a63 100644 --- a/modules/gfx/src/render_options/cartoon_render_options.cc +++ b/modules/gfx/src/render_options/cartoon_render_options.cc @@ -26,7 +26,8 @@ namespace ost { namespace gfx { -CartoonRenderOptions::CartoonRenderOptions(): +CartoonRenderOptions::CartoonRenderOptions(bool force_tube): + force_tube_(force_tube), spline_detail_(6), poly_mode_(2), arc_detail_(4), @@ -41,10 +42,14 @@ CartoonRenderOptions::CartoonRenderOptions(): strand_ecc_(0.3) {} RenderMode::Type CartoonRenderOptions::GetRenderMode(){ - return RenderMode::HSC; + if(force_tube_) + return RenderMode::TUBE; + return RenderMode::HSC; } bool CartoonRenderOptions::CanApplyRenderOptions(RenderOptionsPtr render_options){ + if(force_tube_) + return render_options.get()->GetRenderMode()==RenderMode::TUBE; return render_options.get()->GetRenderMode()==RenderMode::HSC; } diff --git a/modules/gfx/src/render_options/cartoon_render_options.hh b/modules/gfx/src/render_options/cartoon_render_options.hh index cddecbdab098c65a028a1debb827066f94853880..55653bb53edd76241e82b4d018ec2b23faa49f01 100644 --- a/modules/gfx/src/render_options/cartoon_render_options.hh +++ b/modules/gfx/src/render_options/cartoon_render_options.hh @@ -33,7 +33,7 @@ namespace ost { namespace gfx { class DLLEXPORT_OST_GFX CartoonRenderOptions: public ost::gfx::RenderOptions { public: - CartoonRenderOptions(); + CartoonRenderOptions(bool force_tube=false); virtual RenderMode::Type GetRenderMode(); @@ -76,6 +76,7 @@ public: virtual ~CartoonRenderOptions(); private: + bool force_tube_; uint spline_detail_; uint poly_mode_; uint arc_detail_;