#include <osg/PolygonOffset>
#include <osg/PrimitiveSet>
#include <osg/MatrixTransform>
-#include <osg/PositionAttitudeTransform>
#include <osg/ShapeDrawable>
#include <osg/Shape>
#include <osg/Depth>
#include "BVHStaticData.hxx"
#include "BVHStaticNode.hxx"
-#include "BVHStaticLeaf.hxx"
#include "BVHStaticTriangle.hxx"
#include "BVHStaticBinary.hxx"
class BVHDebugCollectVisitor : public BVHVisitor {
public:
- BVHDebugCollectVisitor(unsigned level = ~0u) :
+ BVHDebugCollectVisitor(const double& time, unsigned level = ~0u) :
_group(new osg::Group),
+ _time(time),
_level(level),
_currentLevel(0)
{
{
addNodeSphere(node);
osg::ref_ptr<osg::Group> oldGroup = _group;
- osg::ref_ptr<osg::PositionAttitudeTransform> transform;
- transform = new osg::PositionAttitudeTransform;
- double tt = node.getReferenceTime() - node.getEndTime();
- tt = 100*tt;
- tt += node.getReferenceTime();
-// transform->setPosition(node.getPosition(node.getEndTime()).osg());
- transform->setPosition(node.getPosition().osg());
- transform->setAttitude(inverse(node.getOrientation(tt)).osg());
-// transform->setPosition(node.getPosition().osg());
-// transform->setAttitude(inverse(node.getOrientation()).osg());
+ osg::ref_ptr<osg::MatrixTransform> transform = new osg::MatrixTransform;
+ transform->setMatrix(osg::Matrix(node.getToWorldTransform(_time).data()));
_group = transform;
++_currentLevel;
node.traverse(*this);
node.traverse(*this, data);
--_currentLevel;
}
- virtual void apply(const BVHStaticLeaf& node, const BVHStaticData& data)
- {
- addNodeBox(node, data);
- }
virtual void apply(const BVHStaticTriangle& node, const BVHStaticData& data)
{
addNodeBox(node, data);
}
osg::ref_ptr<osg::Group> _group;
+ const double _time;
const unsigned _level;
unsigned _currentLevel;
};