From Ulrich Hertlein, spelling corrections and a few Doxgen comments.

This commit is contained in:
Robert Osfield 2006-02-20 21:05:23 +00:00
parent b0358c698a
commit 7d5c81bf5e
12 changed files with 72 additions and 31 deletions

View File

@ -187,7 +187,7 @@ osg::Node* createModel(bool overlay)
if (overlay)
{
osgSim::OverlayNode* overlayNode = new osgSim::OverlayNode;
overlayNode->setContinousUpdate(true);
overlayNode->setContinuousUpdate(true);
overlayNode->setOverlaySubgraph(movingModel);
overlayNode->addChild(baseModel);
root->addChild(overlayNode);

View File

@ -38,7 +38,7 @@ osg::Node* createRearView(osg::Node* subgraph, const osg::Vec4& clearColour)
// set the view matrix
camera->setCullingActive(false);
camera->setReferenceFrame(osg::Transform::RELATIVE_RF);
camera->setTransformOrder(osg::CameraNode::POST_MULTIPLE);
camera->setTransformOrder(osg::CameraNode::POST_MULTIPLY);
camera->setProjectionMatrix(osg::Matrixd::scale(-1.0f,1.0f,1.0f));
camera->setViewMatrix(osg::Matrixd::rotate(osg::inDegrees(180.0f),0.0f,1.0f,0.0f));

View File

@ -85,11 +85,14 @@ class OSG_EXPORT CameraNode : public Transform, public CullSettings
enum TransformOrder
{
PRE_MULTIPLE,
POST_MULTIPLE
PRE_MULTIPLY,
POST_MULTIPLY
};
/** Set the transformation order for world-to-local and local-to-world transformation.*/
void setTransformOrder(TransformOrder order) { _transformOrder = order; }
/** Get the transformation order.*/
TransformOrder getTransformOrder() const { return _transformOrder; }
@ -195,12 +198,16 @@ class OSG_EXPORT CameraNode : public Transform, public CullSettings
SEPERATE_WINDOW
};
/** Set the render target.*/
void setRenderTargetImplementation(RenderTargetImplementation impl);
/** Set the render target and fall-back that's used if the former isn't available.*/
void setRenderTargetImplementation(RenderTargetImplementation impl, RenderTargetImplementation fallback);
/** Get the render target.*/
RenderTargetImplementation getRenderTargetImplementation() const { return _renderTargetImplementation; }
/** Get the render target fallback.*/
RenderTargetImplementation getRenderTargetFallback() const { return _renderTargetFallback; }

View File

@ -50,10 +50,10 @@ class OSGSIM_EXPORT OverlayNode : public osg::Group
void dirtyOverlayTexture();
/** Set whether the OverlayNode should update the overlay texture on every frame.*/
void setContinousUpdate(bool update) { _continousUpdate = update; }
void setContinuousUpdate(bool update) { _continuousUpdate = update; }
/** Get whether the OverlayNode should update the overlay texture on every frame.*/
bool getContinousUpdate() const { return _continousUpdate; }
bool getContinuousUpdate() const { return _continuousUpdate; }
/** Set the clear color to use when rendering the overlay subgraph.*/
@ -66,7 +66,7 @@ class OSGSIM_EXPORT OverlayNode : public osg::Group
void setTexEnvMode(GLenum mode);
/** Get the TexEnv mode used to combine the overlay texture with the base color/texture of the OverlayNode's decorate subgraph.*/
GLenum getTexEnvMode() { return _texEnvMode; }
GLenum getTexEnvMode() const { return _texEnvMode; }
/** Set the texture unit that the texture should be assigned to.*/
void setOverlayTextureUnit(unsigned int unit);
@ -101,7 +101,7 @@ class OSGSIM_EXPORT OverlayNode : public osg::Group
osg::ref_ptr<osg::CameraNode> _camera;
// overaly subgraph is render to a texture
// overlay subgraph is render to a texture
osg::ref_ptr<osg::Node> _overlaySubgraph;
// texgen node to generate the tex coordinates for us
@ -116,7 +116,7 @@ class OSGSIM_EXPORT OverlayNode : public osg::Group
unsigned int _textureSizeHint;
osg::ref_ptr<osg::Texture2D> _texture;
bool _continousUpdate;
bool _continuousUpdate;
osg::Polytope _textureFrustum;
};

View File

