Оставшиеся данные кости, такие как исходный фрейм кости, размер, масса, коэффициент 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. А сейчас я покажу вам, как набор классов костей используется классом, управляющим всеми аспектами кукольной анимации.

Определение состояния твердого тела || Оглавление || Создание класса управления куклой