Вы, наверное, заметили, что данные точек одежды очень динамичны. Не существует простого способа восстановить начальную ориентацию каждой точки меша одежды. Зачем вообще необходимо восстанавливать исходный меш? Возможно, чтобы начать заново моделирование или использовать меш одежды в его исходном состоянии.
Самым простым способом восстановления данных точек исходного меша одежды является добавление еще одного вектора в класс cClothPoint.
class cClothPoint {
D3DXVECTOR3 m_vecOriginalPos; // Начальные координаты D3DXVECTOR3 m_vecPos; // Трехмерные координаты точки float m_Mass; // Масса точки (0=прикрепленная) float m_OneOverMass; // 1 / Массу (0=прикрепленная к месту) D3DXVECTOR3 m_vecForce; // Вектор силы (ускорения) D3DXVECTOR3 m_vecVelocity; // Вектор скорости
Дополнительный вектор (уесОгі§іпаіРо8) хранит начальные координаты точек одежды. При создании массива точек одежды убедитесь, что вы сохранили начальное положение в этом новом векторе.
//...После загрузки точек одежды в массив гог(П«0РП і = 0;і<ПТитРоіпС8;і + +)
С1осЬРоіпС8[і].їїі,7ес0гідіпа1Ро8 = С1осЬРоіпС8[і].їїі,7есРо8;
Когда вы захотите восстановить данные исходных точек одежды, просто скопируйте данные их этого нового вектора в вектор положения точки.
гог(П«0РП і = 0;і<ПТитРоіпС8;і + +)
С1осЬРоіпС8[і].їїі,7есРо8 = С1осЬРоіпС8[і].їїі,7ес0гідіпа1Ро8;
Использование начального положения замечательно подходит для восстановления данных исходного меша и также полезно при определении расстояния между текущим и начальным положением точек, как при моделировании мешей мягких тел, которые будут рассмотрены далее в этой главе.
А пока, просто продолжим улучшение имитации одежды, добавив дополнительные пружины в меш, таким образом улучшая стабильность одежды при имитировании.
⇐Воссоздание и визуализация меша одежды || Оглавление || Добавление дополнительных пружин⇒