Ранее в этой главе вы научились определять твердое тело при помощи набора векторов, содержащих положение тела, ориентацию, момент и так далее. Эти вектора определяют текущее состояние твердого тела, которое вы можете хранить в следующей структуре:

class cRagdollBoneState {

public:

D3DXVECTOR3 m_vecPosition; // Положение D3DXQUATERNION m_quatOrientation; // Ориентация D3DXMATRIX m_matOrientation; // Ориентация

D3DXVECTOR3 m_vecAngularMomentum; // Угловой момент

D3DXVECTOR3 m_vecLinearVelocity; // Линейная скорость D3DXVECTOR3 m_vecAngularVelocity; // Угловая скорость

// Преобразованные точки, включающие положение присоединения к родителю и смещение от родителя до кости D3DXVECTOR3 m_vecPoints[10] ;

// Обратная матрица тензора мирового момента инерции D3DXMATRIX m_matInvWorldInertiaTensor;

сКа§сю11Вопе81а1е хранит положение, ориентацию (кватернион и матрицу), линейную, угловую скорости, момент, обратный тензор инерции (в мировых координатах) и преобразованные точки. Эти точки содержат смещение от твердого тела до родительского тела и смещение от родительского тела до текущего тела.

По мере обработки вашей модели состояние костей обновляется в соответствии с действующими силами. Для хранения оставшейся информации о костях, такой как размер, масса и т. д., определим второй класс.

Создание систем кукольной анимации || Оглавление || Хранение костей