Конгер Д.
Физика для разработчиков компьютерных игр
стр. 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. При этом просто меняется имя класса — его функциональность остается той же.

Пружины

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

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

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

Новости
Tomb Raider Legend и Anniversary теперь совместимы с Xbox One
Legend, седьмая игра в серии Tomb Raider, уже на момент выхода описывалась разработчиками как полное ностальгии приключение Лары в старом стиле — авторы в самом деле постарались вернуть дух самых первых классических игр после не особенно удачных Chronicles 2000 года и The Angel of Darkness 2003-го.
Авторы Hitman 2 рассказали об искусственном интеллекте
Усиление искусственного интеллекта стало одной из главных целей разработчиков.