# 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::CBone Class Reference

This is a bone, for skeleton animation, with information for result WorldMatrix. More...

#include <bone.h>

Inheritance diagram for NL3D::CBone:

NL3D::ITransformable NL3D::IAnimatable List of all members.

Public Methods

 CBone (CBoneBase *boneBase)
 Constructor. More...

const std::string & getBoneName () const
 retrieve the boneName from BoneBase. More...

sint32 getFatherId () const
 retrieve the fatherId from BoneBase. More...

void compute (CBone *parent, const CMatrix &rootMatrix)
 Compute the LocalSkeletonMatrix, the WorldMatrix, and the BoneSkinMatrix (for skinning). More...

void interpolateBoneSkinMatrix (const CMatrix &otherMatrix, float interp)
 Interpolate the current result of _BoneSkinMatrix fith otherMatrix. More...

const CMatrix & getLocalSkeletonMatrix () const
 retrieve the matrix local to the skeleton, computed in compute(). More...

const CMatrix & getWorldMatrix () const
 retrieve the WorldMatrix computed in compute(). More...

const CMatrix & getBoneSkinMatrix () const
 retrieve the BoneSkinMatrix computed in compute(). More...

void lodEnableChannels (CChannelMixer *chanMixer, bool enable)
 enable the channels (lodEnable) associated to this bone in the channelMixer. More...

Herited from ITransformable
virtual ITrackgetDefaultTrack (uint valueId)
 retrive the default trak from skeleton shape. More...

virtual void registerToChannelMixer (CChannelMixer *chanMixer, const std::string &prefix)
 register the ITransformable channels as detailled channels. More...


Private Attributes

NLMISC::CRefPtr< CBoneBase_BoneBase
CMatrix _LocalSkeletonMatrix
CMatrix _WorldMatrix
CMatrix _BoneSkinMatrix
sint _PosChannelId
sint _RotEulerChannelId
sint _RotQuatChannelId
sint _ScaleChannelId
sint _PivotChannelId

Detailed Description

This is a bone, for skeleton animation, with information for result WorldMatrix.

Author:
Lionel Berenguier , Nevrax France
Date:
2001

Definition at line 89 of file bone.h.


Constructor & Destructor Documentation

NL3D::CBone::CBone CBoneBase   boneBase
 

Constructor.

build a bone from a CBoneBase*. By defautl, a bone is in RotQuat transform mode. This ctor:

  • store a RefPtr on the bonebase (for getDefaultTracks() method). the refptr is just for nlassert.
  • copy the bonebase default track value into Animated Values Pos/Rot etc....

Definition at line 91 of file bone.cpp.

References _BoneBase, _PivotChannelId, _PosChannelId, _RotEulerChannelId, _RotQuatChannelId, _ScaleChannelId, NL3D::ITransformable::AnimValueLast, NL3D::CAnimatedValueQuat, NL3D::CAnimatedValueVector, and nlassert.


Member Function Documentation

void NL3D::CBone::compute CBone *    parent,
const CMatrix &    rootMatrix
 

Compute the LocalSkeletonMatrix, the WorldMatrix, and the BoneSkinMatrix (for skinning).

NB: the result localSkeletonMatrix depends on BoneBase::UnheritScale.
NB: the result worldMatrix depends on BoneBase::UnheritScale.
NB: the result boneSkinMatrix depends on BoneBase::InvBindPos.

Parameters:
parent  the parent of this bone (maybe NULL if root). his WorldMatrix is used, so it should be computed before.
rootMatrix  is used as father worldmatrix if parent==NULL. Usefull for computing WorldMatrix.

Definition at line 150 of file bone.cpp.

References _BoneBase, _BoneSkinMatrix, _LocalSkeletonMatrix, _WorldMatrix, NL3D::ITransformable::getMatrix, NL3D::ITransformable::getPos, NL3D::ITransformable::getTransformMode, and nlassert.

const std::string& NL3D::CBone::getBoneName   const [inline]
 

retrieve the boneName from BoneBase.

Definition at line 103 of file bone.h.

References _BoneBase, and nlassert.

const CMatrix& NL3D::CBone::getBoneSkinMatrix   const [inline]
 

retrieve the BoneSkinMatrix computed in compute().

Definition at line 140 of file bone.h.

References _BoneSkinMatrix.

