Т. к. точки одежды изменили свое положение, необходимо перестроить начальный меш так, чтобы изменения были заметны. Т. к. вы уже загрузили исходный меш из .X файла в объект ID3DXMesh, все, что остается сделать, это заблокировать буфер вершин меша, сохранить в него координаты точек и пересчитать нормали (если исходный меш их использует).
Еще раз создадим универсальную структуру, содержащую только вектор. Этот вектор используется для получения доступа к данным координат вершин меша.
На данный момент силы каждой точки должны быть вычислены и сохранены в векторе силы. Эти векторы сил представляют собой величины ускорений, применяемые к скоростям каждой с течением времени. Векторы скоростей также имеют направление и определяют направление и скорость движения каждой точки при моделировании.
Чтобы все выглядело реалистично, одежда должна придерживаться законов трения. По мере того как одежда движется в среде, такой как воздух, она замедляется. Трение фактически является противодействующей силой, независимо оттого является ли она гравитационной силой, турбулентностью воздуха или трением. Для упрощения, я буду называть комбинацию этих сил просто трением.
Каждая пружина меша одежды первоначально имеет длину покоя. Эта длина покоя равна расстоянию между двумя точками, которые пружина соединяет. При обработке пружин необходимо вычислить текущую длину каждой пружины и определить, каким образом каждая пружина влияет на силы, действующие на точки.
Гравитация является естественной силой, которая притягивает объекты друг к другу. Более тяжелые объекты притягивают более маленькие. В отношении Земли это означает, что все объекты падают на землю (еще один пример, когда здоровяки побеждают). Меш одежды не является исключением. Чтобы корректно симулировать движения одежды, каждая точка ее меша должна иметь возможность упасть на землю (за исключением тех точек одежды, которые закреплены или присоединены к другим объектам, что не позволяет им двигаться).