<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>OpenSceneGraph: osgShadow::OccluderGeometry Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">OpenSceneGraph <span id="projectnumber">2.8.4</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="a01636.html">osgShadow</a> </li> <li class="navelem"><a class="el" href="a00508.html">OccluderGeometry</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-types">Protected Types</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> </div> <div class="headertitle"> <div class="title">osgShadow::OccluderGeometry Class Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="osgShadow::OccluderGeometry" --><!-- doxytag: inherits="osg::Drawable" --> <p><a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a> provides a sepecialised geometry representation of objects in scene that occlude light and therefore cast shadows. <a href="a00508.html#details">More...</a></p> <div class="dynheader"> Inheritance diagram for osgShadow::OccluderGeometry:</div> <div class="dyncontent"> <div class="center"><img src="a03152.png" border="0" usemap="#osgShadow_1_1OccluderGeometry_inherit__map" alt="Inheritance graph"/></div> <map name="osgShadow_1_1OccluderGeometry_inherit__map" id="osgShadow_1_1OccluderGeometry_inherit__map"> <area shape="rect" id="node2" href="a00216.html" title="Pure virtual base class for drawable geometry." alt="" coords="64,160,181,189"/><area shape="rect" id="node4" href="a00500.html" title="Base class/standard interface for objects which require IO support, cloning and reference counting..." alt="" coords="72,83,173,112"/><area shape="rect" id="node6" href="a00627.html" title="Base class from providing referencing counted objects." alt="" coords="56,5,189,35"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="a03153.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html">Edge</a></td></tr> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector< <a class="el" href="a01069.html">osg::Vec3</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector< GLuint > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#aa3c24a9d617aa6a180e44d91a81c3bb6">OccluderGeometry</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a338e1d442a14f5f14975cf23a89d81ab">OccluderGeometry</a> (const <a class="el" href="a00508.html">OccluderGeometry</a> &oc, const <a class="el" href="a00169.html">osg::CopyOp</a> &copyop=osg::CopyOp::SHALLOW_COPY)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual Object * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#abebfe6c7784df54205af92abae225cd7">cloneType</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Clone the type of an object, with Object* return type. <a href="#abebfe6c7784df54205af92abae225cd7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual Object * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ab15ffaa812711934ff801c4346d0f4eb">clone</a> (const <a class="el" href="a00169.html">osg::CopyOp</a> &copyop) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Clone an object, with Object* return type. <a href="#ab15ffaa812711934ff801c4346d0f4eb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ad65e89133498e138c221c06d462e05b7">isSameKindAs</a> (const <a class="el" href="a00500.html">osg::Object</a> *obj) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a74361d79433a92282afa17b38afa04be">libraryName</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the name of the object's library. <a href="#a74361d79433a92282afa17b38afa04be"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a6a0d7776447711a04b77f6c3cee757cb">className</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the name of the object's class type. <a href="#a6a0d7776447711a04b77f6c3cee757cb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ae9921035dd9ce78217b3a1e56619fa15">computeOccluderGeometry</a> (<a class="el" href="a00491.html">osg::Node</a> *subgraph, <a class="el" href="a00460.html">osg::Matrix</a> *matrix=0, float sampleRatio=1.0f)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compute an occluder geometry containing all the geometry in specified subgraph. <a href="#ae9921035dd9ce78217b3a1e56619fa15"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a831711ae9fc35c86530ee861fbda19f2">computeOccluderGeometry</a> (<a class="el" href="a00216.html">osg::Drawable</a> *drawable, <a class="el" href="a00460.html">osg::Matrix</a> *matrix=0, float sampleRatio=1.0f)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compute an occluder geometry containing the geometry in specified drawable. <a href="#a831711ae9fc35c86530ee861fbda19f2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a5fa765e1902c5798ecf78be07bc29799">computeShadowVolumeGeometry</a> (const <a class="el" href="a01074.html">osg::Vec4</a> &lightpos, <a class="el" href="a00709.html">ShadowVolumeGeometry</a> &svg) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compute <a class="el" href="a00709.html">ShadowVolumeGeometry</a>. <a href="#a5fa765e1902c5798ecf78be07bc29799"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a88ee076262e64083647ba07c62a30745">setBoundingPolytope</a> (const <a class="el" href="a00568.html">osg::Polytope</a> &polytope)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the bounding polytope of the <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a>. <a href="#a88ee076262e64083647ba07c62a30745"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00568.html">osg::Polytope</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#aef485499c2cdbb1e4f11cb09ce05c517">getBoundingPolytope</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the bounding polytope of the <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a>. <a href="#aef485499c2cdbb1e4f11cb09ce05c517"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00568.html">osg::Polytope</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ace20a3ddc09b4ab9348f5034748795db">getBoundingPolytope</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the const bounding polytope of the <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a>. <a href="#ace20a3ddc09b4ab9348f5034748795db"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a7c0fda1fbbae055979ae2fc9bd295f5c">drawImplementation</a> (<a class="el" href="a00653.html">osg::RenderInfo</a> &renderInfo) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Render the occluder geometry. <a href="#a7c0fda1fbbae055979ae2fc9bd295f5c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00069.html">osg::BoundingBox</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#acaa61756e71a144a88614a0bdf1bd248">computeBound</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compute the bounding box around occluder geometry. <a href="#acaa61756e71a144a88614a0bdf1bd248"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ab3406a843942166f78793e3f94cd087a">processGeometry</a> (<a class="el" href="a00216.html">osg::Drawable</a> *drawable, <a class="el" href="a00460.html">osg::Matrix</a> *matrix=0, float sampleRatio=1.0f)</td></tr> <tr><td colspan="2"><h2><a name="pro-types"></a> Protected Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector< <a class="el" href="a00236.html">Edge</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#afc6399ddc52a9f9563a1806f4869981a">EdgeList</a></td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a2e683d231baa31ce04ee2effd956c415">~OccluderGeometry</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a05416876d6b7324f9a4a44d61f8b154b">isLightPointSilhouetteEdge</a> (const <a class="el" href="a01069.html">osg::Vec3</a> &lightpos, const <a class="el" href="a00236.html">Edge</a> &edge) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a5b368acefe76bbb21e4cd8cae2743ca8">isLightDirectionSilhouetteEdge</a> (const <a class="el" href="a01069.html">osg::Vec3</a> &lightdirection, const <a class="el" href="a00236.html">Edge</a> &edge) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ad8def7e2953a480a3fc77979e9b38fa5">setUpInternalStructures</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#aaa9a4d2ab67758fecf1f156edd09c3f9">removeDuplicateVertices</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#afd5193a6cd7015aab0934b0fdd8c7734">removeNullTriangles</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ab6108379bc37986b0a5a5d9004534fe1">computeNormals</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a0adf9cb5909b69cca5699027da82563d">buildEdgeMaps</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a9f565f78ee20695fa46e339600f74ce5">computeLightDirectionSilhouetteEdges</a> (const <a class="el" href="a01069.html">osg::Vec3</a> &lightdirection, <a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a> &silhouetteIndices) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ac751d794f54dbafb6670e337ffd32627">computeLightPositionSilhouetteEdges</a> (const <a class="el" href="a01069.html">osg::Vec3</a> &lightpos, <a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a> &silhouetteIndices) const </td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00568.html">osg::Polytope</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#ae7180801ff430e01547510853be2ae2b">_boundingPolytope</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a99cd9f9d48b7e6a9a18334a4daca7b81">_vertices</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a1eb7b1971332459e44aa45eab108676d">_normals</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a6d647f27d685f04ed10359f22b6953de">_triangleNormals</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a812f89b65901dc7b4524ac0996b5f18b">_triangleIndices</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00508.html#afc6399ddc52a9f9563a1806f4869981a">EdgeList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00508.html#a4d5343eb8e9854d2d054d4d7632c3d74">_edges</a></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p><a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a> provides a sepecialised geometry representation of objects in scene that occlude light and therefore cast shadows. </p> <p><a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a> supports the computation of silhouette edges and shadow volume geometries, as well as use as geometry that one can rendering into a shadow map or end caps for the ZP+ algorithm. <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a> may be of the same resolution as an underlying geometry that it represents, or can be of lower resolution and combine manager seperate geometries together into a single shadow casting object. <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a> may be attached as UserData to Nodes or to Drawables. </p> </div><hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="afc6399ddc52a9f9563a1806f4869981a"></a><!-- doxytag: member="osgShadow::OccluderGeometry::EdgeList" ref="afc6399ddc52a9f9563a1806f4869981a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::vector<<a class="el" href="a00236.html">Edge</a>> <a class="el" href="a00508.html#afc6399ddc52a9f9563a1806f4869981a">osgShadow::OccluderGeometry::EdgeList</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a950fce93d746f97f6d145eb6df74078e"></a><!-- doxytag: member="osgShadow::OccluderGeometry::UIntList" ref="a950fce93d746f97f6d145eb6df74078e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::vector<GLuint> <a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">osgShadow::OccluderGeometry::UIntList</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a42133ae7b8a4c4290863db584e92fa23"></a><!-- doxytag: member="osgShadow::OccluderGeometry::Vec3List" ref="a42133ae7b8a4c4290863db584e92fa23" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::vector<<a class="el" href="a01069.html">osg::Vec3</a>> <a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">osgShadow::OccluderGeometry::Vec3List</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="aa3c24a9d617aa6a180e44d91a81c3bb6"></a><!-- doxytag: member="osgShadow::OccluderGeometry::OccluderGeometry" ref="aa3c24a9d617aa6a180e44d91a81c3bb6" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osgShadow::OccluderGeometry::OccluderGeometry </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a338e1d442a14f5f14975cf23a89d81ab"></a><!-- doxytag: member="osgShadow::OccluderGeometry::OccluderGeometry" ref="a338e1d442a14f5f14975cf23a89d81ab" args="(const OccluderGeometry &oc, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osgShadow::OccluderGeometry::OccluderGeometry </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00508.html">OccluderGeometry</a> & </td> <td class="paramname"><em>oc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00169.html">osg::CopyOp</a> & </td> <td class="paramname"><em>copyop</em> = <code>osg::CopyOp::SHALLOW_COPY</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a2e683d231baa31ce04ee2effd956c415"></a><!-- doxytag: member="osgShadow::OccluderGeometry::~OccluderGeometry" ref="a2e683d231baa31ce04ee2effd956c415" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual osgShadow::OccluderGeometry::~OccluderGeometry </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline, protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a0adf9cb5909b69cca5699027da82563d"></a><!-- doxytag: member="osgShadow::OccluderGeometry::buildEdgeMaps" ref="a0adf9cb5909b69cca5699027da82563d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::buildEdgeMaps </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a6a0d7776447711a04b77f6c3cee757cb"></a><!-- doxytag: member="osgShadow::OccluderGeometry::className" ref="a6a0d7776447711a04b77f6c3cee757cb" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgShadow::OccluderGeometry::className </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return the name of the object's class type. </p> <p>Must be defined by derived classes. </p> <p>Reimplemented from <a class="el" href="a00216.html#ae3a829d26cd9882f17cb45e64bb71bf4">osg::Drawable</a>.</p> </div> </div> <a class="anchor" id="ab15ffaa812711934ff801c4346d0f4eb"></a><!-- doxytag: member="osgShadow::OccluderGeometry::clone" ref="ab15ffaa812711934ff801c4346d0f4eb" args="(const osg::CopyOp &copyop) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual Object* osgShadow::OccluderGeometry::clone </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00169.html">osg::CopyOp</a> & </td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Clone an object, with Object* return type. </p> <p>Must be defined by derived classes. </p> <p>Implements <a class="el" href="a00500.html#ac20abff68448b9fcd20ab59e5d7a0030">osg::Object</a>.</p> </div> </div> <a class="anchor" id="abebfe6c7784df54205af92abae225cd7"></a><!-- doxytag: member="osgShadow::OccluderGeometry::cloneType" ref="abebfe6c7784df54205af92abae225cd7" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual Object* osgShadow::OccluderGeometry::cloneType </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Clone the type of an object, with Object* return type. </p> <p>Must be defined by derived classes. </p> <p>Implements <a class="el" href="a00500.html#a837c584d77ae710bb5565f7895f80dbb">osg::Object</a>.</p> </div> </div> <a class="anchor" id="acaa61756e71a144a88614a0bdf1bd248"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeBound" ref="acaa61756e71a144a88614a0bdf1bd248" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="a00069.html">osg::BoundingBox</a> osgShadow::OccluderGeometry::computeBound </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute the bounding box around occluder geometry. </p> <p>Reimplemented from <a class="el" href="a00216.html#a0e2875e665456b88fa39b10cb04e26c5">osg::Drawable</a>.</p> </div> </div> <a class="anchor" id="a9f565f78ee20695fa46e339600f74ce5"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeLightDirectionSilhouetteEdges" ref="a9f565f78ee20695fa46e339600f74ce5" args="(const osg::Vec3 &lightdirection, UIntList &silhouetteIndices) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::computeLightDirectionSilhouetteEdges </td> <td>(</td> <td class="paramtype">const <a class="el" href="a01069.html">osg::Vec3</a> & </td> <td class="paramname"><em>lightdirection</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a> & </td> <td class="paramname"><em>silhouetteIndices</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ac751d794f54dbafb6670e337ffd32627"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeLightPositionSilhouetteEdges" ref="ac751d794f54dbafb6670e337ffd32627" args="(const osg::Vec3 &lightpos, UIntList &silhouetteIndices) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::computeLightPositionSilhouetteEdges </td> <td>(</td> <td class="paramtype">const <a class="el" href="a01069.html">osg::Vec3</a> & </td> <td class="paramname"><em>lightpos</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a> & </td> <td class="paramname"><em>silhouetteIndices</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab6108379bc37986b0a5a5d9004534fe1"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeNormals" ref="ab6108379bc37986b0a5a5d9004534fe1" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::computeNormals </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ae9921035dd9ce78217b3a1e56619fa15"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeOccluderGeometry" ref="ae9921035dd9ce78217b3a1e56619fa15" args="(osg::Node *subgraph, osg::Matrix *matrix=0, float sampleRatio=1.0f)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::computeOccluderGeometry </td> <td>(</td> <td class="paramtype"><a class="el" href="a00491.html">osg::Node</a> * </td> <td class="paramname"><em>subgraph</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00460.html">osg::Matrix</a> * </td> <td class="paramname"><em>matrix</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>sampleRatio</em> = <code>1.0f</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Compute an occluder geometry containing all the geometry in specified subgraph. </p> </div> </div> <a class="anchor" id="a831711ae9fc35c86530ee861fbda19f2"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeOccluderGeometry" ref="a831711ae9fc35c86530ee861fbda19f2" args="(osg::Drawable *drawable, osg::Matrix *matrix=0, float sampleRatio=1.0f)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::computeOccluderGeometry </td> <td>(</td> <td class="paramtype"><a class="el" href="a00216.html">osg::Drawable</a> * </td> <td class="paramname"><em>drawable</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00460.html">osg::Matrix</a> * </td> <td class="paramname"><em>matrix</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>sampleRatio</em> = <code>1.0f</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Compute an occluder geometry containing the geometry in specified drawable. </p> </div> </div> <a class="anchor" id="a5fa765e1902c5798ecf78be07bc29799"></a><!-- doxytag: member="osgShadow::OccluderGeometry::computeShadowVolumeGeometry" ref="a5fa765e1902c5798ecf78be07bc29799" args="(const osg::Vec4 &lightpos, ShadowVolumeGeometry &svg) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::computeShadowVolumeGeometry </td> <td>(</td> <td class="paramtype">const <a class="el" href="a01074.html">osg::Vec4</a> & </td> <td class="paramname"><em>lightpos</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00709.html">ShadowVolumeGeometry</a> & </td> <td class="paramname"><em>svg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Compute <a class="el" href="a00709.html">ShadowVolumeGeometry</a>. </p> </div> </div> <a class="anchor" id="a7c0fda1fbbae055979ae2fc9bd295f5c"></a><!-- doxytag: member="osgShadow::OccluderGeometry::drawImplementation" ref="a7c0fda1fbbae055979ae2fc9bd295f5c" args="(osg::RenderInfo &renderInfo) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void osgShadow::OccluderGeometry::drawImplementation </td> <td>(</td> <td class="paramtype"><a class="el" href="a00653.html">osg::RenderInfo</a> & </td> <td class="paramname"><em>renderInfo</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Render the occluder geometry. </p> <p>Implements <a class="el" href="a00216.html#ae4e59643622ad16b33712ed3bbbb48f9">osg::Drawable</a>.</p> </div> </div> <a class="anchor" id="ace20a3ddc09b4ab9348f5034748795db"></a><!-- doxytag: member="osgShadow::OccluderGeometry::getBoundingPolytope" ref="ace20a3ddc09b4ab9348f5034748795db" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00568.html">osg::Polytope</a>& osgShadow::OccluderGeometry::getBoundingPolytope </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the const bounding polytope of the <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a>. </p> </div> </div> <a class="anchor" id="aef485499c2cdbb1e4f11cb09ce05c517"></a><!-- doxytag: member="osgShadow::OccluderGeometry::getBoundingPolytope" ref="aef485499c2cdbb1e4f11cb09ce05c517" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00568.html">osg::Polytope</a>& osgShadow::OccluderGeometry::getBoundingPolytope </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the bounding polytope of the <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a>. </p> </div> </div> <a class="anchor" id="a5b368acefe76bbb21e4cd8cae2743ca8"></a><!-- doxytag: member="osgShadow::OccluderGeometry::isLightDirectionSilhouetteEdge" ref="a5b368acefe76bbb21e4cd8cae2743ca8" args="(const osg::Vec3 &lightdirection, const Edge &edge) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osgShadow::OccluderGeometry::isLightDirectionSilhouetteEdge </td> <td>(</td> <td class="paramtype">const <a class="el" href="a01069.html">osg::Vec3</a> & </td> <td class="paramname"><em>lightdirection</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00236.html">Edge</a> & </td> <td class="paramname"><em>edge</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>References <a class="el" href="a00236.html#a1e71567afb8b0736630b98672ba04fbb">osgShadow::OccluderGeometry::Edge::_t1</a>, <a class="el" href="a00236.html#a698ba490617ca2cc51b9967b7b078619">osgShadow::OccluderGeometry::Edge::_t2</a>, and <a class="el" href="a00236.html#ad0291ba6de43285483af80fb57dffd62">osgShadow::OccluderGeometry::Edge::boundaryEdge()</a>.</p> </div> </div> <a class="anchor" id="a05416876d6b7324f9a4a44d61f8b154b"></a><!-- doxytag: member="osgShadow::OccluderGeometry::isLightPointSilhouetteEdge" ref="a05416876d6b7324f9a4a44d61f8b154b" args="(const osg::Vec3 &lightpos, const Edge &edge) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osgShadow::OccluderGeometry::isLightPointSilhouetteEdge </td> <td>(</td> <td class="paramtype">const <a class="el" href="a01069.html">osg::Vec3</a> & </td> <td class="paramname"><em>lightpos</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00236.html">Edge</a> & </td> <td class="paramname"><em>edge</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>References <a class="el" href="a00236.html#a14afa9abfd823f1cf0ba97ded2b040f5">osgShadow::OccluderGeometry::Edge::_p1</a>, <a class="el" href="a00236.html#a1e71567afb8b0736630b98672ba04fbb">osgShadow::OccluderGeometry::Edge::_t1</a>, <a class="el" href="a00236.html#a698ba490617ca2cc51b9967b7b078619">osgShadow::OccluderGeometry::Edge::_t2</a>, <a class="el" href="a00236.html#ad0291ba6de43285483af80fb57dffd62">osgShadow::OccluderGeometry::Edge::boundaryEdge()</a>, and <a class="el" href="a01069.html#a951a7fbacefb8202df7118bcdba4c6d9">osg::Vec3f::normalize()</a>.</p> </div> </div> <a class="anchor" id="ad65e89133498e138c221c06d462e05b7"></a><!-- doxytag: member="osgShadow::OccluderGeometry::isSameKindAs" ref="ad65e89133498e138c221c06d462e05b7" args="(const osg::Object *obj) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool osgShadow::OccluderGeometry::isSameKindAs </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00500.html">osg::Object</a> * </td> <td class="paramname"><em>obj</em></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented from <a class="el" href="a00216.html#a8009680e74956bcd028b9aa619432e94">osg::Drawable</a>.</p> <p>References <a class="el" href="a01157.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p> </div> </div> <a class="anchor" id="a74361d79433a92282afa17b38afa04be"></a><!-- doxytag: member="osgShadow::OccluderGeometry::libraryName" ref="a74361d79433a92282afa17b38afa04be" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgShadow::OccluderGeometry::libraryName </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return the name of the object's library. </p> <p>Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. </p> <p>Reimplemented from <a class="el" href="a00216.html#a664bf9a63de5efa65d44e6a8c77517ab">osg::Drawable</a>.</p> </div> </div> <a class="anchor" id="ab3406a843942166f78793e3f94cd087a"></a><!-- doxytag: member="osgShadow::OccluderGeometry::processGeometry" ref="ab3406a843942166f78793e3f94cd087a" args="(osg::Drawable *drawable, osg::Matrix *matrix=0, float sampleRatio=1.0f)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::processGeometry </td> <td>(</td> <td class="paramtype"><a class="el" href="a00216.html">osg::Drawable</a> * </td> <td class="paramname"><em>drawable</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00460.html">osg::Matrix</a> * </td> <td class="paramname"><em>matrix</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>sampleRatio</em> = <code>1.0f</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="aaa9a4d2ab67758fecf1f156edd09c3f9"></a><!-- doxytag: member="osgShadow::OccluderGeometry::removeDuplicateVertices" ref="aaa9a4d2ab67758fecf1f156edd09c3f9" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::removeDuplicateVertices </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="afd5193a6cd7015aab0934b0fdd8c7734"></a><!-- doxytag: member="osgShadow::OccluderGeometry::removeNullTriangles" ref="afd5193a6cd7015aab0934b0fdd8c7734" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::removeNullTriangles </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a88ee076262e64083647ba07c62a30745"></a><!-- doxytag: member="osgShadow::OccluderGeometry::setBoundingPolytope" ref="a88ee076262e64083647ba07c62a30745" args="(const osg::Polytope &polytope)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::setBoundingPolytope </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00568.html">osg::Polytope</a> & </td> <td class="paramname"><em>polytope</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Set the bounding polytope of the <a class="el" href="a00508.html" title="OccluderGeometry provides a sepecialised geometry representation of objects in scene that occlude lig...">OccluderGeometry</a>. </p> </div> </div> <a class="anchor" id="ad8def7e2953a480a3fc77979e9b38fa5"></a><!-- doxytag: member="osgShadow::OccluderGeometry::setUpInternalStructures" ref="ad8def7e2953a480a3fc77979e9b38fa5" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgShadow::OccluderGeometry::setUpInternalStructures </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="ae7180801ff430e01547510853be2ae2b"></a><!-- doxytag: member="osgShadow::OccluderGeometry::_boundingPolytope" ref="ae7180801ff430e01547510853be2ae2b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00568.html">osg::Polytope</a> <a class="el" href="a00508.html#ae7180801ff430e01547510853be2ae2b">osgShadow::OccluderGeometry::_boundingPolytope</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a4d5343eb8e9854d2d054d4d7632c3d74"></a><!-- doxytag: member="osgShadow::OccluderGeometry::_edges" ref="a4d5343eb8e9854d2d054d4d7632c3d74" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00508.html#afc6399ddc52a9f9563a1806f4869981a">EdgeList</a> <a class="el" href="a00508.html#a4d5343eb8e9854d2d054d4d7632c3d74">osgShadow::OccluderGeometry::_edges</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a1eb7b1971332459e44aa45eab108676d"></a><!-- doxytag: member="osgShadow::OccluderGeometry::_normals" ref="a1eb7b1971332459e44aa45eab108676d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a> <a class="el" href="a00508.html#a1eb7b1971332459e44aa45eab108676d">osgShadow::OccluderGeometry::_normals</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a812f89b65901dc7b4524ac0996b5f18b"></a><!-- doxytag: member="osgShadow::OccluderGeometry::_triangleIndices" ref="a812f89b65901dc7b4524ac0996b5f18b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00508.html#a950fce93d746f97f6d145eb6df74078e">UIntList</a> <a class="el" href="a00508.html#a812f89b65901dc7b4524ac0996b5f18b">osgShadow::OccluderGeometry::_triangleIndices</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a6d647f27d685f04ed10359f22b6953de"></a><!-- doxytag: member="osgShadow::OccluderGeometry::_triangleNormals" ref="a6d647f27d685f04ed10359f22b6953de" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a> <a class="el" href="a00508.html#a6d647f27d685f04ed10359f22b6953de">osgShadow::OccluderGeometry::_triangleNormals</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a99cd9f9d48b7e6a9a18334a4daca7b81"></a><!-- doxytag: member="osgShadow::OccluderGeometry::_vertices" ref="a99cd9f9d48b7e6a9a18334a4daca7b81" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00508.html#a42133ae7b8a4c4290863db584e92fa23">Vec3List</a> <a class="el" href="a00508.html#a99cd9f9d48b7e6a9a18334a4daca7b81">osgShadow::OccluderGeometry::_vertices</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>osgShadow/<a class="el" href="a01500.html">OccluderGeometry</a></li> </ul> </div> <hr> <table border="0"><tr><td> <img src="osg32-32.png" alt="osg logo" /> </td><td> <address><small>Generated at Tue May 31 2011 04:19:37 for the <a href="http://www.openscenegraph.org/">OpenSceneGraph</a> by <a href="http://www.doxygen.org">doxygen</a> 1.7.4.</small></address> <!-- Dimitri van Heesch's e-mail address removed, lest he get messages on the OpenSceneGraph --> </td></tr></table> </body> </html>