Ранее в этой главе вы научились определять твердое тело при помощи набора векторов, содержащих положение тела, ориентацию, момент и так далее. Эти вектора определяют текущее состояние твердого тела, которое вы можете хранить в следующей структуре:
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е хранит положение, ориентацию (кватернион и матрицу), линейную, угловую скорости, момент, обратный тензор инерции (в мировых координатах) и преобразованные точки. Эти точки содержат смещение от твердого тела до родительского тела и смещение от родительского тела до текущего тела.
По мере обработки вашей модели состояние костей обновляется в соответствии с действующими силами. Для хранения оставшейся информации о костях, такой как размер, масса и т. д., определим второй класс.
⇐Создание систем кукольной анимации || Оглавление || Хранение костей⇒