Оставшиеся данные кости, такие как исходный фрейм кости, размер, масса, коэффициент restitution, сила, момент (просто для перечисления), хранятся в другом классе. Этот класс cRagdollBone определяется так:
class cRagdollBone {
public:
// Фрейм, к которому присоединена кость D3DXFRAME_EX *m_Frame;
// Размер ограничивающего параллелепипеда D3DXVECTOR3 m_vecSize;
// Масса и 1/массу (единица деленная на массу) float m_Mass;
// Значение коэффициента возврата (restitution)
// 0 = нет отскока
// 1 = "супер" отскок
// 2 = получать энергию при отскоке
float m_Coefficient;
cRagdollBone *m_ParentBone; // указатель на родительскую кость // смещения присоединения к родителю и родителя к кости D3DXVECTOR3 m_vecJointOffset;
D3DXvECTOR3 m_vecParentOffset;
// Линейная сила и угловой момент
D3DXvECTOR3 m_vecForce;
D3DXVECTOR3 m_vecTorque;
// Начальная ориентация кости D3DXQUATERNION m_quatOrientation;
// Уровень разрешения (0-1) для сферической интерполяции // Он используется для возвращения костей к начальному // ориентированию относительно родителя float m_ResolutionRate;
// Обратная матрица тензора момента инерции тела D3DXMATRIX m_matInvInertiaTensor;
// Точки (в локальном пространстве) , которые образуют
// ограничивающий параллелепипед и смещение соединения с родителем
D3DXVECTOR3m_vecPoints[9];
// Состояние кости cRagdollBoneState m_State;
};
Комментарии для каждого члена класса являются достаточно самоописательными, тем более вы читали о большинстве из них ранее в этой главе. Единственное, с чем вы можете быть не знакомы, это кватернион, уровень разрешения и способ использования точек и состояния кости.
Кватернион (mquatOrientation), содержащийся в классе cRagdollBone, представляет собой относительную разность вращений из родительской кости. Он полезен для поддержания формы персонажа при симуляции. Вместо того чтобы определять границы, в которых может вращаться каждая кость по отношению к родителю, вы можете заставить восстанавливаться ориентацию каждой кости к начальной. Я покажу вам, как это делается немного позже; а пока что вернемся к классу cRagdollBone.
Вы можете видеть, что я встроил класс состояния в cRagdollBone, который представляет состояние кости во время моделирования. Также определено девять точек, представляющих локальные координаты каждой угловой точки и точку присоединения кости к родителю. Хорошо, я пропускаю множество деталей тут, но я еще вернусь к классу cRagdollBone. А сейчас я покажу вам, как набор классов костей используется классом, управляющим всеми аспектами кукольной анимации.
⇐Определение состояния твердого тела || Оглавление || Создание класса управления куклой⇒