aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02901.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a02901.html')
-rw-r--r--docs/doxygen/nel/a02901.html5416
1 files changed, 5416 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02901.html b/docs/doxygen/nel/a02901.html
new file mode 100644
index 00000000..bc24e750
--- /dev/null
+++ b/docs/doxygen/nel/a02901.html
@@ -0,0 +1,5416 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NL3D::CMeshMRMSkinnedGeom class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NL3D::CMeshMRMSkinnedGeom Class Reference</h1><code>#include &lt;<a class="el" href="a06012.html">mesh_mrm_skinned.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NL3D::CMeshMRMSkinnedGeom:
+<p><center><img src="a02901.png" usemap="#NL3D::CMeshMRMSkinnedGeom_map" border="0" alt=""></center>
+<map name="NL3D::CMeshMRMSkinnedGeom_map">
+<area href="a02879.html" alt="NL3D::IMeshGeom" shape="rect" coords="0,112,197,136">
+<area href="a02867.html" alt="NLMISC::IStreamable" shape="rect" coords="0,56,197,80">
+<area href="a02540.html" alt="NLMISC::IClassable" shape="rect" coords="0,0,197,24">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+An MRM mesh geometry, with no materials information.<p>
+To build a <a class="el" href="a02901.html">CMeshMRMSkinnedGeom</a>, you should:<ul>
+<li>build a <a class="el" href="a02864.html">CMesh::CMeshBuild</a> meshBuild (see <a class="el" href="a02857.html">CMesh</a>)</li><li>call MeshMRMGeom.build(MeshBuild);</li></ul>
+<p>
+NB: internally, <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma1">build()</a> use <a class="el" href="a02951.html">CMRMBuilder</a>, a builder of MRM.<p>
+<dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00090">90</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>RawSkin optimisation.</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_0">NumCacheVertexNormal1</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03313.html">CRawVertexNormalSkinned1</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_1">NumCacheVertexNormal2</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03314.html">CRawVertexNormalSkinned2</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_2">NumCacheVertexNormal3</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03315.html">CRawVertexNormalSkinned3</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_3">NumCacheVertexNormal4</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03316.html">CRawVertexNormalSkinned4</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_4">NumCacheVertexShadow</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a02907.html">CMeshMRMSkinnedGeom::CShadowVertex</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_5">applyArrayRawSkinNormal1</a> (<a class="el" href="a03313.html">CRawVertexNormalSkinned1</a> *<a class="el" href="a04223.html#a652">src</a>, <a class="el" href="a04558.html#a7">uint8</a> *destVertexPtr, <a class="el" href="a02852.html">CMatrix3x4</a> *boneMat3x4, <a class="el" href="a04558.html#a15">uint</a> nInf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_6">applyArrayRawSkinNormal2</a> (<a class="el" href="a03314.html">CRawVertexNormalSkinned2</a> *<a class="el" href="a04223.html#a652">src</a>, <a class="el" href="a04558.html#a7">uint8</a> *destVertexPtr, <a class="el" href="a02852.html">CMatrix3x4</a> *boneMat3x4, <a class="el" href="a04558.html#a15">uint</a> nInf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_7">applyArrayRawSkinNormal3</a> (<a class="el" href="a03315.html">CRawVertexNormalSkinned3</a> *<a class="el" href="a04223.html#a652">src</a>, <a class="el" href="a04558.html#a7">uint8</a> *destVertexPtr, <a class="el" href="a02852.html">CMatrix3x4</a> *boneMat3x4, <a class="el" href="a04558.html#a15">uint</a> nInf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_8">applyArrayRawSkinNormal4</a> (<a class="el" href="a03316.html">CRawVertexNormalSkinned4</a> *<a class="el" href="a04223.html#a652">src</a>, <a class="el" href="a04558.html#a7">uint8</a> *destVertexPtr, <a class="el" href="a02852.html">CMatrix3x4</a> *boneMat3x4, <a class="el" href="a04558.html#a15">uint</a> nInf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_9">dirtMeshDataId</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Increment the refCount, so instances RawSkins are no longer valid. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz522_9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_10">updateRawSkinNormal</a> (bool enabled, <a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, <a class="el" href="a04558.html#a14">sint</a> curLodId)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute RawSkin info in the MRMInstance according to current skin setup. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz522_10"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Each time the mesh is loaded/built, this increment. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz522_11"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>ShadowMap Skin rendering</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_0">applyArrayShadowSkin</a> (<a class="el" href="a02907.html">CShadowVertex</a> *<a class="el" href="a04223.html#a652">src</a>, <a class="el" href="a03128.html">CVector</a> *dst, <a class="el" href="a03399.html">CSkeletonModel</a> *skeleton, <a class="el" href="a04558.html#a15">uint</a> numVerts)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a11">uint32</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">_ShadowSkinTriangles</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02907.html">CShadowVertex</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_3">_SupportShadowSkinGrouping</a></td></tr>
+
+<tr><td colspan=2><br><h2>Hard VB</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz518_0">fillAGPSkinPartWithVBHardPtr</a> (<a class="el" href="a02902.html">CLod</a> &amp;lod, <a class="el" href="a04558.html#a7">uint8</a> *vertexDst)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz518_1">_PreciseClipping</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">NB: HERE FOR PACKING ONLY. For clipping. Estimate if we must do a Precise clipping (ie with bboxes). <a href="#NL3D_1_1CMeshMRMSkinnedGeomz518_1"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5">TRenderFlag</a> { <br>
+&nbsp;&nbsp;<a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw2">RenderOpaqueMaterial</a> = 1,
+<a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw4">RenderTransparentMaterial</a> = 2,
+<a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw3">RenderPassOpaque</a> = 4,
+<a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw1">RenderGlobalAlpha</a> = 8,
+<br>
+&nbsp;&nbsp;<a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw0">RenderGADisableZWrite</a> = 16
+<br>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Render Flags, used in render. <a href="#NL3D_1_1IMeshGeomw5">More...</a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma0">applyMaterialRemap</a> (const std::vector&lt; <a class="el" href="a04558.html#a14">sint</a> &gt; &amp;remap)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">change materials Ids (called from <a class="el" href="a02857.html#NL3D_1_1CMesha11">CMesh::optimizeMaterialUsage()</a>) <a href="#NL3D_1_1CMeshMRMSkinnedGeoma0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma1">build</a> (<a class="el" href="a02864.html">CMesh::CMeshBuild</a> &amp;m, <a class="el" href="a04558.html#a15">uint</a> numMaxMaterial, const <a class="el" href="a02967.html">CMRMParameters</a> &amp;<a class="el" href="a04223.html#a565">params</a>=<a class="el" href="a02967.html">CMRMParameters</a>())</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma2">changeMRMDistanceSetup</a> (float distanceFinest, float distanceMiddle, float distanceCoarsest)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma3">CMeshMRMSkinnedGeom</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NL3D_1_1CMeshMRMSkinnedGeoma3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02540.html#NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a6">getClassName</a> ()=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02959.html">CMRMLevelDetail</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma5">getLevelDetail</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the MRM level detail information <a href="#NL3D_1_1CMeshMRMSkinnedGeoma5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma6">hasMeshVertexProgram</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True if this mesh has a vertexProgram. <a href="#NL3D_1_1CMeshMRMSkinnedGeoma6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeoma7">~CMeshMRMSkinnedGeom</a> ()</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Mesh Block Render Interface</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_7">isActiveInstanceNeedVBFill</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_8">isMeshInVBHeap</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Mesh Block Render Interface</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_8">isMeshInVBHeap</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Mesh Block Render Implementation</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_0">activeInstance</a> (<a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;rdrCtx, <a class="el" href="a02873.html">CMeshBaseInstance</a> *inst, float polygonCount, void *vbDst)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_1">beginMesh</a> (<a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;rdrCtx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_2">endMesh</a> (<a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;rdrCtx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_3">getNumRdrPassesForInstance</a> (<a class="el" href="a02873.html">CMeshBaseInstance</a> *inst) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_4">getNumRdrPassesForMesh</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_5">renderPass</a> (<a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;rdrCtx, <a class="el" href="a02873.html">CMeshBaseInstance</a> *inst, float polygonCount, <a class="el" href="a04558.html#a15">uint</a> rdrPass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_6">sortPerMaterial</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_7">supportMeshBlockRendering</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">From IMeshGeom</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_0">clip</a> (const std::vector&lt; <a class="el" href="a03082.html">CPlane</a> &gt; &amp;pyramid, const <a class="el" href="a02851.html">CMatrix</a> &amp;worldMatrix)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">clip this mesh in a driver. true if visible. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_1">getNumTriangles</a> (float distance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get an approximation of the number of triangles this instance will render for a fixed distance. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_2">initInstance</a> (<a class="el" href="a02873.html">CMeshBaseInstance</a> *mbi)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init instance info. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_3">NLMISC_DECLARE_CLASS</a> (<a class="el" href="a02901.html">CMeshMRMSkinnedGeom</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">clip this mesh in a driver. true if visible. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_4">profileSceneRender</a> (<a class="el" href="a03325.html">CRenderTrav</a> *rdrTrav, <a class="el" href="a02537.html">CTransformShape</a> *trans, float polygonCount, <a class="el" href="a04558.html#a11">uint32</a> rdrFlags)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scene profile. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_5">render</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a02537.html">CTransformShape</a> *trans, float polygonCount, <a class="el" href="a04558.html#a11">uint32</a> rdrFlags, float globalAlpha)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_5">render()</a> this mesh in a driver, given an instance and his materials. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_6">renderSkin</a> (<a class="el" href="a02537.html">CTransformShape</a> *trans, float alphaMRM)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_5">render()</a> this mesh as a skin <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_7">serial</a> (<a class="el" href="a02270.html">NLMISC::IStream</a> &amp;f)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">serial this meshGeom. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz503_7"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Skinning Behavior</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz507_0">computeBonesId</a> (<a class="el" href="a03399.html">CSkeletonModel</a> *skeleton)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute skinning id. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz507_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector&lt; <a class="el" href="a02291.html">NLMISC::CBSphere</a> &gt; &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz507_1">getSkinBoneSphere</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">see <a class="el" href="a02316.html#NL3D_1_1CWaveMakerModelz1032_0">CTransform::getSkinBoneSphere()</a> doc for the meaning of this value. computeBonesId must has been called before. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz507_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector&lt; <a class="el" href="a04558.html#a10">sint32</a> &gt; &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz507_2">getSkinBoneUsage</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return array of bones used by the skin. computeBonesId must has been called before. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz507_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz507_3">updateSkeletonUsage</a> (<a class="el" href="a03399.html">CSkeletonModel</a> *sm, bool increment)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">update Skeleton Usage. increment or decrement. computeBonesId must has been called before. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz507_3"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mesh Block Render Interface</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_2">computeMeshVBHeap</a> (void *dst, <a class="el" href="a04558.html#a15">uint</a> indexStart)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_6">getVBHeapInfo</a> (<a class="el" href="a04558.html#a15">uint</a> &amp;vertexFormat, <a class="el" href="a04558.html#a15">uint</a> &amp;numVertices)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_7">isActiveInstanceNeedVBFill</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_8">isMeshInVBHeap</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Geometry accessors</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector&lt; std::string &gt; &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_0">getBonesName</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the bone names of the meshMRM. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz505_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02157.html">NLMISC::CAABBoxExt</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_1">getBoundingBox</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the extended axis aligned bounding box of the mesh <a href="#NL3D_1_1CMeshMRMSkinnedGeomz505_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_2">getGeomorphs</a> (<a class="el" href="a04558.html#a15">uint</a> lodId) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Advanced. get the geomorphs for a special lod. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz505_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_3">getNbLod</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_4">getNbRdrPass</a> (<a class="el" href="a04558.html#a15">uint</a> lodId) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_5">getRdrPassMaterial</a> (<a class="el" href="a04558.html#a15">uint</a> lodId, <a class="el" href="a04558.html#a15">uint</a> renderingPassIndex) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_6">getRdrPassPrimitiveBlock</a> (<a class="el" href="a04558.html#a15">uint</a> lodId, <a class="el" href="a04558.html#a15">uint</a> renderingPassIndex, <a class="el" href="a03105.html">CPrimitiveBlock</a> &amp;block) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_7">getSkinWeights</a> (std::vector&lt; <a class="el" href="a02865.html">CMesh::CSkinWeight</a> &gt; &amp;skinWeights) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the skin weight buffer <a href="#NL3D_1_1CMeshMRMSkinnedGeomz505_7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_8">getVertexBuffer</a> (<a class="el" href="a03692.html">CVertexBuffer</a> &amp;output) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the vertex buffer used by the mrm mesh. NB: this VB store all Vertices used by All LODs. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz505_8"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">ShadowMap Skin rendering</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz513_0">getNumShadowSkinVertices</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the num of shadow skin vertices. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz513_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz513_1">renderShadowSkinGeom</a> (<a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, <a class="el" href="a04558.html#a15">uint</a> remainingVertices, <a class="el" href="a04558.html#a7">uint8</a> *vbDest)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the num of shadow skin vertices. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz513_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz513_2">renderShadowSkinPrimitives</a> (<a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, <a class="el" href="a02839.html">CMaterial</a> &amp;castMat, <a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a04558.html#a15">uint</a> baseVertex)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the num of shadow skin vertices. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz513_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz513_3">setShadowMesh</a> (const std::vector&lt; <a class="el" href="a02907.html">CShadowVertex</a> &gt; &amp;shadowVertices, const std::vector&lt; <a class="el" href="a04558.html#a11">uint32</a> &gt; &amp;triangles)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Setup the ShadowMesh. <a href="#NL3D_1_1CMeshMRMSkinnedGeomz513_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz513_4">supportShadowSkinGrouping</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Render the ShadowSkin (SkinGroup like). <a href="#NL3D_1_1CMeshMRMSkinnedGeomz513_4"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Special SkinGrouping Rendering</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz511_0">renderSkinGroupGeom</a> (<a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, float alphaMRM, <a class="el" href="a04558.html#a15">uint</a> remainingVertices, <a class="el" href="a04558.html#a7">uint8</a> *vbDest)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz511_1">renderSkinGroupPrimitives</a> (<a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, <a class="el" href="a04558.html#a15">uint</a> baseVertex, std::vector&lt; <a class="el" href="a03407.html">CSkinSpecularRdrPass</a> &gt; &amp;specularRdrPasses, <a class="el" href="a04558.html#a15">uint</a> skinIndex)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz511_2">renderSkinGroupSpecularRdrPass</a> (<a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, <a class="el" href="a04558.html#a15">uint</a> rdrPassId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz511_3">supportSkinGrouping</a> () const </td></tr>
+
+<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd0">applyGeomorph</a> (std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;geoms, float alphaLod)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Apply the geomorph to the _VBuffer, or the VBhard, if exist/used. <a href="#NL3D_1_1CMeshMRMSkinnedGeomd0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd1">applyGeomorphPosNormalUV0</a> (std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;geoms, <a class="el" href="a04558.html#a7">uint8</a> *vertexPtr, <a class="el" href="a04558.html#a7">uint8</a> *vertexDestPtr, <a class="el" href="a04558.html#a10">sint32</a> vertexSize, float a, float a1)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Faster, but common geomorph apply. <a href="#NL3D_1_1CMeshMRMSkinnedGeomd1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd2">applyGeomorphPosNormalUV0Int</a> (std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;geoms, <a class="el" href="a04558.html#a7">uint8</a> *vertexPtr, <a class="el" href="a04558.html#a7">uint8</a> *vertexDestPtr, <a class="el" href="a04558.html#a10">sint32</a> vertexSize, <a class="el" href="a04558.html#a14">sint</a> a, <a class="el" href="a04558.html#a14">sint</a> a1)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Faster, but common geomorph apply. <a href="#NL3D_1_1CMeshMRMSkinnedGeomd2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd3">applyGeomorphWithVBHardPtr</a> (std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;geoms, float alphaLod)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Apply the geomorph to the VBhard ptr, if not NULL. <a href="#NL3D_1_1CMeshMRMSkinnedGeomd3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd4">applyRawSkinWithNormal</a> (<a class="el" href="a02902.html">CLod</a> &amp;lod, <a class="el" href="a03306.html">CRawSkinnedNormalCache</a> &amp;rawSkinLod, const <a class="el" href="a03399.html">CSkeletonModel</a> *skeleton, <a class="el" href="a04558.html#a7">uint8</a> *vbHard, float alphaLod)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd5">chooseLod</a> (float alphaMRM, float &amp;alphaLod)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">choose the lod according to the alphaMRM [0,1] given. <a href="#NL3D_1_1CMeshMRMSkinnedGeomd5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd6">compileRunTime</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd7">updateShiftedTriangleCache</a> (<a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *mi, <a class="el" href="a04558.html#a14">sint</a> curLodId, <a class="el" href="a04558.html#a15">uint</a> baseVertex)</td></tr>
+
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02157.html">NLMISC::CAABBoxExt</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For clipping. this is the BB of all vertices of all Lods. <a href="#NL3D_1_1CMeshMRMSkinnedGeomr0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr1">_BoneIdComputed</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This boolean is true if the bones id have been passed in the skeleton. <a href="#NL3D_1_1CMeshMRMSkinnedGeomr1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr2">_BoneIdExtended</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">true if the _BonesIdExt have been computed (for bone Usage). <a href="#NL3D_1_1CMeshMRMSkinnedGeomr2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a10">sint32</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This array give the index in the skeleton of the local bones used. computed at first computeBoneId(). <a href="#NL3D_1_1CMeshMRMSkinnedGeomr3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a10">sint32</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr4">_BonesIdExt</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Same as _BonesId but with parent of bones added. (used for bone usage). <a href="#NL3D_1_1CMeshMRMSkinnedGeomr4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; std::string &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">_BonesName</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This array give the name of the local bones. <a href="#NL3D_1_1CMeshMRMSkinnedGeomr5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02291.html">NLMISC::CBSphere</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">see <a class="el" href="a02316.html#NL3D_1_1CWaveMakerModelz1032_0">CTransform::getSkinBoneSphere()</a> doc for the meaning of this value <a href="#NL3D_1_1CMeshMRMSkinnedGeomr6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr7">_LastLodComputed</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Last lod rendered. used with renderSkinGroup*() only. <a href="#NL3D_1_1CMeshMRMSkinnedGeomr7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02902.html">CLod</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of Lods. <a href="#NL3D_1_1CMeshMRMSkinnedGeomr8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02904.html">CPackedVertexBuffer</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a></td></tr>
+
+<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02959.html">CMRMLevelDetail</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a></td></tr>
+
+<tr><td colspan=2><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>class&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomn0">CMRMBuilder</a></td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Structures for building a MRM mesh.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>class&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a></td></tr>
+
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NL3D_1_1IMeshGeomw5" doxytag="NL3D::CMeshMRMSkinnedGeom::TRenderFlag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> enum <a class="el" href="a02879.html#NL3D_1_1IMeshGeomw5">NL3D::IMeshGeom::TRenderFlag</a><code> [inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Render Flags, used in render.
+<p>
+<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw2" doxytag="RenderOpaqueMaterial" ></a>RenderOpaqueMaterial</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw4" doxytag="RenderTransparentMaterial" ></a>RenderTransparentMaterial</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw3" doxytag="RenderPassOpaque" ></a>RenderPassOpaque</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw1" doxytag="RenderGlobalAlpha" ></a>RenderGlobalAlpha</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw0" doxytag="RenderGADisableZWrite" ></a>RenderGADisableZWrite</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06000.html#l00082">82</a> of file <a class="el" href="a06000.html">mesh_geom.h</a>.
+<p>
+<div class="fragment"><pre>00083 {
+00084 <a class="code" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw2">RenderOpaqueMaterial</a>= 1, <span class="comment">// set when the mesh geom must render opaque material</span>
+00085 <a class="code" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw4">RenderTransparentMaterial</a>= 2, <span class="comment">// set when the mesh geom must render transparent material</span>
+00086 <a class="code" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw3">RenderPassOpaque</a>=4, <span class="comment">// set when the current traversal rdrPass is the opaque pass</span>
+00087 <a class="code" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw1">RenderGlobalAlpha</a>= 8, <span class="comment">// set when the caller wants to draw material with global alpha</span>
+00088 <a class="code" href="a02879.html#NL3D_1_1IMeshGeomw5NL3D_1_1IMeshGeomw0">RenderGADisableZWrite</a>= 16, <span class="comment">// only when globalAlpha is used. set if must disable ZWrite</span>
+00089 };
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma3" doxytag="NL3D::CMeshMRMSkinnedGeom::CMeshMRMSkinnedGeom" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CMeshMRMSkinnedGeom::CMeshMRMSkinnedGeom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00171">171</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+<div class="fragment"><pre>00172 {
+00173 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr1">_BoneIdComputed</a> = <span class="keyword">false</span>;
+00174 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr2">_BoneIdExtended</a> = <span class="keyword">false</span>;
+00175 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz518_1">_PreciseClipping</a>= <span class="keyword">false</span>;
+00176 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a>= 0;
+00177 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_3">_SupportShadowSkinGrouping</a>= <span class="keyword">false</span>;
+00178 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma7" doxytag="NL3D::CMeshMRMSkinnedGeom::~CMeshMRMSkinnedGeom" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CMeshMRMSkinnedGeom::~<a class="el" href="a02901.html">CMeshMRMSkinnedGeom</a> </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00182">182</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+<div class="fragment"><pre>00183 {
+00184 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_0" doxytag="NL3D::CMeshMRMSkinnedGeom::activeInstance" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::CMeshMRMSkinnedGeom::activeInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrCtx</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>inst</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>polygonCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vbDst</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The framework call this method any time a change of instance occurs.
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_0">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00233">233</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+<div class="fragment"><pre>00233 {};
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_5" doxytag="NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal1" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal1 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03313.html">CRawVertexNormalSkinned1</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>destVertexPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02852.html">CMatrix3x4</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>boneMat3x4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nInf</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02390">2390</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_6" doxytag="NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal2" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal2 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03314.html">CRawVertexNormalSkinned2</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>destVertexPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02852.html">CMatrix3x4</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>boneMat3x4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nInf</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02569">2569</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_7" doxytag="NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal3" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal3 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03315.html">CRawVertexNormalSkinned3</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>destVertexPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02852.html">CMatrix3x4</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>boneMat3x4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nInf</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02872">2872</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_8" doxytag="NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyArrayRawSkinNormal4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03316.html">CRawVertexNormalSkinned4</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>destVertexPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02852.html">CMatrix3x4</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>boneMat3x4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nInf</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l03266">3266</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz520_0" doxytag="NL3D::CMeshMRMSkinnedGeom::applyArrayShadowSkin" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyArrayShadowSkin </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02907.html">CShadowVertex</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03399.html">CSkeletonModel</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>skeleton</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>numVerts</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02283">2283</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06009.html#l00179">NL3D::computeBoneMatrixes3x4()</a>, <a class="el" href="a06012.html#l00362">NL3D::CMeshMRMSkinnedGeom::CLod::MatrixInfluences</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05646.html#l01124">src</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01843">renderShadowSkinGeom()</a>.
+<p>
+<div class="fragment"><pre>02284 {
+02285 <span class="comment">// For all matrix this Mesh use. (the shadow geometry cannot use other Matrix than the mesh use).</span>
+02286 <span class="comment">// NB: take the best lod since the lower lods cannot use other Matrix than the higher one.</span>
+02287 <span class="keyword">static</span> vector&lt;CMatrix3x4&gt; boneMat3x4;
+02288 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[_Lods.size()-1];
+02289 <a class="code" href="a05363.html#a433">computeBoneMatrixes3x4</a>(boneMat3x4, lod.MatrixInfluences, skeleton);
+02290
+02291 <span class="comment">// Then do the skin</span>
+02292 <span class="keywordflow">for</span>(;numVerts&gt;0;)
+02293 {
+02294 <span class="comment">// number of vertices to process for this block.</span>
+02295 <a class="code" href="a04558.html#a15">uint</a> nBlockInf= <a class="code" href="a04061.html#a0">min</a>(NumCacheVertexShadow, numVerts);
+02296 <span class="comment">// next block.</span>
+02297 numVerts-= nBlockInf;
+02298
+02299 <span class="comment">// cache the data in L1 cache.</span>
+02300 CFastMem::precache(src, nBlockInf * <span class="keyword">sizeof</span>(CShadowVertex));
+02301
+02302 <span class="comment">// for all InfluencedVertices only.</span>
+02303 <span class="keywordflow">for</span>(;nBlockInf&gt;0;nBlockInf--, <a class="code" href="a04223.html#a652">src</a>++, dst++)
+02304 {
+02305 boneMat3x4[ <a class="code" href="a04223.html#a652">src</a>-&gt;MatrixId ].mulSetPoint( <a class="code" href="a04223.html#a652">src</a>-&gt;Vertex, *dst );
+02306 }
+02307 }
+02308 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd0" doxytag="NL3D::CMeshMRMSkinnedGeom::applyGeomorph" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyGeomorph </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>geoms</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaLod</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply the geomorph to the _VBuffer, or the VBhard, if exist/used.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00410">410</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06011.html#l00417">applyGeomorphWithVBHardPtr()</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00568">render()</a>.
+<p>
+<div class="fragment"><pre>00411 {
+00412 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd3">applyGeomorphWithVBHardPtr</a>(geoms, alphaLod);
+00413 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd1" doxytag="NL3D::CMeshMRMSkinnedGeom::applyGeomorphPosNormalUV0" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyGeomorphPosNormalUV0 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>geoms</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexDestPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexSize</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>a1</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Faster, but common geomorph apply.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00438">438</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06062.html#l00185">NL3D::CMRMWedgeGeom::End</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a06062.html#l00183">NL3D::CMRMWedgeGeom::Start</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+<div class="fragment"><pre>00439 {
+00440 <a class="code" href="a04199.html#a6">nlassert</a>(vertexSize==32);
+00441
+00442
+00443 <span class="comment">// For all geomorphs.</span>
+00444 <a class="code" href="a04558.html#a15">uint</a> nGeoms= geoms.size();
+00445 CMRMWedgeGeom *ptrGeom= &amp;(geoms[0]);
+00446 <a class="code" href="a04558.html#a7">uint8</a> *destPtr= vertexDestPtr;
+00447 <span class="keywordflow">for</span>(; nGeoms&gt;0; nGeoms--, ptrGeom++, destPtr+= vertexSize )
+00448 {
+00449 <span class="comment">// Consider the Pos/Normal/UV as an array of 8 float to interpolate.</span>
+00450 <span class="keywordtype">float</span> *start= (<span class="keywordtype">float</span>*)(vertexPtr + (ptrGeom-&gt;Start&lt;&lt;5));
+00451 <span class="keywordtype">float</span> *end= (<span class="keywordtype">float</span>*)(vertexPtr + (ptrGeom-&gt;End&lt;&lt;5));
+00452 <span class="keywordtype">float</span> *dst= (<span class="keywordtype">float</span>*)(destPtr);
+00453
+00454 <span class="comment">// unrolled</span>
+00455 dst[0]= start[0] * a + end[0]* a1;
+00456 dst[1]= start[1] * a + end[1]* a1;
+00457 dst[2]= start[2] * a + end[2]* a1;
+00458 dst[3]= start[3] * a + end[3]* a1;
+00459 dst[4]= start[4] * a + end[4]* a1;
+00460 dst[5]= start[5] * a + end[5]* a1;
+00461 dst[6]= start[6] * a + end[6]* a1;
+00462 dst[7]= start[7] * a + end[7]* a1;
+00463 }
+00464 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd2" doxytag="NL3D::CMeshMRMSkinnedGeom::applyGeomorphPosNormalUV0Int" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyGeomorphPosNormalUV0Int </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>geoms</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexDestPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexSize</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>a1</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Faster, but common geomorph apply.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00468">468</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06062.html#l00185">NL3D::CMRMWedgeGeom::End</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00097">sint16</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a06062.html#l00183">NL3D::CMRMWedgeGeom::Start</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00417">applyGeomorphWithVBHardPtr()</a>.
+<p>
+<div class="fragment"><pre>00469 {
+00470 <span class="comment">// For all geomorphs.</span>
+00471 <a class="code" href="a04558.html#a15">uint</a> nGeoms= geoms.size();
+00472 CMRMWedgeGeom *ptrGeom= &amp;(geoms[0]);
+00473 <a class="code" href="a04558.html#a7">uint8</a> *destPtr= vertexDestPtr;
+00474 <span class="keywordflow">for</span>(; nGeoms&gt;0; nGeoms--, ptrGeom++, destPtr+= vertexSize )
+00475 {
+00476 <span class="comment">// Consider the Pos/Normal/UV as an array of 8 float to interpolate.</span>
+00477 <a class="code" href="a04558.html#a8">sint16</a> *start= (<a class="code" href="a04558.html#a8">sint16</a>*)(vertexPtr + (ptrGeom-&gt;Start*vertexSize));
+00478 <a class="code" href="a04558.html#a8">sint16</a> *end= (<a class="code" href="a04558.html#a8">sint16</a>*)(vertexPtr + (ptrGeom-&gt;End*vertexSize));
+00479 <a class="code" href="a04558.html#a8">sint16</a> *dst= (<a class="code" href="a04558.html#a8">sint16</a>*)(destPtr);
+00480
+00481 <span class="comment">/* Hulud</span>
+00482 <span class="comment"> * This is slow but, we don't care because this method is called for debug purpose only (watch skin without skinning)</span>
+00483 <span class="comment"> */</span>
+00484
+00485 <span class="comment">// unrolled</span>
+00486 dst[0]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[0]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[0]) * a1)&gt;&gt;8);
+00487 dst[1]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[1]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[1]) * a1)&gt;&gt;8);
+00488 dst[2]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[2]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[2]) * a1)&gt;&gt;8);
+00489 dst[3]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[3]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[3]) * a1)&gt;&gt;8);
+00490 dst[4]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[4]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[4]) * a1)&gt;&gt;8);
+00491 dst[5]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[5]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[5]) * a1)&gt;&gt;8);
+00492 dst[6]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[6]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[6]) * a1)&gt;&gt;8);
+00493 dst[7]= (<a class="code" href="a04558.html#a8">sint16</a>)(((<a class="code" href="a04558.html#a14">sint</a>)(start[7]) * a + (<a class="code" href="a04558.html#a14">sint</a>)(end[7]) * a1)&gt;&gt;8);
+00494 }
+00495 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd3" doxytag="NL3D::CMeshMRMSkinnedGeom::applyGeomorphWithVBHardPtr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyGeomorphWithVBHardPtr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a02971.html">CMRMWedgeGeom</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>geoms</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaLod</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply the geomorph to the VBhard ptr, if not NULL.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00417">417</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06011.html#l00468">applyGeomorphPosNormalUV0Int()</a>, <a class="el" href="a05587.html#l00115">NLMISC::clamp()</a>, <a class="el" href="a06012.html#l00487">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPackedVertices()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00410">applyGeomorph()</a>.
+<p>
+<div class="fragment"><pre>00418 {
+00419 <span class="comment">// no geomorphs? quit.</span>
+00420 <span class="keywordflow">if</span>(geoms.size()==0)
+00421 <span class="keywordflow">return</span>;
+00422
+00423 <a class="code" href="a05378.html#a374">clamp</a>(alphaLod, 0.f, 1.f);
+00424 <a class="code" href="a04558.html#a14">sint</a> a= (<a class="code" href="a04558.html#a15">uint</a>)floor((256.f*alphaLod)+0.5f);
+00425 <a class="code" href="a04558.html#a14">sint</a> a1= 256 - a;
+00426
+00427
+00428 <span class="comment">// info from VBuffer.</span>
+00429 <a class="code" href="a04558.html#a7">uint8</a> *vertexPtr= (<a class="code" href="a04558.html#a7">uint8</a>*)<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera5">getPackedVertices</a>();
+00430 <a class="code" href="a04558.html#a10">sint32</a> vertexSize= <span class="keyword">sizeof</span>(CPackedVertexBuffer::CPackedVertex);
+00431
+00432 <span class="comment">// use a faster method</span>
+00433 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd2">applyGeomorphPosNormalUV0Int</a>(geoms, vertexPtr, vertexPtr, vertexSize, a, a1);
+00434 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma0" doxytag="NL3D::CMeshMRMSkinnedGeom::applyMaterialRemap" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyMaterialRemap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::vector&lt; <a class="el" href="a04558.html#a14">sint</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>remap</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+change materials Ids (called from <a class="el" href="a02857.html#NL3D_1_1CMesha11">CMesh::optimizeMaterialUsage()</a>)
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00395">395</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06012.html#l00165">getNbLod()</a>, <a class="el" href="a06012.html#l00171">getNbRdrPass()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01415">NL3D::CMeshMRMSkinned::optimizeMaterialUsage()</a>.
+<p>
+<div class="fragment"><pre>00396 {
+00397 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> lod=0;lod&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_3">getNbLod</a>();lod++)
+00398 {
+00399 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> rp=0;rp&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_4">getNbRdrPass</a>(lod);rp++)
+00400 {
+00401 <span class="comment">// remap</span>
+00402 <a class="code" href="a04558.html#a11">uint32</a> &amp;matId= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lod].RdrPass[rp].MaterialId;
+00403 <a class="code" href="a04199.html#a6">nlassert</a>(remap[matId]&gt;=0);
+00404 matId= remap[matId];
+00405 }
+00406 }
+00407 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd4" doxytag="NL3D::CMeshMRMSkinnedGeom::applyRawSkinWithNormal" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::applyRawSkinWithNormal </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02902.html">CLod</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>lod</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03306.html">CRawSkinnedNormalCache</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>rawSkinLod</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03399.html">CSkeletonModel</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>skeleton</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vbHard</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaLod</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The same as apply skin, but with normal modified. Normal is not normalized. 4 versions from slower to faster.
+<p>
+Definition at line <a class="el" href="a06011.html#l03320">3320</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00726">renderSkinGroupGeom()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_1" doxytag="NL3D::CMeshMRMSkinnedGeom::beginMesh" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::CMeshMRMSkinnedGeom::beginMesh </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>rdrCtx</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The framework call this method when he will render instances of this meshGeom soon.
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_1">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00232">232</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+<div class="fragment"><pre>00232 {};
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma1" doxytag="NL3D::CMeshMRMSkinnedGeom::build" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::build </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02864.html">CMesh::CMeshBuild</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>numMaxMaterial</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02967.html">CMRMParameters</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>params</em> = <a class="el" href="a02967.html">CMRMParameters</a>()</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Build a mesh, replacing old. this is much slower than <a class="el" href="a02878.html#NL3D_1_1CMeshGeoma1">CMeshGeom::build()</a>, because it computes the MRM. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>params</em>&nbsp;</td><td>parameters of the MRM build process.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00206">206</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06012.html#l00403">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::BlendShapes</a>, <a class="el" href="a05990.html#l00190">NL3D::CMesh::CMeshBuild::BonesNames</a>, <a class="el" href="a06011.html#l02018">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::build()</a>, <a class="el" href="a06012.html#l00475">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::clear()</a>, <a class="el" href="a06059.html#l00037">NL3D::CMRMLevelDetail::compileDistanceSetup()</a>, <a class="el" href="a06055.html#l02991">NL3D::CMRMBuilder::compileMRM()</a>, <a class="el" href="a06011.html#l01273">compileRunTime()</a>, <a class="el" href="a06011.html#l01560">dirtMeshDataId()</a>, <a class="el" href="a06012.html#l00412">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::DistanceCoarsest</a>, <a class="el" href="a06060.html#l00065">NL3D::CMRMLevelDetail::DistanceCoarsest</a>, <a class="el" href="a06012.html#l00408">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::DistanceFinest</a>, <a class="el" href="a06060.html#l00061">NL3D::CMRMLevelDetail::DistanceFinest</a>, <a class="el" href="a06012.html#l00410">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::DistanceMiddle</a>, <a class="el" href="a06060.html#l00063">NL3D::CMRMLevelDetail::DistanceMiddle</a>, <a class="el" href="a05990.html#l00193">NL3D::CMesh::CMeshBuild::Faces</a>, <a class="el" href="a06012.html#l00323">NL3D::CMeshMRMSkinnedGeom::CRdrPass::getNumTriangle()</a>, <a class="el" href="a06012.html#l00505">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getNumVertices()</a>, <a class="el" href="a06012.html#l00487">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPackedVertices()</a>, <a class="el" href="a06012.html#l00400">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::Lods</a>, <a class="el" href="a05989.html#l00058">NL3D::makeBBox()</a>, <a class="el" href="a06012.html#l00432">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::Matrices</a>, <a class="el" href="a05646.html#l00243">matrix</a>, <a class="el" href="a06060.html#l00058">NL3D::CMRMLevelDetail::MaxFaceUsed</a>, <a class="el" href="a06060.html#l00056">NL3D::CMRMLevelDetail::MinFaceUsed</a>, <a class="el" href="a06012.html#l00073">NL3D_MESH_MRM_SKINNED_MAX_MATRIX</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05646.html#l00223">params</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a05385.html#l00181">NLMISC::CAABBoxExt::setCenter()</a>, <a class="el" href="a05385.html#l00183">NLMISC::CAABBoxExt::setSize()</a>, <a class="el" href="a06012.html#l00391">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::Skinned</a>, <a class="el" href="a06012.html#l00394">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::SkinWeights</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06012.html#l00397">NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::VBuffer</a>, <a class="el" href="a05990.html#l00184">NL3D::CMesh::CMeshBuild::Vertices</a>, and <a class="el" href="a06012.html#l00433">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::Weights</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01392">NL3D::CMeshMRMSkinned::build()</a>.
+<p>
+<div class="fragment"><pre>00208 {
+00209 <span class="comment">// Empty geometry?</span>
+00210 <span class="keywordflow">if</span>(m.Vertices.size()==0 || m.Faces.size()==0)
+00211 {
+00212 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera1">clear</a>();
+00213 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.clear();
+00214 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1910_1">setCenter</a>(CVector::Null);
+00215 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1910_4">setSize</a>(CVector::Null);
+00216 <span class="keywordflow">return</span>;
+00217 }
+00218 <a class="code" href="a04199.html#a6">nlassert</a>(numMaxMaterial&gt;0);
+00219
+00220
+00222 <span class="comment">//======================</span>
+00223 <span class="comment">// NB: this is equivalent as building BBox from MRM VBuffer, because CMRMBuilder create new vertices </span>
+00224 <span class="comment">// which are just interpolation of original vertices.</span>
+00225 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>= <a class="code" href="a05363.html#a431">makeBBox</a>(m.Vertices);
+00226
+00227
+00229 <span class="comment">//================================================</span>
+00230 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomn0">CMRMBuilder</a> mrmBuilder;
+00231 CMeshBuildMRM meshBuildMRM;
+00232 std::vector&lt;CMesh::CMeshBuild*&gt; bsList;
+00233
+00234 mrmBuilder.compileMRM(m, bsList, params, meshBuildMRM, numMaxMaterial);
+00235 <a class="code" href="a04199.html#a6">nlassert</a> (meshBuildMRM.Skinned);
+00236
+00237 <span class="comment">// Then build the packed vertex buffer</span>
+00238 <span class="comment">//================================================</span>
+00239 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera0">build</a> (meshBuildMRM.VBuffer, meshBuildMRM.SkinWeights);
+00240 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>= meshBuildMRM.Lods;
+00241
+00242 <span class="comment">// Compute degradation control.</span>
+00243 <span class="comment">//================================================</span>
+00244 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceFinest= meshBuildMRM.DistanceFinest;
+00245 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceMiddle= meshBuildMRM.DistanceMiddle;
+00246 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceCoarsest= meshBuildMRM.DistanceCoarsest;
+00247 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceFinest&gt;=0);
+00248 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceMiddle &gt; <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceFinest);
+00249 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceCoarsest &gt; <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceMiddle);
+00250 <span class="comment">// Compute OODistDelta and DistancePow</span>
+00251 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.compileDistanceSetup();
+00252
+00253
+00254 <span class="comment">// For load balancing.</span>
+00255 <span class="comment">//================================================</span>
+00256 <span class="comment">// compute Max Face Used</span>
+00257 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.MaxFaceUsed= 0;
+00258 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.MinFaceUsed= 0;
+00259 <span class="comment">// Count of primitive block</span>
+00260 <span class="keywordflow">if</span>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size()&gt;0)
+00261 {
+00262 <a class="code" href="a04558.html#a15">uint</a> pb;
+00263 <span class="comment">// Compute MinFaces.</span>
+00264 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;firstLod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[0];
+00265 <span class="keywordflow">for</span> (pb=0; pb&lt;firstLod.RdrPass.size(); pb++)
+00266 {
+00267 CRdrPass &amp;pass= firstLod.RdrPass[pb];
+00268 <span class="comment">// Sum tri</span>
+00269 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.MinFaceUsed+= pass.getNumTriangle ();
+00270 }
+00271 <span class="comment">// Compute MaxFaces.</span>
+00272 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lastLod= _Lods[_Lods.size()-1];
+00273 <span class="keywordflow">for</span> (pb=0; pb&lt;lastLod.RdrPass.size(); pb++)
+00274 {
+00275 CRdrPass &amp;pass= lastLod.RdrPass[pb];
+00276 <span class="comment">// Sum tri</span>
+00277 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.MaxFaceUsed+= pass.getNumTriangle ();
+00278 }
+00279 }
+00280
+00281
+00282 <span class="comment">// For skinning.</span>
+00283 <span class="comment">//================================================</span>
+00284
+00285 <span class="comment">// Inform that the mesh data has changed</span>
+00286 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_9">dirtMeshDataId</a>();
+00287
+00288
+00289 <span class="comment">// For AGP SKinning optim, and for Render optim</span>
+00290 <span class="comment">//================================================</span>
+00291 <a class="code" href="a04558.html#a15">uint</a> i;
+00292 <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size();i++)
+00293 {
+00294 <span class="comment">// sort triangles for better cache use.</span>
+00295 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[i].optimizeTriangleOrder();
+00296 }
+00297
+00298 <span class="comment">// No Blend Shapes</span>
+00299 <span class="comment">//================================================ </span>
+00300 <a class="code" href="a04199.html#a6">nlassert</a> (meshBuildMRM.BlendShapes.size() == 0);
+00301
+00302 <span class="comment">// Compact bone id and build a bone id names</span>
+00303 <span class="comment">//================================================ </span>
+00304
+00305 <span class="comment">// Remap</span>
+00306 std::map&lt;uint, uint&gt; remap;
+00307
+00308 <span class="comment">// Current bone</span>
+00309 <a class="code" href="a04558.html#a15">uint</a> currentBone = 0;
+00310
+00311 <span class="comment">// Reserve memory</span>
+00312 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">_BonesName</a>.reserve (m.BonesNames.size());
+00313
+00314 <span class="comment">// For each vertices</span>
+00315 <a class="code" href="a04558.html#a15">uint</a> vert;
+00316 CPackedVertexBuffer::CPackedVertex *vertices = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera5">getPackedVertices</a>();
+00317 <span class="keywordflow">for</span> (vert=0; vert&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>(); vert++)
+00318 {
+00319 <span class="comment">// Found one ?</span>
+00320 <span class="keywordtype">bool</span> found=<span class="keyword">false</span>;
+00321
+00322 <span class="comment">// For each weight</span>
+00323 <a class="code" href="a04558.html#a15">uint</a> weight;
+00324 <span class="keywordflow">for</span> (weight=0; weight&lt;<a class="code" href="a04589.html#a4">NL3D_MESH_MRM_SKINNED_MAX_MATRIX</a>; weight++)
+00325 {
+00326 <span class="comment">// Active ?</span>
+00327 <span class="keywordflow">if</span> ((vertices[vert].Weights[weight]&gt;0)||(weight==0))
+00328 {
+00329 <span class="comment">// Look for it</span>
+00330 std::map&lt;uint, uint&gt;::iterator ite = remap.find (vertices[vert].Matrices[weight]);
+00331
+00332 <span class="comment">// Find ?</span>
+00333 <span class="keywordflow">if</span> (ite == remap.end())
+00334 {
+00335 <span class="comment">// Insert it</span>
+00336 remap.insert (std::map&lt;uint, uint&gt;::value_type (vertices[vert].Matrices[weight], currentBone));
+00337
+00338 <span class="comment">// Check the id</span>
+00339 <a class="code" href="a04199.html#a6">nlassert</a> (vertices[vert].Matrices[weight]&lt;m.BonesNames.size());
+00340
+00341 <span class="comment">// Set the bone name</span>
+00342 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">_BonesName</a>.push_back (m.BonesNames[vertices[vert].Matrices[weight]]);
+00343
+00344 <span class="comment">// Set the local bone id</span>
+00345 vertices[vert].Matrices[weight] = currentBone++;
+00346 }
+00347 <span class="keywordflow">else</span>
+00348 {
+00349 <span class="comment">// Set the local bone id</span>
+00350 vertices[vert].Matrices[weight] = ite-&gt;second;
+00351 }
+00352
+00353 <span class="comment">// Found one</span>
+00354 found = <span class="keyword">true</span>;
+00355 }
+00356 }
+00357
+00358 <span class="comment">// Found one ?</span>
+00359 <a class="code" href="a04199.html#a6">nlassert</a> (found);
+00360 }
+00361
+00362 <span class="comment">// Remap the vertex influence by lods</span>
+00363 <a class="code" href="a04558.html#a15">uint</a> lod;
+00364 <span class="keywordflow">for</span> (lod=0; lod&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size(); lod++)
+00365 {
+00366 <span class="comment">// For each matrix used</span>
+00367 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a578">matrix</a>;
+00368 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a578">matrix</a>=0; <a class="code" href="a04223.html#a578">matrix</a>&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lod].MatrixInfluences.size(); <a class="code" href="a04223.html#a578">matrix</a>++)
+00369 {
+00370 <span class="comment">// Remap</span>
+00371 std::map&lt;uint, uint&gt;::iterator ite = remap.find (_Lods[lod].MatrixInfluences[matrix]);
+00372
+00373 <span class="comment">// Not find ?</span>
+00374 <span class="keywordflow">if</span> (ite == remap.end())
+00375 {
+00376 <span class="comment">// Remove it</span>
+00377 _Lods[lod].MatrixInfluences.erase (_Lods[lod].MatrixInfluences.begin()+<a class="code" href="a04223.html#a578">matrix</a>);
+00378 <a class="code" href="a04223.html#a578">matrix</a>--;
+00379 <span class="keywordflow">continue</span>;
+00380 }
+00381
+00382 <span class="comment">// Remap</span>
+00383 _Lods[lod].MatrixInfluences[<a class="code" href="a04223.html#a578">matrix</a>] = ite-&gt;second;
+00384 }
+00385 }
+00386
+00387 <span class="comment">// Misc.</span>
+00388 <span class="comment">//===================</span>
+00389 <span class="comment">// Some runtime not serialized compilation</span>
+00390 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd6">compileRunTime</a>();
+00391
+00392 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma2" doxytag="NL3D::CMeshMRMSkinnedGeom::changeMRMDistanceSetup" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::changeMRMDistanceSetup </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname" nowrap> <em>distanceFinest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>distanceMiddle</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>distanceCoarsest</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Change MRM Distance setup. NB: no-op if distanceFinest&lt;0, distanceMiddle&lt;=distanceFinest or if distanceCoarsest&lt;=distanceMiddle. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>distanceFinest</em>&nbsp;</td><td>The MRM has its max faces when dist&lt;=distanceFinest. </td></tr>
+ <tr><td valign=top><em>distanceMiddle</em>&nbsp;</td><td>The MRM has 50% of its faces at dist==distanceMiddle. </td></tr>
+ <tr><td valign=top><em>distanceCoarsest</em>&nbsp;</td><td>The MRM has faces/Divisor (ie near 0) when dist&gt;=distanceCoarsest.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00188">188</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06059.html#l00037">NL3D::CMRMLevelDetail::compileDistanceSetup()</a>, <a class="el" href="a06060.html#l00065">NL3D::CMRMLevelDetail::DistanceCoarsest</a>, <a class="el" href="a06060.html#l00061">NL3D::CMRMLevelDetail::DistanceFinest</a>, and <a class="el" href="a06060.html#l00063">NL3D::CMRMLevelDetail::DistanceMiddle</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01526">NL3D::CMeshMRMSkinned::changeMRMDistanceSetup()</a>.
+<p>
+<div class="fragment"><pre>00189 {
+00190 <span class="comment">// check input.</span>
+00191 <span class="keywordflow">if</span>(distanceFinest&lt;0) <span class="keywordflow">return</span>;
+00192 <span class="keywordflow">if</span>(distanceMiddle&lt;=distanceFinest) <span class="keywordflow">return</span>;
+00193 <span class="keywordflow">if</span>(distanceCoarsest&lt;=distanceMiddle) <span class="keywordflow">return</span>;
+00194
+00195 <span class="comment">// Change.</span>
+00196 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceFinest= distanceFinest;
+00197 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceMiddle= distanceMiddle;
+00198 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceCoarsest= distanceCoarsest;
+00199
+00200 <span class="comment">// compile </span>
+00201 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.compileDistanceSetup();
+00202 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd5" doxytag="NL3D::CMeshMRMSkinnedGeom::chooseLod" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> NL3D::CMeshMRMSkinnedGeom::chooseLod </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaMRM</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaLod</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+choose the lod according to the alphaMRM [0,1] given.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00547">547</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01288">profileSceneRender()</a>, <a class="el" href="a06011.html#l00568">render()</a>, and <a class="el" href="a06011.html#l00726">renderSkinGroupGeom()</a>.
+<p>
+<div class="fragment"><pre>00548 {
+00549 <span class="comment">// Choose what Lod to draw.</span>
+00550 alphaMRM*= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size()-1;
+00551 <a class="code" href="a04558.html#a14">sint</a> numLod= (<a class="code" href="a04558.html#a14">sint</a>)ceil(alphaMRM);
+00552 <span class="keywordflow">if</span>(numLod==0)
+00553 {
+00554 numLod= 0;
+00555 alphaLod= 0;
+00556 }
+00557 <span class="keywordflow">else</span>
+00558 {
+00559 <span class="comment">// Lerp beetween lod i-1 and lod i.</span>
+00560 alphaLod= alphaMRM-(numLod-1);
+00561 }
+00562
+00563 <span class="keywordflow">return</span> numLod;
+00564 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_0" doxytag="NL3D::CMeshMRMSkinnedGeom::clip" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CMeshMRMSkinnedGeom::clip </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::vector&lt; <a class="el" href="a03082.html">CPlane</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>pyramid</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>worldMatrix</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+clip this mesh in a driver. true if visible.
+<p>
+
+<p>
+Reimplemented from <a class="el" href="a02879.html#NL3D_1_1IMeshGeoma0">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l00505">505</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a05504.html#l00088">NLMISC::CBSphere::applyTransform()</a>, <a class="el" href="a05505.html#l00048">NLMISC::CBSphere::Center</a>, <a class="el" href="a05384.html#l00319">NLMISC::CAABBoxExt::clipBack()</a>, <a class="el" href="a05385.html#l00199">NLMISC::CAABBoxExt::getCenter()</a>, <a class="el" href="a05385.html#l00204">NLMISC::CAABBoxExt::getRadius()</a>, <a class="el" href="a06172.html#l00068">NLMISC::CPlane::normalize()</a>, <a class="el" href="a05505.html#l00049">NLMISC::CBSphere::Radius</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01461">NL3D::CMeshMRMSkinned::clip()</a>.
+<p>
+<div class="fragment"><pre>00506 {
+00507 <span class="comment">// Speed Clip: clip just the sphere.</span>
+00508 <a class="code" href="a02291.html">CBSphere</a> localSphere(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_1">getCenter</a>(), <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_5">getRadius</a>());
+00509 <a class="code" href="a02291.html">CBSphere</a> worldSphere;
+00510
+00511 <span class="comment">// transform the sphere in WorldMatrix (with nearly good scale info).</span>
+00512 localSphere.<a class="code" href="a02291.html#NLMISC_1_1CBSpherez1929_0">applyTransform</a>(worldMatrix, worldSphere);
+00513
+00514 <span class="comment">// if out of only plane, entirely out.</span>
+00515 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)pyramid.size();i++)
+00516 {
+00517 <span class="comment">// We are sure that pyramid has normalized plane normals.</span>
+00518 <span class="comment">// if SpherMax OUT return false.</span>
+00519 <span class="keywordtype">float</span> d= pyramid[i]*worldSphere.<a class="code" href="a02291.html#NLMISC_1_1CBSphereo0">Center</a>;
+00520 <span class="keywordflow">if</span>(d&gt;worldSphere.<a class="code" href="a02291.html#NLMISC_1_1CBSphereo1">Radius</a>)
+00521 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00522 }
+00523
+00524 <span class="comment">// test if must do a precise clip, according to mesh size.</span>
+00525 <span class="keywordflow">if</span>( <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz518_1">_PreciseClipping</a> )
+00526 {
+00527 CPlane localPlane;
+00528
+00529 <span class="comment">// if out of only plane, entirely out.</span>
+00530 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)pyramid.size();i++)
+00531 {
+00532 <span class="comment">// Transform the pyramid in Object space.</span>
+00533 localPlane= pyramid[i]*worldMatrix;
+00534 <span class="comment">// localPlane must be normalized, because worldMatrix mya have a scale.</span>
+00535 localPlane.normalize();
+00536 <span class="comment">// if the box is not partially inside the plane, quit</span>
+00537 <span class="keywordflow">if</span>( !<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1914_0">clipBack</a>(localPlane) )
+00538 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00539 }
+00540 }
+00541
+00542 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00543 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd6" doxytag="NL3D::CMeshMRMSkinnedGeom::compileRunTime" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::compileRunTime </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01273">1273</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06012.html#l00505">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getNumVertices()</a>, <a class="el" href="a05385.html#l00204">NLMISC::CAABBoxExt::getRadius()</a>, <a class="el" href="a05990.html#l00066">NL3D_MESH_PRECISE_CLIP_THRESHOLD</a>, <a class="el" href="a06330.html#l00066">NL3D_MESH_SKIN_MANAGER_MAXVERTICES</a>, <a class="el" href="a06330.html#l00076">NL3D_SHADOW_MESH_SKIN_MANAGER_MAXVERTICES</a>, <a class="el" href="a06330.html#l00075">NL3D_SHADOW_MESH_SKIN_MANAGER_VERTEXFORMAT</a>, and <a class="el" href="a05622.html#l00290">nlassert</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00206">build()</a>, and <a class="el" href="a06011.html#l00991">serial()</a>.
+<p>
+<div class="fragment"><pre>01274 {
+01275 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz518_1">_PreciseClipping</a>= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_5">getRadius</a>() &gt;= <a class="code" href="a04567.html#a1">NL3D_MESH_PRECISE_CLIP_THRESHOLD</a>;
+01276
+01277 <span class="comment">// The Mesh must follow those restrictions, to support group skinning</span>
+01278 <a class="code" href="a04199.html#a6">nlassert</a> (<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>() &lt; <a class="code" href="a04907.html#a1">NL3D_MESH_SKIN_MANAGER_MAXVERTICES</a>);
+01279
+01280 <span class="comment">// Support Shadow SkinGrouping if Shadow setuped, and if not too many vertices.</span>
+01281 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_3">_SupportShadowSkinGrouping</a>= !<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.empty() &amp;&amp;
+01282 <a class="code" href="a04907.html#a3">NL3D_SHADOW_MESH_SKIN_MANAGER_VERTEXFORMAT</a>==CVertexBuffer::PositionFlag &amp;&amp;
+01283 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.size() &lt;= <a class="code" href="a04907.html#a4">NL3D_SHADOW_MESH_SKIN_MANAGER_MAXVERTICES</a>;
+01284 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz507_0" doxytag="NL3D::CMeshMRMSkinnedGeom::computeBonesId" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::computeBonesId </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03399.html">CSkeletonModel</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>skeleton</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compute skinning id.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01062">1062</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06394.html#l00098">NL3D::CSkeletonModel::Bones</a>, <a class="el" href="a06393.html#l00237">NL3D::CSkeletonModel::flagBoneAndParents()</a>, <a class="el" href="a06393.html#l00629">NL3D::CSkeletonModel::getBoneIdByName()</a>, <a class="el" href="a06012.html#l00505">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getNumVertices()</a>, <a class="el" href="a06012.html#l00487">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPackedVertices()</a>, <a class="el" href="a06012.html#l00511">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPos()</a>, <a class="el" href="a06012.html#l00432">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::Matrices</a>, <a class="el" href="a05646.html#l00243">matrix</a>, <a class="el" href="a05990.html#l00063">NL3D_MESH_SKINNING_MAX_MATRIX</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05646.html#l00237">v</a>, and <a class="el" href="a06012.html#l00433">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::Weights</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01514">NL3D::CMeshMRMSkinned::computeBonesId()</a>.
+<p>
+<div class="fragment"><pre>01063 {
+01064 <span class="comment">// Already computed ?</span>
+01065 <span class="keywordflow">if</span> (!<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr1">_BoneIdComputed</a>)
+01066 {
+01067 <span class="comment">// Get a pointer on the skeleton</span>
+01068 <a class="code" href="a04199.html#a6">nlassert</a> (skeleton);
+01069 <span class="keywordflow">if</span> (skeleton)
+01070 {
+01071 <span class="comment">// Resize boneId to the good size.</span>
+01072 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>.resize(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">_BonesName</a>.size());
+01073
+01074 <span class="comment">// Remap bones id table</span>
+01075 std::vector&lt;uint&gt; remap (<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">_BonesName</a>.size());
+01076
+01077 <span class="comment">// **** For each bones, compute remap</span>
+01078 <a class="code" href="a04558.html#a15">uint</a> bone;
+01079 <span class="keywordflow">for</span> (bone=0; bone&lt;remap.size(); bone++)
+01080 {
+01081 <span class="comment">// Look for the bone</span>
+01082 <a class="code" href="a04558.html#a10">sint32</a> boneId = skeleton-&gt;getBoneIdByName (_BonesName[bone]);
+01083
+01084 <span class="comment">// Setup the _BoneId.</span>
+01085 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>[bone]= boneId;
+01086
+01087 <span class="comment">// Bones found ?</span>
+01088 <span class="keywordflow">if</span> (boneId != -1)
+01089 {
+01090 <span class="comment">// Set the bone id</span>
+01091 remap[bone] = (<a class="code" href="a04558.html#a11">uint32</a>)boneId;
+01092 }
+01093 <span class="keywordflow">else</span>
+01094 {
+01095 <span class="comment">// Put id 0</span>
+01096 remap[bone] = 0;
+01097
+01098 <span class="comment">// Error</span>
+01099 <a class="code" href="a04199.html#a2">nlwarning</a> (<span class="stringliteral">"Bone %s not found in the skeleton."</span>, _BonesName[bone].c_str());
+01100 }
+01101 }
+01102
+01103 <span class="comment">// **** Remap the vertices, and compute Bone Spheres.</span>
+01104
+01105 <span class="comment">// Find the Geomorph space: to process only real vertices, not geomorphed ones.</span>
+01106 <a class="code" href="a04558.html#a15">uint</a> nGeomSpace= 0;
+01107 <a class="code" href="a04558.html#a15">uint</a> lod;
+01108 <span class="keywordflow">for</span> (lod=0; lod&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size(); lod++)
+01109 {
+01110 nGeomSpace= max(nGeomSpace, (<a class="code" href="a04558.html#a15">uint</a>)_Lods[lod].Geomorphs.size());
+01111 }
+01112
+01113 <span class="comment">// Prepare Sphere compute</span>
+01114 <span class="keyword">static</span> std::vector&lt;CAABBox&gt; boneBBoxes;
+01115 <span class="keyword">static</span> std::vector&lt;bool&gt; boneBBEmpty;
+01116 boneBBoxes.clear();
+01117 boneBBEmpty.clear();
+01118 boneBBoxes.resize(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>.size());
+01119 boneBBEmpty.resize(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>.size(), <span class="keyword">true</span>);
+01120
+01121
+01122 <span class="comment">// Remap the vertex, and compute the bone spheres. see CTransform::getSkinBoneSphere() doc.</span>
+01123 <span class="comment">// for true vertices</span>
+01124 <a class="code" href="a04558.html#a15">uint</a> vert;
+01125 <span class="keyword">const</span> <a class="code" href="a04558.html#a15">uint</a> vertexCount = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>();
+01126 CPackedVertexBuffer::CPackedVertex *vertices = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera5">getPackedVertices</a>();
+01127 <span class="keywordflow">for</span> (vert=nGeomSpace; vert&lt;vertexCount; vert++)
+01128 {
+01129 <span class="comment">// get the vertex position.</span>
+01130 CVector vertex;
+01131 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera6">getPos</a> (vertex, vertices[vert]);
+01132
+01133 <span class="comment">// For each weight</span>
+01134 <a class="code" href="a04558.html#a15">uint</a> weight;
+01135 <span class="keywordflow">for</span> (weight=0; weight&lt;<a class="code" href="a04567.html#a0">NL3D_MESH_SKINNING_MAX_MATRIX</a>; weight++)
+01136 {
+01137 <span class="comment">// Active ?</span>
+01138 <span class="keywordflow">if</span> ((vertices[vert].Weights[weight]&gt;0)||(weight==0))
+01139 {
+01140 <span class="comment">// Check id</span>
+01141 <a class="code" href="a04558.html#a15">uint</a> srcId= vertices[vert].Matrices[weight];
+01142 <a class="code" href="a04199.html#a6">nlassert</a> (srcId &lt; remap.size());
+01143 <span class="comment">// remap</span>
+01144 vertices[vert].Matrices[weight] = remap[srcId];
+01145
+01146 <span class="comment">// if the boneId is valid (ie found)</span>
+01147 <span class="keywordflow">if</span>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>[srcId]&gt;=0)
+01148 {
+01149 <span class="comment">// transform the vertex pos in BoneSpace</span>
+01150 CVector p= skeleton-&gt;Bones[<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>[srcId]].getBoneBase().InvBindPos * vertex;
+01151 <span class="comment">// extend the bone bbox.</span>
+01152 <span class="keywordflow">if</span>(boneBBEmpty[srcId])
+01153 {
+01154 boneBBoxes[srcId].setCenter(p);
+01155 boneBBEmpty[srcId]= <span class="keyword">false</span>;
+01156 }
+01157 <span class="keywordflow">else</span>
+01158 {
+01159 boneBBoxes[srcId].extend(p);
+01160 }
+01161 }
+01162 }
+01163 <span class="keywordflow">else</span>
+01164 <span class="keywordflow">break</span>;
+01165 }
+01166 }
+01167
+01168 <span class="comment">// Compile spheres</span>
+01169 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a>.resize(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>.size());
+01170 <span class="keywordflow">for</span>(bone=0;bone&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a>.size();bone++)
+01171 {
+01172 <span class="comment">// If the bone is empty, mark with -1 in the radius.</span>
+01173 <span class="keywordflow">if</span>(boneBBEmpty[bone])
+01174 {
+01175 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a>[bone].Radius= -1;
+01176 }
+01177 <span class="keywordflow">else</span>
+01178 {
+01179 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a>[bone].Center= boneBBoxes[bone].getCenter();
+01180 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a>[bone].Radius= boneBBoxes[bone].getRadius();
+01181 }
+01182 }
+01183
+01184 <span class="comment">// **** Remap the vertex influence by lods</span>
+01185 <span class="keywordflow">for</span> (lod=0; lod&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size(); lod++)
+01186 {
+01187 <span class="comment">// For each matrix used</span>
+01188 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a578">matrix</a>;
+01189 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a578">matrix</a>=0; <a class="code" href="a04223.html#a578">matrix</a>&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lod].MatrixInfluences.size(); <a class="code" href="a04223.html#a578">matrix</a>++)
+01190 {
+01191 <span class="comment">// Check</span>
+01192 <a class="code" href="a04199.html#a6">nlassert</a> (_Lods[lod].MatrixInfluences[matrix]&lt;remap.size());
+01193
+01194 <span class="comment">// Remap</span>
+01195 _Lods[lod].MatrixInfluences[<a class="code" href="a04223.html#a578">matrix</a>] = remap[_Lods[lod].MatrixInfluences[<a class="code" href="a04223.html#a578">matrix</a>]];
+01196 }
+01197 }
+01198
+01199 <span class="comment">// **** Remap Shadow Vertices.</span>
+01200 <span class="keywordflow">for</span>(vert=0;vert&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.size();vert++)
+01201 {
+01202 CShadowVertex &amp;<a class="code" href="a04223.html#a576">v</a>= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>[vert];
+01203 <span class="comment">// Check id</span>
+01204 <a class="code" href="a04199.html#a6">nlassert</a> (<a class="code" href="a04223.html#a576">v</a>.MatrixId &lt; remap.size());
+01205 <a class="code" href="a04223.html#a576">v</a>.MatrixId= remap[<a class="code" href="a04223.html#a576">v</a>.MatrixId];
+01206 }
+01207
+01208 <span class="comment">// Computed</span>
+01209 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr1">_BoneIdComputed</a> = <span class="keyword">true</span>;
+01210 }
+01211 }
+01212
+01213 <span class="comment">// Already extended ?</span>
+01214 <span class="keywordflow">if</span> (!<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr2">_BoneIdExtended</a>)
+01215 {
+01216 <a class="code" href="a04199.html#a6">nlassert</a> (skeleton);
+01217 <span class="keywordflow">if</span> (skeleton)
+01218 {
+01219 <span class="comment">// the total bone Usage of the mesh.</span>
+01220 vector&lt;bool&gt; boneUsage;
+01221 boneUsage.resize(skeleton-&gt;Bones.size(), <span class="keyword">false</span>);
+01222
+01223 <span class="comment">// for all Bones marked as valid.</span>
+01224 <a class="code" href="a04558.html#a15">uint</a> i;
+01225 <span class="keywordflow">for</span>(i=0; i&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>.size(); i++)
+01226 {
+01227 <span class="comment">// if not a valid boneId, skip it.</span>
+01228 <span class="keywordflow">if</span>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>[i]&lt;0)
+01229 <span class="keywordflow">continue</span>;
+01230
+01231 <span class="comment">// mark him and his father in boneUsage.</span>
+01232 skeleton-&gt;flagBoneAndParents(_BonesId[i], boneUsage);
+01233 }
+01234
+01235 <span class="comment">// fill _BonesIdExt with bones of _BonesId and their parents.</span>
+01236 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr4">_BonesIdExt</a>.clear();
+01237 <span class="keywordflow">for</span>(i=0; i&lt;boneUsage.size();i++)
+01238 {
+01239 <span class="comment">// if the bone is used by the mesh, add it to BoneIdExt.</span>
+01240 <span class="keywordflow">if</span>(boneUsage[i])
+01241 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr4">_BonesIdExt</a>.push_back(i);
+01242 }
+01243
+01244 }
+01245
+01246 <span class="comment">// Extended</span>
+01247 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr2">_BoneIdExtended</a>= <span class="keyword">true</span>;
+01248 }
+01249
+01250 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshGeomz457_2" doxytag="NL3D::CMeshMRMSkinnedGeom::computeMeshVBHeap" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::IMeshGeom::computeMeshVBHeap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>indexStart</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+When the framework succes to allocate a VBHeap space, it call this method to fill this space and compute shifted Primitive block. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>the</em>&nbsp;</td><td>dest VertexBuffer. NB: start to fill at dst[0] </td></tr>
+ <tr><td valign=top><em>indexStart</em>&nbsp;</td><td>used to shift primitive block.</td></tr>
+ </table>
+</dl>
+
+<p>
+Reimplemented in <a class="el" href="a02878.html#NL3D_1_1CMeshGeomz417_2">NL3D::CMeshGeom</a>, and <a class="el" href="a02892.html#NL3D_1_1CMeshMRMGeomz475_2">NL3D::CMeshMRMGeom</a>.
+<p>
+Definition at line <a class="el" href="a06000.html#l00207">207</a> of file <a class="el" href="a06000.html">mesh_geom.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05997.html#l00274">NL3D::CMeshBlockManager::allocateMeshVBHeap()</a>.
+<p>
+<div class="fragment"><pre>00207 {}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_9" doxytag="NL3D::CMeshMRMSkinnedGeom::dirtMeshDataId" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::dirtMeshDataId </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Increment the refCount, so instances RawSkins are no longer valid.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01560">1560</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00206">build()</a>, and <a class="el" href="a06011.html#l00991">serial()</a>.
+<p>
+<div class="fragment"><pre>01561 {
+01562 <span class="comment">// see updateRawSkinNormal()</span>
+01563 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a>++;
+01564 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_2" doxytag="NL3D::CMeshMRMSkinnedGeom::endMesh" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::CMeshMRMSkinnedGeom::endMesh </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>rdrCtx</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The framework call this method when it has done with this meshGeom
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_3">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00235">235</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+<div class="fragment"><pre>00235 {};
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz518_0" doxytag="NL3D::CMeshMRMSkinnedGeom::fillAGPSkinPartWithVBHardPtr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::fillAGPSkinPartWithVBHardPtr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02902.html">CLod</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>lod</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexDst</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_0" doxytag="NL3D::CMeshMRMSkinnedGeom::getBonesName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const std::vector&lt;std::string&gt;&amp; NL3D::CMeshMRMSkinnedGeom::getBonesName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the bone names of the meshMRM.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00161">161</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+<div class="fragment"><pre>00161 {<span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">_BonesName</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_1" doxytag="NL3D::CMeshMRMSkinnedGeom::getBoundingBox" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const <a class="el" href="a02157.html">NLMISC::CAABBoxExt</a>&amp; NL3D::CMeshMRMSkinnedGeom::getBoundingBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the extended axis aligned bounding box of the mesh
+<p>
+
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz455_0">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00148">148</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+Referenced by <a class="el" href="a06012.html#l00738">NL3D::CMeshMRMSkinned::getBoundingBox()</a>.
+<p>
+<div class="fragment"><pre>00149 {
+00150 <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">_BBox</a>;
+00151 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a6" doxytag="NL3D::CMeshMRMSkinnedGeom::getClassName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual std::string NLMISC::IClassable::getClassName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02995.html#NLAIAGENT_1_1CNumericIndexz1699_0">NLAIAGENT::CNumericIndex</a>, <a class="el" href="a02145.html#NLAIAGENT_1_1VectorTypez1764_0">NLAIC::IPointerGestion</a>, <a class="el" href="a02650.html#NLAIC_1_1CIdentTypez1766_0">NLAIC::CIdentType</a>, and <a class="el" href="a02241.html#CAutomataDescz1896_0">CAutomataDesc</a>.
+<p>
+Referenced by <a class="el" href="a05549.html#l00091">NLMISC::CClassRegistry::checkObject()</a>, and <a class="el" href="a06525.html#l00039">NL3D::GetTextureSize()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_2" doxytag="NL3D::CMeshMRMSkinnedGeom::getGeomorphs" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const std::vector&lt;<a class="el" href="a02971.html">CMRMWedgeGeom</a>&gt;&amp; NL3D::CMeshMRMSkinnedGeom::getGeomorphs </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>lodId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Advanced. get the geomorphs for a special lod.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00195">195</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00196 {
+00197 <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lodId].Geomorphs;
+00198 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma5" doxytag="NL3D::CMeshMRMSkinnedGeom::getLevelDetail" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const <a class="el" href="a02959.html">CMRMLevelDetail</a>&amp; NL3D::CMeshMRMSkinnedGeom::getLevelDetail </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the MRM level detail information
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00241">241</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00176">NL3D::CMeshMRMSkinnedInstance::getMRMLevelDetail()</a>.
+<p>
+<div class="fragment"><pre>00241 {<span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_3" doxytag="NL3D::CMeshMRMSkinnedGeom::getNbLod" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> NL3D::CMeshMRMSkinnedGeom::getNbLod </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the number of LOD.
+<p>
+Definition at line <a class="el" href="a06012.html#l00165">165</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00395">applyMaterialRemap()</a>, and <a class="el" href="a06012.html#l00749">NL3D::CMeshMRMSkinned::getNbLod()</a>.
+<p>
+<div class="fragment"><pre>00165 { <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size() ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_4" doxytag="NL3D::CMeshMRMSkinnedGeom::getNbRdrPass" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> NL3D::CMeshMRMSkinnedGeom::getNbRdrPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>lodId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the number of rendering pass of a LOD. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>lodId</em>&nbsp;</td><td>the id of the LOD.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00171">171</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00395">applyMaterialRemap()</a>, and <a class="el" href="a06012.html#l00755">NL3D::CMeshMRMSkinned::getNbRdrPass()</a>.
+<p>
+<div class="fragment"><pre>00171 { <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lodId].RdrPass.size() ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_3" doxytag="NL3D::CMeshMRMSkinnedGeom::getNumRdrPassesForInstance" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="a04558.html#a15">uint</a> NL3D::CMeshMRMSkinnedGeom::getNumRdrPassesForInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>inst</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return the number of renderPasses for this instance. Called after activateInstance() Used only if <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_6">sortPerMaterial()</a>) is false
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_4">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00231">231</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00231 { <span class="keywordflow">return</span> 0; };
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_4" doxytag="NL3D::CMeshMRMSkinnedGeom::getNumRdrPassesForMesh" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="a04558.html#a15">uint</a> NL3D::CMeshMRMSkinnedGeom::getNumRdrPassesForMesh </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return the number of renderPasses for this mesh. Used only if <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz509_6">sortPerMaterial()</a>) is true
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_5">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00230">230</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00230 { <span class="keywordflow">return</span> 0; };
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz513_0" doxytag="NL3D::CMeshMRMSkinnedGeom::getNumShadowSkinVertices" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> NL3D::CMeshMRMSkinnedGeom::getNumShadowSkinVertices </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the num of shadow skin vertices.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01837">1837</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>01838 {
+01839 <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.size();
+01840 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_1" doxytag="NL3D::CMeshMRMSkinnedGeom::getNumTriangles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float NL3D::CMeshMRMSkinnedGeom::getNumTriangles </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>distance</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get an approximation of the number of triangles this instance will render for a fixed distance.
+<p>
+
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz455_1">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l01055">1055</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06060.html#l00082">NL3D::CMRMLevelDetail::getNumTriangles()</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01500">NL3D::CMeshMRMSkinned::getNumTriangles()</a>.
+<p>
+<div class="fragment"><pre>01056 {
+01057 <span class="comment">// NB: this is an approximation, but this is continious.</span>
+01058 <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.getNumTriangles(distance);
+01059 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_5" doxytag="NL3D::CMeshMRMSkinnedGeom::getRdrPassMaterial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a11">uint32</a> NL3D::CMeshMRMSkinnedGeom::getRdrPassMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>lodId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>renderingPassIndex</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the material ID associated with a rendering pass of a LOD. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>lodId</em>&nbsp;</td><td>the id of the LOD. </td></tr>
+ <tr><td valign=top><em>renderingPassIndex</em>&nbsp;</td><td>the index of the rendering pass in the matrix block</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00188">188</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06012.html#l00772">NL3D::CMeshMRMSkinned::getRdrPassMaterial()</a>.
+<p>
+<div class="fragment"><pre>00189 {
+00190 <span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lodId].RdrPass[renderingPassIndex].MaterialId ;
+00191 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_6" doxytag="NL3D::CMeshMRMSkinnedGeom::getRdrPassPrimitiveBlock" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::getRdrPassPrimitiveBlock </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>lodId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>renderingPassIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03105.html">CPrimitiveBlock</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>block</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the primitive block associated with a rendering pass of a LOD. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>lodId</em>&nbsp;</td><td>the id of the LOD. </td></tr>
+ <tr><td valign=top><em>renderingPassIndex</em>&nbsp;</td><td>the index of the rendering pass</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00178">178</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06012.html#l00762">NL3D::CMeshMRMSkinned::getRdrPassPrimitiveBlock()</a>.
+<p>
+<div class="fragment"><pre>00179 {
+00180 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[lodId].getRdrPassPrimitiveBlock(renderingPassIndex, block);
+00181 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz507_1" doxytag="NL3D::CMeshMRMSkinnedGeom::getSkinBoneSphere" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const std::vector&lt;<a class="el" href="a02291.html">NLMISC::CBSphere</a>&gt;&amp; NL3D::CMeshMRMSkinnedGeom::getSkinBoneSphere </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+see <a class="el" href="a02316.html#NL3D_1_1CWaveMakerModelz1032_0">CTransform::getSkinBoneSphere()</a> doc for the meaning of this value. computeBonesId must has been called before.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00216">216</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00137">NL3D::CMeshMRMSkinnedInstance::getSkinBoneSphere()</a>.
+<p>
+<div class="fragment"><pre>00216 {<span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">_BonesSphere</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz507_2" doxytag="NL3D::CMeshMRMSkinnedGeom::getSkinBoneUsage" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const std::vector&lt;<a class="el" href="a04558.html#a10">sint32</a>&gt;&amp; NL3D::CMeshMRMSkinnedGeom::getSkinBoneUsage </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return array of bones used by the skin. computeBonesId must has been called before.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00213">213</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00123">NL3D::CMeshMRMSkinnedInstance::getSkinBoneUsage()</a>.
+<p>
+<div class="fragment"><pre>00213 {<span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">_BonesId</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_7" doxytag="NL3D::CMeshMRMSkinnedGeom::getSkinWeights" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::getSkinWeights </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a02865.html">CMesh::CSkinWeight</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>skinWeights</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the skin weight buffer
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02107">2107</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06012.html#l00505">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getNumVertices()</a>, <a class="el" href="a06012.html#l00487">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPackedVertices()</a>, <a class="el" href="a06012.html#l00456">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getWeight()</a>, <a class="el" href="a06012.html#l00432">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::Matrices</a>, <a class="el" href="a06012.html#l00073">NL3D_MESH_MRM_SKINNED_MAX_MATRIX</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>02108 {
+02109 <span class="keyword">const</span> <a class="code" href="a04558.html#a15">uint</a> vertexCount = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>();
+02110 skinWeights.resize (vertexCount);
+02111 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex *vertices = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera5">getPackedVertices</a>();
+02112 <a class="code" href="a04558.html#a15">uint</a> i;
+02113 <span class="keywordflow">for</span> (i=0; i&lt;vertexCount; i++)
+02114 {
+02115 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex &amp;vertex = vertices[i];
+02116
+02117 <a class="code" href="a04558.html#a15">uint</a> j;
+02118 <span class="comment">// Matrices</span>
+02119 <span class="keywordflow">for</span> (j=0; j&lt;<a class="code" href="a04589.html#a4">NL3D_MESH_MRM_SKINNED_MAX_MATRIX</a>; j++)
+02120 {
+02121 skinWeights[i].MatrixId[j] = vertex.Matrices[j];
+02122 vertex.getWeight (skinWeights[i].Weights[j], j);
+02123 }
+02124 }
+02125 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshGeomz457_6" doxytag="NL3D::CMeshMRMSkinnedGeom::getVBHeapInfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::IMeshGeom::getVBHeapInfo </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>vertexFormat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>numVertices</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The framework call this method to know if the mesh can fit in VBHeap. if yes, deriver must return mesh vertexFormat and num of vertices.
+<p>
+Reimplemented in <a class="el" href="a02878.html#NL3D_1_1CMeshGeomz417_6">NL3D::CMeshGeom</a>, and <a class="el" href="a02892.html#NL3D_1_1CMeshMRMGeomz475_6">NL3D::CMeshMRMGeom</a>.
+<p>
+Definition at line <a class="el" href="a06000.html#l00200">200</a> of file <a class="el" href="a06000.html">mesh_geom.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05997.html#l00274">NL3D::CMeshBlockManager::allocateMeshVBHeap()</a>.
+<p>
+<div class="fragment"><pre>00200 {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz505_8" doxytag="NL3D::CMeshMRMSkinnedGeom::getVertexBuffer" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::getVertexBuffer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03692.html">CVertexBuffer</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>output</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the vertex buffer used by the mrm mesh. NB: this VB store all Vertices used by All LODs.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02088">2088</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06012.html#l00442">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getNormal()</a>, <a class="el" href="a06710.html#l00449">NL3D::CVertexBuffer::getNormalCoordPointer()</a>, <a class="el" href="a06012.html#l00505">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getNumVertices()</a>, <a class="el" href="a06012.html#l00487">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPackedVertices()</a>, <a class="el" href="a06012.html#l00511">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPos()</a>, <a class="el" href="a06710.html#l00497">NL3D::CVertexBuffer::getTexCoordPointer()</a>, <a class="el" href="a06012.html#l00448">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getU()</a>, <a class="el" href="a06012.html#l00452">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getV()</a>, <a class="el" href="a06710.html#l00438">NL3D::CVertexBuffer::getVertexCoordPointer()</a>, <a class="el" href="a06710.html#l00409">NL3D::CVertexBuffer::setNumVertices()</a>, <a class="el" href="a06710.html#l00169">NL3D::CVertexBuffer::setVertexFormat()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06012.html#l00744">NL3D::CMeshMRMSkinned::getVertexBuffer()</a>, and <a class="el" href="a06011.html#l00568">render()</a>.
+<p>
+<div class="fragment"><pre>02089 {
+02090 output.setVertexFormat (CVertexBuffer::PositionFlag|CVertexBuffer::NormalFlag|CVertexBuffer::TexCoord0Flag);
+02091 <span class="keyword">const</span> <a class="code" href="a04558.html#a15">uint</a> numVertices = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>();
+02092 output.setNumVertices (numVertices);
+02093 <a class="code" href="a04558.html#a15">uint</a> i;
+02094 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex *vertex = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera5">getPackedVertices</a>();
+02095 <span class="keywordflow">for</span> (i=0; i&lt;numVertices; i++)
+02096 {
+02097 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera6">getPos</a>(*(CVector*)output.getVertexCoordPointer(i), vertex[i]);
+02098 vertex[i].getNormal(*(CVector*)output.getNormalCoordPointer(i));
+02099 <span class="keywordtype">float</span> *texCoord = (<span class="keywordtype">float</span>*)output.getTexCoordPointer(i,0);
+02100 vertex[i].getU(texCoord[0]);
+02101 vertex[i].getV(texCoord[1]);
+02102 }
+02103 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeoma6" doxytag="NL3D::CMeshMRMSkinnedGeom::hasMeshVertexProgram" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::CMeshMRMSkinnedGeom::hasMeshVertexProgram </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+True if this mesh has a vertexProgram.
+<p>
+
+<p>
+Reimplemented from <a class="el" href="a02879.html#NL3D_1_1IMeshGeoma2">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00253">253</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00227">NL3D::CMeshMRMSkinnedInstance::initRenderFilterType()</a>.
+<p>
+<div class="fragment"><pre>00253 {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_2" doxytag="NL3D::CMeshMRMSkinnedGeom::initInstance" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::initInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>mbi</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Init instance info.
+<p>
+
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeoma4">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l00499">499</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01439">NL3D::CMeshMRMSkinned::createInstance()</a>.
+<p>
+<div class="fragment"><pre>00500 {
+00501 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshGeomz457_7" doxytag="NL3D::CMeshMRMSkinnedGeom::isActiveInstanceNeedVBFill" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::IMeshGeom::isActiveInstanceNeedVBFill </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Return true if the meshGeom has to Fill some Vertices at <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_0">activeInstance()</a> time if VBHeap enabled at this time, then vbDst in activeInstance(,,,vbDst) will contains the vb to write to.
+<p>
+Reimplemented in <a class="el" href="a02892.html#NL3D_1_1CMeshMRMGeomz475_7">NL3D::CMeshMRMGeom</a>.
+<p>
+Definition at line <a class="el" href="a06000.html#l00212">212</a> of file <a class="el" href="a06000.html">mesh_geom.h</a>.
+<p>
+Referenced by <a class="el" href="a05997.html#l00177">NL3D::CMeshBlockManager::render()</a>.
+<p>
+<div class="fragment"><pre>00212 {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshGeomz457_8" doxytag="NL3D::CMeshMRMSkinnedGeom::isMeshInVBHeap" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::IMeshGeom::isMeshInVBHeap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Return true if the meshGeom has to Fill some Vertices at <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_0">activeInstance()</a> time if VBHeap enabled at this time, then vbDst in activeInstance(,,,vbDst) will contains the vb to write to.
+<p>
+Definition at line <a class="el" href="a06000.html#l00215">215</a> of file <a class="el" href="a06000.html">mesh_geom.h</a>.
+<p>
+References <a class="el" href="a06000.html#l00233">NL3D::IMeshGeom::_MeshVBHeapId</a>.
+<p>
+Referenced by <a class="el" href="a06005.html#l02600">NL3D::CMeshMRMGeom::profileSceneRender()</a>, and <a class="el" href="a05989.html#l01932">NL3D::CMeshGeom::profileSceneRender()</a>.
+<p>
+<div class="fragment"><pre>00215 {<span class="keywordflow">return</span> _MeshVBHeapId!=0;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_3" doxytag="NL3D::CMeshMRMSkinnedGeom::NLMISC_DECLARE_CLASS" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CMeshMRMSkinnedGeom::NLMISC_DECLARE_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02901.html">CMeshMRMSkinnedGeom</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+clip this mesh in a driver. true if visible.
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_4" doxytag="NL3D::CMeshMRMSkinnedGeom::profileSceneRender" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::profileSceneRender </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03325.html">CRenderTrav</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrTrav</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02537.html">CTransformShape</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>trans</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>polygonCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrFlags</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Scene profile.
+<p>
+
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeoma5">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l01288">1288</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06349.html#l00531">NL3D::CScene::BenchRes</a>, <a class="el" href="a06011.html#l00547">chooseLod()</a>, <a class="el" href="a06060.html#l00101">NL3D::CMRMLevelDetail::getLevelDetailFromPolyCount()</a>, <a class="el" href="a06012.html#l00323">NL3D::CMeshMRMSkinnedGeom::CRdrPass::getNumTriangle()</a>, <a class="el" href="a06349.html#l00533">NL3D::CScene::incrementProfileTriVBFormat()</a>, <a class="el" href="a06012.html#l00309">NL3D::CMeshMRMSkinnedGeom::CRdrPass::MaterialId</a>, <a class="el" href="a05994.html#l00075">NL3D::CMeshBaseInstance::Materials</a>, <a class="el" href="a06625.html#l00490">NL3D::UScene::CBenchResults::MeshMRMProfileTriVBFormat</a>, <a class="el" href="a06330.html#l00065">NL3D_MESH_SKIN_MANAGER_VERTEXFORMAT</a>, <a class="el" href="a06625.html#l00498">NL3D::UScene::CBenchResults::NumMeshMRMRdrNormal</a>, <a class="el" href="a06625.html#l00501">NL3D::UScene::CBenchResults::NumMeshMRMTriRdrNormal</a>, <a class="el" href="a06625.html#l00506">NL3D::UScene::CBenchResults::NumMeshMRMVBufferStd</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a06583.html#l00055">NL3D::CTraversal::Scene</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01538">NL3D::CMeshMRMSkinned::profileSceneRender()</a>.
+<p>
+<div class="fragment"><pre>01289 {
+01290 <span class="comment">// get the result of the Load Balancing.</span>
+01291 <span class="keywordtype">float</span> alphaMRM= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.getLevelDetailFromPolyCount(polygonCount);
+01292
+01293 <span class="comment">// choose the lod.</span>
+01294 <span class="keywordtype">float</span> alphaLod;
+01295 <a class="code" href="a04558.html#a14">sint</a> numLod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd5">chooseLod</a>(alphaMRM, alphaLod);
+01296
+01297 <span class="comment">// Render the choosen Lod.</span>
+01298 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[numLod];
+01299
+01300 <span class="comment">// get the mesh instance.</span>
+01301 CMeshBaseInstance *mi= safe_cast&lt;CMeshBaseInstance*&gt;(trans);
+01302
+01303 <span class="comment">// Profile all pass.</span>
+01304 <a class="code" href="a04558.html#a15">uint</a> triCount= 0;
+01305 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;lod.RdrPass.size();i++)
+01306 {
+01307 CRdrPass &amp;rdrPass= lod.RdrPass[i];
+01308 <span class="comment">// Profile with the Materials of the MeshInstance.</span>
+01309 <span class="keywordflow">if</span> ( ( (mi-&gt;Materials[rdrPass.MaterialId].getBlend() == <span class="keyword">false</span>) &amp;&amp; (rdrFlags &amp; IMeshGeom::RenderOpaqueMaterial) ) ||
+01310 ( (mi-&gt;Materials[rdrPass.MaterialId].getBlend() == <span class="keyword">true</span>) &amp;&amp; (rdrFlags &amp; IMeshGeom::RenderTransparentMaterial) ) )
+01311 {
+01312 triCount+= rdrPass.getNumTriangle();
+01313 }
+01314 }
+01315
+01316 <span class="comment">// Profile</span>
+01317 <span class="keywordflow">if</span>(triCount)
+01318 {
+01319 <span class="comment">// tri per VBFormat</span>
+01320 rdrTrav-&gt;Scene-&gt;incrementProfileTriVBFormat(rdrTrav-&gt;Scene-&gt;BenchRes.MeshMRMProfileTriVBFormat,
+01321 NL3D_MESH_SKIN_MANAGER_VERTEXFORMAT, triCount);
+01322
+01323 rdrTrav-&gt;Scene-&gt;BenchRes.NumMeshMRMVBufferStd++;
+01324 rdrTrav-&gt;Scene-&gt;BenchRes.NumMeshMRMRdrNormal++;
+01325 rdrTrav-&gt;Scene-&gt;BenchRes.NumMeshMRMTriRdrNormal+= triCount;
+01326 }
+01327 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_5" doxytag="NL3D::CMeshMRMSkinnedGeom::render" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::render </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02537.html">CTransformShape</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>trans</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>polygonCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrFlags</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>globalAlpha</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_5">render()</a> this mesh in a driver, given an instance and his materials.
+<p>
+
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeoma6">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l00568">568</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>, <a class="el" href="a06011.html#l00410">applyGeomorph()</a>, <a class="el" href="a06011.html#l00547">chooseLod()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera14">NL3D::IDriver::forceNormalize()</a>, <a class="el" href="a06012.html#l00353">NL3D::CMeshMRMSkinnedGeom::CLod::Geomorphs</a>, <a class="el" href="a06060.html#l00101">NL3D::CMRMLevelDetail::getLevelDetailFromPolyCount()</a>, <a class="el" href="a06569.html#l00105">NL3D::CTransform::getOwnerScene()</a>, <a class="el" href="a06011.html#l00114">NL3D::CMeshMRMSkinnedGeom::CLod::getRdrPassPrimitiveBlock()</a>, <a class="el" href="a06349.html#l00479">NL3D::CScene::getRenderTrav()</a>, <a class="el" href="a06569.html#l00205">NL3D::CTransform::getSkeletonModel()</a>, <a class="el" href="a06011.html#l02088">getVertexBuffer()</a>, <a class="el" href="a06569.html#l00299">NL3D::CTransform::getWorldMatrix()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera46">NL3D::IDriver::isForceNormalize()</a>, <a class="el" href="a06569.html#l00423">NL3D::CTransform::isSkinned()</a>, <a class="el" href="a06012.html#l00309">NL3D::CMeshMRMSkinnedGeom::CRdrPass::MaterialId</a>, <a class="el" href="a05994.html#l00075">NL3D::CMeshBaseInstance::Materials</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05701.html#l00125">NLMISC::OptFastFloor()</a>, <a class="el" href="a05995.html#l00037">NL3D::CMeshBlender::prepareRenderForGlobalAlpha()</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera51">NL3D::IDriver::render()</a>, <a class="el" href="a05995.html#l00099">NL3D::CMeshBlender::restoreRender()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera68">NL3D::IDriver::setupModelMatrix()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01468">NL3D::CMeshMRMSkinned::render()</a>.
+<p>
+<div class="fragment"><pre>00569 {
+00570 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+00571 <span class="keywordflow">if</span>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>.size()==0)
+00572 <span class="keywordflow">return</span>;
+00573
+00574
+00575 <span class="comment">// get the meshMRM instance.</span>
+00576 CMeshBaseInstance *mi= safe_cast&lt;CMeshBaseInstance*&gt;(trans);
+00577 <span class="comment">// get a ptr on scene</span>
+00578 CScene *ownerScene= mi-&gt;getOwnerScene();
+00579 <span class="comment">// get a ptr on renderTrav</span>
+00580 CRenderTrav *renderTrav= &amp;ownerScene-&gt;getRenderTrav();
+00581
+00582
+00583 <span class="comment">// get the result of the Load Balancing.</span>
+00584 <span class="keywordtype">float</span> alphaMRM= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.getLevelDetailFromPolyCount(polygonCount);
+00585
+00586 <span class="comment">// choose the lod.</span>
+00587 <span class="keywordtype">float</span> alphaLod;
+00588 <a class="code" href="a04558.html#a14">sint</a> numLod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd5">chooseLod</a>(alphaMRM, alphaLod);
+00589
+00590
+00591 <span class="comment">// Render the choosen Lod.</span>
+00592 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[numLod];
+00593 <span class="keywordflow">if</span>(lod.RdrPass.size()==0)
+00594 <span class="keywordflow">return</span>;
+00595
+00596
+00597 <span class="comment">// get the skeleton model to which I am binded (else NULL).</span>
+00598 CSkeletonModel *skeleton;
+00599 skeleton = mi-&gt;getSkeletonModel();
+00600 <span class="comment">// The mesh must not be skinned for render()</span>
+00601 <a class="code" href="a04199.html#a6">nlassert</a>(!(mi-&gt;isSkinned() &amp;&amp; skeleton));
+00602
+00603
+00604 <span class="comment">// Profiling</span>
+00605 <span class="comment">//===========</span>
+00606 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_MeshMRMGeom_RenderNormal );
+00607
+00608 <span class="comment">// Skinning.</span>
+00609 <span class="comment">//===========</span>
+00610
+00611 <span class="comment">// set the instance worldmatrix.</span>
+00612 drv-&gt;setupModelMatrix(trans-&gt;getWorldMatrix());
+00613
+00614
+00615 <span class="comment">// Geomorph.</span>
+00616 <span class="comment">//===========</span>
+00617 <span class="comment">// Geomorph the choosen Lod (if not the coarser mesh).</span>
+00618 <span class="keywordflow">if</span>(numLod&gt;0)
+00619 {
+00620 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd0">applyGeomorph</a>(lod.Geomorphs, alphaLod);
+00621 }
+00622
+00623
+00624 <span class="comment">// force normalisation of normals..</span>
+00625 <span class="keywordtype">bool</span> bkupNorm= drv-&gt;isForceNormalize();
+00626 drv-&gt;forceNormalize(<span class="keyword">true</span>);
+00627
+00628
+00629 <span class="comment">// Setup meshVertexProgram</span>
+00630 <span class="comment">//===========</span>
+00631
+00632 <span class="comment">// Render the lod.</span>
+00633 <span class="comment">//===========</span>
+00634 <span class="comment">// active VB.</span>
+00635
+00636 <span class="comment">/* Hulud</span>
+00637 <span class="comment"> * This is slow but, we don't care because this method is called for debug purpose only (watch skin without skinning)</span>
+00638 <span class="comment"> */</span>
+00639 CVertexBuffer tmp;
+00640 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz505_8">getVertexBuffer</a> (tmp);
+00641
+00642 drv-&gt;activeVertexBuffer(tmp);
+00643
+00644
+00645 <span class="comment">// Global alpha used ?</span>
+00646 <a class="code" href="a04558.html#a11">uint32</a> globalAlphaUsed= rdrFlags &amp; IMeshGeom::RenderGlobalAlpha;
+00647 <a class="code" href="a04558.html#a7">uint8</a> globalAlphaInt=(<a class="code" href="a04558.html#a7">uint8</a>)<a class="code" href="a05378.html#a397">NLMISC::OptFastFloor</a>(globalAlpha*255);
+00648
+00649 <span class="comment">// Render all pass.</span>
+00650 <span class="keywordflow">if</span> (globalAlphaUsed)
+00651 {
+00652 <span class="keywordtype">bool</span> gaDisableZWrite= (rdrFlags &amp; IMeshGeom::RenderGADisableZWrite)?<span class="keyword">true</span>:<span class="keyword">false</span>;
+00653
+00654 <span class="comment">// for all passes</span>
+00655 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;lod.RdrPass.size();i++)
+00656 {
+00657 CRdrPass &amp;rdrPass= lod.RdrPass[i];
+00658
+00659 <span class="keywordflow">if</span> ( ( (mi-&gt;Materials[rdrPass.MaterialId].getBlend() == <span class="keyword">false</span>) &amp;&amp; (rdrFlags &amp; IMeshGeom::RenderOpaqueMaterial) ) ||
+00660 ( (mi-&gt;Materials[rdrPass.MaterialId].getBlend() == <span class="keyword">true</span>) &amp;&amp; (rdrFlags &amp; IMeshGeom::RenderTransparentMaterial) ) )
+00661 {
+00662 <span class="comment">// CMaterial Ref</span>
+00663 CMaterial &amp;material=mi-&gt;Materials[rdrPass.MaterialId];
+00664
+00665 <span class="comment">// Use a MeshBlender to modify material and driver.</span>
+00666 CMeshBlender blender;
+00667 blender.prepareRenderForGlobalAlpha(material, drv, globalAlpha, globalAlphaInt, gaDisableZWrite);
+00668
+00669 <span class="comment">/* Hulud</span>
+00670 <span class="comment"> * This is slow but, we don't care because this method is called for debug purpose only (watch skin without skinning)</span>
+00671 <span class="comment"> */</span>
+00672 CPrimitiveBlock block;
+00673 lod.getRdrPassPrimitiveBlock (i, block);
+00674
+00675 <span class="comment">// Render</span>
+00676 drv-&gt;render(block, material);
+00677
+00678 <span class="comment">// Resetup material/driver</span>
+00679 blender.restoreRender(material, drv, gaDisableZWrite);
+00680 }
+00681 }
+00682 }
+00683 <span class="keywordflow">else</span>
+00684 {
+00685 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;lod.RdrPass.size();i++)
+00686 {
+00687 CRdrPass &amp;rdrPass= lod.RdrPass[i];
+00688
+00689 <span class="keywordflow">if</span> ( ( (mi-&gt;Materials[rdrPass.MaterialId].getBlend() == <span class="keyword">false</span>) &amp;&amp; (rdrFlags &amp; IMeshGeom::RenderOpaqueMaterial) ) ||
+00690 ( (mi-&gt;Materials[rdrPass.MaterialId].getBlend() == <span class="keyword">true</span>) &amp;&amp; (rdrFlags &amp; IMeshGeom::RenderTransparentMaterial) ) )
+00691 {
+00692 <span class="comment">// CMaterial Ref</span>
+00693 CMaterial &amp;material=mi-&gt;Materials[rdrPass.MaterialId];
+00694
+00695 <span class="comment">/* Hulud</span>
+00696 <span class="comment"> * This is slow but, we don't care because this method is called for debug purpose only (watch skin without skinning)</span>
+00697 <span class="comment"> */</span>
+00698 CPrimitiveBlock block;
+00699 lod.getRdrPassPrimitiveBlock (i, block);
+00700
+00701 <span class="comment">// Render with the Materials of the MeshInstance.</span>
+00702 drv-&gt;render(block, material);
+00703 }
+00704 }
+00705 }
+00706
+00707 <span class="comment">// bkup force normalisation.</span>
+00708 drv-&gt;forceNormalize(bkupNorm);
+00709
+00710 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_5" doxytag="NL3D::CMeshMRMSkinnedGeom::renderPass" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::CMeshMRMSkinnedGeom::renderPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02887.html">CMeshGeomRenderContext</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrCtx</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>inst</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>polygonCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrPass</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The framework call this method to render the current renderPass, with the current instance NB: if the material is blended, DON'T render it!!
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_9">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00234">234</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00234 {};
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz513_1" doxytag="NL3D::CMeshMRMSkinnedGeom::renderShadowSkinGeom" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> NL3D::CMeshMRMSkinnedGeom::renderShadowSkinGeom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>remainingVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vbDest</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the num of shadow skin vertices.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01843">1843</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06011.html#l02283">applyArrayShadowSkin()</a>, <a class="el" href="a06569.html#l00205">NL3D::CTransform::getSkeletonModel()</a>, <a class="el" href="a05788.html#l00064">H_AUTO_USE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00255">NL3D::CMeshMRMSkinnedInstance::renderShadowSkinGeom()</a>.
+<p>
+<div class="fragment"><pre>01844 {
+01845 <a class="code" href="a04558.html#a15">uint</a> numVerts= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.size();
+01846
+01847 <span class="keywordflow">if</span>(numVerts==0)
+01848 <span class="keywordflow">return</span> 0;
+01849
+01850 <span class="comment">// If the Lod is too big to render in the VBufferHard</span>
+01851 <span class="keywordflow">if</span>(numVerts&gt;remainingVertices)
+01852 <span class="comment">// return Failure</span>
+01853 <span class="keywordflow">return</span> -1;
+01854
+01855 <span class="comment">// get the skeleton model to which I am skinned</span>
+01856 CSkeletonModel *skeleton;
+01857 skeleton = mi-&gt;getSkeletonModel();
+01858 <span class="comment">// must be skinned for renderSkin()</span>
+01859 <a class="code" href="a04199.html#a6">nlassert</a>(skeleton);
+01860
+01861
+01862 <span class="comment">// Profiling</span>
+01863 <span class="comment">//===========</span>
+01864 <a class="code" href="a04365.html#a7">H_AUTO_USE</a>( NL3D_MeshMRMGeom_RenderShadow );
+01865
+01866
+01867 <span class="comment">// Skinning.</span>
+01868 <span class="comment">//===========</span>
+01869
+01870 <span class="comment">// skinning with normal, but no tangent space</span>
+01871 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_0">applyArrayShadowSkin</a>(&amp;_ShadowSkinVertices[0], (CVector*)vbDest, skeleton, numVerts);
+01872
+01873
+01874 <span class="comment">// How many vertices are added to the VBuffer ???</span>
+01875 <span class="keywordflow">return</span> numVerts;
+01876 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz513_2" doxytag="NL3D::CMeshMRMSkinnedGeom::renderShadowSkinPrimitives" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::renderShadowSkinPrimitives </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02839.html">CMaterial</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>castMat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>baseVertex</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the num of shadow skin vertices.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01879">1879</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a05788.html#l00064">H_AUTO_USE</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera56">NL3D::IDriver::renderTriangles()</a>, <a class="el" href="a05646.html#l01124">src</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00265">NL3D::CMeshMRMSkinnedInstance::renderShadowSkinPrimitives()</a>.
+<p>
+<div class="fragment"><pre>01880 {
+01881 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+01882
+01883 <span class="keywordflow">if</span>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">_ShadowSkinTriangles</a>.empty())
+01884 <span class="keywordflow">return</span>;
+01885
+01886 <span class="comment">// Profiling</span>
+01887 <span class="comment">//===========</span>
+01888 <a class="code" href="a04365.html#a7">H_AUTO_USE</a>( NL3D_MeshMRMGeom_RenderShadow );
+01889
+01890 <span class="comment">// NB: the skeleton matrix has already been setuped by CSkeletonModel</span>
+01891 <span class="comment">// NB: the normalize flag has already been setuped by CSkeletonModel</span>
+01892
+01893 <span class="comment">// TODO_SHADOW: optim: Special triangle cache for shadow!</span>
+01894 <span class="keyword">static</span> vector&lt;uint32&gt; shiftedTris;
+01895 <span class="keywordflow">if</span>(shiftedTris.size()&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">_ShadowSkinTriangles</a>.size())
+01896 {
+01897 shiftedTris.resize(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">_ShadowSkinTriangles</a>.size());
+01898 }
+01899 <a class="code" href="a04558.html#a11">uint32</a> *<a class="code" href="a04223.html#a652">src</a>= &amp;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">_ShadowSkinTriangles</a>[0];
+01900 <a class="code" href="a04558.html#a11">uint32</a> *dst= &amp;shiftedTris[0];
+01901 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> n= _ShadowSkinTriangles.size();n&gt;0;n--, <a class="code" href="a04223.html#a652">src</a>++, dst++)
+01902 {
+01903 *dst= *<a class="code" href="a04223.html#a652">src</a> + baseVertex;
+01904 }
+01905
+01906 <span class="comment">// Render Triangles with cache</span>
+01907 <span class="comment">//===========</span>
+01908
+01909 <a class="code" href="a04558.html#a15">uint</a> numTris= _ShadowSkinTriangles.size()/3;
+01910
+01911 <span class="comment">// This speed up 4 ms for 80K polys.</span>
+01912 <a class="code" href="a04558.html#a15">uint</a> memToCache= numTris*12;
+01913 memToCache= <a class="code" href="a04061.html#a0">min</a>(memToCache, 4096U);
+01914 CFastMem::precache(&amp;shiftedTris[0], memToCache);
+01915
+01916 <span class="comment">// Render with the Materials of the MeshInstance.</span>
+01917 drv-&gt;renderTriangles(castMat, &amp;shiftedTris[0], numTris);
+01918 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_6" doxytag="NL3D::CMeshMRMSkinnedGeom::renderSkin" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::renderSkin </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02537.html">CTransformShape</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>trans</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaMRM</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz503_5">render()</a> this mesh as a skin
+<p>
+
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeoma7">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l00714">714</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00159">NL3D::CMeshMRMSkinnedInstance::renderSkin()</a>.
+<p>
+<div class="fragment"><pre>00715 {
+00716 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz511_0" doxytag="NL3D::CMeshMRMSkinnedGeom::renderSkinGroupGeom" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> NL3D::CMeshMRMSkinnedGeom::renderSkinGroupGeom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>alphaMRM</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>remainingVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vbDest</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00726">726</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06014.html#l00127">NL3D::CMeshMRMSkinnedInstance::_RawSkinCache</a>, <a class="el" href="a06011.html#l03320">applyRawSkinWithNormal()</a>, <a class="el" href="a06011.html#l00547">chooseLod()</a>, <a class="el" href="a06316.html#l00111">NL3D::CRawSkinnedNormalCache::Geomorphs</a>, <a class="el" href="a06330.html#l00133">NL3D::CRenderTrav::getDriver()</a>, <a class="el" href="a06569.html#l00105">NL3D::CTransform::getOwnerScene()</a>, <a class="el" href="a06349.html#l00479">NL3D::CScene::getRenderTrav()</a>, <a class="el" href="a06569.html#l00205">NL3D::CTransform::getSkeletonModel()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06569.html#l00423">NL3D::CTransform::isSkinned()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06012.html#l00351">NL3D::CMeshMRMSkinnedGeom::CLod::NWedges</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06316.html#l00108">NL3D::CRawSkinnedNormalCache::TotalHardVertices</a>, <a class="el" href="a06316.html#l00107">NL3D::CRawSkinnedNormalCache::TotalSoftVertices</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00096">uint8</a>, and <a class="el" href="a06011.html#l01568">updateRawSkinNormal()</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00199">NL3D::CMeshMRMSkinnedInstance::renderSkinGroupGeom()</a>.
+<p>
+<div class="fragment"><pre>00727 {
+00728 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_MeshMRMGeom_rdrSkinGrpGeom )
+00729
+00730 <span class="comment">// get a ptr on scene</span>
+00731 CScene *ownerScene= mi-&gt;getOwnerScene();
+00732 <span class="comment">// get a ptr on renderTrav</span>
+00733 CRenderTrav *renderTrav= &amp;ownerScene-&gt;getRenderTrav();
+00734 <span class="comment">// get a ptr on the driver</span>
+00735 IDriver *drv= renderTrav-&gt;getDriver();
+00736 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+00737
+00738
+00739 <span class="comment">// choose the lod.</span>
+00740 <span class="keywordtype">float</span> alphaLod;
+00741 <a class="code" href="a04558.html#a14">sint</a> numLod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd5">chooseLod</a>(alphaMRM, alphaLod);
+00742 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr7">_LastLodComputed</a>= numLod;
+00743
+00744
+00745 <span class="comment">// Render the choosen Lod.</span>
+00746 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[numLod];
+00747 <span class="keywordflow">if</span>(lod.RdrPass.size()==0)
+00748 <span class="comment">// return no vertices added</span>
+00749 <span class="keywordflow">return</span> 0;
+00750
+00751 <span class="comment">// If the Lod is too big to render in the VBufferHard</span>
+00752 <span class="keywordflow">if</span>(lod.NWedges&gt;remainingVertices)
+00753 <span class="comment">// return Failure</span>
+00754 <span class="keywordflow">return</span> -1;
+00755
+00756 <span class="comment">// get the skeleton model to which I am skinned</span>
+00757 CSkeletonModel *skeleton;
+00758 skeleton = mi-&gt;getSkeletonModel();
+00759 <span class="comment">// must be skinned for renderSkin()</span>
+00760 <a class="code" href="a04199.html#a6">nlassert</a>(mi-&gt;isSkinned() &amp;&amp; skeleton);
+00761
+00762
+00763 <span class="comment">// Profiling</span>
+00764 <span class="comment">//===========</span>
+00765 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_MeshMRMGeom_rdrSkinGrpGeom_go );
+00766
+00767
+00768 <span class="comment">// Skinning.</span>
+00769 <span class="comment">//===========</span>
+00770
+00771 <span class="comment">// Use RawSkin if possible: only if no morph, and only Vertex/Normal</span>
+00772 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_10">updateRawSkinNormal</a>(<span class="keyword">true</span>, mi, numLod);
+00773
+00774 <span class="comment">// NB: the skeleton matrix has already been setuped by CSkeletonModel</span>
+00775 <span class="comment">// NB: the normalize flag has already been setuped by CSkeletonModel</span>
+00776
+00777 <span class="comment">// applySkin with RawSkin.</span>
+00778 <span class="comment">//--------</span>
+00779 <a class="code" href="a04199.html#a6">nlassert</a>(mi-&gt;_RawSkinCache);
+00780
+00781 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_RawSkinning );
+00782
+00783 <span class="comment">// RawSkin do all the job in optimized way: Skinning, copy to VBHard and Geomorph.</span>
+00784
+00785 <span class="comment">// skinning with normal, but no tangent space</span>
+00786 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd4">applyRawSkinWithNormal</a> (lod, *(mi-&gt;_RawSkinCache), skeleton, vbDest, alphaLod);
+00787
+00788 <span class="comment">// Vertices are packed in RawSkin mode (ie no holes due to MRM!)</span>
+00789 <span class="keywordflow">return</span> mi-&gt;_RawSkinCache-&gt;Geomorphs.size() +
+00790 mi-&gt;_RawSkinCache-&gt;TotalSoftVertices +
+00791 mi-&gt;_RawSkinCache-&gt;TotalHardVertices;
+00792 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz511_1" doxytag="NL3D::CMeshMRMSkinnedGeom::renderSkinGroupPrimitives" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::renderSkinGroupPrimitives </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>baseVertex</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03407.html">CSkinSpecularRdrPass</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>specularRdrPasses</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>skinIndex</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00795">795</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06014.html#l00132">NL3D::CMeshMRMSkinnedInstance::_ShiftedTriangleCache</a>, <a class="el" href="a06330.html#l00133">NL3D::CRenderTrav::getDriver()</a>, <a class="el" href="a06569.html#l00105">NL3D::CTransform::getOwnerScene()</a>, <a class="el" href="a06349.html#l00479">NL3D::CScene::getRenderTrav()</a>, <a class="el" href="a05969.html#l00254">NL3D::CMaterial::getShader()</a>, <a class="el" href="a05641.html#l00046">NL3D::CMaterial::getTexture()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera32">NL3D::IDriver::getTextureHandle()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06012.html#l00309">NL3D::CMeshMRMSkinnedGeom::CRdrPass::MaterialId</a>, <a class="el" href="a05994.html#l00075">NL3D::CMeshBaseInstance::Materials</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06387.html#l00052">NL3D::CShiftedTriangleCache::CRdrPass::NumTriangles</a>, <a class="el" href="a06387.html#l00059">NL3D::CShiftedTriangleCache::RdrPass</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a06394.html#l00063">NL3D::CSkinSpecularRdrPass::RdrPassIndex</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera56">NL3D::IDriver::renderTriangles()</a>, <a class="el" href="a06394.html#l00061">NL3D::CSkinSpecularRdrPass::SkinIndex</a>, <a class="el" href="a06394.html#l00065">NL3D::CSkinSpecularRdrPass::SpecId</a>, <a class="el" href="a06387.html#l00051">NL3D::CShiftedTriangleCache::CRdrPass::Triangles</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a06011.html#l00918">updateShiftedTriangleCache()</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00208">NL3D::CMeshMRMSkinnedInstance::renderSkinGroupPrimitives()</a>.
+<p>
+<div class="fragment"><pre>00796 {
+00797 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_MeshMRMGeom_rdrSkinGrpPrimitives );
+00798
+00799 <span class="comment">// get a ptr on scene</span>
+00800 CScene *ownerScene= mi-&gt;getOwnerScene();
+00801 <span class="comment">// get a ptr on renderTrav</span>
+00802 CRenderTrav *renderTrav= &amp;ownerScene-&gt;getRenderTrav();
+00803 <span class="comment">// get a ptr on the driver</span>
+00804 IDriver *drv= renderTrav-&gt;getDriver();
+00805 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+00806
+00807 <span class="comment">// Get the lod choosen in renderSkinGroupGeom()</span>
+00808 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr7">_LastLodComputed</a>];
+00809
+00810
+00811 <span class="comment">// must update primitive cache</span>
+00812 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd7">updateShiftedTriangleCache</a>(mi, _LastLodComputed, baseVertex);
+00813 <a class="code" href="a04199.html#a6">nlassert</a>(mi-&gt;_ShiftedTriangleCache);
+00814
+00815
+00816 <span class="comment">// Render Triangles with cache</span>
+00817 <span class="comment">//===========</span>
+00818 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;lod.RdrPass.size();i++)
+00819 {
+00820 CRdrPass &amp;rdrPass= lod.RdrPass[i];
+00821
+00822 <span class="comment">// CMaterial Ref</span>
+00823 CMaterial &amp;material=mi-&gt;Materials[rdrPass.MaterialId];
+00824
+00825 <span class="comment">// TestYoyo. Material Speed Test</span>
+00826 <span class="comment">/*if( material.getDiffuse()!=CRGBA(250, 251, 252) )</span>
+00827 <span class="comment"> {</span>
+00828 <span class="comment"> material.setDiffuse(CRGBA(250, 251, 252));</span>
+00829 <span class="comment"> // Set all texture the same.</span>
+00830 <span class="comment"> static CSmartPtr&lt;ITexture&gt; pTexFile= new CTextureFile("fy_hom_visage_c1_fy_e1.tga");</span>
+00831 <span class="comment"> material.setTexture(0, pTexFile );</span>
+00832 <span class="comment"> // Remove Specular.</span>
+00833 <span class="comment"> if(material.getShader()==CMaterial::Specular)</span>
+00834 <span class="comment"> {</span>
+00835 <span class="comment"> CSmartPtr&lt;ITexture&gt; tex= material.getTexture(0);</span>
+00836 <span class="comment"> material.setShader(CMaterial::Normal);</span>
+00837 <span class="comment"> material.setTexture(0, tex );</span>
+00838 <span class="comment"> }</span>
+00839 <span class="comment"> // Remove MakeUp</span>
+00840 <span class="comment"> material.setTexture(1, NULL);</span>
+00841 <span class="comment"> }*/</span>
+00842
+00843 <span class="comment">// If the material is a specular material, don't render it now!</span>
+00844 <span class="keywordflow">if</span>(material.getShader()==CMaterial::Specular)
+00845 {
+00846 <span class="comment">// Add it to the rdrPass to sort!</span>
+00847 CSkinSpecularRdrPass specRdrPass;
+00848 specRdrPass.SkinIndex= skinIndex;
+00849 specRdrPass.RdrPassIndex= i;
+00850 <span class="comment">// Get the handle of the specular Map as the sort Key</span>
+00851 ITexture *specTex= material.getTexture(1);
+00852 <span class="keywordflow">if</span>(!specTex)
+00853 specRdrPass.SpecId= 0;
+00854 <span class="keywordflow">else</span>
+00855 specRdrPass.SpecId= drv-&gt;getTextureHandle( *specTex );
+00856 <span class="comment">// Append it to the list</span>
+00857 specularRdrPasses.push_back(specRdrPass);
+00858 }
+00859 <span class="keywordflow">else</span>
+00860 {
+00861 <span class="comment">// Get the shifted triangles.</span>
+00862 CShiftedTriangleCache::CRdrPass &amp;shiftedRdrPass= mi-&gt;_ShiftedTriangleCache-&gt;RdrPass[i];
+00863
+00864 <span class="comment">// This speed up 4 ms for 80K polys.</span>
+00865 <a class="code" href="a04558.html#a15">uint</a> memToCache= shiftedRdrPass.NumTriangles*12;
+00866 memToCache= <a class="code" href="a04061.html#a0">min</a>(memToCache, 4096U);
+00867 CFastMem::precache(shiftedRdrPass.Triangles, memToCache);
+00868
+00869 <span class="comment">// Render with the Materials of the MeshInstance.</span>
+00870 drv-&gt;renderTriangles(material, shiftedRdrPass.Triangles, shiftedRdrPass.NumTriangles);
+00871 }
+00872 }
+00873 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz511_2" doxytag="NL3D::CMeshMRMSkinnedGeom::renderSkinGroupSpecularRdrPass" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::renderSkinGroupSpecularRdrPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rdrPassId</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00877">877</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06014.html#l00132">NL3D::CMeshMRMSkinnedInstance::_ShiftedTriangleCache</a>, <a class="el" href="a06330.html#l00133">NL3D::CRenderTrav::getDriver()</a>, <a class="el" href="a06569.html#l00105">NL3D::CTransform::getOwnerScene()</a>, <a class="el" href="a06349.html#l00479">NL3D::CScene::getRenderTrav()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06012.html#l00309">NL3D::CMeshMRMSkinnedGeom::CRdrPass::MaterialId</a>, <a class="el" href="a05994.html#l00075">NL3D::CMeshBaseInstance::Materials</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06387.html#l00052">NL3D::CShiftedTriangleCache::CRdrPass::NumTriangles</a>, <a class="el" href="a06387.html#l00059">NL3D::CShiftedTriangleCache::RdrPass</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera56">NL3D::IDriver::renderTriangles()</a>, <a class="el" href="a06387.html#l00051">NL3D::CShiftedTriangleCache::CRdrPass::Triangles</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00217">NL3D::CMeshMRMSkinnedInstance::renderSkinGroupSpecularRdrPass()</a>.
+<p>
+<div class="fragment"><pre>00878 {
+00879 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_MeshMRMGeom_rdrSkinGrpSpecularRdrPass );
+00880
+00881 <span class="comment">// get a ptr on scene</span>
+00882 CScene *ownerScene= mi-&gt;getOwnerScene();
+00883 <span class="comment">// get a ptr on renderTrav</span>
+00884 CRenderTrav *renderTrav= &amp;ownerScene-&gt;getRenderTrav();
+00885 <span class="comment">// get a ptr on the driver</span>
+00886 IDriver *drv= renderTrav-&gt;getDriver();
+00887 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+00888
+00889 <span class="comment">// Get the lod choosen in renderSkinGroupGeom()</span>
+00890 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr7">_LastLodComputed</a>];
+00891
+00892
+00893 <span class="comment">// _ShiftedTriangleCache must have been computed in renderSkinGroupPrimitives</span>
+00894 <a class="code" href="a04199.html#a6">nlassert</a>(mi-&gt;_ShiftedTriangleCache);
+00895
+00896
+00897 <span class="comment">// Render Triangles with cache</span>
+00898 <span class="comment">//===========</span>
+00899 CRdrPass &amp;rdrPass= lod.RdrPass[rdrPassId];
+00900
+00901 <span class="comment">// CMaterial Ref</span>
+00902 CMaterial &amp;material=mi-&gt;Materials[rdrPass.MaterialId];
+00903
+00904 <span class="comment">// Get the shifted triangles.</span>
+00905 CShiftedTriangleCache::CRdrPass &amp;shiftedRdrPass= mi-&gt;_ShiftedTriangleCache-&gt;RdrPass[rdrPassId];
+00906
+00907 <span class="comment">// This speed up 4 ms for 80K polys.</span>
+00908 <a class="code" href="a04558.html#a15">uint</a> memToCache= shiftedRdrPass.NumTriangles*12;
+00909 memToCache= <a class="code" href="a04061.html#a0">min</a>(memToCache, 4096U);
+00910 CFastMem::precache(shiftedRdrPass.Triangles, memToCache);
+00911
+00912 <span class="comment">// Render with the Materials of the MeshInstance.</span>
+00913 drv-&gt;renderTriangles(material, shiftedRdrPass.Triangles, shiftedRdrPass.NumTriangles);
+00914 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz503_7" doxytag="NL3D::CMeshMRMSkinnedGeom::serial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::serial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02270.html">NLMISC::IStream</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+serial this meshGeom.
+<p>
+
+<p>
+Implements <a class="el" href="a02867.html#NL3D_1_1ITrackDefaulta6">NLMISC::IStreamable</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l00991">991</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06011.html#l01273">compileRunTime()</a>, <a class="el" href="a06012.html#l00481">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::contReset()</a>, <a class="el" href="a06011.html#l01560">dirtMeshDataId()</a>, <a class="el" href="a06060.html#l00065">NL3D::CMRMLevelDetail::DistanceCoarsest</a>, <a class="el" href="a06060.html#l00061">NL3D::CMRMLevelDetail::DistanceFinest</a>, <a class="el" href="a06060.html#l00063">NL3D::CMRMLevelDetail::DistanceMiddle</a>, <a class="el" href="a06060.html#l00069">NL3D::CMRMLevelDetail::DistancePow</a>, <a class="el" href="a06463.html#l00064">NLMISC::IStream::isReading()</a>, <a class="el" href="a06060.html#l00058">NL3D::CMRMLevelDetail::MaxFaceUsed</a>, <a class="el" href="a06060.html#l00056">NL3D::CMRMLevelDetail::MinFaceUsed</a>, <a class="el" href="a06060.html#l00068">NL3D::CMRMLevelDetail::OODistanceDelta</a>, <a class="el" href="a06011.html#l01926">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::serial()</a>, <a class="el" href="a06462.html#l00232">NLMISC::IStream::serial()</a>, <a class="el" href="a06462.html#l00324">NLMISC::IStream::serialCont()</a>, <a class="el" href="a06461.html#l00266">NLMISC::IStream::serialVersion()</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01482">NL3D::CMeshMRMSkinned::serial()</a>.
+<p>
+<div class="fragment"><pre>00992 {
+00993 <span class="comment">// because of complexity, serial is separated in save / load.</span>
+00994
+00995 <span class="comment">/*</span>
+00996 <span class="comment"> Version 0:</span>
+00997 <span class="comment"> - base version.</span>
+00998 <span class="comment"> */</span>
+00999 <a class="code" href="a04558.html#a14">sint</a> ver= f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2035_8">serialVersion</a>(0);
+01000
+01001
+01002 <span class="comment">// serial bones names</span>
+01003 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a> (_BonesName);
+01004
+01005 <span class="keywordflow">if</span> (f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>())
+01006 {
+01007 <span class="comment">// Bones index are in skeleton model id list</span>
+01008 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr1">_BoneIdComputed</a> = <span class="keyword">false</span>;
+01009
+01010 <span class="comment">// Must always recompute usage of parents of bones used.</span>
+01011 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr2">_BoneIdExtended</a> = <span class="keyword">false</span>;
+01012 }
+01013
+01014 <span class="comment">// serial Basic info.</span>
+01015 <span class="comment">// ==================</span>
+01016 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_BBox);
+01017 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.MaxFaceUsed);
+01018 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.MinFaceUsed);
+01019 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceFinest);
+01020 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceMiddle);
+01021 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistanceCoarsest);
+01022 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.OODistanceDelta);
+01023 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">_LevelDetail</a>.DistancePow);
+01024
+01025 <span class="comment">// Prepare the VBuffer.</span>
+01026 <span class="keywordflow">if</span> (f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>())
+01027 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera2">contReset</a>();
+01028 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera7">serial</a>(f);
+01029
+01030 <span class="comment">// serial Shadow Skin Information</span>
+01031 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a> (_ShadowSkinVertices);
+01032 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a> (_ShadowSkinTriangles);
+01033
+01034 <span class="comment">// resest the Lod arrays. NB: each Lod is empty, and ready to receive Lod data.</span>
+01035 <span class="comment">// ==================</span>
+01036 <span class="keywordflow">if</span> (f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>())
+01037 {
+01038 <a class="code" href="a05378.html#a381">contReset</a>(_Lods);
+01039 }
+01040
+01041 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a> (_Lods);
+01042
+01043 <span class="keywordflow">if</span> (f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>())
+01044 {
+01045 <span class="comment">// Inform that the mesh data has changed</span>
+01046 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_9">dirtMeshDataId</a>();
+01047
+01048 <span class="comment">// Some runtime not serialized compilation</span>
+01049 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomd6">compileRunTime</a>();
+01050 }
+01051 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz513_3" doxytag="NL3D::CMeshMRMSkinnedGeom::setShadowMesh" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::setShadowMesh </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::vector&lt; <a class="el" href="a02907.html">CShadowVertex</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>shadowVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const std::vector&lt; <a class="el" href="a04558.html#a11">uint32</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>triangles</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup the ShadowMesh.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01826">1826</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06330.html#l00076">NL3D_SHADOW_MESH_SKIN_MANAGER_MAXVERTICES</a>, and <a class="el" href="a06330.html#l00075">NL3D_SHADOW_MESH_SKIN_MANAGER_VERTEXFORMAT</a>.
+<p>
+<div class="fragment"><pre>01827 {
+01828 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>= shadowVertices;
+01829 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">_ShadowSkinTriangles</a>= triangles;
+01830 <span class="comment">// update flag. Support Shadow SkinGrouping if Shadow setuped, and if not too many vertices.</span>
+01831 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_3">_SupportShadowSkinGrouping</a>= !<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.empty() &amp;&amp;
+01832 <a class="code" href="a04907.html#a3">NL3D_SHADOW_MESH_SKIN_MANAGER_VERTEXFORMAT</a>==CVertexBuffer::PositionFlag &amp;&amp;
+01833 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">_ShadowSkinVertices</a>.size() &lt;= <a class="code" href="a04907.html#a4">NL3D_SHADOW_MESH_SKIN_MANAGER_MAXVERTICES</a>;
+01834 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_6" doxytag="NL3D::CMeshMRMSkinnedGeom::sortPerMaterial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::CMeshMRMSkinnedGeom::sortPerMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+true if the sort criterion must be by material. Else, sort per instance.
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_10">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06012.html#l00229">229</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+<div class="fragment"><pre>00229 { <span class="keywordflow">return</span> <span class="keyword">false</span>; };
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz509_7" doxytag="NL3D::CMeshMRMSkinnedGeom::supportMeshBlockRendering" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CMeshMRMSkinnedGeom::supportMeshBlockRendering </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+true if this meshGeom support meshBlock rendering. return false if skinned/meshMorphed.
+<p>
+Implements <a class="el" href="a02879.html#NL3D_1_1IMeshGeomz457_11">NL3D::IMeshGeom</a>.
+<p>
+Definition at line <a class="el" href="a06011.html#l01339">1339</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+<div class="fragment"><pre>01340 {
+01341 <span class="comment">/*</span>
+01342 <span class="comment"> Yoyo: Don't Support It for MRM because too Slow!!</span>
+01343 <span class="comment"> The problem is that lock() unlock() on each instance, on the same VBHeap IS AS SLOWER AS</span>
+01344 <span class="comment"> VB switching.</span>
+01345 <span class="comment"></span>
+01346 <span class="comment"> TODO_OPTIMIZE: find a way to optimize MRM.</span>
+01347 <span class="comment"> */</span>
+01348 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+01349 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz513_4" doxytag="NL3D::CMeshMRMSkinnedGeom::supportShadowSkinGrouping" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CMeshMRMSkinnedGeom::supportShadowSkinGrouping </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Render the ShadowSkin (SkinGroup like).
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00291">291</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00243">NL3D::CMeshMRMSkinnedInstance::supportShadowSkinGrouping()</a>.
+<p>
+<div class="fragment"><pre>00291 {<span class="keywordflow">return</span> <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_3">_SupportShadowSkinGrouping</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz511_3" doxytag="NL3D::CMeshMRMSkinnedGeom::supportSkinGrouping" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CMeshMRMSkinnedGeom::supportSkinGrouping </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00720">720</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06013.html#l00188">NL3D::CMeshMRMSkinnedInstance::supportSkinGrouping()</a>.
+<p>
+<div class="fragment"><pre>00721 {
+00722 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00723 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_10" doxytag="NL3D::CMeshMRMSkinnedGeom::updateRawSkinNormal" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::updateRawSkinNormal </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>enabled</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>curLodId</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+compute RawSkin info in the MRMInstance according to current skin setup.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01568">1568</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06014.html#l00127">NL3D::CMeshMRMSkinnedInstance::_RawSkinCache</a>, <a class="el" href="a06315.html#l00037">NL3D::CRawSkinnedNormalCache::clearArrays()</a>, <a class="el" href="a06013.html#l00069">NL3D::CMeshMRMSkinnedInstance::clearRawSkinCache()</a>, <a class="el" href="a06316.html#l00111">NL3D::CRawSkinnedNormalCache::Geomorphs</a>, <a class="el" href="a06012.html#l00353">NL3D::CMeshMRMSkinnedGeom::CLod::Geomorphs</a>, <a class="el" href="a06012.html#l00442">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getNormal()</a>, <a class="el" href="a06012.html#l00505">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getNumVertices()</a>, <a class="el" href="a06012.html#l00487">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPackedVertices()</a>, <a class="el" href="a06012.html#l00511">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::getPos()</a>, <a class="el" href="a06012.html#l00448">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getU()</a>, <a class="el" href="a06012.html#l00452">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getV()</a>, <a class="el" href="a06012.html#l00456">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::getWeight()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06316.html#l00105">NL3D::CRawSkinnedNormalCache::HardVertices</a>, <a class="el" href="a06012.html#l00360">NL3D::CMeshMRMSkinnedGeom::CLod::InfluencedVertices</a>, <a class="el" href="a06316.html#l00116">NL3D::CRawSkinnedNormalCache::LodId</a>, <a class="el" href="a06012.html#l00432">NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::Matrices</a>, <a class="el" href="a06316.html#l00118">NL3D::CRawSkinnedNormalCache::MeshDataId</a>, <a class="el" href="a05990.html#l00063">NL3D_MESH_SKINNING_MAX_MATRIX</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06012.html#l00355">NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass</a>, <a class="el" href="a06316.html#l00113">NL3D::CRawSkinnedNormalCache::RdrPass</a>, <a class="el" href="a06116.html#l00142">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned4, false &gt;::resize()</a>, <a class="el" href="a06116.html#l00142">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned3, false &gt;::resize()</a>, <a class="el" href="a06116.html#l00142">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned2, false &gt;::resize()</a>, <a class="el" href="a06116.html#l00142">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned1, false &gt;::resize()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06116.html#l00184">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned4, false &gt;::size()</a>, <a class="el" href="a06116.html#l00184">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned3, false &gt;::size()</a>, <a class="el" href="a06116.html#l00184">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned2, false &gt;::size()</a>, <a class="el" href="a06116.html#l00184">NLMISC::CObjectVector&lt; CRawVertexNormalSkinned1, false &gt;::size()</a>, <a class="el" href="a06316.html#l00104">NL3D::CRawSkinnedNormalCache::SoftVertices</a>, <a class="el" href="a06316.html#l00108">NL3D::CRawSkinnedNormalCache::TotalHardVertices</a>, <a class="el" href="a06316.html#l00107">NL3D::CRawSkinnedNormalCache::TotalSoftVertices</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a06316.html#l00095">NL3D::CRawSkinnedNormalCache::Vertices1</a>, <a class="el" href="a06316.html#l00097">NL3D::CRawSkinnedNormalCache::Vertices2</a>, <a class="el" href="a06316.html#l00099">NL3D::CRawSkinnedNormalCache::Vertices3</a>, and <a class="el" href="a06316.html#l00101">NL3D::CRawSkinnedNormalCache::Vertices4</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00726">renderSkinGroupGeom()</a>.
+<p>
+<div class="fragment"><pre>01569 {
+01570 <span class="keywordflow">if</span>(!enabled)
+01571 {
+01572 <span class="comment">// if the instance cache is not cleared, must clear.</span>
+01573 mi-&gt;clearRawSkinCache();
+01574 }
+01575 <span class="keywordflow">else</span>
+01576 {
+01577 <span class="comment">// If the instance has no RawSkin, or has a too old RawSkin cache, must delete it, and recreate</span>
+01578 <span class="keywordflow">if</span> ((mi-&gt;_RawSkinCache == NULL) || (mi-&gt;_RawSkinCache-&gt;MeshDataId!=<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a>))
+01579 {
+01580 <span class="comment">// first delete if too old.</span>
+01581 mi-&gt;clearRawSkinCache();
+01582
+01583 <span class="comment">// Then recreate, and use _MeshDataId to verify that the instance works with same data.</span>
+01584 mi-&gt;_RawSkinCache= <span class="keyword">new</span> CRawSkinnedNormalCache;
+01585 mi-&gt;_RawSkinCache-&gt;MeshDataId= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a>;
+01586 mi-&gt;_RawSkinCache-&gt;LodId= -1;
+01587 }
+01588
+01589
+01590 <span class="comment">/* If the instance rawSkin has a different Lod (or if -1), then must recreate it.</span>
+01591 <span class="comment"> NB: The lod may change each frame per instance, but suppose not so many change, so we can cache those data.</span>
+01592 <span class="comment"> */</span>
+01593 <span class="keywordflow">if</span>( mi-&gt;_RawSkinCache-&gt;LodId != curLodId )
+01594 {
+01595 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_CMeshMRMGeom_updateRawSkinNormal );
+01596
+01597 CRawSkinnedNormalCache &amp;skinLod= *mi-&gt;_RawSkinCache;
+01598 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz515_0">CLod</a> &amp;lod= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">_Lods</a>[curLodId];
+01599 <a class="code" href="a04558.html#a15">uint</a> i;
+01600 <a class="code" href="a04558.html#a14">sint</a> rawIdx;
+01601
+01602 <span class="comment">// Clear the raw skin mesh.</span>
+01603 skinLod.clearArrays();
+01604
+01605 <span class="comment">// Cache this lod</span>
+01606 mi-&gt;_RawSkinCache-&gt;LodId= curLodId;
+01607
+01608 <span class="comment">// For each matrix influence.</span>
+01609 <a class="code" href="a04199.html#a6">nlassert</a>(NL3D_MESH_SKINNING_MAX_MATRIX==4);
+01610
+01611 <span class="comment">// For each vertex, acknowledge if it is a src for geomorph.</span>
+01612 <span class="keyword">static</span> vector&lt;uint8&gt; softVertices;
+01613 softVertices.clear();
+01614 softVertices.resize( <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>(), 0 );
+01615 <span class="keywordflow">for</span>(i=0;i&lt;lod.Geomorphs.size();i++)
+01616 {
+01617 softVertices[lod.Geomorphs[i].Start]= 1;
+01618 softVertices[lod.Geomorphs[i].End]= 1;
+01619 }
+01620
+01621 <span class="comment">// The remap from old index in _VBufferFinal to RawSkin vertices (without Geomorphs).</span>
+01622 <span class="keyword">static</span> vector&lt;uint32&gt; vertexRemap;
+01623 vertexRemap.resize( <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera3">getNumVertices</a>() );
+01624 <a class="code" href="a04558.html#a14">sint</a> softSize[4];
+01625 <a class="code" href="a04558.html#a14">sint</a> hardSize[4];
+01626 <a class="code" href="a04558.html#a14">sint</a> softStart[4];
+01627 <a class="code" href="a04558.html#a14">sint</a> hardStart[4];
+01628 <span class="comment">// count vertices</span>
+01629 skinLod.TotalSoftVertices= 0;
+01630 skinLod.TotalHardVertices= 0;
+01631 <span class="keywordflow">for</span>(i=0;i&lt;4;i++)
+01632 {
+01633 softSize[i]= 0;
+01634 hardSize[i]= 0;
+01635 <span class="comment">// Count.</span>
+01636 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> j=0;j&lt;lod.InfluencedVertices[i].size();j++)
+01637 {
+01638 <a class="code" href="a04558.html#a15">uint</a> vid= lod.InfluencedVertices[i][j];
+01639 <span class="keywordflow">if</span>(softVertices[vid])
+01640 softSize[i]++;
+01641 <span class="keywordflow">else</span>
+01642 hardSize[i]++;
+01643 }
+01644 skinLod.TotalSoftVertices+= softSize[i];
+01645 skinLod.TotalHardVertices+= hardSize[i];
+01646 skinLod.SoftVertices[i]= softSize[i];
+01647 skinLod.HardVertices[i]= hardSize[i];
+01648 }
+01649 <span class="comment">// compute offsets</span>
+01650 softStart[0]= 0;
+01651 hardStart[0]= skinLod.TotalSoftVertices;
+01652 <span class="keywordflow">for</span>(i=1;i&lt;4;i++)
+01653 {
+01654 softStart[i]= softStart[i-1]+softSize[i-1];
+01655 hardStart[i]= hardStart[i-1]+hardSize[i-1];
+01656 }
+01657 <span class="comment">// compute remap</span>
+01658 <span class="keywordflow">for</span>(i=0;i&lt;4;i++)
+01659 {
+01660 <a class="code" href="a04558.html#a15">uint</a> softIdx= softStart[i];
+01661 <a class="code" href="a04558.html#a15">uint</a> hardIdx= hardStart[i];
+01662 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> j=0;j&lt;lod.InfluencedVertices[i].size();j++)
+01663 {
+01664 <a class="code" href="a04558.html#a15">uint</a> vid= lod.InfluencedVertices[i][j];
+01665 <span class="keywordflow">if</span>(softVertices[vid])
+01666 vertexRemap[vid]= softIdx++;
+01667 <span class="keywordflow">else</span>
+01668 vertexRemap[vid]= hardIdx++;
+01669 }
+01670 }
+01671
+01672
+01673 <span class="comment">// Resize the dest array.</span>
+01674 skinLod.Vertices1.resize(lod.InfluencedVertices[0].size());
+01675 skinLod.Vertices2.resize(lod.InfluencedVertices[1].size());
+01676 skinLod.Vertices3.resize(lod.InfluencedVertices[2].size());
+01677 skinLod.Vertices4.resize(lod.InfluencedVertices[3].size());
+01678
+01679 <span class="comment">// Vertex buffer pointers</span>
+01680 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex *vertices = <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera5">getPackedVertices</a>();
+01681
+01682 <span class="comment">// 1 Matrix skinning.</span>
+01683 <span class="comment">//========</span>
+01684 <span class="keywordflow">for</span>(i=0;i&lt;skinLod.Vertices1.size();i++)
+01685 {
+01686 <span class="comment">// get the dest vertex.</span>
+01687 <a class="code" href="a04558.html#a15">uint</a> vid= lod.InfluencedVertices[0][i];
+01688 <span class="comment">// where to store?</span>
+01689 rawIdx= vertexRemap[vid];
+01690 <span class="keywordflow">if</span>(softVertices[vid])
+01691 rawIdx-= softStart[0];
+01692 <span class="keywordflow">else</span>
+01693 rawIdx+= softSize[0]-hardStart[0];
+01694
+01695 <span class="comment">// fill raw struct</span>
+01696 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex &amp;vertex = vertices[vid];
+01697 skinLod.Vertices1[rawIdx].MatrixId[0]= vertex.Matrices[0];
+01698 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera6">getPos</a> (skinLod.Vertices1[rawIdx].Vertex, vertex);
+01699 vertex.getNormal (skinLod.Vertices1[rawIdx].Normal);
+01700 vertex.getU (skinLod.Vertices1[rawIdx].UV.U);
+01701 vertex.getV (skinLod.Vertices1[rawIdx].UV.V);
+01702 }
+01703
+01704 <span class="comment">// 2 Matrix skinning.</span>
+01705 <span class="comment">//========</span>
+01706 <span class="keywordflow">for</span>(i=0;i&lt;skinLod.Vertices2.size();i++)
+01707 {
+01708 <span class="comment">// get the dest vertex.</span>
+01709 <a class="code" href="a04558.html#a15">uint</a> vid= lod.InfluencedVertices[1][i];
+01710 <span class="comment">// where to store?</span>
+01711 rawIdx= vertexRemap[vid];
+01712 <span class="keywordflow">if</span>(softVertices[vid])
+01713 rawIdx-= softStart[1];
+01714 <span class="keywordflow">else</span>
+01715 rawIdx+= softSize[1]-hardStart[1];
+01716 <span class="comment">// fill raw struct</span>
+01717 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex &amp;vertex = vertices[vid];
+01718 skinLod.Vertices2[rawIdx].MatrixId[0]= vertex.Matrices[0];
+01719 skinLod.Vertices2[rawIdx].MatrixId[1]= vertex.Matrices[1];
+01720 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera6">getPos</a> (skinLod.Vertices2[rawIdx].Vertex, vertex);
+01721 vertex.getWeight (skinLod.Vertices2[rawIdx].Weights[0], 0);
+01722 vertex.getWeight (skinLod.Vertices2[rawIdx].Weights[1], 1);
+01723 vertex.getNormal (skinLod.Vertices2[rawIdx].Normal);
+01724 vertex.getU (skinLod.Vertices2[rawIdx].UV.U);
+01725 vertex.getV (skinLod.Vertices2[rawIdx].UV.V);
+01726 }
+01727
+01728 <span class="comment">// 3 Matrix skinning.</span>
+01729 <span class="comment">//========</span>
+01730 <span class="keywordflow">for</span>(i=0;i&lt;skinLod.Vertices3.size();i++)
+01731 {
+01732 <span class="comment">// get the dest vertex.</span>
+01733 <a class="code" href="a04558.html#a15">uint</a> vid= lod.InfluencedVertices[2][i];
+01734 <span class="comment">// where to store?</span>
+01735 rawIdx= vertexRemap[vid];
+01736 <span class="keywordflow">if</span>(softVertices[vid])
+01737 rawIdx-= softStart[2];
+01738 <span class="keywordflow">else</span>
+01739 rawIdx+= softSize[2]-hardStart[2];
+01740 <span class="comment">// fill raw struct</span>
+01741 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex &amp;vertex = vertices[vid];
+01742 skinLod.Vertices3[rawIdx].MatrixId[0]= vertex.Matrices[0];
+01743 skinLod.Vertices3[rawIdx].MatrixId[1]= vertex.Matrices[1];
+01744 skinLod.Vertices3[rawIdx].MatrixId[2]= vertex.Matrices[2];
+01745 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera6">getPos</a> (skinLod.Vertices3[rawIdx].Vertex, vertex);
+01746 vertex.getWeight (skinLod.Vertices3[rawIdx].Weights[0], 0);
+01747 vertex.getWeight (skinLod.Vertices3[rawIdx].Weights[1], 1);
+01748 vertex.getWeight (skinLod.Vertices3[rawIdx].Weights[2], 2);
+01749 vertex.getNormal (skinLod.Vertices3[rawIdx].Normal);
+01750 vertex.getU (skinLod.Vertices3[rawIdx].UV.U);
+01751 vertex.getV (skinLod.Vertices3[rawIdx].UV.V);
+01752 }
+01753
+01754 <span class="comment">// 4 Matrix skinning.</span>
+01755 <span class="comment">//========</span>
+01756 <span class="keywordflow">for</span>(i=0;i&lt;skinLod.Vertices4.size();i++)
+01757 {
+01758 <span class="comment">// get the dest vertex.</span>
+01759 <a class="code" href="a04558.html#a15">uint</a> vid= lod.InfluencedVertices[3][i];
+01760 <span class="comment">// where to store?</span>
+01761 rawIdx= vertexRemap[vid];
+01762 <span class="keywordflow">if</span>(softVertices[vid])
+01763 rawIdx-= softStart[3];
+01764 <span class="keywordflow">else</span>
+01765 rawIdx+= softSize[3]-hardStart[3];
+01766 <span class="comment">// fill raw struct</span>
+01767 <span class="keyword">const</span> CPackedVertexBuffer::CPackedVertex &amp;vertex = vertices[vid];
+01768 skinLod.Vertices4[rawIdx].MatrixId[0]= vertex.Matrices[0];
+01769 skinLod.Vertices4[rawIdx].MatrixId[1]= vertex.Matrices[1];
+01770 skinLod.Vertices4[rawIdx].MatrixId[2]= vertex.Matrices[2];
+01771 skinLod.Vertices4[rawIdx].MatrixId[3]= vertex.Matrices[3];
+01772 <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">_VBufferFinal</a>.<a class="code" href="a02904.html#NL3D_1_1CMeshMRMSkinnedGeom_1_1CPackedVertexBuffera6">getPos</a> (skinLod.Vertices4[rawIdx].Vertex, vertex);
+01773 vertex.getWeight (skinLod.Vertices4[rawIdx].Weights[0], 0);
+01774 vertex.getWeight (skinLod.Vertices4[rawIdx].Weights[1], 1);
+01775 vertex.getWeight (skinLod.Vertices4[rawIdx].Weights[2], 2);
+01776 vertex.getWeight (skinLod.Vertices4[rawIdx].Weights[3], 3);
+01777 vertex.getNormal (skinLod.Vertices4[rawIdx].Normal);
+01778 vertex.getU (skinLod.Vertices4[rawIdx].UV.U);
+01779 vertex.getV (skinLod.Vertices4[rawIdx].UV.V);
+01780 }
+01781
+01782 <span class="comment">// Remap Geomorphs.</span>
+01783 <span class="comment">//========</span>
+01784 <a class="code" href="a04558.html#a15">uint</a> numGeoms= lod.Geomorphs.size();
+01785 skinLod.Geomorphs.resize( numGeoms );
+01786 <span class="keywordflow">for</span>(i=0;i&lt;numGeoms;i++)
+01787 {
+01788 <span class="comment">// NB: don't add "numGeoms" to the index because RawSkin look in a TempArray in RAM, wich start at 0...</span>
+01789 skinLod.Geomorphs[i].Start= vertexRemap[lod.Geomorphs[i].Start];
+01790 skinLod.Geomorphs[i].End= vertexRemap[lod.Geomorphs[i].End];
+01791 }
+01792
+01793 <span class="comment">// Remap RdrPass.</span>
+01794 <span class="comment">//========</span>
+01795 skinLod.RdrPass.resize(lod.RdrPass.size());
+01796 <span class="keywordflow">for</span>(i=0;i&lt;skinLod.RdrPass.size();i++)
+01797 {
+01798 <span class="comment">// remap tris.</span>
+01799 skinLod.RdrPass[i].setNumTri(lod.RdrPass[i].getNumTriangle());
+01800 <a class="code" href="a04558.html#a9">uint16</a> *srcTriPtr= &amp;(lod.RdrPass[i].PBlock[0]);
+01801 <a class="code" href="a04558.html#a11">uint32</a> *dstTriPtr= skinLod.RdrPass[i].getTriPointer();
+01802 <a class="code" href="a04558.html#a11">uint32</a> numIndices= lod.RdrPass[i].PBlock.size();
+01803 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> j=0;j&lt;numIndices;j++, srcTriPtr++, dstTriPtr++)
+01804 {
+01805 <a class="code" href="a04558.html#a15">uint</a> vid= (<a class="code" href="a04558.html#a15">uint</a>)*srcTriPtr;
+01806 <span class="comment">// If this index refers to a Geomorphed vertex, don't modify!</span>
+01807 <span class="keywordflow">if</span>(vid&lt;numGeoms)
+01808 *dstTriPtr= vid;
+01809 <span class="keywordflow">else</span>
+01810 *dstTriPtr= vertexRemap[vid] + numGeoms;
+01811 }
+01812 }
+01813 }
+01814 }
+01815 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomd7" doxytag="NL3D::CMeshMRMSkinnedGeom::updateShiftedTriangleCache" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::updateShiftedTriangleCache </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02909.html">CMeshMRMSkinnedInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>curLodId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>baseVertex</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l00918">918</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06014.html#l00127">NL3D::CMeshMRMSkinnedInstance::_RawSkinCache</a>, <a class="el" href="a06014.html#l00132">NL3D::CMeshMRMSkinnedInstance::_ShiftedTriangleCache</a>, <a class="el" href="a06387.html#l00066">NL3D::CShiftedTriangleCache::BaseVertex</a>, <a class="el" href="a06013.html#l00076">NL3D::CMeshMRMSkinnedInstance::clearShiftedTriangleCache()</a>, <a class="el" href="a06116.html#l00195">NLMISC::CObjectVector&lt; uint32, false &gt;::getPtr()</a>, <a class="el" href="a06387.html#l00062">NL3D::CShiftedTriangleCache::LodId</a>, <a class="el" href="a06387.html#l00064">NL3D::CShiftedTriangleCache::MeshDataId</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06387.html#l00052">NL3D::CShiftedTriangleCache::CRdrPass::NumTriangles</a>, <a class="el" href="a06387.html#l00057">NL3D::CShiftedTriangleCache::RawIndices</a>, <a class="el" href="a06387.html#l00059">NL3D::CShiftedTriangleCache::RdrPass</a>, <a class="el" href="a06316.html#l00113">NL3D::CRawSkinnedNormalCache::RdrPass</a>, <a class="el" href="a06116.html#l00142">NLMISC::CObjectVector&lt; uint32, false &gt;::resize()</a>, <a class="el" href="a06116.html#l00142">NLMISC::CObjectVector&lt; CRdrPass, false &gt;::resize()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06387.html#l00051">NL3D::CShiftedTriangleCache::CRdrPass::Triangles</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l00795">renderSkinGroupPrimitives()</a>.
+<p>
+<div class="fragment"><pre>00919 {
+00920 <span class="comment">// if the instance has a cache, but not sync to us, delete it.</span>
+00921 <span class="keywordflow">if</span>( mi-&gt;_ShiftedTriangleCache &amp;&amp; (
+00922 mi-&gt;_ShiftedTriangleCache-&gt;MeshDataId != <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a> ||
+00923 mi-&gt;_ShiftedTriangleCache-&gt;LodId != curLodId ||
+00924 mi-&gt;_ShiftedTriangleCache-&gt;BaseVertex != baseVertex) )
+00925 {
+00926 mi-&gt;clearShiftedTriangleCache();
+00927 }
+00928
+00929 <span class="comment">// If the instance has not a valid cache, must create it.</span>
+00930 <span class="keywordflow">if</span>( !mi-&gt;_ShiftedTriangleCache )
+00931 {
+00932 mi-&gt;_ShiftedTriangleCache= <span class="keyword">new</span> CShiftedTriangleCache;
+00933 <span class="comment">// Fill the cache Key.</span>
+00934 mi-&gt;_ShiftedTriangleCache-&gt;MeshDataId= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">_MeshDataId</a>;
+00935 mi-&gt;_ShiftedTriangleCache-&gt;LodId= curLodId;
+00936 mi-&gt;_ShiftedTriangleCache-&gt;BaseVertex= baseVertex;
+00937
+00938 <span class="comment">// Build list of PBlock. From Lod, or from RawSkin cache.</span>
+00939 <span class="keyword">static</span> vector&lt;CPrimitiveBlock*&gt; pbList;
+00940 pbList.clear();
+00941 <a class="code" href="a04199.html#a6">nlassert</a>(mi-&gt;_RawSkinCache);
+00942 pbList.resize(mi-&gt;_RawSkinCache-&gt;RdrPass.size());
+00943 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;pbList.size();i++)
+00944 {
+00945 pbList[i]= &amp;mi-&gt;_RawSkinCache-&gt;RdrPass[i];
+00946 }
+00947
+00948 <span class="comment">// Build RdrPass</span>
+00949 mi-&gt;_ShiftedTriangleCache-&gt;RdrPass.resize(pbList.size());
+00950
+00951 <span class="comment">// First pass, count number of triangles, and fill header info</span>
+00952 <a class="code" href="a04558.html#a15">uint</a> totalTri= 0;
+00953 <a class="code" href="a04558.html#a15">uint</a> i;
+00954 <span class="keywordflow">for</span>(i=0;i&lt;pbList.size();i++)
+00955 {
+00956 mi-&gt;_ShiftedTriangleCache-&gt;RdrPass[i].NumTriangles= pbList[i]-&gt;getNumTri();
+00957 totalTri+= pbList[i]-&gt;getNumTri();
+00958 }
+00959
+00960 <span class="comment">// Allocate triangles indices.</span>
+00961 mi-&gt;_ShiftedTriangleCache-&gt;RawIndices.resize(totalTri*3);
+00962 <a class="code" href="a04558.html#a11">uint32</a> *rawPtr= mi-&gt;_ShiftedTriangleCache-&gt;RawIndices.getPtr();
+00963
+00964 <span class="comment">// Second pass, fill ptrs, and fill Arrays</span>
+00965 <a class="code" href="a04558.html#a15">uint</a> indexTri= 0;
+00966 <span class="keywordflow">for</span>(i=0;i&lt;pbList.size();i++)
+00967 {
+00968 CShiftedTriangleCache::CRdrPass &amp;dstRdrPass= mi-&gt;_ShiftedTriangleCache-&gt;RdrPass[i];
+00969 dstRdrPass.Triangles= rawPtr + indexTri*3;
+00970
+00971 <span class="comment">// Fill the array</span>
+00972 <a class="code" href="a04558.html#a15">uint</a> numTris= pbList[i]-&gt;getNumTri();
+00973 <span class="keywordflow">if</span>(numTris)
+00974 {
+00975 <a class="code" href="a04558.html#a15">uint</a> nIds= numTris*3;
+00976 <span class="comment">// index, and fill</span>
+00977 <a class="code" href="a04558.html#a11">uint32</a> *pSrcTri= pbList[i]-&gt;getTriPointer();
+00978 <a class="code" href="a04558.html#a11">uint32</a> *pDstTri= dstRdrPass.Triangles;
+00979 <span class="keywordflow">for</span>(;nIds&gt;0;nIds--,pSrcTri++,pDstTri++)
+00980 *pDstTri= *pSrcTri + baseVertex;
+00981 }
+00982
+00983 <span class="comment">// Next</span>
+00984 indexTri+= dstRdrPass.NumTriangles;
+00985 }
+00986 }
+00987 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz507_3" doxytag="NL3D::CMeshMRMSkinnedGeom::updateSkeletonUsage" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshMRMSkinnedGeom::updateSkeletonUsage </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03399.html">CSkeletonModel</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sm</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>increment</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+update Skeleton Usage. increment or decrement. computeBonesId must has been called before.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l01254">1254</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>.
+<p>
+References <a class="el" href="a06394.html#l00098">NL3D::CSkeletonModel::Bones</a>, <a class="el" href="a06393.html#l00213">NL3D::CSkeletonModel::decBoneUsage()</a>, <a class="el" href="a06393.html#l00189">NL3D::CSkeletonModel::incBoneUsage()</a>, <a class="el" href="a05622.html#l00154">nlerror</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06011.html#l01520">NL3D::CMeshMRMSkinned::updateSkeletonUsage()</a>.
+<p>
+<div class="fragment"><pre>01255 {
+01256 <span class="comment">// For all Bones used.</span>
+01257 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0; i&lt;<a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr4">_BonesIdExt</a>.size();i++)
+01258 {
+01259 <a class="code" href="a04558.html#a15">uint</a> boneId= <a class="code" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr4">_BonesIdExt</a>[i];
+01260 <span class="comment">// Some explicit Error.</span>
+01261 <span class="keywordflow">if</span>(boneId&gt;=sm-&gt;Bones.size())
+01262 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">" Skin is incompatible with Skeleton: tries to use bone %d"</span>, boneId);
+01263 <span class="comment">// increment or decrement not Forced, because CMeshGeom use getActiveBoneSkinMatrix().</span>
+01264 <span class="keywordflow">if</span>(increment)
+01265 sm-&gt;incBoneUsage(boneId, CSkeletonModel::UsageNormal);
+01266 <span class="keywordflow">else</span>
+01267 sm-&gt;decBoneUsage(boneId, CSkeletonModel::UsageNormal);
+01268 }
+01269 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Friends And Related Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz515_0" doxytag="NL3D::CMeshMRMSkinnedGeom::CLod" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> friend class <a class="el" href="a02902.html">CLod</a><code> [friend]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00383">383</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomn0" doxytag="NL3D::CMeshMRMSkinnedGeom::CMRMBuilder" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> friend class <a class="el" href="a02951.html">CMRMBuilder</a><code> [friend]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00299">299</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr0" doxytag="NL3D::CMeshMRMSkinnedGeom::_BBox" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a02157.html">NLMISC::CAABBoxExt</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr0">NL3D::CMeshMRMSkinnedGeom::_BBox</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+For clipping. this is the BB of all vertices of all Lods.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00552">552</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr1" doxytag="NL3D::CMeshMRMSkinnedGeom::_BoneIdComputed" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr1">NL3D::CMeshMRMSkinnedGeom::_BoneIdComputed</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This boolean is true if the bones id have been passed in the skeleton.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00533">533</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr2" doxytag="NL3D::CMeshMRMSkinnedGeom::_BoneIdExtended" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr2">NL3D::CMeshMRMSkinnedGeom::_BoneIdExtended</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+true if the _BonesIdExt have been computed (for bone Usage).
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00535">535</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr3" doxytag="NL3D::CMeshMRMSkinnedGeom::_BonesId" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a04558.html#a10">sint32</a>&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr3">NL3D::CMeshMRMSkinnedGeom::_BonesId</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This array give the index in the skeleton of the local bones used. computed at first computeBoneId().
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00543">543</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr4" doxytag="NL3D::CMeshMRMSkinnedGeom::_BonesIdExt" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a04558.html#a10">sint32</a>&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr4">NL3D::CMeshMRMSkinnedGeom::_BonesIdExt</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Same as _BonesId but with parent of bones added. (used for bone usage).
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00545">545</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr5" doxytag="NL3D::CMeshMRMSkinnedGeom::_BonesName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;std::string&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr5">NL3D::CMeshMRMSkinnedGeom::_BonesName</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This array give the name of the local bones.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00541">541</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr6" doxytag="NL3D::CMeshMRMSkinnedGeom::_BonesSphere" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a02291.html">NLMISC::CBSphere</a>&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr6">NL3D::CMeshMRMSkinnedGeom::_BonesSphere</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+see <a class="el" href="a02316.html#NL3D_1_1CWaveMakerModelz1032_0">CTransform::getSkinBoneSphere()</a> doc for the meaning of this value
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00547">547</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr7" doxytag="NL3D::CMeshMRMSkinnedGeom::_LastLodComputed" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr7">NL3D::CMeshMRMSkinnedGeom::_LastLodComputed</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Last lod rendered. used with renderSkinGroup*() only.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00538">538</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz516_0" doxytag="NL3D::CMeshMRMSkinnedGeom::_LevelDetail" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a02959.html">CMRMLevelDetail</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz516_0">NL3D::CMeshMRMSkinnedGeom::_LevelDetail</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00557">557</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr8" doxytag="NL3D::CMeshMRMSkinnedGeom::_Lods" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a02902.html">CLod</a>&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr8">NL3D::CMeshMRMSkinnedGeom::_Lods</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+List of Lods.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00550">550</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_11" doxytag="NL3D::CMeshMRMSkinnedGeom::_MeshDataId" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_11">NL3D::CMeshMRMSkinnedGeom::_MeshDataId</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Each time the mesh is loaded/built, this increment.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00614">614</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz518_1" doxytag="NL3D::CMeshMRMSkinnedGeom::_PreciseClipping" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz518_1">NL3D::CMeshMRMSkinnedGeom::_PreciseClipping</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+NB: HERE FOR PACKING ONLY. For clipping. Estimate if we must do a Precise clipping (ie with bboxes).
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00565">565</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz520_1" doxytag="NL3D::CMeshMRMSkinnedGeom::_ShadowSkinTriangles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a04558.html#a11">uint32</a>&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_1">NL3D::CMeshMRMSkinnedGeom::_ShadowSkinTriangles</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00575">575</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz520_2" doxytag="NL3D::CMeshMRMSkinnedGeom::_ShadowSkinVertices" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a02907.html">CShadowVertex</a>&gt; <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_2">NL3D::CMeshMRMSkinnedGeom::_ShadowSkinVertices</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00574">574</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz520_3" doxytag="NL3D::CMeshMRMSkinnedGeom::_SupportShadowSkinGrouping" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz520_3">NL3D::CMeshMRMSkinnedGeom::_SupportShadowSkinGrouping</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00576">576</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomr9" doxytag="NL3D::CMeshMRMSkinnedGeom::_VBufferFinal" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a02904.html">CPackedVertexBuffer</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomr9">NL3D::CMeshMRMSkinnedGeom::_VBufferFinal</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06012.html#l00530">530</a> of file <a class="el" href="a06012.html">mesh_mrm_skinned.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_0" doxytag="NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal1" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_0">NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal1</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03313.html">CRawVertexNormalSkinned1</a>)<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02324">2324</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_1" doxytag="NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal2" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_1">NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal2</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03314.html">CRawVertexNormalSkinned2</a>)<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02326">2326</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_2" doxytag="NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal3" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_2">NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal3</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03315.html">CRawVertexNormalSkinned3</a>)<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02328">2328</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_3" doxytag="NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_3">NL3D::CMeshMRMSkinnedGeom::NumCacheVertexNormal4</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a03316.html">CRawVertexNormalSkinned4</a>)<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02330">2330</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshMRMSkinnedGeomz522_4" doxytag="NL3D::CMeshMRMSkinnedGeom::NumCacheVertexShadow" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02901.html#NL3D_1_1CMeshMRMSkinnedGeomz522_4">NL3D::CMeshMRMSkinnedGeom::NumCacheVertexShadow</a> = <a class="el" href="a05363.html#a134">NL_BlockByteL1</a> / sizeof(<a class="el" href="a02907.html">CMeshMRMSkinnedGeom::CShadowVertex</a>)<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06011.html#l02333">2333</a> of file <a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a06012.html">mesh_mrm_skinned.h</a><li><a class="el" href="a06011.html">mesh_mrm_skinned.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:54:20 2004 for NeL by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.6 </small></address>
+</body>
+</html>