- Cal3D 0.11 API Reference -

bone.h
1 //****************************************************************************//
2 // bone.h //
3 // Copyright (C) 2001, 2002 Bruno 'Beosil' Heidelberger //
4 //****************************************************************************//
5 // This library is free software; you can redistribute it and/or modify it //
6 // under the terms of the GNU Lesser General Public License as published by //
7 // the Free Software Foundation; either version 2.1 of the License, or (at //
8 // your option) any later version. //
9 //****************************************************************************//
10 
11 #ifndef CAL_BONE_H
12 #define CAL_BONE_H
13 
14 
15 #include "cal3d/global.h"
16 #include "cal3d/vector.h"
17 #include "cal3d/quaternion.h"
18 #include "cal3d/matrix.h"
19 #include "cal3d/corebone.h"
20 
21 
22 //class CalCoreBone;
23 class CalSkeleton;
24 class CalModel;
25 class CalCoreModel;
26 
27 
28 class CAL3D_API CalBone
29 {
30 public:
31  CalBone(CalCoreBone *coreBone);
32  ~CalBone() { }
33 
34  void blendState(float unrampedWeight, const CalVector& translation,
35  const CalQuaternion & rotation, float scale = 1.0f,
36  bool replace = false, float rampValue = 1.0f,
37  bool absoluteTranslation = true);
38  void calculateState();
39  void clearState();
40  CalCoreBone *getCoreBone();
41  const CalCoreBone *getCoreBone() const;
42  void setCoreTransformStateVariables();
43  void setCoreState();
44  void setCoreStateRecursive();
45  void setRotation(const CalQuaternion& rotation);
46  const CalQuaternion& getRotation() const;
47  const CalQuaternion& getRotationAbsolute() const;
48  const CalQuaternion& getRotationBoneSpace() const;
49  void setTranslation(const CalVector& translation);
50  const CalVector& getTranslation() const;
51  const CalVector& getTranslationAbsolute() const;
52  inline void setMeshScaleAbsolute( CalVector const & sv ) {
53  m_meshScaleAbsolute = sv; }
54  inline const CalVector& getTranslationBoneSpace() const{
55  return m_translationBoneSpace;
56  }
57  inline const CalMatrix& getTransformMatrix() const{
58  return m_transformMatrix;
59  }
60  void lockState();
61  void setSkeleton(CalSkeleton *pSkeleton);
62  void calculateBoundingBox();
63  CalBoundingBox & getBoundingBox();
64  const CalBoundingBox & getBoundingBox() const;
65 
66 private:
67  CalCoreBone *m_pCoreBone;
68  CalSkeleton *m_pSkeleton;
69  float m_accumulatedWeight;
70  float m_accumulatedWeightAbsolute;
71  float m_accumulatedReplacementAttenuation;
72  float m_firstBlendScale;
73  CalVector m_meshScaleAbsolute; // w.r.t. absolute coord system in 3dsMax (Z up), not local coord of bone.
74  CalVector m_translation;
75  CalQuaternion m_rotation;
76  CalVector m_translationAbsolute;
77  CalQuaternion m_rotationAbsolute;
78  CalVector m_translationBoneSpace;
79  CalQuaternion m_rotationBoneSpace;
80  CalMatrix m_transformMatrix;
81  CalBoundingBox m_boundingBox;
82 };
83 
84 #endif
85 
86 //****************************************************************************//
Definition: coremodel.h:25
Definition: corebone.h:34
The bounding box class.
Definition: vector.h:222
The matrix class.
Definition: matrix.h:34
The vector class.
Definition: vector.h:36
Definition: skeleton.h:20
Definition: bone.h:28
Definition: model.h:30
The quaternion class.
Definition: quaternion.h:35

Generated by The Cal3D Team with Doxygen 1.8.14