#include <mesh.h>
Inheritance diagram for NL3D::CMesh:
Nevrax France
Definition at line 77 of file mesh.h.
Public Member Functions | |
void | build (CMeshBase::CMeshBaseBuild &mbuild, CMeshGeom &meshGeom) |
Build a mesh from material info, and a builded MeshGeom. WARNING: This has a side effect of deleting AnimatedMaterials. | |
void | build (CMeshBase::CMeshBaseBuild &mbase, CMeshBuild &mbuild) |
Build a mesh, replacing old. WARNING: This has a side effect of deleting AnimatedMaterials. | |
CMesh (const CMesh &mesh) | |
CMesh () | |
Constructor. | |
void | computeBonesId (CSkeletonModel *skeleton) |
Compute skinning id. | |
void | flushTextures (IDriver &driver, uint selectedTexture) |
Flush textures. | |
virtual std::string | getClassName ()=0 |
float | getDistMax () const |
const sint & | getRefCount () const |
bool | isLightable () const |
Is this mesh lightable? true if one of his materials is not a lightmap. NB: result stored in file. | |
CMesh & | operator= (const CMesh &mesh) |
void | optimizeMaterialUsage (std::vector< sint > &remap) |
void | serialMeshBase (NLMISC::IStream &f) throw (NLMISC::EStream) |
serial the base Part of this mesh. | |
void | setBlendShapes (std::vector< CBlendShape > &bs) |
void | setDistMax (float distMax) |
void | updateSkeletonUsage (CSkeletonModel *sm, bool increment) |
update Skeleton Usage. increment or decrement. | |
virtual bool | useLightingLocalAttenuation () const |
tells if the shape wants LocalAttenuation for RealTime lighting. Default is false | |
~CMesh () | |
dtor | |
From IShape | |
virtual bool | clip (const std::vector< CPlane > &pyramid, const CMatrix &worldMatrix) |
clip this mesh in a driver. | |
virtual CTransformShape * | createInstance (CScene &scene) |
Create a CMeshInstance, which contains materials. | |
virtual void | getAABBox (NLMISC::CAABBox &bbox) const |
Get bbox. | |
virtual float | getNumTriangles (float distance) |
get trinagle count. | |
NLMISC_DECLARE_CLASS (CMesh) | |
clip this mesh in a driver. | |
virtual void | profileSceneRender (CRenderTrav *rdrTrav, CTransformShape *trans, bool opaquePass) |
profiling | |
virtual void | render (IDriver *drv, CTransformShape *trans, bool opaquePass) |
render() this mesh in a driver. | |
virtual void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
serial this mesh. | |
Geometry accessors | |
const NLMISC::CAABBoxExt & | getBoundingBox () const |
get the extended axis aligned bounding box of the mesh | |
const CMeshGeom & | getMeshGeom () const |
Get the geom mesh. | |
uint | getNbMatrixBlock () const |
get the number of matrix block | |
uint | getNbRdrPass (uint matrixBlockIndex) const |
uint32 | getRdrPassMaterial (uint matrixBlockIndex, uint renderingPassIndex) const |
const CPrimitiveBlock & | getRdrPassPrimitiveBlock (uint matrixBlockIndex, uint renderingPassIndex) const |
const CVertexBuffer & | getVertexBuffer () const |
get the vertex buffer used by the mesh | |
Mesh Block Render Interface | |
virtual IMeshGeom * | supportMeshBlockRendering (CTransformShape *trans, float &polygonCount) const |
Data Fields | |
TLightMapInfo | _LightInfos |
sint | crefs |
CPtrInfo * | pinfo |
Static Public Attributes | |
CPtrInfo | NullPtrInfo |
Protected Types | |
typedef std::map< uint32, CMaterialBase > | TAnimatedMaterialMap |
Animated Material mgt. | |
Protected Member Functions | |
void | applyMaterialUsageOptim (const std::vector< bool > &materialUsed, std::vector< sint > &remap) |
void | buildMeshBase (CMeshBaseBuild &m) |
Just copy informations from a CMeshBaseBuild. | |
void | instanciateMeshBase (CMeshBaseInstance *mi, CScene *ownerScene) |
instanciate MeshBase part to an instance (a CMeshBaseInstance). | |
Protected Attributes | |
TAnimatedMaterialMap | _AnimatedMaterials |
std::vector< CMorphBase > | _AnimatedMorph |
bool | _AutoAnim |
CTrackDefaultRGBA | _DefaultLMFactor |
CTrackDefaultVector | _DefaultPivot |
CTrackDefaultVector | _DefaultPos |
Transform default tracks. Those default tracks are instancied, ie, CInstanceMesh will have the same and can't specialize it. | |
CTrackDefaultVector | _DefaultRotEuler |
CTrackDefaultQuat | _DefaultRotQuat |
CTrackDefaultVector | _DefaultScale |
float | _DistMax |
Default to -1. | |
bool | _IsLightable |
Is this mesh lightable?? | |
std::vector< CMaterial > | _Materials |
The Materials. | |
bool | _UseLightingLocalAttenuation |
Is this mesh Use Lighting Local Attenuation ?? | |
Private Attributes | |
CMeshGeom * | _MeshGeom |
Friends | |
struct | CPtrInfo |
|
Animated Material mgt.
Definition at line 239 of file mesh_base.h. |
|
Definition at line 76 of file mesh_base.h. Referenced by NL3D::CMeshBase::serialMeshBase(). |
|
Definition at line 111 of file mesh_base.h. |
|
Constructor.
Definition at line 2268 of file mesh.cpp. References _MeshGeom.
02269 { 02270 // create the MeshGeom 02271 _MeshGeom= new CMeshGeom; 02272 } |
|
dtor
Definition at line 2274 of file mesh.cpp. References _MeshGeom.
02275 { 02276 // delete the MeshGeom 02277 delete _MeshGeom; 02278 } |
|
Definition at line 2282 of file mesh.cpp. References _MeshGeom.
02283 { 02284 // create the MeshGeom 02285 _MeshGeom= new CMeshGeom(*mesh._MeshGeom); 02286 } |
|
delete any material not used, and build remap table (old to new). _AnimatedMaterials are reseted resetLodCharacterTexture(); is called Definition at line 333 of file mesh_base.cpp. References NL3D::CMeshBase::_AnimatedMaterials, NL3D::CMeshBase::_LightInfos, count, nlassert, NL3D::CMeshBase::resetLodCharacterTexture(), sint, NL3D::CMeshBase::CLightMapInfoList::StageList, and uint.
00334 { 00335 nlassert(_Materials.size()==materialUsed.size()); 00336 00337 // security reset 00338 resetLodCharacterTexture(); 00339 _AnimatedMaterials.clear(); 00340 00341 // init all ids to "Not Used" 00342 remap.clear(); 00343 remap.resize(_Materials.size(), -1); 00344 00345 // remove unused materials and build remap 00346 vector<CMaterial>::iterator itMat= _Materials.begin(); 00347 uint dstIdx= 0; 00348 uint i; 00349 for(i=0;i<materialUsed.size();i++) 00350 { 00351 // if used, still use it, and remap. 00352 if(materialUsed[i]) 00353 { 00354 remap[i]= dstIdx; 00355 itMat++; 00356 dstIdx++; 00357 } 00358 // remove from the array 00359 else 00360 { 00361 itMat= _Materials.erase(itMat); 00362 } 00363 } 00364 00365 // apply the remap to LightMaps infos 00366 const uint count = _LightInfos.size (); 00367 for (i=0; i<count; i++) 00368 { 00369 CLightMapInfoList &mapInfoList = _LightInfos[i]; 00370 std::list<CMeshBase::CLightMapInfoList::CMatStage>::iterator ite = mapInfoList.StageList.begin (); 00371 while (ite != mapInfoList.StageList.end ()) 00372 { 00373 sint newId= remap[ite->MatId]; 00374 // If material used 00375 if(newId>=0) 00376 { 00377 // apply remap on the material id 00378 ite->MatId= newId; 00379 ite++; 00380 } 00381 else 00382 { 00383 // remove it from list of light infos 00384 ite= mapInfoList.StageList.erase(ite); 00385 } 00386 } 00387 } 00388 } |
|
Build a mesh from material info, and a builded MeshGeom. WARNING: This has a side effect of deleting AnimatedMaterials. copy MeshBase info: materials .... Definition at line 2346 of file mesh.cpp. References _MeshGeom.
02347 { 02349 CMeshBase::buildMeshBase(mbuild); 02350 02351 // build the geometry. 02352 *_MeshGeom= meshGeom; 02353 } |
|
Build a mesh, replacing old. WARNING: This has a side effect of deleting AnimatedMaterials. copy MeshBase info: materials .... Definition at line 2305 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::build(), and NL3D::CMeshBase::CMeshBaseBuild::Materials. Referenced by NL3D::CreateDummyMesh().
02306 { 02308 CMeshBase::buildMeshBase (mbase); 02309 02310 // build the geometry. 02311 _MeshGeom->build (m, mbase.Materials.size()); 02312 } |
|
|
clip this mesh in a driver.
Reimplemented from NL3D::IShape. Definition at line 2379 of file mesh.cpp. References _MeshGeom, and NL3D::CMeshGeom::clip().
02380 { 02381 return _MeshGeom->clip(pyramid, worldMatrix); 02382 } |
|
Compute skinning id.
Definition at line 2468 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::computeBonesId(), and nlassert. Referenced by NL3D::CMeshInstance::getSkinBoneUsage(), and NL3D::CMeshInstance::setApplySkin().
|
|
Create a CMeshInstance, which contains materials.
Reimplemented from NL3D::IShape. Definition at line 2357 of file mesh.cpp. References _MeshGeom, NL3D::CScene::createModel(), NL3D::CMeshGeom::initInstance(), NL3D::CMeshInstance::initRenderFilterType(), and NL3D::CTransformShape::Shape.
02358 { 02359 // Create a CMeshInstance, an instance of a mesh. 02360 //=============================================== 02361 CMeshInstance *mi= (CMeshInstance*)scene.createModel(NL3D::MeshInstanceId); 02362 mi->Shape= this; 02363 02364 // instanciate the material part of the Mesh, ie the CMeshBase. 02365 CMeshBase::instanciateMeshBase(mi, &scene); 02366 02367 02368 // do some instance init for MeshGeom 02369 _MeshGeom->initInstance(mi); 02370 02371 // init render Filter 02372 mi->initRenderFilterType(); 02373 02374 return mi; 02375 } |
|
Flush textures. Flush material textures Implements NL3D::IShape. Definition at line 392 of file mesh_base.cpp. References uint.
00393 { 00394 // Mat count 00395 uint matCount=_Materials.size(); 00396 00397 // Flush each material textures 00398 for (uint mat=0; mat<matCount; mat++) 00399 { 00401 _Materials[mat].flushTextures (driver, selectedTexture); 00402 } 00403 } |
|
Get bbox.
Reimplemented from NL3D::IShape. Definition at line 271 of file mesh.h. References NLMISC::CAABBoxExt::getAABBox(), and getBoundingBox().
00271 {bbox= getBoundingBox().getAABBox();} |
|
return NULL if this material is NOT animated. (or if material do not exist)
Definition at line 90 of file mesh_base.cpp. References NL3D::CMeshBase::_AnimatedMaterials, and uint.
00091 { 00092 TAnimatedMaterialMap::iterator it; 00093 it= _AnimatedMaterials.find(id); 00094 if(it!=_AnimatedMaterials.end()) 00095 return &it->second; 00096 else 00097 return NULL; 00098 } |
|
Definition at line 212 of file mesh_base.h. References NL3D::CMeshBase::_AutoAnim. Referenced by NL3D::CScene::createInstance(), and NL3D::CMeshBaseInstance::traverseHrc().
00212 { return _AutoAnim; } |
|
get the extended axis aligned bounding box of the mesh
Definition at line 2427 of file mesh.cpp. References _MeshGeom, and NL3D::CMeshGeom::getBoundingBox(). Referenced by getAABBox().
02428 { 02429 return _MeshGeom->getBoundingBox(); 02430 } |
|
Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc. Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize(). |
|
Definition at line 166 of file mesh_base.h. References NL3D::CMeshBase::_DefaultLMFactor.
00166 {return &_DefaultLMFactor;} |
|
Definition at line 162 of file mesh_base.h. References NL3D::CMeshBase::_DefaultPivot. Referenced by NL3D::CMeshBaseInstance::getDefaultTrack().
00162 {return &_DefaultPivot;} |
|
Definition at line 161 of file mesh_base.h. Referenced by NL3D::CMeshBaseInstance::getDefaultTrack().
00161 {return &_DefaultPos;} |
|
Definition at line 163 of file mesh_base.h. References NL3D::CMeshBase::_DefaultRotEuler. Referenced by NL3D::CMeshBaseInstance::getDefaultTrack().
00163 {return &_DefaultRotEuler;} |
|
Definition at line 164 of file mesh_base.h. References NL3D::CMeshBase::_DefaultRotQuat. Referenced by NL3D::CMeshBaseInstance::getDefaultTrack().
00164 {return &_DefaultRotQuat;} |
|
Definition at line 165 of file mesh_base.h. References NL3D::CMeshBase::_DefaultScale. Referenced by NL3D::CMeshBaseInstance::getDefaultTrack().
00165 {return &_DefaultScale;} |
|
return the DistMax where the shape is no more displayed. Default is to return -1, meaning DistMax = infinite. Definition at line 112 of file shape.h.
00112 {return _DistMax;} |
|
get the lod texture info. see CSkeletonModel Lod system. NULL per default. NB: serialised
Definition at line 223 of file mesh_base.h. References NL3D::CMeshBase::_LodCharacterTexture. Referenced by NL3D::CSkeletonModel::computeLodTexture().
00223 {return _LodCharacterTexture;}
|
|
Get a material, const version.
Definition at line 184 of file mesh_base.h. References uint.
00185 { 00186 return _Materials[id]; 00187 } |
|
Get a material.
Definition at line 179 of file mesh_base.h. References uint. Referenced by NL3D::CZoneLighter::addTriangles(), NL3D::CCoarseMeshBuild::buildBitmap(), NL3D::CPSConstraintMesh::CMeshDisplayShare::buildRdrPassSet(), NL3D::CheckForLightableFacesInMesh(), NL3D::CheckForOpaqueAndTransparentFacesInMesh(), NL3D::CShapeBank::processWaitingShapes(), NL3D::CCoarseMeshBuild::remapCoordinates(), NL3D::CAsyncFileManager3D::CMeshLoad::run(), and NL3D::CMeshBaseInstance::selectTextureSet().
00180 { 00181 return _Materials[id]; 00182 } |
|
Get the geom mesh.
Definition at line 2463 of file mesh.cpp. References _MeshGeom. Referenced by NL3D::CZoneLighter::addTriangles(), NL3D::CInstanceLighter::addTriangles(), NL3D::UShape::getMeshTriangles(), NL3D::CMeshInstance::getSkinBoneUsage(), NL3D::CMeshInstance::initRenderFilterType(), NL3D::CMeshInstance::isSkinnable(), and NL3D::CMeshInstance::renderSkin().
02464 { 02465 return *_MeshGeom; 02466 } |
|
Get the number of materials in the mesh.
Definition at line 173 of file mesh_base.h. References uint. Referenced by NL3D::CShapeBank::processWaitingShapes(), NL3D::CAsyncFileManager3D::CMeshLoad::run(), and NL3D::CMeshBaseInstance::selectTextureSet().
00174 { 00175 return _Materials.size(); 00176 } |
|
get the number of matrix block
Definition at line 2437 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::getNbMatrixBlock(), and uint. Referenced by NL3D::CPSConstraintMesh::CMeshDisplayShare::buildRdrPassSet(), NL3D::CMeshInstance::createShadowMap(), NL3D::getMeshNumTri(), optimizeMaterialUsage(), and NL3D::CMeshInstance::renderIntoSkeletonShadowMap().
02438 { 02439 return _MeshGeom->getNbMatrixBlock(); 02440 } |
|
get the number of rendering pass for a given matrix block
Definition at line 2442 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::getNbRdrPass(), and uint. Referenced by NL3D::CPSConstraintMesh::CMeshDisplayShare::buildRdrPassSet(), NL3D::CheckForLightableFacesInMesh(), NL3D::CheckForOpaqueAndTransparentFacesInMesh(), NL3D::CMeshInstance::createShadowMap(), NL3D::getMeshNumTri(), optimizeMaterialUsage(), and NL3D::CMeshInstance::renderIntoSkeletonShadowMap().
02443 { 02444 return _MeshGeom->getNbRdrPass(matrixBlockIndex) ; 02445 } |
|
get trinagle count.
Implements NL3D::IShape. Definition at line 2457 of file mesh.cpp.
02458 { 02459 // A CMesh do not degrad himself, so return 0, to not be taken into account. 02460 return 0; 02461 } |
|
get the material ID associated with a rendering pass of a matrix block
Definition at line 2452 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::getRdrPassMaterial(), uint, and uint32. Referenced by NL3D::CPSConstraintMesh::CMeshDisplayShare::buildRdrPassSet(), NL3D::CheckForLightableFacesInMesh(), NL3D::CheckForOpaqueAndTransparentFacesInMesh(), and optimizeMaterialUsage().
02453 { 02454 return _MeshGeom->getRdrPassMaterial(matrixBlockIndex, renderingPassIndex) ; 02455 } |
|
get the primitive block associated with a rendering pass of a matrix block
Definition at line 2447 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::getRdrPassPrimitiveBlock(), and uint. Referenced by NL3D::CPSConstraintMesh::CMeshDisplayShare::buildRdrPassSet(), NL3D::CMeshInstance::createShadowMap(), NL3D::getMeshNumTri(), and NL3D::CMeshInstance::renderIntoSkeletonShadowMap().
02448 { 02449 return _MeshGeom->getRdrPassPrimitiveBlock(matrixBlockIndex, renderingPassIndex) ; 02450 } |
|
Definition at line 70 of file smart_ptr.h. References NLMISC::CRefCount::crefs, and sint.
00071 { 00072 return crefs; 00073 } |
|
get the vertex buffer used by the mesh
Definition at line 2432 of file mesh.cpp. References _MeshGeom, and NL3D::CMeshGeom::getVertexBuffer(). Referenced by NL3D::CPSConstraintMesh::CMeshDisplayShare::buildRdrPassSet(), NL3D::CPSConstraintMesh::CMeshDisplayShare::buildVB(), NL3D::CMeshInstance::createShadowMap(), NL3D::CPSConstraintMeshHelper::drawMeshs(), NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(), NL3D::CMeshInstance::renderIntoSkeletonShadowMap(), and NL3D::CPSConstraintMesh::update().
02433 { 02434 return _MeshGeom->getVertexBuffer() ; 02435 } |
|
instanciate MeshBase part to an instance (a CMeshBaseInstance).
Definition at line 261 of file mesh_base.cpp. References NL3D::CMeshBase::_AnimatedMaterials, NL3D::CMeshBaseInstance::_AnimatedMaterials, NL3D::CMeshBase::_AnimatedMorph, NL3D::CMeshBaseInstance::_AnimatedMorphFactor, NL3D::CMeshBase::_DefaultPivot, NL3D::CMeshBase::_DefaultRotQuat, NL3D::CMeshBase::_DefaultScale, NL3D::CMeshBaseInstance::AsyncTextures, NL3D::CAnimatedValueQuat, NL3D::CAnimatedValueVector, NL3D::CTrackDefaultBlendable< CQuat >::getValue(), NL3D::CTrackDefaultBlendable< CVector >::getValue(), NL3D::CMeshBaseInstance::Materials, nlassert, NL3D::CMeshBaseInstance::selectTextureSet(), NL3D::IAnimatable::setFather(), NL3D::CTransform::setIsBigLightable(), NL3D::CTransform::setIsLightable(), NL3D::CAnimatedMaterial::setMaterial(), NL3D::CTransform::setOpacity(), NL3D::CTransform::setTransparency(), and uint32.
00262 { 00263 uint32 i; 00264 00265 00266 // setup animated blendShapes 00267 //=========================== 00268 mi->_AnimatedMorphFactor.reserve(_AnimatedMorph.size()); 00269 for(i = 0; i < _AnimatedMorph.size(); ++i) 00270 { 00271 CAnimatedMorph am(&_AnimatedMorph[i]); 00272 mi->_AnimatedMorphFactor.push_back (am); 00273 } 00274 00275 // setup materials. 00276 //================= 00277 // Copy material. Textures are referenced only 00278 mi->Materials= _Materials; 00279 00280 // Instanciate selectable textures (use default set) 00281 mi->selectTextureSet(0); 00282 00283 // prepare possible AsyncTextures 00284 mi->AsyncTextures.resize(_Materials.size()); 00285 00286 // setup animated materials. 00287 //========================== 00288 TAnimatedMaterialMap::iterator it; 00289 mi->_AnimatedMaterials.reserve(_AnimatedMaterials.size()); 00290 for(it= _AnimatedMaterials.begin(); it!= _AnimatedMaterials.end(); it++) 00291 { 00292 CAnimatedMaterial aniMat(&it->second); 00293 00294 // set the target instance material. 00295 nlassert(it->first < mi->Materials.size()); 00296 aniMat.setMaterial(&mi->Materials[it->first]); 00297 00298 // Must set the Animatable father of the animated material (the mesh_base_instance!). 00299 aniMat.setFather(mi, CMeshBaseInstance::OwnerBit); 00300 00301 // Append this animated material. 00302 mi->_AnimatedMaterials.push_back(aniMat); 00303 } 00304 00305 // Misc 00306 //========================== 00307 00308 // Setup position with the default value 00309 mi->ITransformable::setPos( ((CAnimatedValueVector&)_DefaultPos.getValue()).Value ); 00310 mi->ITransformable::setRotQuat( ((CAnimatedValueQuat&)_DefaultRotQuat.getValue()).Value ); 00311 mi->ITransformable::setScale( ((CAnimatedValueVector&)_DefaultScale.getValue()).Value ); 00312 mi->ITransformable::setPivot( ((CAnimatedValueVector&)_DefaultPivot.getValue()).Value ); 00313 00314 // Check materials for transparency 00315 mi->setTransparency( false ); 00316 mi->setOpacity( false ); 00317 for( i = 0; i < mi->Materials.size(); ++i ) 00318 if( mi->Materials[i].getBlend() ) 00319 mi->setTransparency( true ); 00320 else 00321 mi->setOpacity( true ); 00322 00323 // if the mesh is lightable, then the instance is 00324 mi->setIsLightable(this->isLightable()); 00325 00326 // a mesh is considered big for lightable if it uses localAttenuation 00327 mi->setIsBigLightable(this->useLightingLocalAttenuation()); 00328 00329 } |
|
Is this mesh lightable? true if one of his materials is not a lightmap. NB: result stored in file.
Definition at line 198 of file mesh_base.h. References NL3D::CMeshBase::_IsLightable. Referenced by NL3D::CInstanceLighter::light().
00198 {return _IsLightable;} |
|
clip this mesh in a driver.
|
|
Definition at line 2290 of file mesh.cpp. References _MeshGeom.
|
|
Optimize material use. If a material in CMeshBase is not used by any renderPasses, it is removed, and ids are updated. WARNING: This has a side effect of deleting AnimatedMaterials.
Definition at line 2316 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::applyMaterialRemap(), getNbMatrixBlock(), getNbRdrPass(), getRdrPassMaterial(), size, and uint.
02317 { 02318 // For each material, count usage. 02319 vector<bool> materialUsed; 02320 materialUsed.resize(CMeshBase::_Materials.size(), false); 02321 for(uint mb=0;mb<getNbMatrixBlock();mb++) 02322 { 02323 for(uint rp=0;rp<getNbRdrPass(mb);rp++) 02324 { 02325 uint matId= getRdrPassMaterial(mb, rp); 02326 // flag as used. 02327 materialUsed[matId]= true; 02328 } 02329 } 02330 02331 // Apply it to meshBase 02332 CMeshBase::applyMaterialUsageOptim(materialUsed, remap); 02333 02334 // Apply lut to meshGeom. 02335 _MeshGeom->applyMaterialRemap(remap); 02336 } |
|
profiling
Reimplemented from NL3D::IShape. Definition at line 2497 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::profileSceneRender(), and uint32.
02498 { 02499 // 0 or 0xFFFFFFFF 02500 uint32 mask= (0-(uint32)passOpaque); 02501 uint32 rdrFlags; 02502 // select rdrFlags, without ifs. 02503 rdrFlags= mask & (IMeshGeom::RenderOpaqueMaterial | IMeshGeom::RenderPassOpaque); 02504 rdrFlags|= ~mask & (IMeshGeom::RenderTransparentMaterial); 02505 // render the mesh 02506 _MeshGeom->profileSceneRender(rdrTrav, trans, 0, rdrFlags); 02507 } |
|
render() this mesh in a driver.
Implements NL3D::IShape. Definition at line 2386 of file mesh.cpp. References _MeshGeom, NL3D::CMeshGeom::render(), and uint32.
02387 { 02388 // 0 or 0xFFFFFFFF 02389 uint32 mask= (0-(uint32)passOpaque); 02390 uint32 rdrFlags; 02391 // select rdrFlags, without ifs. 02392 rdrFlags= mask & (IMeshGeom::RenderOpaqueMaterial | IMeshGeom::RenderPassOpaque); 02393 rdrFlags|= ~mask & (IMeshGeom::RenderTransparentMaterial); 02394 // render the mesh 02395 _MeshGeom->render(drv, trans, 0, rdrFlags, 1); 02396 } |
|
reset the lod texture info. see CSkeletonModel Lod system.
Definition at line 436 of file mesh_base.cpp. References NL3D::CMeshBase::_LodCharacterTexture. Referenced by NL3D::CMeshBase::applyMaterialUsageOptim(), NL3D::CMeshBase::setupLodCharacterTexture(), and NL3D::CMeshBase::~CMeshBase().
00437 { 00438 if(_LodCharacterTexture) 00439 { 00440 delete _LodCharacterTexture; 00441 _LodCharacterTexture= NULL; 00442 } 00443 } |
|
serial this mesh.
Implements NLMISC::IStreamable. Definition at line 2400 of file mesh.cpp. References sint.
02401 { 02402 /* 02403 Version 6: 02404 - cut in serialisation, because of: 02405 - bad ITexture serialisation (with no version....) => must cut. (see CMeshBase serial). 02406 - because of this and to simplify, make a cut too in CMesh serialisation. 02407 NB : all old version code is dropped. 02408 */ 02409 sint ver= f.serialVersion(6); 02410 02411 02412 if(ver<6) 02413 throw NLMISC::EStream(f, "Mesh in Stream is too old (Mesh version < 6)"); 02414 02415 02416 // serial Materials infos contained in CMeshBase. 02417 CMeshBase::serialMeshBase(f); 02418 02419 02420 // serial geometry. 02421 _MeshGeom->serial(f); 02422 02423 } |
|
serial the base Part of this mesh.
Definition at line 149 of file mesh_base.cpp. References NL3D::CMeshBase::_AnimatedMaterials, NL3D::CMeshBase::_AnimatedMorph, NL3D::CMeshBase::_AutoAnim, NL3D::CMeshBase::_DefaultPivot, NL3D::CMeshBase::_DefaultRotEuler, NL3D::CMeshBase::_DefaultRotQuat, NL3D::CMeshBase::_DefaultScale, NL3D::CMeshBase::_IsLightable, NL3D::CMeshBase::_LightInfos, NL3D::CMeshBase::_LodCharacterTexture, NL3D::CMeshBase::_UseLightingLocalAttenuation, NL3D::CMeshBase::computeIsLightable(), sint, and NL3D::CMeshBase::TLightInfoMapV7.
00150 { 00151 /* 00152 Version 8: 00153 - new format for CLightMapInfoList 00154 Version 7: 00155 - _LodCharacterTexture 00156 Version 6: 00157 - _DistMax 00158 Version 5: 00159 - _AutoAnim 00160 Version 4: 00161 - _UseLightingLocalAttenuation 00162 Version 3: 00163 - _IsLightable 00164 Version 2: 00165 - Added Blend Shapes factors 00166 Version 1: 00167 - Cut in version because of badly coded ITexture* serialisation. throw an exception if 00168 find a version < 1. 00169 Version 0: 00170 - 1st version. 00171 */ 00172 sint ver = f.serialVersion(8); 00173 00174 if (ver >= 2) 00175 { 00176 f.serialCont (_AnimatedMorph); 00177 } 00178 00179 if(ver<1) 00180 throw NLMISC::EStream(f, "Mesh in Stream is too old (MeshBase version < 1)"); 00181 00182 f.serial (_DefaultPos); 00183 f.serial (_DefaultPivot); 00184 f.serial (_DefaultRotEuler); 00185 f.serial (_DefaultRotQuat); 00186 f.serial (_DefaultScale); 00187 00188 f.serialCont(_Materials); 00189 f.serialCont(_AnimatedMaterials); 00190 00191 if(ver >= 8) 00192 f.serialCont(_LightInfos); 00193 else 00194 { 00195 TLightInfoMapV7 temp; 00196 f.serialCont(temp); 00197 } 00198 00199 if(ver>=3) 00200 // read/write _IsLightable flag. 00201 f.serial(_IsLightable); 00202 else if( f.isReading() ) 00203 // update _IsLightable flag. 00204 computeIsLightable(); 00205 00206 if(ver>=4) 00207 f.serial(_UseLightingLocalAttenuation); 00208 else if( f.isReading() ) 00209 _UseLightingLocalAttenuation= false; 00210 00211 if (ver >= 5) 00212 { 00213 f.serial(_AutoAnim); 00214 } 00215 00216 if(ver >= 6) 00217 f.serial(_DistMax); 00218 00219 if(ver >= 7) 00220 f.serialPtr(_LodCharacterTexture); 00221 00222 } |
|
setup a material as animated. Material must exist or else no-op.
Definition at line 77 of file mesh_base.cpp. References NL3D::CMeshBase::_AnimatedMaterials, nlassert, and uint.
00078 { 00079 nlassert(!matName.empty()); 00080 if(id<_Materials.size()) 00081 { 00082 // add / replace animated material. 00083 _AnimatedMaterials[id].Name= matName; 00084 // copy Material default. 00085 _AnimatedMaterials[id].copyFromMaterial(&_Materials[id]); 00086 } 00087 } |
|
Tells that the model instanciated from this shape should be automatically animated. If so the scene will search for an automatic anim that has the same name than this shape and will bind it. This state is serialized. NB: This is a clue to scene::createInstance, a call to createInstance of this object won't make the animation binding. Definition at line 210 of file mesh_base.h. References NL3D::CMeshBase::_AutoAnim.
00210 { _AutoAnim = on; } |
|
Definition at line 2340 of file mesh.cpp. References _MeshGeom, and NL3D::CMeshGeom::setBlendShapes().
02341 { 02342 _MeshGeom->setBlendShapes (bs); 02343 } |
|
setup the DistMax where the shape is no more displayed. Take effect only for the next created instances. setting <0 means -1 and so means DistMax = infinite. Definition at line 66 of file shape.cpp. Referenced by NL3D::CFlareShape::CFlareShape().
|
|
setup the lod texture info. see CSkeletonModel Lod system
Definition at line 446 of file mesh_base.cpp. References NL3D::CMeshBase::_LodCharacterTexture, and NL3D::CMeshBase::resetLodCharacterTexture().
00447 { 00448 // delete old 00449 resetLodCharacterTexture(); 00450 // seutp new 00451 _LodCharacterTexture= new CLodCharacterTexture; 00452 *_LodCharacterTexture= lodText; 00453 } |
|
return !NULL if this shape can support MeshBlock rendering for a special instance. NB: Mesh Block render cannot occurs if the Mesh is Skinned/MeshMorphed. NB: Mesh Block render can occurs only in Opaque pass NB: Mesh block render can occurs only for CMeshBase meshes.
Reimplemented from NL3D::IShape. Definition at line 2483 of file mesh.cpp. References _MeshGeom, and NL3D::CMeshGeom::supportMeshBlockRendering().
|
|
update Skeleton Usage. increment or decrement.
Definition at line 2476 of file mesh.cpp. References _MeshGeom, nlassert, and NL3D::CMeshGeom::updateSkeletonUsage(). Referenced by NL3D::CMeshInstance::setApplySkin().
|
|
tells if the shape wants LocalAttenuation for RealTime lighting. Default is false
Reimplemented from NL3D::IShape. Definition at line 429 of file mesh_base.cpp. References NL3D::CMeshBase::_UseLightingLocalAttenuation.
00430 { 00431 return _UseLightingLocalAttenuation; 00432 } |
|
Definition at line 67 of file smart_ptr.h. |
|
Definition at line 240 of file mesh_base.h. Referenced by NL3D::CMeshBase::applyMaterialUsageOptim(), NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::getAnimatedMaterial(), NL3D::CMeshBase::instanciateMeshBase(), NL3D::CMeshBase::serialMeshBase(), and NL3D::CMeshBase::setAnimatedMaterial(). |
|
Definition at line 251 of file mesh_base.h. Referenced by NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::instanciateMeshBase(), and NL3D::CMeshBase::serialMeshBase(). |
|
Definition at line 258 of file mesh_base.h. Referenced by NL3D::CMeshBase::CMeshBase(), NL3D::CMeshBase::getAutoAnim(), NL3D::CMeshBase::serialMeshBase(), and NL3D::CMeshBase::setAutoAnim(). |
|
Definition at line 249 of file mesh_base.h. Referenced by NL3D::CMeshBase::CMeshBase(), and NL3D::CMeshBase::getDefaultLMFactor(). |
|
Definition at line 245 of file mesh_base.h. Referenced by NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::CMeshBase(), NL3D::CMeshBase::getDefaultPivot(), NL3D::CMeshBase::instanciateMeshBase(), and NL3D::CMeshBase::serialMeshBase(). |
|
Transform default tracks. Those default tracks are instancied, ie, CInstanceMesh will have the same and can't specialize it.
Definition at line 244 of file mesh_base.h. |
|
Definition at line 246 of file mesh_base.h. Referenced by NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::CMeshBase(), NL3D::CMeshBase::getDefaultRotEuler(), and NL3D::CMeshBase::serialMeshBase(). |
|
Definition at line 247 of file mesh_base.h. Referenced by NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::CMeshBase(), NL3D::CMeshBase::getDefaultRotQuat(), NL3D::CMeshBase::instanciateMeshBase(), and NL3D::CMeshBase::serialMeshBase(). |
|
Definition at line 248 of file mesh_base.h. Referenced by NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::CMeshBase(), NL3D::CMeshBase::getDefaultScale(), NL3D::CMeshBase::instanciateMeshBase(), and NL3D::CMeshBase::serialMeshBase(). |
|
Default to -1.
|
|
Is this mesh lightable??
Definition at line 254 of file mesh_base.h. Referenced by NL3D::CMeshBase::computeIsLightable(), NL3D::CMeshBase::isLightable(), and NL3D::CMeshBase::serialMeshBase(). |
|
|
The Materials.
Definition at line 230 of file mesh_base.h. |
|
Definition at line 321 of file mesh.h. Referenced by build(), clip(), CMesh(), computeBonesId(), createInstance(), getBoundingBox(), getMeshGeom(), getNbMatrixBlock(), getNbRdrPass(), getRdrPassMaterial(), getRdrPassPrimitiveBlock(), getVertexBuffer(), operator=(), optimizeMaterialUsage(), profileSceneRender(), render(), setBlendShapes(), supportMeshBlockRendering(), updateSkeletonUsage(), and ~CMesh(). |
|
Is this mesh Use Lighting Local Attenuation ??
Definition at line 256 of file mesh_base.h. Referenced by NL3D::CMeshBase::buildMeshBase(), NL3D::CMeshBase::CMeshBase(), NL3D::CMeshBase::serialMeshBase(), and NL3D::CMeshBase::useLightingLocalAttenuation(). |
|
Definition at line 79 of file smart_ptr.h. Referenced by NLMISC::CRefCount::CRefCount(), NLMISC::CRefCount::getRefCount(), and NLMISC::CRefCount::~CRefCount(). |
|
Referenced by NLMISC::CRefCount::CRefCount(). |
|
Definition at line 80 of file smart_ptr.h. Referenced by NLMISC::CRefCount::CRefCount(), and NLMISC::CRefCount::~CRefCount(). |