ITrack * NL3D::CBone::getDefaultTrack uint    valueId [virtual]
 

retrive the default trak from skeleton shape.

Implements NL3D::ITransformable.

Definition at line 114 of file bone.cpp.

References _BoneBase, nlassert, nlstop, NL3D::ITransformable::PivotValue, NL3D::ITransformable::PosValue, NL3D::ITransformable::RotEulerValue, NL3D::ITransformable::RotQuatValue, and NL3D::ITransformable::ScaleValue.

sint32 NL3D::CBone::getFatherId   const [inline]
 

retrieve the fatherId from BoneBase.

Definition at line 105 of file bone.h.

References _BoneBase, and nlassert.

const CMatrix& NL3D::CBone::getLocalSkeletonMatrix   const [inline]
 

retrieve the matrix local to the skeleton, computed in compute().

Definition at line 134 of file bone.h.

References _LocalSkeletonMatrix.

const CMatrix& NL3D::CBone::getWorldMatrix   const [inline]
 

retrieve the WorldMatrix computed in compute().

Definition at line 137 of file bone.h.

References _WorldMatrix.

void NL3D::CBone::interpolateBoneSkinMatrix const CMatrix &    otherMatrix,
float    interp
 

Interpolate the current result of _BoneSkinMatrix fith otherMatrix.

when interp==0.f, _BoneSkinMatrix= otherMatrix. NB: the interpolation is made on per-vector basis => bad matrix interpolation.

Definition at line 218 of file bone.cpp.

References _BoneSkinMatrix.

void NL3D::CBone::lodEnableChannels CChannelMixer   chanMixer,
bool    enable
 

enable the channels (lodEnable) associated to this bone in the channelMixer.

Definition at line 244 of file bone.cpp.

References _PivotChannelId, _PosChannelId, _RotEulerChannelId, _RotQuatChannelId, _ScaleChannelId, and nlassert.

void NL3D::CBone::registerToChannelMixer CChannelMixer   chanMixer,
const std::string &    prefix
[virtual]
 

register the ITransformable channels as detailled channels.

Implements NL3D::ITransformable.

Definition at line 136 of file bone.cpp.

References _PivotChannelId, _PosChannelId, _RotEulerChannelId, _RotQuatChannelId, _ScaleChannelId, NL3D::IAnimatable::addValue, NL3D::ITransformable::OwnerBit, NL3D::ITransformable::PivotValue, NL3D::ITransformable::PosValue, NL3D::ITransformable::RotEulerValue, NL3D::ITransformable::RotQuatValue, and NL3D::ITransformable::ScaleValue.


Member Data Documentation

NLMISC::CRefPtr<CBoneBase> NL3D::CBone::_BoneBase [private]
 

Definition at line 150 of file bone.h.

Referenced by CBone, compute, getBoneName, getDefaultTrack, and getFatherId.

CMatrix NL3D::CBone::_BoneSkinMatrix [private]
 

Definition at line 157 of file bone.h.

Referenced by compute, getBoneSkinMatrix, and interpolateBoneSkinMatrix.

CMatrix NL3D::CBone::_LocalSkeletonMatrix [private]
 

Definition at line 153 of file bone.h.

Referenced by compute, and getLocalSkeletonMatrix.

sint NL3D::CBone::_PivotChannelId [private]
 

Definition at line 164 of file bone.h.

Referenced by CBone, lodEnableChannels, and registerToChannelMixer.

sint NL3D::CBone::_PosChannelId [private]
 

Definition at line 160 of file bone.h.

Referenced by CBone, lodEnableChannels, and registerToChannelMixer.

sint NL3D::CBone::_RotEulerChannelId [private]
 

Definition at line 161 of file bone.h.

Referenced by CBone, lodEnableChannels, and registerToChannelMixer.

sint NL3D::CBone::_RotQuatChannelId [private]
 

Definition at line 162 of file bone.h.

Referenced by CBone, lodEnableChannels, and registerToChannelMixer.

sint NL3D::CBone::_ScaleChannelId [private]
 

Definition at line 163 of file bone.h.

Referenced by CBone, lodEnableChannels, and registerToChannelMixer.

CMatrix NL3D::CBone::_WorldMatrix [private]
 

Definition at line 155 of file bone.h.

Referenced by compute, and getWorldMatrix.


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