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

Метод Update () класса point_mass теперь делает куда меньше, чем раньше. Он вызывает метод point_mass_base: : Update () в строке 4 листинга 12.4, и вызванный метод выполняет все физические расчеты поступательного движения. По завершении этих расчетов метод point_ mass: :Update () создает матрицу перемещения объекта point_mass по координатам, вычисленным методом point_mass_base: .‘Update ().

Как и в предыдущих версиях метода Render (), в этой версии глобальная матрица сохраняется во внутренней переменной, а затем Direct3D передается матрица перемещения, хранящаяся в объекте класса point_ mass. Затем выполняется рендеринг сетчатой модели объекта, после чего восстанавливается из внутренней переменной ранее сохраненная глобальная матрица.

Наличие классов point_mass_base и point_mass позволяет нам создавать как видимые на экране материальные точки, так и невидимые. Если мы создаем в программах невидимые материальные точки, неплохо было бы дать их классу имя более подходящее, чем point_mass_base. Поэтому в программу включен оператор typedef, задающий новое имя классу point_mass_base - invisible_j?oint_mass. При этом просто меняется имя класса — его функциональность остается той же.

Пружины

Чтобы реализовывать в играх волосы и ткань, нам нужно моделировать пружины. В идеале модель пружины должна вести себя так же, как реальные пружины. Программа должна иметь возможность задавать жесткость пружины (к) и коэффициент затухания (Ь) и использовать выведенные ранее в этой главе уравнения поведения пружин, чтобы модели вели себя так же, как реальные пружины. К несчастью, на самом деле моделировать пружины не так просто.

Одна из основных сложностей - уравнения поведения пружин не полностью описывают поведение реальных пружин. Эти уравнения подразумевают, что невозможно сжать или растянуть пружину так, как это невозможно в реальности. Если это сделать, реальные пружины ломаются или теряют упругость. При этом материальные точки, прикрепленные к ним, могут двигаться хаотично и непредсказуемо. Если это произойдет в программе, то фрагменты ткани или волос могут двигаться непредсказуемо, часто деформируясь или беспорядочно изменяя размер.

Один из способов решения этой проблемы — ввести пределы сжатия и растяжения в модели пружин. Это звучит просто, но на самом деле это довольно сложная задача программирования. Если пружина растянута или сжата до предела, она должна ограничивать перемещения прикрепленных к ней материальных точек, и, соответственно, влиять на сжатие или растяжение других пружин. Вообще, перемещение любой материальной точки в системе масс и пружин приведет к волне изменений положения во всей системе. Конечно, в реальности это так и есть - если мы тянем на себя скатерть, она двигается вся целиком, но смоделировать такое поведение довольно сложно.

Новости
EA заинтересована в кроссплатформенном мультиплеере для FIFA 19
Одним из самых популярных запросов поклонников виртуального футбола от EA считается появление кроссплатформенного мультиплеера.
Играбельная бета-версия Beyond Good & Evil 2 выйдет в конце 2019 года
Мишель Ансель, глава разработки Beyond Good & Evil 2, сообщил, что играбельную бета-версию команда игры намерена выпустить в конце 2019 года.