# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NL3D::USkeleton Class Reference

Game interface for manipulating Skeleton. More...

#include <u_skeleton.h>

Inheritance diagram for NL3D::USkeleton:

NL3D::UTransform NL3D::UTransformable NL3D::CSkeletonUser List of all members.

Public Methods

Skin operation.
virtual bool bindSkin (UInstance *mi)=0
 bind a MeshInstance skin to the skeleton. More...

virtual void stickObject (UTransform *mi, uint boneId)=0
 parent a CTransform to a bone of the skeleton. More...

virtual void stickObjectEx (UTransform *mi, uint boneId, bool forceCLod)=0
 same method as stickObject(), but if you set forceCLod as true, then this object will be visible even if the skeleton father is in CLod state (ie displayed with a CLodCharacterShape) NB: if "mi" is a skeleton model, forceCLod is considerer true, whatever the value passed in. More...

virtual void detachSkeletonSon (UTransform *mi)=0
 unparent a CTransform from a bone of the skeleton, or unbind a skin. More...

Bone access.
virtual uint getNumBones () const=0
 retrieve the number of bones. More...

virtual UBonegetBone (uint boneId)=0
 retrieve the bone. nlerror if not here. (>=getNumBones()). More...

virtual sint getBoneIdByName (const std::string &boneName) const=0
 retrieve the bone Id, by his name. -1 if not found. More...

virtual bool isBoneComputed (uint boneId) const=0
 Tell if a bone has been computed in the last frame or not. false if boneId is invalid. More...

Bone Lod interaction / MRM
virtual uint getNumBoneComputed () const=0
 return the number of bones currently animated/computed (because of bindSkin()/stickObject() / Lod system). More...

virtual void setInterpolationDistance (float dist)=0
 change the Lod Bone interpolation distance (in meters). More...

virtual float getInterpolationDistance () const=0
 see setInterpolationDistance(). More...

virtual void setShapeDistMax (float distMax)=0
 Change Max Display Skeleton distance. More...

virtual float getShapeDistMax () const=0
 see setShapeDistMax(). More...

virtual void changeMRMDistanceSetup (float distanceFinest, float distanceMiddle, float distanceCoarsest)=0
 Special version for skins. More...

CLod / Character Lod
virtual void setLodCharacterShape (sint shapeId)=0
 Change the Character Lod shape Id. More...

virtual sint getLodCharacterShape () const=0
 see setLodCharacterShape. More...

virtual void setLodCharacterAnimId (uint animId)=0
 Change/get the Character Lod anim setup. More...

virtual uint getLodCharacterAnimId () const=0
virtual void setLodCharacterAnimTime (TGlobalAnimationTime time)=0
virtual TGlobalAnimationTime getLodCharacterAnimTime () const=0
virtual void setLodCharacterWrapMode (bool wrapMode)=0
 tells if the animation must loop or clamp. More...

virtual bool getLodCharacterWrapMode () const=0
virtual bool isDisplayedAsLodCharacter () const=0
 True if the skeleton model and his skins have been displayed with a CLodCharacterShape at last scene render. More...

virtual void setLodCharacterDistance (float dist)=0
 This is the distance at which the skeleton use a CLodCharacterShape to display himself if 0, never display the skeleton as a CLodCharacterShape. More...

virtual float getLodCharacterDistance () const=0
 see setLodCharacterDistance. 0 if disabled. More...

virtual void computeLodTexture ()=0
 Call it when you want the system to recompute the Lod texture NB: Lod texturing is possible only in conjunction with AsyncTextureManager. More...

Misc.
virtual bool computeRenderedBBox (NLMISC::CAABBox &bbox)=0
 Retrieve the current approx BBox around the skeleton, computed in the last USene::render(). More...

virtual bool computeCurrentBBox (NLMISC::CAABBox &bbox, UPlayList *playList, double playTime=0, bool forceCompute=false)=0
 same as computeRenderedBBox() but force animation and compute of all bones => don't need render(), but slower. More...


Protected Methods

Object
 USkeleton ()
virtual ~USkeleton ()

Detailed Description

Game interface for manipulating Skeleton.

