From Ulrich Hertlein, spelling corrections and a few Doxgen comments.
This commit is contained in:
parent
b0358c698a
commit
7d5c81bf5e
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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; }
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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 :
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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()));
|
||||
|
@ -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(),
|
||||
|
Loading…
Reference in New Issue
Block a user