@ -22,6 +22,11 @@
namespace osgSim {
/** VisibilityGroup renders (traverses) it's children only when the camera is inside a specified visibility volume.
* The visibility volume is intersected with a line segment that extends from
* the current camera's eye-point along the view vector for a given segment length.
* If an intersection is detected then the node's children are traversed.
*/
class OSGSIM_EXPORT VisibilityGroup : public osg::Group
{
public :
@ -35,14 +40,27 @@ class OSGSIM_EXPORT VisibilityGroup : public osg::Group
virtual void traverse(osg::NodeVisitor& nv);
/** Set the subgraph that is intersected for the visibility determination.*/
void setVisibilityVolume(osg::Node* node) { _visibilityVolume = node; }
/** Get the subgraph that is intersected for the visibility determination.*/
osg::Node* getVisibilityVolume() { return _visibilityVolume.get(); }
/** Get the const subgraph that is intersected for the visibility determination.*/
const osg::Node* getVisibilityVolume() const { return _visibilityVolume.get(); }
/** Set the traversal mask for the intersection testing.*/
void setVolumeIntersectionMask(osg::Node::NodeMask mask) { _volumeIntersectionMask = mask; }
/** Get the traversal mask for the intersection testing.*/
osg::Node::NodeMask getVolumeIntersectionMask() const { return _volumeIntersectionMask; }
/** Set the length of the intersection segment.
* The segments extends this many database units from the camera eye-point along the look vector.
* If this is left at zero then the diameter of the bounding sphere of the visibility volume is used.*/
void setSegmentLength(float length) { _segmentLength = length; }
/** Get the length of the intersection segment.*/
float getSegmentLength() const { return _segmentLength; }
protected :

View File

@ -28,7 +28,7 @@
namespace osgUtil {
/**
* SceneView is literally a view of a scene, encapsulating the 'camera'
* SceneView is literaly a view of a scene, encapsulating the 'camera'
* (not to be confused with Producer::Camera) (modelview+projection matrices),
* global state, lights and the scene itself. Provides
* methods for setting up the view and rendering it.
@ -122,7 +122,7 @@ class OSGUTIL_EXPORT SceneView : public osg::Referenced, public osg::CullSetting
const osg::Vec4& getClearColor() const { return _camera->getClearColor(); }
/** Mannually set the redraw interlaced stereo stencil mask request flag to control whether to redraw the stencil buffer on the next frame.*/
/** Manually set the redraw interlaced stereo stencil mask request flag to control whether to redraw the stencil buffer on the next frame.*/
void setRedrawInterlacedStereoStencilMask(bool flag) { _redrawInterlacedStereoStencilMask = flag; }
/** Get the redraw interlaced stereo stencil mask request flag.*/
@ -207,7 +207,7 @@ class OSGUTIL_EXPORT SceneView : public osg::Referenced, public osg::CullSetting
/** Get the const projection matrix.*/
const osg::Matrixd& getProjectionMatrix() const { return _camera->getProjectionMatrix(); }
/** Get the othographic settings of the orthographic projection matrix.
/** Get the orthographic settings of the orthographic projection matrix.
* Returns false if matrix is not an orthographic matrix, where parameter values are undefined.*/
bool getProjectionMatrixAsOrtho(double& left, double& right,
double& bottom, double& top,

View File

@ -18,7 +18,7 @@ using namespace osg;
CameraNode::CameraNode():
_clearColor(osg::Vec4(0.0f,0.0f,0.0f,1.0f)),
_clearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT),
_transformOrder(PRE_MULTIPLE),
_transformOrder(PRE_MULTIPLY),
_renderOrder(POST_RENDER),
_drawBuffer(GL_NONE),
_readBuffer(GL_NONE),
@ -236,7 +236,7 @@ bool CameraNode::computeLocalToWorldMatrix(Matrix& matrix,NodeVisitor*) const
{
if (_referenceFrame==RELATIVE_RF)
{
if (_transformOrder==PRE_MULTIPLE)
if (_transformOrder==PRE_MULTIPLY)
{
matrix.preMult(_viewMatrix);
}
@ -258,7 +258,7 @@ bool CameraNode::computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor*) const
if (_referenceFrame==RELATIVE_RF)
{
if (_transformOrder==PRE_MULTIPLE)
if (_transformOrder==PRE_MULTIPLY)
{
// note doing inverse so pre becomes post.
matrix.postMult(inverse);

View File

@ -71,8 +71,11 @@ bool CameraNode_readLocalData(Object& obj, Input& fr)
if (fr.matchSequence("transformOrder %w"))
{
if (fr[1].matchWord("PRE_MULTIPLE")) camera.setTransformOrder(osg::CameraNode::PRE_MULTIPLE);
else if (fr[1].matchWord("POST_MULTIPLE")) camera.setTransformOrder(osg::CameraNode::POST_MULTIPLE);
if (fr[1].matchWord("PRE_MULTIPLY")) camera.setTransformOrder(osg::CameraNode::PRE_MULTIPLY);
else if (fr[1].matchWord("POST_MULTIPLY")) camera.setTransformOrder(osg::CameraNode::POST_MULTIPLY);
// the following are for backwards compatibility.
else if (fr[1].matchWord("PRE_MULTIPLE")) camera.setTransformOrder(osg::CameraNode::PRE_MULTIPLY);
else if (fr[1].matchWord("POST_MULTIPLE")) camera.setTransformOrder(osg::CameraNode::POST_MULTIPLY);
fr += 2;
iteratorAdvanced = true;
@ -235,8 +238,8 @@ bool CameraNode_writeLocalData(const Object& obj, Output& fw)
fw.indent()<<"transformOrder ";
switch(camera.getTransformOrder())
{
case(osg::CameraNode::PRE_MULTIPLE): fw <<"PRE_MULTIPLE"<<std::endl; break;
case(osg::CameraNode::POST_MULTIPLE): fw <<"POST_MULTIPLE"<<std::endl; break;
case(osg::CameraNode::PRE_MULTIPLY): fw <<"PRE_MULTIPLY"<<std::endl; break;
case(osg::CameraNode::POST_MULTIPLY): fw <<"POST_MULTIPLY"<<std::endl; break;
}
writeMatrix(camera.getProjectionMatrix(),fw,"ProjectionMatrix");

View File

@ -1,5 +1,6 @@
#include <stdio.h>
#include <string.h>
#include <string>
#include <osg/Geode>
#include <osg/Group>
@ -223,6 +224,18 @@ void ReaderWriterPFB::initPerformer()
// }
pfdInitConverter(".pfb");
/*
* Tell Performer to look in OSG search path
*/
const osgDB::FilePathList& filePath = osgDB::Registry::instance()->getDataFilePathList();
std::string path = "";
for (unsigned int i = 0; i < filePath.size(); i++) {
if (i != 0)
path += ":";
path += filePath[i];
}
pfFilePath(path.c_str());
pfConfig();
}

View File

@ -26,7 +26,7 @@ OverlayNode::OverlayNode():
_texEnvMode(GL_DECAL),
_textureUnit(1),
_textureSizeHint(1024),
_continousUpdate(false)
_continuousUpdate(false)
{
init();
}
@ -37,7 +37,7 @@ OverlayNode::OverlayNode(const OverlayNode& copy, const osg::CopyOp& copyop):
_texEnvMode(copy._texEnvMode),
_textureUnit(copy._textureUnit),
_textureSizeHint(copy._textureSizeHint),
_continousUpdate(copy._continousUpdate)
_continuousUpdate(copy._continuousUpdate)
{
init();
}
@ -109,7 +109,7 @@ void OverlayNode::traverse(osg::NodeVisitor& nv)
unsigned int contextID = cv->getState()!=0 ? cv->getState()->getContextID() : 0;
// if we need to redraw then do cull traversal on camera.
if (!_textureObjectValidList[contextID] || _continousUpdate)
if (!_textureObjectValidList[contextID] || _continuousUpdate)
{
// now compute the camera's view and projection matrix to point at the shadower (the camera's children)

View File

@ -1081,12 +1081,12 @@ void CullVisitor::apply(osg::CameraNode& camera)
pushProjectionMatrix(createOrReuseMatrix(camera.getProjectionMatrix()));
pushModelViewMatrix(createOrReuseMatrix(camera.getViewMatrix()));
}
else if (camera.getTransformOrder()==osg::CameraNode::POST_MULTIPLE)
else if (camera.getTransformOrder()==osg::CameraNode::POST_MULTIPLY)
{
pushProjectionMatrix(createOrReuseMatrix(getProjectionMatrix()*camera.getProjectionMatrix()));
pushModelViewMatrix(createOrReuseMatrix(getModelViewMatrix()*camera.getViewMatrix()));
}
else // pre multiple
else // pre multiply
{
pushProjectionMatrix(createOrReuseMatrix(camera.getProjectionMatrix()*getProjectionMatrix()));
pushModelViewMatrix(createOrReuseMatrix(camera.getViewMatrix()*getModelViewMatrix()));

View File

@ -812,7 +812,7 @@ void PickVisitor::apply(osg::CameraNode& camera)
camera.getViewMatrix(),
_mx, _my );
}
else if (camera.getTransformOrder()==osg::CameraNode::POST_MULTIPLE)
else if (camera.getTransformOrder()==osg::CameraNode::POST_MULTIPLY)
{
runNestedPickVisitor( camera,
camera.getViewport() ? camera.getViewport() : _lastViewport.get(),
@ -820,7 +820,7 @@ void PickVisitor::apply(osg::CameraNode& camera)
_lastViewMatrix * camera.getViewMatrix(),
_mx, _my );
}
else // PRE_MULTIPLE
else // PRE_MULTIPLY
{
runNestedPickVisitor( camera,
camera.getViewport() ? camera.getViewport() : _lastViewport.get(),