Author:
Lionel Berenguier , Nevrax France
Date:
2001

Definition at line 49 of file u_skeleton.h.


Constructor & Destructor Documentation

NL3D::USkeleton::USkeleton   [inline, protected]
 

Definition at line 55 of file u_skeleton.h.

virtual NL3D::USkeleton::~USkeleton   [inline, protected, virtual]
 

Definition at line 56 of file u_skeleton.h.


Member Function Documentation

virtual bool NL3D::USkeleton::bindSkin UInstance   mi [pure virtual]
 

bind a MeshInstance skin to the skeleton.

NB: ~UTransform() and ~USkeleton() call detachSkeletonSon(). NB: nlerror() if mi is not a UInstance. (ie a mesh instance). NB: an object can't be skinned and sticked at same time :) NB: replaced if already here. NB: when a skin is binded, the command hide(), show(), ... have no effect on it, until it is detachSkeletonSon()-ed

Returns:
false if mi is NULL or not skinnable, true otherwise

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::changeMRMDistanceSetup float    distanceFinest,
float    distanceMiddle,
float    distanceCoarsest
[pure virtual]
 

Special version for skins.

NB: skins never follow their original MRM distance setup, but follow this skeleton MRM setup. Default is 3-10-50. NB: Unlike UInstance::changeMRMDistanceSetup(), this setup applies to the SkeletonModel, not the shape. NB: no-op if distanceFinest<0, distanceMiddle<=distanceFinest or if distanceCoarsest<=distanceMiddle.

Parameters:
distanceFinest  The MRM has its max faces when dist<=distanceFinest.
distanceMiddle  The MRM has 50% of its faces at dist==distanceMiddle.
distanceCoarsest  The MRM has faces/Divisor (ie near 0) when dist>=distanceCoarsest.

Implemented in NL3D::CSkeletonUser.

virtual bool NL3D::USkeleton::computeCurrentBBox NLMISC::CAABBox   bbox,
UPlayList   playList,
double    playTime = 0,
bool    forceCompute = false
[pure virtual]
 

same as computeRenderedBBox() but force animation and compute of all bones => don't need render(), but slower.

for all used bones, extend the bbox with their pos

Parameters:
bbox  return the bbox of the skinned skeleton, local to the skeleton. If the skeleton is not skinned/sticked at all, bbox is not modified.
playList  set NULL if no one, else this playList will be played at the time playTime
forceCompute  force evaluation of bbox even if not skinned
Returns:
true if the bbox is computed, false otherwise.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::computeLodTexture   [pure virtual]
 

Call it when you want the system to recompute the Lod texture NB: Lod texturing is possible only in conjunction with AsyncTextureManager.

Hence, instances skinned to the skeleton should be in AsyncTextureMode. For best result, you should wait that each of these instances are isAsyncTextureReady() (texture loaded)

Implemented in NL3D::CSkeletonUser.

virtual bool NL3D::USkeleton::computeRenderedBBox NLMISC::CAABBox   bbox [pure virtual]
 

Retrieve the current approx BBox around the skeleton, computed in the last USene::render().

for all computed bones, extend the bbox with their pos

Parameters:
bbox  return the bbox of the skinned skeleton, local to the skeleton. If the skeleton was clipped, the bbox is not modified.
Returns:
true if the bbox is computed, false otherwise.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::detachSkeletonSon UTransform   mi [pure virtual]
 

unparent a CTransform from a bone of the skeleton, or unbind a skin.

No-op if not here. NB: mi is placed at root of hierarchy.

Implemented in NL3D::CSkeletonUser.

virtual UBone& NL3D::USkeleton::getBone uint    boneId [pure virtual]
 

retrieve the bone. nlerror if not here. (>=getNumBones()).

Implemented in NL3D::CSkeletonUser.

virtual sint NL3D::USkeleton::getBoneIdByName const std::string &    boneName const [pure virtual]
 

retrieve the bone Id, by his name. -1 if not found.

Implemented in NL3D::CSkeletonUser.

virtual float NL3D::USkeleton::getInterpolationDistance   const [pure virtual]
 

see setInterpolationDistance().

Implemented in NL3D::CSkeletonUser.

