Конгер Д.
Физика для разработчиков компьютерных игр
стр. 342

Подстройка ткани

Чтобы объект класса cloth вел себя, как ткань, нужно подобрать правильные значения параметров. Каждой материальной точке нужно задать маленькие массу и радиус. Коэффициент восстановления должен быть, вероятно, не более 0.01. Пружины должны быть довольно жесткими, поэтому значение к должно быть довольно большим. Помогает моделированию и затухание. Значение b в примере равно 1000. В вашей игре оно, возможно, будет не таким высоким, но не думаю, что оно будет меньше 500, разве что массы будут очень маленькими.

Чтобы подобрать правильное значение коэффициента линейного затухания, нужно экспериментировать. Но обычно оно имеет тот же порядок величины, что и масса.

Возможные улучшения для моделирования ткани

Класс cloth можно улучшить во множестве аспектов, если вы собираетесь использовать его в играх. Во-первых, можно добавить деформацию сетчатой модели. Для этого придется добавить в класс элемент типа mesh. В методе cloth: :Update () придется реализовать деформацию модели, чтобы совмещать ее вертексы с материальными точками в сетке ткани. Метод cloth: :Render () должен вызывать метод mesh: :Render () для элемента типа mesh, который вы добавите в класс cloth. Это упростит код метода cloth: :Render {). И, наконец, нужно заменить в файлах PMCloth.h и PMCloth.cpp все упоминания класса point_mass на invisible_point_mass.

Кроме того, стоит добавить обнаружение столкновений материальных точек ткани с другими объектами в игре. Пока в объектах класса cloth обнаруживаются только столкновения между материальными точками самой ткани. Это не слишком хорошо - если ткань столкнется с другим объектом, она просто пройдет сквозь него. Добавить обнаружение столкновений и реакцию на них несложно - для этого нужно просто скопировать и соответствующим образом адаптировать код из главы 8 «Столкновения материальных точек».

Новости
Новый ролик Fallout 76 посвятили совместной работе
Компания Bethesda опубликовала новый ролик Fallout 76, продолжающий серию обучающих видео «Время приключений».
Battle for Azeroth: до 120-го уровня добрались за пять часов
Первый в мире игрок 120-го уровня появился уже через четыре с лишним часа после открытия аддона.