<!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: osgAnimation::TransformVertexFunctor 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="a01629.html">osgAnimation</a> </li> <li class="navelem"><a class="el" href="a00926.html">TransformVertexFunctor</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-attribs">Protected Attributes</a> </div> <div class="headertitle"> <div class="title">osgAnimation::TransformVertexFunctor Class Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="osgAnimation::TransformVertexFunctor" --> <p>This class manage format for software skinning it used the technic on this paper <a href="http://www.intel.com/cd/ids/developer/asmo-na/eng/172124.htm">http://www.intel.com/cd/ids/developer/asmo-na/eng/172124.htm</a> The idea is to prepare the data to do only v' = M x v with M a combined matrix as below M = Mbone1 * w1 + Mbone2 * w2 + ... <a href="a00926.html#details">More...</a></p> <p><a href="a02274.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">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00065.html">BoneWeight</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a01037.html">UniqBoneSetVertexSet</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 <a class="el" href="a00460.html">osg::Matrix</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#a80e1a8a78629a6a0837f31039024596c">MatrixType</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="a00062.html">osgAnimation::Bone</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#ab5fd8903f45b75ee2f37190d7076d7cf">BoneType</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef Bone::BoneMap </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#a057236ec8e55d0710061ef3f8902aa7b">BoneMap</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector< <a class="el" href="a00065.html">BoneWeight</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#a53ee895fc7481ac9633a64cce446a6d2">BoneWeightList</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector< int > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#ab6fb99b0affc1bbd46ccb372d7f118a5">VertexList</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">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#aa165ec9da708b8791c57169449906a29">init</a> (const <a class="el" href="a00926.html#a057236ec8e55d0710061ef3f8902aa7b">BoneMap</a> &map, const <a class="el" href="a01082.html#ad1852a97ac255569d49ac37123bd89dd">osgAnimation::VertexInfluenceSet::UniqVertexSetToBoneSetList</a> &influence)</td></tr> <tr><td class="memTemplParams" colspan="2">template<class V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00926.html#a04bdfde26bb68f6e8e5d8d344c3232cf">compute</a> (const V *src, V *dst)</td></tr> <tr><td class="memTemplParams" colspan="2">template<class V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00926.html#a4c50979c12c8527727445e655219a2e3">compute</a> (const <a class="el" href="a00460.html">MatrixType</a> &transform, const <a class="el" href="a00460.html">MatrixType</a> &invTransform, const V *src, V *dst)</td></tr> <tr><td class="memTemplParams" colspan="2">template<class V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00926.html#ab89f7898773204d23fbfc7ed82e02249">computeNormal</a> (const <a class="el" href="a00460.html">MatrixType</a> &transform, const <a class="el" href="a00460.html">MatrixType</a> &invTransform, const V *src, V *dst)</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">std::vector< <a class="el" href="a01037.html">UniqBoneSetVertexSet</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00926.html#af7f1f5c17efb460c6116c334f7016b5e">_boneSetVertexSet</a></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>This class manage format for software skinning it used the technic on this paper <a href="http://www.intel.com/cd/ids/developer/asmo-na/eng/172124.htm">http://www.intel.com/cd/ids/developer/asmo-na/eng/172124.htm</a> The idea is to prepare the data to do only v' = M x v with M a combined matrix as below M = Mbone1 * w1 + Mbone2 * w2 + ... </p> <p>a M matrix is uniq for a set of vertex then to fully compute the skinned mesh you have to iterate on each <a class="el" href="a01037.html">UniqBoneSetVertexSet</a> </p> </div><hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="a057236ec8e55d0710061ef3f8902aa7b"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::BoneMap" ref="a057236ec8e55d0710061ef3f8902aa7b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef Bone::BoneMap <a class="el" href="a00926.html#a057236ec8e55d0710061ef3f8902aa7b">osgAnimation::TransformVertexFunctor::BoneMap</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab5fd8903f45b75ee2f37190d7076d7cf"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::BoneType" ref="ab5fd8903f45b75ee2f37190d7076d7cf" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="a00062.html">osgAnimation::Bone</a> <a class="el" href="a00062.html">osgAnimation::TransformVertexFunctor::BoneType</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a53ee895fc7481ac9633a64cce446a6d2"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::BoneWeightList" ref="a53ee895fc7481ac9633a64cce446a6d2" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::vector<<a class="el" href="a00065.html">BoneWeight</a>> <a class="el" href="a00926.html#a53ee895fc7481ac9633a64cce446a6d2">osgAnimation::TransformVertexFunctor::BoneWeightList</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a80e1a8a78629a6a0837f31039024596c"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::MatrixType" ref="a80e1a8a78629a6a0837f31039024596c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="a00460.html">osg::Matrix</a> <a class="el" href="a00460.html">osgAnimation::TransformVertexFunctor::MatrixType</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab6fb99b0affc1bbd46ccb372d7f118a5"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::VertexList" ref="ab6fb99b0affc1bbd46ccb372d7f118a5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::vector<int> <a class="el" href="a00926.html#ab6fb99b0affc1bbd46ccb372d7f118a5">osgAnimation::TransformVertexFunctor::VertexList</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a04bdfde26bb68f6e8e5d8d344c3232cf"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::compute" ref="a04bdfde26bb68f6e8e5d8d344c3232cf" args="(const V *src, V *dst)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class V > </div> <table class="memname"> <tr> <td class="memname">void osgAnimation::TransformVertexFunctor::compute </td> <td>(</td> <td class="paramtype">const V * </td> <td class="paramname"><em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">V * </td> <td class="paramname"><em>dst</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>References <a class="el" href="a00926.html#af7f1f5c17efb460c6116c334f7016b5e">_boneSetVertexSet</a>, <a class="el" href="a01037.html#ad81f1ceca69b211aa670c39da28eabc6">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::computeMatrixForVertexSet()</a>, <a class="el" href="a01037.html#aaf0ce61a8fbc0eadb27cb9091ca158e0">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::getMatrix()</a>, and <a class="el" href="a01037.html#ac7e46834d1be49bfbd7fa0dce1bf4861">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::getVertexes()</a>.</p> </div> </div> <a class="anchor" id="a4c50979c12c8527727445e655219a2e3"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::compute" ref="a4c50979c12c8527727445e655219a2e3" args="(const MatrixType &transform, const MatrixType &invTransform, const V *src, V *dst)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class V > </div> <table class="memname"> <tr> <td class="memname">void osgAnimation::TransformVertexFunctor::compute </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00460.html">MatrixType</a> & </td> <td class="paramname"><em>transform</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00460.html">MatrixType</a> & </td> <td class="paramname"><em>invTransform</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const V * </td> <td class="paramname"><em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">V * </td> <td class="paramname"><em>dst</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>References <a class="el" href="a00926.html#af7f1f5c17efb460c6116c334f7016b5e">_boneSetVertexSet</a>, <a class="el" href="a01037.html#ad81f1ceca69b211aa670c39da28eabc6">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::computeMatrixForVertexSet()</a>, <a class="el" href="a01037.html#aaf0ce61a8fbc0eadb27cb9091ca158e0">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::getMatrix()</a>, and <a class="el" href="a01037.html#ac7e46834d1be49bfbd7fa0dce1bf4861">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::getVertexes()</a>.</p> </div> </div> <a class="anchor" id="ab89f7898773204d23fbfc7ed82e02249"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::computeNormal" ref="ab89f7898773204d23fbfc7ed82e02249" args="(const MatrixType &transform, const MatrixType &invTransform, const V *src, V *dst)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class V > </div> <table class="memname"> <tr> <td class="memname">void osgAnimation::TransformVertexFunctor::computeNormal </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00460.html">MatrixType</a> & </td> <td class="paramname"><em>transform</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00460.html">MatrixType</a> & </td> <td class="paramname"><em>invTransform</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const V * </td> <td class="paramname"><em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">V * </td> <td class="paramname"><em>dst</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>References <a class="el" href="a00926.html#af7f1f5c17efb460c6116c334f7016b5e">_boneSetVertexSet</a>, <a class="el" href="a01037.html#ad81f1ceca69b211aa670c39da28eabc6">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::computeMatrixForVertexSet()</a>, <a class="el" href="a01037.html#aaf0ce61a8fbc0eadb27cb9091ca158e0">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::getMatrix()</a>, <a class="el" href="a01037.html#ac7e46834d1be49bfbd7fa0dce1bf4861">osgAnimation::TransformVertexFunctor::UniqBoneSetVertexSet::getVertexes()</a>, and <a class="el" href="a00460.html#a1e247296eda958a72cc66ca4ee781b42">osg::Matrixd::transform3x3()</a>.</p> </div> </div> <a class="anchor" id="aa165ec9da708b8791c57169449906a29"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::init" ref="aa165ec9da708b8791c57169449906a29" args="(const BoneMap &map, const osgAnimation::VertexInfluenceSet::UniqVertexSetToBoneSetList &influence)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgAnimation::TransformVertexFunctor::init </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00926.html#a057236ec8e55d0710061ef3f8902aa7b">BoneMap</a> & </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a01082.html#ad1852a97ac255569d49ac37123bd89dd">osgAnimation::VertexInfluenceSet::UniqVertexSetToBoneSetList</a> & </td> <td class="paramname"><em>influence</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>References <a class="el" href="a00926.html#af7f1f5c17efb460c6116c334f7016b5e">_boneSetVertexSet</a>, <a class="el" href="a01038.html#abb48f6bf6a4849f80e42d10a179ffb10">osgAnimation::VertexInfluenceSet::UniqVertexSetToBoneSet::getBones()</a>, <a class="el" href="a01038.html#ac27eb14cc7847c9b24eab2fc9ba9214f">osgAnimation::VertexInfluenceSet::UniqVertexSetToBoneSet::getVertexes()</a>, <a class="el" href="a01628.html#a9d7b8fb9d25855a45e4507f8449ab596">osg::notify()</a>, and <a class="el" href="a01628.html#a32e50146c0f96ef6dc821cbc3c0e41d3a1bc96fe6de8f81f8dfdd779e2b8f2c08">osg::WARN</a>.</p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="af7f1f5c17efb460c6116c334f7016b5e"></a><!-- doxytag: member="osgAnimation::TransformVertexFunctor::_boneSetVertexSet" ref="af7f1f5c17efb460c6116c334f7016b5e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::vector<<a class="el" href="a01037.html">UniqBoneSetVertexSet</a>> <a class="el" href="a00926.html#af7f1f5c17efb460c6116c334f7016b5e">osgAnimation::TransformVertexFunctor::_boneSetVertexSet</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Referenced by <a class="el" href="a00926.html#a04bdfde26bb68f6e8e5d8d344c3232cf">compute()</a>, <a class="el" href="a00926.html#ab89f7898773204d23fbfc7ed82e02249">computeNormal()</a>, and <a class="el" href="a00926.html#aa165ec9da708b8791c57169449906a29">init()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>osgAnimation/<a class="el" href="a01338.html">Skinning</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:35 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>