diff --git a/modules/gfx/src/impl/simple_renderer.cc b/modules/gfx/src/impl/simple_renderer.cc index cbd012f3540812738ece08c16560bbd792fd1ff7..4e228f0dc06f9e7fee003411bbf02f241de77e26 100644 --- a/modules/gfx/src/impl/simple_renderer.cc +++ b/modules/gfx/src/impl/simple_renderer.cc @@ -24,7 +24,7 @@ #include <ost/gfx/gl_helper.hh> #include <ost/gfx/scene.hh> #include <ost/gfx/entity.hh> - +#include <ost/gfx/povray.hh> #include "simple_renderer.hh" namespace ost { namespace gfx { namespace impl { @@ -316,4 +316,28 @@ SimpleRenderer::~SimpleRenderer() } +void SimpleRenderer::RenderPov(PovState& pov, const std::string& name) +{ + pov.write_merge_or_union(name); + + for (AtomEntryMap::const_iterator it=view_.atom_map.begin(); + it!=view_.atom_map.end();++it) { + pov.write_sphere(it->second.atom.GetPos(), + options_->GetLineWidth()*0.05, + it->second.color, + name); + } + + for(BondEntryList::const_iterator it=view_.bond_list.begin();it!=view_.bond_list.end();++it) { + const geom::Vec3& p0=it->bond.GetFirst().GetPos(); + const geom::Vec3& p2=it->bond.GetSecond().GetPos(); + geom::Vec3 p1=(p0+p2)*0.5; + pov.write_cyl(p0,p1,options_->GetLineWidth()*0.05, + it->atom1->color,name,true); + pov.write_cyl(p1,p2,options_->GetLineWidth()*0.05, + it->atom2->color,name,true); + } + pov.inc() << " }\n"; +} + }}} diff --git a/modules/gfx/src/impl/simple_renderer.hh b/modules/gfx/src/impl/simple_renderer.hh index 87162e168b0df064b069f8236f6b8136e1b086ac..78038ffe543780b5d92389866d142c105cbcd8ba 100644 --- a/modules/gfx/src/impl/simple_renderer.hh +++ b/modules/gfx/src/impl/simple_renderer.hh @@ -45,7 +45,7 @@ public: virtual void Render(RenderPass pass); virtual ~SimpleRenderer(); - + virtual void RenderPov(PovState& pov, const std::string& name); void BlurSnapshot(); private: void RenderBlur();