Класс меша мягкого тела до мельчайших подробностей идентичен классу меша одежды, за исключением того, что в классе меша мягкого тела имеется дополнительная функция, которая восстанавливает исходную форму меша. Т. к. вы просто добавляете одну функцию, вы можете пропустить большую часть объявления класса мягкого тела и сразу перейти к функции, восстанавливающей меш мягкого тела.
// Создать производный класс мягкого тела class cSoftbodyMesh : public cClothMesh
public:
void Revert(float Stiffness, D3DXMATRIX *matTransform) {
// Проверка ошибок
if(!m_NumPoints || m_Points == NULL) return;
// Обработать силы мягкого тела (восстанавливающие форму) for(DWORD i=0;i<m_NumPoints;i++) {
// Обрабатывать только те точки, которые могут двигаться if(m_Points[i].m_Mass != 0.0f) {
// Преобразовать исходные координаты, если необходимо D3DXVECTOR3 vecPos = m_Points[i].m_vecOriginalPos; if(matTransform) D3DXVec3TransformCoord(&vecPos, &vecPos, matTransform);
// Создать вектор пружины из исходного положения точки (преобразованного)
// до ее текущего положения
D3DXVECTOR3 vecSpring = vecPos - m_Points[i].m_vecPos;
// Масштабировать пружину на значение жесткости vecSpring *= Stiffness;
// Непосредственно изменить скорость и положение m_Points[i].m_vecVelocity += vecSpring; m_Points[i].m_vecPos += vecSpring;
}
}
}
};
Как вы можете видеть из объявления класса cSoftbodyMesh, функция Revert просматривает все точки одежды, передвигает их к начальному положению и соответствующим образом корректирует скорость точки. Вы заметите, что значение жесткости, матрицу преобразования, применяемую к начальному положению точек до вычисления вектора пружины, можно задать при вызове Revert. Это позволяет точкам занимать корректные положения, а мешу - двигаться по миру.
Используя те же самые технологии, что и в классе меша одежды, вы можете работать с классом меша мягкого тела. Загрузка, установка сил, визуализация - у обоих классов они одинаковы. Единственным различием является то, что вам необходимо вызывать cSoftBodyMesh::Revert сразу после вызова cSoftBodyMesh::Resolve. Посмотрите демонстрационную программу меша мягкого тела, находящуюся на компакт-диске, чтобы увидеть, как использовать класс cSoftBodyMesh в ваших проектах.
Посмотрите демонстрационные программы
Фу, это была длинная глава, но безусловно, содержащаяся в ней информация стоила прочтения! После того, как вы увидели, как легко работать с моделированием одежды, я уверен, вам не терпится применить эти полученные знания в ваших проектах игр. Чтобы помочь вам понять, как использовать меши одежды и меши мягких тел в ваших проектах, я включил две демонстрационные программы в эту книгу.
Первый проект (С1оігіМе8гі), показанный на рис. 13.8, иллюстрирует один из примеров использования одежды - развевающийся плащ супергероя.

Рис. 13.8. Супергерой летит по воздуху, а его плащ развевается у него за спиной
Второй проект, поставляемый с книгой, Softbody, иллюстрирует использования мешей мягких тел для придания персонажам дополнительного bounce при ходьбе. Посмотрите демонстрационную программу, о которой я говорю, или рис. 13.9.

Рис. 13.9. Урок карате! Меш мягкого тела придает дополнительные подрагивания при атаках мастера
Программы на компакт-диске
Классы меша мягкого тела и меша одежды этой главы находятся в двух файлах проекта, расположенных в директории главы 13 компакт-диска этой книги. Этими проектами являются:
• ОоШМеэи. Эта программа иллюстрирует использование класса меша одежды, разработанного в этой главе. Она расположена в \BookCode\Chap13\ClothMesh.
• 8о1Шос1у. Эта демонстрационная программа иллюстрирует использование класса меша мягкого тела в ваших проектах. Она расположена в \Book-
Глава 14
Использование анимированных текстур
Трехмерная анимация включает в себя управление вершинами, полигонами и мешами. По правде говоря, ваша законченная система анимации может выполнять все эти анимации, но вы не используете одну из самых замечательных технологий, имеющихся на сегодняшний день - анимацию текстур.
Вы даже не представляете себе, насколько может стать живее мир, если использовать анимацию текстур. Используя разнообразные методы, от простого преобразования текстур до современных технологий проигрывания медиа файлов, вы можете создать привлекательные эффекты, такие как динамический задний фон уровня, текущая вода и внутриигровые видеовставки.
В этой главе вы научитесь:
• Использовать преобразования для изменения текстур;
• Работать с БкесЛБгюлу;
• Создавать фильтры БкейБгюлу;
• Накладывать видео образцы на текстуры.
⇐Восстановление мешей мягких тел || Оглавление || Использование анимации текстур в ваших проектах⇒