The class for building MRMs. More...
#include <mrm_builder.h>
Classes | |
| struct | CAttributeKey |
| Temp map Attribute/AttributeId . More... | |
| struct | CGeomPred |
Public Member Functions | |
| CMRMBuilder () | |
| Constructor. | |
| void | compileMRM (const CMesh::CMeshBuild &mbuild, std::vector< CMesh::CMeshBuild * > &bsList, const CMRMParameters ¶ms, CMeshMRMGeom::CMeshBuildMRM &mrmMesh, uint numMaxMaterial) |
| Compile a MRM mesh info. | |
| void | compileMRM (const CMesh::CMeshBuild &mbuild, std::vector< CMesh::CMeshBuild * > &bsList, const CMRMParameters ¶ms, CMeshMRMSkinnedGeom::CMeshBuildMRM &mrmMesh, uint numMaxMaterial) |
| Compile a MRM skinned mesh info. | |
Private Member Functions | |
| void | computeBsVerticesAttributes (std::vector< CMRMMesh > &srcBsMeshs, std::vector< CMRMMesh > &srcBsMeshsMod) |
| void | makeCoarserBS (std::vector< CMRMBlendShape > &csBsMeshs) |
Edge Cost methods. | |
| bool | vertexHasOneWedge (sint numvertex) |
| bool | vertexHasOneMaterial (sint numvertex) |
| bool | vertexContinue (sint numvertex) |
| bool | vertexClosed (sint numvertex) |
| float | getDeltaFaceNormals (sint numvertex) |
| bool | edgeContinue (const CMRMEdge &edge) |
| bool | edgeNearUniqueMatFace (const CMRMEdge &edge) |
| float | computeEdgeCost (const CMRMEdge &edge) |
Collapse methods. | |
| bool | faceShareWedges (CMRMFaceBuild *face, sint attribId, sint numVertex1, sint numVertex2) |
| void | insertFaceIntoEdgeList (CMRMFaceBuild &tmpf) |
| void | removeFaceFromEdgeList (CMRMFaceBuild &f) |
| sint | collapseEdge (const CMRMEdge &edge) |
| sint | followVertex (sint i) |
| sint | followWedge (sint attribId, sint i) |
| CMesh::CSkinWeight | collapseSkinWeight (const CMesh::CSkinWeight &sw1, const CMesh::CSkinWeight &sw2, float InterValue) const |
Mesh Level methods. | |
| void | init (const CMRMMesh &baseMesh) |
| void | collapseEdges (sint nWantedFaces) |
| void | makeLODMesh (CMRMMeshGeom &lodMesh) |
| void | saveCoarserMesh (CMRMMesh &coarserMesh) |
| void | makeFromMesh (const CMRMMesh &baseMesh, CMRMMeshGeom &lodMesh, CMRMMesh &coarserMesh, sint nWantedFaces) |
| this is the root call to compute a single lodMesh and the coarserMesh from a baseMesh. | |
MRM Level Methods. | |
| void | buildBlendShapes (CMRMMesh &baseMesh, std::vector< CMesh::CMeshBuild * > &bsList, uint32 VertexFlags) |
| build the blend shapes in the same way we constructed the base mesh mrm | |
| void | buildAllLods (const CMRMMesh &baseMesh, std::vector< CMRMMeshGeom > &lodMeshs, uint nWantedLods=10, uint divisor=50) |
| build all LODs from a baseMesh. | |
| void | buildFinalMRM (std::vector< CMRMMeshGeom > &lodMeshs, CMRMMeshFinal &finalMRM) |
| given a list of LODs, compress/reorganize data, and store in finalMRM mesh. | |
Private Attributes | |
Mesh Level Tmp Values. | |
| std::vector< CMRMVertex > | TmpVertices |
| std::vector< CMRMAttribute > | TmpAttributes [NL3D_MRM_MAX_ATTRIB] |
| sint | NumAttributes |
| std::vector< CMRMFaceBuild > | TmpFaces |
| TEdgeMap | EdgeCollapses |
| bool | _Skinned |
| CMRMParameters::TSkinReduction | _SkinReduction |
| If the current build is skinned, control the quality of the skinning redcution. | |
MRM Level Variables. | |
|
| |
| typedef std::map < CMRMWedgeGeom, sint, CGeomPred > | TGeomMap |
| TGeomMap | _GeomMap |
Top Level methods. | |
|
| |
| typedef std::map < CAttributeKey, sint > | TAttributeMap |
| TAttributeMap | _AttributeMap [NL3D_MRM_MAX_ATTRIB] |
| sint | findInsertAttributeInBaseMesh (CMRMMesh &baseMesh, sint attId, sint vertexId, const CVectorH &att) |
| sint | findInsertNormalInBaseMesh (CMRMMesh &baseMesh, sint attId, sint vertexId, const CVector &normal) |
| sint | findInsertColorInBaseMesh (CMRMMesh &baseMesh, sint attId, sint vertexId, CRGBA col) |
| sint | findInsertUvwInBaseMesh (CMRMMesh &baseMesh, sint attId, sint vertexId, const NLMISC::CUVW &uvw) |
| CRGBA | attToColor (const CVectorH &att) const |
| NLMISC::CUVW | attToUvw (const CVectorH &att) const |
| uint32 | buildMrmBaseMesh (const CMesh::CMeshBuild &mbuild, CMRMMesh &baseMesh) |
| from a meshBuild, compute a CMRMMesh. | |
| void | buildMeshBuildMrm (const CMRMMeshFinal &finalMRM, CMeshMRMGeom::CMeshBuildMRM &mbuild, uint32 vbFlags, uint32 nbMats, const CMesh::CMeshBuild &mb) |
| from a final MRM Mesh representation, compute a CMeshBuildMRM. | |
| void | buildMeshBuildMrm (const CMRMMeshFinal &finalMRM, CMeshMRMSkinnedGeom::CMeshBuildMRM &mbuild, uint32 vbFlags, uint32 nbMats, const CMesh::CMeshBuild &mb) |
| from a final MRM Mesh representation, compute a CMeshBuildMRM. | |
| void | normalizeBaseMeshSkin (CMRMMesh &baseMesh) const |
| CMesh::CSkinWeight | normalizeSkinWeight (const CMesh::CSkinWeight &sw) const |
Mesh Interfaces computing | |
|
| |
| bool | _HasMeshInterfaces |
| std::vector< CMRMSewingMesh > | _SewingMeshes |
| uint | _CurrentLodComputed |
| bool | buildMRMSewingMeshes (const CMesh::CMeshBuild &mbuild, uint nWantedLods, uint divisor) |
The class for building MRMs.
Definition at line 50 of file mrm_builder.h.
typedef std::map<CAttributeKey, sint> NL3D::CMRMBuilder::TAttributeMap [private] |
Definition at line 226 of file mrm_builder.h.
typedef std::map<CMRMWedgeGeom, sint, CGeomPred> NL3D::CMRMBuilder::TGeomMap [private] |
Definition at line 177 of file mrm_builder.h.
| NL3D::CMRMBuilder::CMRMBuilder | ( | ) |
Constructor.
Definition at line 857 of file mrm_builder.cpp.
References _HasMeshInterfaces, _Skinned, and NumAttributes.
Definition at line 1707 of file mrm_builder.cpp.
References NLMISC::CRGBA::A, NLMISC::CRGBA::B, NLMISC::clamp(), NLMISC::CRGBA::G, NLMISC::CRGBA::R, NLMISC::CVectorH::w, NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
Referenced by buildMeshBuildMrm().
| NLMISC::CUVW NL3D::CMRMBuilder::attToUvw | ( | const CVectorH & | att | ) | const [private] |
Definition at line 1725 of file mrm_builder.cpp.
References NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
Referenced by buildMeshBuildMrm().
| void NL3D::CMRMBuilder::buildAllLods | ( | const CMRMMesh & | baseMesh, | |
| std::vector< CMRMMeshGeom > & | lodMeshs, | |||
| uint | nWantedLods = 10, |
|||
| uint | divisor = 50 | |||
| ) | [private] |
build all LODs from a baseMesh.
NB: the coarsestMesh is stored in lodMeshs[0], and has no geomorph info since it is the coarsest mesh. nWantedLods are created (including the coarsestMesh).
| lodMeshs | array created by the function (size of nWantedlods). | |
| nWantedLods | number of LODs wanted. | |
| divisor | the coarsestMesh will have baseMesh.Faces.size()/divisor faces. |
Definition at line 1285 of file mrm_builder.cpp.
References _CurrentLodComputed, NL3D::CMRMMesh::Faces, init(), makeFromMesh(), and nlassert.
Referenced by compileMRM().
| void NL3D::CMRMBuilder::buildBlendShapes | ( | CMRMMesh & | baseMesh, | |
| std::vector< CMesh::CMeshBuild * > & | bsList, | |||
| uint32 | VertexFlags | |||
| ) | [private] |
build the blend shapes in the same way we constructed the base mesh mrm
Definition at line 2922 of file mrm_builder.cpp.
References NLMISC::CRGBA::A, NL3D::CMRMCorner::Attributes, NL3D::CMRMMesh::Attributes, NLMISC::CRGBA::B, NL3D::CMRMMesh::BlendShapes, NL3D::CMesh::CCorner::Color, NL3D::CMRMMesh::Faces, NLMISC::CRGBA::G, NL3D::CVertexBuffer::MaxStage, nlassert, NL3D::CMesh::CCorner::Normal, NL3D::CVertexBuffer::NormalFlag, NumAttributes, NL3D::CMRMMesh::NumAttributes, NL3D::CVertexBuffer::PrimaryColorFlag, NLMISC::CRGBA::R, NL3D::CVertexBuffer::SecondaryColorFlag, NL3D::CMesh::CCorner::Specular, NL3D::CVertexBuffer::TexCoord0Flag, NLMISC::CUVW::U, NL3D::CMesh::CCorner::Uvws, NLMISC::CUVW::V, NL3D::CMRMMesh::Vertices, NLMISC::CUVW::W, NLMISC::CVectorH::w, NLMISC::CVector::x, NLMISC::CVectorH::x, NLMISC::CVector::y, NLMISC::CVectorH::y, NLMISC::CVector::z, and NLMISC::CVectorH::z.
Referenced by compileMRM().
| void NL3D::CMRMBuilder::buildFinalMRM | ( | std::vector< CMRMMeshGeom > & | lodMeshs, | |
| CMRMMeshFinal & | finalMRM | |||
| ) | [private] |
given a list of LODs, compress/reorganize data, and store in finalMRM mesh.
Definition at line 1334 of file mrm_builder.cpp.
References _GeomMap, _Skinned, NL3D::CMRMCorner::Attributes, NL3D::CMRMMesh::Attributes, NL3D::CMRMMeshFinal::CWedge::Attributes, NL3D::CMRMMesh::BlendShapes, NL3D::CMRMMeshGeom::CoarserFaces, NL3D::CMRMMeshFinal::CWedge::CompareSkinning, NL3D::CMRMFace::Corner, NL3D::CMRMWedgeGeom::End, NL3D::CMRMMeshFinal::CLod::Faces, NL3D::CMRMMesh::Faces, NL3D::CMRMMeshFinal::findInsertWedge(), NL3D::CMRMMeshFinal::CLod::Geomorphs, NL3D::CMRMMeshFinal::Lods, NL3D::CMRMFace::MaterialId, NL3D::CMRMMeshFinal::CFace::MaterialId, NL3D::CMRMMeshFinal::MRMBlendShapesFinals, NL3D::CMRMMeshFinal::NGeomSpace, NL3D_MESH_SKINNING_MAX_MATRIX, nlassert, NL3D::CMRMMeshFinal::CWedge::NSkinMatUsed, NumAttributes, NL3D::CMRMMeshFinal::NumAttributes, NL3D::CMRMMeshFinal::CWedge::NumAttributesToCompare, NL3D::CMRMMeshFinal::reset(), NL3D::CMRMMeshFinal::Skinned, NL3D::CMRMMesh::SkinWeights, NL3D::CMRMWedgeGeom::Start, NL3D::CMRMCorner::Vertex, NL3D::CMRMMeshFinal::CWedge::Vertex, NL3D::CMRMMeshFinal::CWedge::VertexSkin, NL3D::CMRMMesh::Vertices, NL3D::CMRMCorner::WedgeEndId, NL3D::CMRMCorner::WedgeGeomId, NL3D::CMRMMeshFinal::CFace::WedgeId, NL3D::CMRMMeshFinal::CMRMBlendShapeFinal::Wedges, NL3D::CMRMMeshFinal::Wedges, NL3D::CMRMCorner::WedgeStartId, and NL3D::CMesh::CSkinWeight::Weights.
Referenced by compileMRM().
| void NL3D::CMRMBuilder::buildMeshBuildMrm | ( | const CMRMMeshFinal & | finalMRM, | |
| CMeshMRMSkinnedGeom::CMeshBuildMRM & | mbuild, | |||
| uint32 | vbFlags, | |||
| uint32 | nbMats, | |||
| const CMesh::CMeshBuild & | mb | |||
| ) | [private] |
from a final MRM Mesh representation, compute a CMeshBuildMRM.
This is the last stage of the algo.
| vbFlags | the vertex format returned by earlier call too buildMrmBaseMesh(). | |
| nbMats | the number of materials of original MeshBuild. |
Definition at line 2420 of file mrm_builder.cpp.
References _Skinned, NLMISC::CRGBAF::A, NL3D::CVertexBuffer::addValueEx(), NL3D::CMRMMeshFinal::CWedge::Attributes, attToColor(), attToUvw(), NLMISC::CRGBAF::B, NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::BlendShapes, NL3D::CVertexBuffer::clearValueEx(), NL3D::CBlendShape::deltaCol, NL3D::CBlendShape::deltaNorm, NL3D::CBlendShape::deltaPos, NL3D::CBlendShape::deltaTgSpace, NL3D::CBlendShape::deltaUV, NL3D::CMRMMeshFinal::CLod::Faces, NL3D::CVertexBuffer::Float1, NL3D::CVertexBuffer::Float2, NL3D::CVertexBuffer::Float3, NL3D::CVertexBuffer::Float4, NL3D::CVertexBuffer::Fog, NL3D::CVertexBuffer::FogFlag, NLMISC::CRGBAF::G, NL3D::CMRMMeshFinal::CLod::Geomorphs, NL3D::CMeshMRMSkinnedGeom::CLod::Geomorphs, NL3D::CMeshMRMSkinnedGeom::CLod::InfluencedVertices, NL3D::CVertexBuffer::initEx(), NL3D::CVertexBuffer::lock(), NL3D::CMRMMeshFinal::Lods, NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::Lods, NL3D::CMesh::CSkinWeight::MatrixId, NL3D::CMeshMRMSkinnedGeom::CLod::MatrixInfluences, NL3D::CVertexBuffer::MaxStage, NL3D::CMesh::CMeshBuild::MeshVertexProgram, NL3D::CMRMMeshFinal::MRMBlendShapesFinals, NL3D::CMRMMeshFinal::NGeomSpace, NL3D_MESH_SKINNING_MAX_MATRIX, nlassert, NLMISC::CVector::norm(), NL3D::CVertexBuffer::Normal, NL3D::CVertexBuffer::NormalFlag, NLMISC::CVector::Null, NL3D::CMesh::CMeshBuild::NumCoords, NL3D::CMRMMeshFinal::CLod::NWedges, NL3D::CMeshMRMSkinnedGeom::CLod::NWedges, NL3D::CVertexBuffer::PaletteSkin, NL3D::CVertexBuffer::PaletteSkinFlag, NL3D::CVertexBuffer::Position, NL3D::CVertexBuffer::PositionFlag, NL3D::CVertexBuffer::PrimaryColor, NL3D::CVertexBuffer::PrimaryColorFlag, NLMISC::CRGBAF::R, NL3D::CMeshMRMSkinnedGeom::CLod::RdrPass, NL3D::CVertexBuffer::SecondaryColor, NL3D::CVertexBuffer::SecondaryColorFlag, NL3D::CVertexBufferReadWrite::setColor(), NL3D::CVertexBufferReadWrite::setNormalCoord(), NL3D::CVertexBuffer::setNumVertices(), NL3D::CVertexBufferReadWrite::setSpecular(), NL3D::CVertexBufferReadWrite::setTexCoord(), NL3D::CVertexBuffer::setUVRouting(), NL3D::CVertexBufferReadWrite::setValueFloat3Ex(), NL3D::CVertexBufferReadWrite::setVertexCoord(), NL3D::CVertexBuffer::setVertexFormat(), NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::Skinned, NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::SkinWeights, NL3D::CVertexBuffer::TexCoord0, NL3D::CVertexBuffer::TexCoord0Flag, NLMISC::CUV::U, NLMISC::CUVW::U, NL3D::CVertexBuffer::UChar4, NL3D::CMesh::CMeshBuild::UVRouting, NLMISC::CUV::V, NLMISC::CUVW::V, NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::VBuffer, NL3D::CMRMMeshFinal::CWedge::Vertex, NL3D::CMRMMeshFinal::CWedge::VertexSkin, NL3D::CBlendShape::VertRefs, NLMISC::CVectorH::w, NLMISC::CUVW::W, NL3D::CMRMMeshFinal::Wedges, NL3D::CVertexBuffer::Weight, NL3D::CVertexBuffer::WeightFlag, NL3D::CMesh::CSkinWeight::Weights, NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
| void NL3D::CMRMBuilder::buildMeshBuildMrm | ( | const CMRMMeshFinal & | finalMRM, | |
| CMeshMRMGeom::CMeshBuildMRM & | mbuild, | |||
| uint32 | vbFlags, | |||
| uint32 | nbMats, | |||
| const CMesh::CMeshBuild & | mb | |||
| ) | [private] |
from a final MRM Mesh representation, compute a CMeshBuildMRM.
This is the last stage of the algo.
| vbFlags | the vertex format returned by earlier call too buildMrmBaseMesh(). | |
| nbMats | the number of materials of original MeshBuild. |
Definition at line 1916 of file mrm_builder.cpp.
References _Skinned, NLMISC::CRGBAF::A, NL3D::CVertexBuffer::addValueEx(), NL3D::CMRMMeshFinal::CWedge::Attributes, attToColor(), attToUvw(), NLMISC::CRGBAF::B, NL3D::CMeshMRMGeom::CMeshBuildMRM::BlendShapes, NL3D::CVertexBuffer::clearValueEx(), NL3D::CBlendShape::deltaCol, NL3D::CBlendShape::deltaNorm, NL3D::CBlendShape::deltaPos, NL3D::CBlendShape::deltaTgSpace, NL3D::CBlendShape::deltaUV, NL3D::CMRMMeshFinal::CLod::Faces, NL3D::CVertexBuffer::Float1, NL3D::CVertexBuffer::Float2, NL3D::CVertexBuffer::Float3, NL3D::CVertexBuffer::Float4, NL3D::CVertexBuffer::Fog, NL3D::CVertexBuffer::FogFlag, NLMISC::CRGBAF::G, NL3D::CMRMMeshFinal::CLod::Geomorphs, NL3D::CMeshMRMGeom::CLod::Geomorphs, NL3D::CIndexBuffer::getNumIndexes(), NL3D::CMeshMRMGeom::CLod::InfluencedVertices, NL3D::CVertexBuffer::initEx(), NL3D::CIndexBuffer::lock(), NL3D::CVertexBuffer::lock(), NL3D::CMRMMeshFinal::Lods, NL3D::CMeshMRMGeom::CMeshBuildMRM::Lods, NL3D::CMesh::CSkinWeight::MatrixId, NL3D::CMeshMRMGeom::CLod::MatrixInfluences, NL3D::CVertexBuffer::MaxStage, NL3D::CMesh::CMeshBuild::MeshVertexProgram, NL3D::CMRMMeshFinal::MRMBlendShapesFinals, NL3D::CMRMMeshFinal::NGeomSpace, NL3D_MESH_SKINNING_MAX_MATRIX, nlassert, NLMISC::CVector::norm(), NL3D::CVertexBuffer::Normal, NL3D::CVertexBuffer::NormalFlag, NLMISC::CVector::Null, NL3D::CMesh::CMeshBuild::NumCoords, NL3D::CMRMMeshFinal::CLod::NWedges, NL3D::CMeshMRMGeom::CLod::NWedges, NL3D::CVertexBuffer::PaletteSkin, NL3D::CVertexBuffer::PaletteSkinFlag, NL3D::CVertexBuffer::Position, NL3D::CVertexBuffer::PositionFlag, NL3D::CVertexBuffer::PrimaryColor, NL3D::CVertexBuffer::PrimaryColorFlag, NLMISC::CRGBAF::R, NL3D::CMeshMRMGeom::CLod::RdrPass, NL3D::CVertexBuffer::SecondaryColor, NL3D::CVertexBuffer::SecondaryColorFlag, NL3D::CVertexBufferReadWrite::setColor(), NL3D::CVertexBufferReadWrite::setNormalCoord(), NL3D::CIndexBuffer::setNumIndexes(), NL3D::CVertexBuffer::setNumVertices(), NL3D::CVertexBufferReadWrite::setSpecular(), NL3D::CVertexBufferReadWrite::setTexCoord(), NL3D::CIndexBufferReadWrite::setTri(), NL3D::CVertexBuffer::setUVRouting(), NL3D::CVertexBufferReadWrite::setValueFloat3Ex(), NL3D::CVertexBufferReadWrite::setVertexCoord(), NL3D::CVertexBuffer::setVertexFormat(), NL3D::CMeshMRMGeom::CMeshBuildMRM::Skinned, NL3D::CMeshMRMGeom::CMeshBuildMRM::SkinWeights, NL3D::CVertexBuffer::TexCoord0, NL3D::CVertexBuffer::TexCoord0Flag, NLMISC::CUV::U, NLMISC::CUVW::U, NL3D::CVertexBuffer::UChar4, NL3D::CMesh::CMeshBuild::UVRouting, NLMISC::CUV::V, NLMISC::CUVW::V, NL3D::CMeshMRMGeom::CMeshBuildMRM::VBuffer, NL3D::CMRMMeshFinal::CWedge::Vertex, NL3D::CMRMMeshFinal::CWedge::VertexSkin, NL3D::CBlendShape::VertRefs, NLMISC::CVectorH::w, NLMISC::CUVW::W, NL3D::CMRMMeshFinal::Wedges, NL3D::CVertexBuffer::Weight, NL3D::CVertexBuffer::WeightFlag, NL3D::CMesh::CSkinWeight::Weights, NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
Referenced by compileMRM().
| uint32 NL3D::CMRMBuilder::buildMrmBaseMesh | ( | const CMesh::CMeshBuild & | mbuild, | |
| CMRMMesh & | baseMesh | |||
| ) | [private] |
from a meshBuild, compute a CMRMMesh.
This is the first stage of the algo.
Definition at line 1732 of file mrm_builder.cpp.
References _AttributeMap, _HasMeshInterfaces, _Skinned, NL3D::CMRMCorner::Attributes, NL3D::CMesh::CCorner::Color, NL3D::CMRMMesh::Faces, NL3D::CMesh::CMeshBuild::Faces, findInsertColorInBaseMesh(), findInsertNormalInBaseMesh(), findInsertUvwInBaseMesh(), NL3D::CMesh::CMeshBuild::InterfaceLinks, NL3D::CMRMMesh::InterfaceLinks, NL3D::CVertexBuffer::MaxStage, NL3D_MRM_MAX_ATTRIB, nlassert, NL3D::CMesh::CCorner::Normal, NL3D::CVertexBuffer::NormalFlag, NL3D::CMRMMesh::NumAttributes, NL3D::CVertexBuffer::PositionFlag, NL3D::CVertexBuffer::PrimaryColorFlag, NL3D::CVertexBuffer::SecondaryColorFlag, NL3D::CMesh::CMeshBuild::SkinWeights, NL3D::CMRMMesh::SkinWeights, NL3D::CMesh::CCorner::Specular, NL3D::CVertexBuffer::TexCoord0Flag, NL3D::CMesh::CCorner::Uvws, NL3D::CMRMCorner::Vertex, NL3D::CMesh::CMeshBuild::VertexFlags, NL3D::CMesh::CMeshBuild::Vertices, and NL3D::CMRMMesh::Vertices.
Referenced by compileMRM().
| bool NL3D::CMRMBuilder::buildMRMSewingMeshes | ( | const CMesh::CMeshBuild & | mbuild, | |
| uint | nWantedLods, | |||
| uint | divisor | |||
| ) | [private] |
Definition at line 3125 of file mrm_builder.cpp.
References _SewingMeshes, NL3D::CMesh::CMeshBuild::InterfaceLinks, NL3D::CMesh::CMeshBuild::Interfaces, nlassert, and NL3D::CMesh::CMeshBuild::Vertices.
Referenced by compileMRM().
Definition at line 497 of file mrm_builder.cpp.
References _CurrentLodComputed, _HasMeshInterfaces, _SewingMeshes, _Skinned, NL3D::CMRMCorner::Attributes, NL3D::CMRMAttribute::BSCurrent, NL3D::CMRMVertex::BSCurrent, NL3D::CMRMFaceBuild::BSInterpolated, NL3D::CMRMAttribute::CollapsedTo, collapseSkinWeight(), NL3D::CMRMFace::Corner, NL3D::CMRMAttribute::Current, NL3D::CMRMVertex::Current, NL3D::CMRMVertex::CurrentSW, NL3D::deleteElement(), EdgeCollapses, faceShareWedges(), NL3D::findElement(), NL3D::CMRMFaceBuild::getAssociatedWedge(), NL3D::CMesh::CInterfaceLink::InterfaceId, NL3D::CMRMVertex::InterfaceLink, NL3D::CMesh::CInterfaceLink::InterfaceVertexId, NL3D::CMRMFaceBuild::InterpolatedAttribute, NL3D::CMRMAttribute::InterpolatedFace, NL3D::CMRMSewingMesh::mustCollapseEdge(), NL3D::CMRMAttribute::NbSharedFaces, nlassert, NumAttributes, removeFaceFromEdgeList(), NL3D::CMRMAttribute::Shared, NL3D::CMRMVertex::SharedFaces, TmpAttributes, TmpFaces, TmpVertices, NL3D::CMRMEdge::v0, NL3D::CMRMEdge::v1, NL3D::CMRMCorner::Vertex, vertexClosed(), vertexContinue(), NLMISC::CVectorH::w, NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
Referenced by collapseEdges().
| void NL3D::CMRMBuilder::collapseEdges | ( | sint | nWantedFaces | ) | [private] |
Definition at line 943 of file mrm_builder.cpp.
References collapseEdge(), EdgeCollapses, insertFaceIntoEdgeList(), NL3D::CMRMFaceBuild::invalidEdgeIt(), nlassert, removeFaceFromEdgeList(), NL3D::CMRMVertex::SharedFaces, TmpFaces, TmpVertices, NL3D::CMRMEdge::v0, NL3D::CMRMEdge::v1, and NL3D::CMRMFaceBuild::validEdgeIt().
Referenced by makeFromMesh().
| CMesh::CSkinWeight NL3D::CMRMBuilder::collapseSkinWeight | ( | const CMesh::CSkinWeight & | sw1, | |
| const CMesh::CSkinWeight & | sw2, | |||
| float | InterValue | |||
| ) | const [private] |
Definition at line 397 of file mrm_builder.cpp.
References _SkinReduction, NL3D::CMesh::CSkinWeight::MatrixId, NL3D::CTmpVertexWeight::MatrixId, min, NL3D_MESH_SKINNING_MAX_MATRIX, nlassert, nlstop, NL3D::CMRMParameters::SkinReductionBest, NL3D::CMRMParameters::SkinReductionMax, NL3D::CMRMParameters::SkinReductionMin, NL3D::CTmpVertexWeight::Weight, and NL3D::CMesh::CSkinWeight::Weights.
Referenced by collapseEdge().
| void NL3D::CMRMBuilder::compileMRM | ( | const CMesh::CMeshBuild & | mbuild, | |
| std::vector< CMesh::CMeshBuild * > & | bsList, | |||
| const CMRMParameters & | params, | |||
| CMeshMRMSkinnedGeom::CMeshBuildMRM & | mrmMesh, | |||
| uint | numMaxMaterial | |||
| ) |
Compile a MRM skinned mesh info.
| mbuild | the input mesh | |
| params | the parameters of MRM process. | |
| mrmMesh | the result MRM mesh. |
Definition at line 3060 of file mrm_builder.cpp.
References _HasMeshInterfaces, _Skinned, _SkinReduction, buildAllLods(), buildBlendShapes(), buildFinalMRM(), buildMeshBuildMrm(), buildMrmBaseMesh(), buildMRMSewingMeshes(), NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::DistanceCoarsest, NL3D::CMRMParameters::DistanceCoarsest, NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::DistanceFinest, NL3D::CMRMParameters::DistanceFinest, NL3D::CMeshMRMSkinnedGeom::CMeshBuildMRM::DistanceMiddle, NL3D::CMRMParameters::DistanceMiddle, NL3D::CMRMParameters::Divisor, nlassert, NL3D::CMRMParameters::NLods, normalizeBaseMeshSkin(), NL3D::CVertexBuffer::PaletteSkinFlag, NL3D::CMRMParameters::SkinReduction, NL3D::CMesh::CMeshBuild::SkinWeights, NL3D::CMesh::CMeshBuild::VertexFlags, and NL3D::CMesh::CMeshBuild::Vertices.
| void NL3D::CMRMBuilder::compileMRM | ( | const CMesh::CMeshBuild & | mbuild, | |
| std::vector< CMesh::CMeshBuild * > & | bsList, | |||
| const CMRMParameters & | params, | |||
| CMeshMRMGeom::CMeshBuildMRM & | mrmMesh, | |||
| uint | numMaxMaterial | |||
| ) |
Compile a MRM mesh info.
| mbuild | the input mesh | |
| params | the parameters of MRM process. | |
| mrmMesh | the result MRM mesh. |
Definition at line 3001 of file mrm_builder.cpp.
References _HasMeshInterfaces, _Skinned, _SkinReduction, buildAllLods(), buildBlendShapes(), buildFinalMRM(), buildMeshBuildMrm(), buildMrmBaseMesh(), buildMRMSewingMeshes(), NL3D::CMeshMRMGeom::CMeshBuildMRM::DistanceCoarsest, NL3D::CMRMParameters::DistanceCoarsest, NL3D::CMeshMRMGeom::CMeshBuildMRM::DistanceFinest, NL3D::CMRMParameters::DistanceFinest, NL3D::CMeshMRMGeom::CMeshBuildMRM::DistanceMiddle, NL3D::CMRMParameters::DistanceMiddle, NL3D::CMRMParameters::Divisor, nlassert, NL3D::CMRMParameters::NLods, normalizeBaseMeshSkin(), NL3D::CVertexBuffer::PaletteSkinFlag, NL3D::CMRMParameters::SkinReduction, NL3D::CMesh::CMeshBuild::SkinWeights, NL3D::CMesh::CMeshBuild::VertexFlags, and NL3D::CMesh::CMeshBuild::Vertices.
Referenced by NL3D::CMeshMRMSkinnedGeom::build(), and NL3D::CMeshMRMGeom::build().
| void NL3D::CMRMBuilder::computeBsVerticesAttributes | ( | std::vector< CMRMMesh > & | srcBsMeshs, | |
| std::vector< CMRMMesh > & | srcBsMeshsMod | |||
| ) | [private] |
Definition at line 242 of file mrm_builder.cpp.
References _CurrentLodComputed, _HasMeshInterfaces, _SewingMeshes, edgeContinue(), edgeNearUniqueMatFace(), getDeltaFaceNormals(), NL3D::CMRMSewingMesh::getNumCollapseEdge(), NL3D::CMRMSewingMesh::mustCollapseEdge(), TmpVertices, NL3D::CMRMEdge::v0, NL3D::CMRMEdge::v1, and vertexContinue().
Referenced by insertFaceIntoEdgeList().
Definition at line 167 of file mrm_builder.cpp.
References NumAttributes, NL3D::CMRMVertex::SharedFaces, TmpFaces, TmpVertices, NL3D::CMRMEdge::v0, and NL3D::CMRMEdge::v1.
Referenced by computeEdgeCost(), and edgeNearUniqueMatFace().
Definition at line 212 of file mrm_builder.cpp.
References edgeContinue(), NL3D::CMRMFaceBuild::getEdge(), NL3D::CMRMVertex::SharedFaces, TmpFaces, TmpVertices, NL3D::CMRMEdge::v0, and NL3D::CMRMEdge::v1.
Referenced by computeEdgeCost().
| bool NL3D::CMRMBuilder::faceShareWedges | ( | CMRMFaceBuild * | face, | |
| sint | attribId, | |||
| sint | numVertex1, | |||
| sint | numVertex2 | |||
| ) | [private] |
Definition at line 331 of file mrm_builder.cpp.
References NL3D::CMRMFaceBuild::getAssociatedWedge(), NL3D::CMRMAttribute::NbSharedFaces, NL3D::CMRMAttribute::Shared, and TmpAttributes.
Referenced by collapseEdge().
| sint NL3D::CMRMBuilder::findInsertAttributeInBaseMesh | ( | CMRMMesh & | baseMesh, | |
| sint | attId, | |||
| sint | vertexId, | |||
| const CVectorH & | att | |||
| ) | [private] |
Definition at line 1646 of file mrm_builder.cpp.
References _AttributeMap, NL3D::CMRMBuilder::CAttributeKey::Attribute, NL3D::CMRMMesh::Attributes, and NL3D::CMRMBuilder::CAttributeKey::VertexId.
Referenced by findInsertColorInBaseMesh(), findInsertNormalInBaseMesh(), and findInsertUvwInBaseMesh().
| sint NL3D::CMRMBuilder::findInsertColorInBaseMesh | ( | CMRMMesh & | baseMesh, | |
| sint | attId, | |||
| sint | vertexId, | |||
| CRGBA | col | |||
| ) | [private] |
Definition at line 1683 of file mrm_builder.cpp.
References NLMISC::CRGBA::A, NLMISC::CRGBA::B, findInsertAttributeInBaseMesh(), NLMISC::CRGBA::G, NLMISC::CRGBA::R, NLMISC::CVectorH::w, NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
Referenced by buildMrmBaseMesh().
| sint NL3D::CMRMBuilder::findInsertNormalInBaseMesh | ( | CMRMMesh & | baseMesh, | |
| sint | attId, | |||
| sint | vertexId, | |||
| const CVector & | normal | |||
| ) | [private] |
Definition at line 1673 of file mrm_builder.cpp.
References findInsertAttributeInBaseMesh(), and NLMISC::CVectorH::w.
Referenced by buildMrmBaseMesh().
| sint NL3D::CMRMBuilder::findInsertUvwInBaseMesh | ( | CMRMMesh & | baseMesh, | |
| sint | attId, | |||
| sint | vertexId, | |||
| const NLMISC::CUVW & | uvw | |||
| ) | [private] |
Definition at line 1695 of file mrm_builder.cpp.
References findInsertAttributeInBaseMesh(), NLMISC::CUVW::U, NLMISC::CUVW::V, NLMISC::CVectorH::w, NLMISC::CUVW::W, NLMISC::CVectorH::x, NLMISC::CVectorH::y, and NLMISC::CVectorH::z.
Referenced by buildMrmBaseMesh().
Definition at line 830 of file mrm_builder.cpp.
References NL3D::CMRMVertex::CollapsedTo, and TmpVertices.
Referenced by makeLODMesh().
Definition at line 839 of file mrm_builder.cpp.
References NL3D::CMRMAttribute::CollapsedTo, and TmpAttributes.
Referenced by makeLODMesh().
Definition at line 141 of file mrm_builder.cpp.
References NLMISC::CVector::normalize(), NL3D::CMRMVertex::SharedFaces, TmpFaces, and TmpVertices.
Referenced by computeEdgeCost().
| void NL3D::CMRMBuilder::init | ( | const CMRMMesh & | baseMesh | ) | [private] |
Definition at line 865 of file mrm_builder.cpp.
References _HasMeshInterfaces, _Skinned, NL3D::CMRMMesh::Attributes, NL3D::CMRMMesh::BlendShapes, NL3D::CMRMFace::Corner, EdgeCollapses, NL3D::CMRMMesh::Faces, insertFaceIntoEdgeList(), NL3D::CMRMMesh::InterfaceLinks, NL3D_MRM_MAX_ATTRIB, NL3D::CMRMMesh::NumAttributes, NumAttributes, NL3D::CMRMMesh::SkinWeights, TmpAttributes, TmpFaces, TmpVertices, NL3D::CMRMCorner::Vertex, and NL3D::CMRMMesh::Vertices.
Referenced by buildAllLods(), and makeFromMesh().
| void NL3D::CMRMBuilder::insertFaceIntoEdgeList | ( | CMRMFaceBuild & | tmpf | ) | [private] |
Definition at line 345 of file mrm_builder.cpp.
References computeEdgeCost(), EdgeCollapses, NL3D::CMRMFaceBuild::getEdge(), NL3D::CMRMFaceBuild::ValidIt0, NL3D::CMRMFaceBuild::ValidIt1, and NL3D::CMRMFaceBuild::ValidIt2.
Referenced by collapseEdges(), and init().
| void NL3D::CMRMBuilder::makeCoarserBS | ( | std::vector< CMRMBlendShape > & | csBsMeshs | ) | [private] |
Definition at line 1201 of file mrm_builder.cpp.
References NL3D::CMRMBlendShape::Attributes, NL3D::CMRMAttribute::BSCurrent, NL3D::CMRMVertex::BSCurrent, NL3D::CMRMAttribute::CoarserIndex, NL3D::CMRMVertex::CoarserIndex, NumAttributes, NL3D::CMRMBlendShape::NumAttributes, TmpAttributes, TmpVertices, and NL3D::CMRMBlendShape::Vertices.
Referenced by makeFromMesh().
| void NL3D::CMRMBuilder::makeFromMesh | ( | const CMRMMesh & | baseMesh, | |
| CMRMMeshGeom & | lodMesh, | |||
| CMRMMesh & | coarserMesh, | |||
| sint | nWantedFaces | |||
| ) | [private] |
this is the root call to compute a single lodMesh and the coarserMesh from a baseMesh.
Definition at line 1254 of file mrm_builder.cpp.
References NL3D::CMRMMesh::BlendShapes, collapseEdges(), init(), makeCoarserBS(), makeLODMesh(), and saveCoarserMesh().
Referenced by buildAllLods().
| void NL3D::CMRMBuilder::makeLODMesh | ( | CMRMMeshGeom & | lodMesh | ) | [private] |
Definition at line 1106 of file mrm_builder.cpp.
References NL3D::CMRMCorner::Attributes, NL3D::CMRMMeshGeom::CoarserFaces, NL3D::CMRMFace::Corner, followVertex(), followWedge(), nlassert, NumAttributes, TmpAttributes, TmpVertices, and NL3D::CMRMCorner::Vertex.
Referenced by makeFromMesh().
| void NL3D::CMRMBuilder::normalizeBaseMeshSkin | ( | CMRMMesh & | baseMesh | ) | const [private] |
Definition at line 1903 of file mrm_builder.cpp.
References _Skinned, nlassert, normalizeSkinWeight(), and NL3D::CMRMMesh::SkinWeights.
Referenced by compileMRM().
| CMesh::CSkinWeight NL3D::CMRMBuilder::normalizeSkinWeight | ( | const CMesh::CSkinWeight & | sw | ) | const [private] |
Definition at line 1856 of file mrm_builder.cpp.
References NL3D::CMesh::CSkinWeight::MatrixId, NL3D::CTmpVertexWeight::MatrixId, NL3D_MESH_SKINNING_MAX_MATRIX, NL3D::CTmpVertexWeight::Weight, and NL3D::CMesh::CSkinWeight::Weights.
Referenced by normalizeBaseMeshSkin().
| void NL3D::CMRMBuilder::removeFaceFromEdgeList | ( | CMRMFaceBuild & | f | ) | [private] |
Definition at line 365 of file mrm_builder.cpp.
References EdgeCollapses, NL3D::CMRMFaceBuild::It0, NL3D::CMRMFaceBuild::It1, NL3D::CMRMFaceBuild::It2, NL3D::CMRMFaceBuild::ValidIt0, NL3D::CMRMFaceBuild::ValidIt1, and NL3D::CMRMFaceBuild::ValidIt2.
Referenced by collapseEdge(), and collapseEdges().
| void NL3D::CMRMBuilder::saveCoarserMesh | ( | CMRMMesh & | coarserMesh | ) | [private] |
Definition at line 1008 of file mrm_builder.cpp.
References _HasMeshInterfaces, _Skinned, NL3D::CMRMCorner::Attributes, NL3D::CMRMMesh::Attributes, NL3D::CMRMAttribute::CoarserIndex, NL3D::CMRMVertex::CoarserIndex, NL3D::CMRMAttribute::CollapsedTo, NL3D::CMRMVertex::CollapsedTo, NL3D::CMRMFace::Corner, NL3D::CMRMAttribute::Current, NL3D::CMRMVertex::Current, NL3D::CMRMVertex::CurrentSW, NL3D::CMRMFaceBuild::Deleted, NL3D::CMRMMesh::Faces, NL3D::CMRMVertex::InterfaceLink, NL3D::CMRMMesh::InterfaceLinks, NL3D::CMRMFace::MaterialId, NL3D_MRM_MAX_ATTRIB, nlassert, NumAttributes, NL3D::CMRMMesh::NumAttributes, NL3D::CMRMMesh::SkinWeights, TmpAttributes, TmpFaces, TmpVertices, NL3D::CMRMCorner::Vertex, and NL3D::CMRMMesh::Vertices.
Referenced by makeFromMesh().
Definition at line 106 of file mrm_builder.cpp.
References NL3D::CMRMFace::Corner, NL3D::CMRMFaceBuild::getEdge(), NL3D::CMRMVertex::SharedFaces, TmpFaces, TmpVertices, and NL3D::CMRMCorner::Vertex.
Referenced by collapseEdge().
Definition at line 101 of file mrm_builder.cpp.
References vertexHasOneMaterial(), and vertexHasOneWedge().
Referenced by collapseEdge(), and computeEdgeCost().
Definition at line 88 of file mrm_builder.cpp.
References NL3D::CMRMVertex::SharedFaces, TmpFaces, and TmpVertices.
Referenced by vertexContinue().
Definition at line 72 of file mrm_builder.cpp.
References NumAttributes, NL3D::CMRMVertex::SharedFaces, TmpFaces, and TmpVertices.
Referenced by vertexContinue().
TAttributeMap NL3D::CMRMBuilder::_AttributeMap[NL3D_MRM_MAX_ATTRIB] [private] |
Definition at line 227 of file mrm_builder.h.
Referenced by buildMrmBaseMesh(), and findInsertAttributeInBaseMesh().
uint NL3D::CMRMBuilder::_CurrentLodComputed [private] |
Definition at line 152 of file mrm_builder.h.
Referenced by buildAllLods(), collapseEdge(), and computeEdgeCost().
TGeomMap NL3D::CMRMBuilder::_GeomMap [private] |
Definition at line 178 of file mrm_builder.h.
Referenced by buildFinalMRM().
bool NL3D::CMRMBuilder::_HasMeshInterfaces [private] |
Definition at line 148 of file mrm_builder.h.
Referenced by buildMrmBaseMesh(), CMRMBuilder(), collapseEdge(), compileMRM(), computeEdgeCost(), init(), and saveCoarserMesh().
std::vector<CMRMSewingMesh> NL3D::CMRMBuilder::_SewingMeshes [private] |
Definition at line 150 of file mrm_builder.h.
Referenced by buildMRMSewingMeshes(), collapseEdge(), and computeEdgeCost().
bool NL3D::CMRMBuilder::_Skinned [private] |
Definition at line 99 of file mrm_builder.h.
Referenced by buildFinalMRM(), buildMeshBuildMrm(), buildMrmBaseMesh(), CMRMBuilder(), collapseEdge(), compileMRM(), init(), normalizeBaseMeshSkin(), and saveCoarserMesh().
If the current build is skinned, control the quality of the skinning redcution.
Definition at line 101 of file mrm_builder.h.
Referenced by collapseSkinWeight(), and compileMRM().
TEdgeMap NL3D::CMRMBuilder::EdgeCollapses [private] |
Definition at line 96 of file mrm_builder.h.
Referenced by collapseEdge(), collapseEdges(), init(), insertFaceIntoEdgeList(), and removeFaceFromEdgeList().
sint NL3D::CMRMBuilder::NumAttributes [private] |
Definition at line 92 of file mrm_builder.h.
Referenced by buildBlendShapes(), buildFinalMRM(), CMRMBuilder(), collapseEdge(), edgeContinue(), init(), makeCoarserBS(), makeLODMesh(), saveCoarserMesh(), and vertexHasOneWedge().
std::vector<CMRMAttribute> NL3D::CMRMBuilder::TmpAttributes[NL3D_MRM_MAX_ATTRIB] [private] |
Definition at line 90 of file mrm_builder.h.
Referenced by collapseEdge(), faceShareWedges(), followWedge(), init(), makeCoarserBS(), makeLODMesh(), and saveCoarserMesh().
std::vector<CMRMFaceBuild> NL3D::CMRMBuilder::TmpFaces [private] |
Definition at line 94 of file mrm_builder.h.
Referenced by collapseEdge(), collapseEdges(), edgeContinue(), edgeNearUniqueMatFace(), getDeltaFaceNormals(), init(), saveCoarserMesh(), vertexClosed(), vertexHasOneMaterial(), and vertexHasOneWedge().
std::vector<CMRMVertex> NL3D::CMRMBuilder::TmpVertices [private] |
Definition at line 88 of file mrm_builder.h.
Referenced by collapseEdge(), collapseEdges(), computeEdgeCost(), edgeContinue(), edgeNearUniqueMatFace(), followVertex(), getDeltaFaceNormals(), init(), makeCoarserBS(), makeLODMesh(), saveCoarserMesh(), vertexClosed(), vertexHasOneMaterial(), and vertexHasOneWedge().
1.6.1