virtual uint NL3D::USkeleton::getLodCharacterAnimId   const [pure virtual]
 

Implemented in NL3D::CSkeletonUser.

virtual TGlobalAnimationTime NL3D::USkeleton::getLodCharacterAnimTime   const [pure virtual]
 

Implemented in NL3D::CSkeletonUser.

virtual float NL3D::USkeleton::getLodCharacterDistance   const [pure virtual]
 

see setLodCharacterDistance. 0 if disabled.

Implemented in NL3D::CSkeletonUser.

virtual sint NL3D::USkeleton::getLodCharacterShape   const [pure virtual]
 

see setLodCharacterShape.

Implemented in NL3D::CSkeletonUser.

virtual bool NL3D::USkeleton::getLodCharacterWrapMode   const [pure virtual]
 

Implemented in NL3D::CSkeletonUser.

virtual uint NL3D::USkeleton::getNumBoneComputed   const [pure virtual]
 

return the number of bones currently animated/computed (because of bindSkin()/stickObject() / Lod system).

Implemented in NL3D::CSkeletonUser.

virtual uint NL3D::USkeleton::getNumBones   const [pure virtual]
 

retrieve the number of bones.

Implemented in NL3D::CSkeletonUser.

virtual float NL3D::USkeleton::getShapeDistMax   const [pure virtual]
 

see setShapeDistMax().

Implemented in NL3D::CSkeletonUser.

virtual bool NL3D::USkeleton::isBoneComputed uint    boneId const [pure virtual]
 

Tell if a bone has been computed in the last frame or not. false if boneId is invalid.

Implemented in NL3D::CSkeletonUser.

virtual bool NL3D::USkeleton::isDisplayedAsLodCharacter   const [pure virtual]
 

True if the skeleton model and his skins have been displayed with a CLodCharacterShape at last scene render.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setInterpolationDistance float    dist [pure virtual]
 

change the Lod Bone interpolation distance (in meters).

If 0, interpolation is disabled. The smaller this value is, the more Lod skeleton system will "pop". Default is 0.5 meters.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setLodCharacterAnimId uint    animId [pure virtual]
 

Change/get the Character Lod anim setup.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setLodCharacterAnimTime TGlobalAnimationTime    time [pure virtual]
 

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setLodCharacterDistance float    dist [pure virtual]
 

This is the distance at which the skeleton use a CLodCharacterShape to display himself if 0, never display the skeleton as a CLodCharacterShape.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setLodCharacterShape sint    shapeId [pure virtual]
 

Change the Character Lod shape Id.

set -1 if want to disable the feature (default)

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setLodCharacterWrapMode bool    wrapMode [pure virtual]
 

tells if the animation must loop or clamp.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::setShapeDistMax float    distMax [pure virtual]
 

Change Max Display Skeleton distance.

After this distance the shape won't be displayed. setting <0 means -1 and so means DistMax = infinite (default in meshs but multilod meshes). NB: This apply to the shape direclty!! ie All instances using same shape will be affected

Note: If the skeleton himself is sticked to an other skeleton, this setup is not taken into account. ie the skeleton clip follow the ancestor skeleton clip result (ie the first skeleton in hierarchy which is not sticked).

Note (complex): same remark for QuadGridClipManager interaction with this function as in UInstance::setShapeDistMax()

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::stickObject UTransform   mi,
uint    boneId
[pure virtual]
 

parent a CTransform to a bone of the skeleton.

NB: ~CTransform() calls detachSkeletonSon(). This object will be visible only when the Skeleton is not clipped. NB: an object can't be skinned and sticked at same time :) NB: replaced if already here.

Implemented in NL3D::CSkeletonUser.

virtual void NL3D::USkeleton::stickObjectEx UTransform   mi,
uint    boneId,
bool    forceCLod
[pure virtual]
 

same method as stickObject(), but if you set forceCLod as true, then this object will be visible even if the skeleton father is in CLod state (ie displayed with a CLodCharacterShape) NB: if "mi" is a skeleton model, forceCLod is considerer true, whatever the value passed in.

Implemented in NL3D::CSkeletonUser.


The documentation for this class was generated from the following file: