Paul Martz wrote:
> The HUD issue shouldn't require modifying the scene graph at all. Create one
> HUD scene graph with the entire HUD in it. Parent it to two HUD cameras with
> two different views. One Camera has its view matrix set to view the left
> half of the HUD, and the other is similarly configured to view the right
> half.
>
Ok, that's a possible solution, but this creates a specific scenegraph for a
specific number of slave cameras.
A more flexible and dirty solution I came up with a couple of minutes ago was
this:
-Add an empty group node above the HUD camera
-Add a CullCallback with a reference to the HUD camera
In the CullCallback do this
Code:
class CullCallback : public osg::NodeCallback
{
osg::ref_ptr<osg::Camera> _camera;
public:
CullCallback(osg::Camera* camera) :
_camera(camera)
{
}
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
{
osgUtil::CullVisitor* cv =
dynamic_cast<osgUtil::CullVisitor*>(nv);
if (cv)
{
osg::Camera* cam = cv->getCurrentCamera();
osg::View::Slave* slave =
cam->getView()->findSlaveForCamera(cam);
mat.makeOrtho2D(-1,1,-1,1);
if (slave)
{
mat *= slave->_projectionOffset;
}
_camera->setProjectionMatrix(mat);
}
traverse(node,nv);
}
};
--
Roland
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=10763#10763
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org