29.05.2006
За последние несколько лет игровая индустрия достигла небывалых результатов в реалистичности графики в компьютерных и "приставочных" играх. Во многом этому способствовало развитие 3D-ускорителей, появление новых методов в обработке графики, появление и бурное развитие новых технологий, в качестве примера последних можно привести не так давно появившиеся шейдеры.
История моделирования физики на компьютере, как и история игровой физики, уходит далеко в прошлое, но наверное не стоит уделять ей особого внимания, ведь нас больше интересует, каково современное положение дел в этой области. Ну и, естественно, что нас ждет в недалеком (да, впрочем, и далеком) будущем.
Что мы имеем
Довольно логично начать повествование с описания существующих моделей, вот только есть тут одно "но": подробное описание любой из них напрашивается не просто на отдельную статью, а на целый ряд статей или докторскую диссертацию. Так что придется ограничиться поверхностным упоминанием и такой же поверхностной оценкой. Итак, для начала надо вспомнить игру Half-Life 2, надеюсь, воспоминания о ней еще не преданы забвению. Мне, например, на ум сразу же приходят всяческие хитроумные головоломки, построенные на основных физических законах. Ну и, естественно, легендарная гравипушка, позволяющая испытать на прочность (реалистичность) местную физику. К чему я это все говорю? Очень просто. Это наглядно показывает возможности (кстати говоря, не все) одного из лучших игровых физических движков - Havok"а, который часто используется при создании игр высшего класса. Из примеров использования можно также упомянуть Max Payne 2, который тоже на физику не жаловался. Но в глубине монстра с названием Havok бьется сердце, называемое ODE (Open Dynamic Engine). ODE - еще один движок, гораздо менее проработанный, но зато бесплатный и "опенсорсный" ("open source" - с открытыми ресурсами), т.е. любой может бесплатно скачать себе его исходный код и изменить, как ему захочется. Именно так, например, поступили разработчики XPand Rally. Помимо этих двух наиболее ярких представителей семейства физических движков существует и множество других, менее ярких. Тут можно вспомнить Tokamak, Novodex и Newton Dynamics. Это также достаточно известные реализации, обладающие, правда, меньшими возможностями, да и их исходники всем подряд не дают. Вот примерно такая вырисовывается картина. Ну и справедливости ради надо сказать, что существует также целая армия маленьких самописных движков, написанных независимыми программистами для конкретных игрушек. Или просто для удовольствия.
И как оно работает?
Если независимые одиночки пишут свои движки, значит, они знают, как это делать. А значит, каждый может это узнать, так? Отчасти да. Но в основе современных реализаций лежат такие мощные математические модели, основанные на таких глубоких физических знаниях, что человеку несведущему разобраться трудно, если вообще возможно. Еще есть проблема информации, которой, вообще-то говоря, маловато. Но, сейчас нас подобные сложности особенно не беспокоят, так как мы будем рассматривать не математические выкладки, а основные принципы.
Для начала поделим все методы на две большие группы: пружинные каркасы и твердые тела. Пружинные каркасы представляют собой группу точек, связанных пружинами - связями, пытающимися сохранить свою первоначальную длину. Внешне это очень похоже на вершины, из которых состоит меш-сетка, ребра которой обозначают пружины. На каждом шаге моделирования рассчитываются все силы, действующие на все точки каркаса. В результате мы получаем новое состояние тела. Обычно такой принцип моделирования используют для создания мягких тел и поверхностей, например тканей, резины и т.п. Твердые тела представлены всего одной точкой, но тут появляется достаточно сложное вращательное движение. Такой метод, как понятно из его названия, используется для представления твердых тел, не изменяющих свою форму. Естественно, оба метода можно использовать одновременно.
Теперь поделим на части методы моделирования (взаимодействия?) твердых тел. Тут существует два основных метода: импульсная модель и модель, основанная на ограничениях. Импульсная модель наиболее проста, здесь надо только найти столкновения объектов (впрочем, это приходится делать в каждом методе) и приложить к ним силы, высчитанные по закону сохранения импульса. Такой метод очень удобен, если между телами нет каких-нибудь связей, хотя и их тоже можно реализовать на импульсах, правда, не совсем точно и правильно. Поэтому для систем, содержащих множество связей различной сложности, был придуман другой метод - ограничения. Метод, построенный на ограничениях, - это пример системного подхода к моделированию физики. Все соединения и контакты описываются математически как ограничения и добавляются в общую систему уравнений. Решив эту систему, мы получим новое состояние для каждого тела. Этот метод удобен в первую очередь тем, что с его помощью можно создавать любые ограничения. Эти возможности получили наибольшее применение в технологии Rag Doll.
Куклы
Замысловатое словосочетание Rag Doll переводится на русский язык как "тряпичная кукла". Итак, чтобы было понятней, начнем наше беглое описание данной сравнительно новой технологии сразу с практической части. Если мысленно перенестись в не очень далекое прошлое (примерно в 2000 год), то можно вспомнить, что в большинстве шутеров тела поверженных врагов (или монстров) лежат очень неестественно: они погружаются по пояс то в стену, то в дверь, то они повиснут над лестницей, как будто лежат на невидимых столах... Но вернемся в наши дни. Подавляющее большинство современных шутеров показывают гибель вражеских солдат очень реалистично: бедняги прислоняются к ближайшим стенам или картинно скатываются с лестниц. Почему? Потому что используют технологию Rag Doll.
Суть идеи заключена в том, что строится иерархия физических тел, соединенных подвижными связями. Их расположение и соединения напоминают расположение костей скелета для скелетной анимации. Затем эта группа объектов объединяется со скелетом персонажа, чтобы совместить физическую и графическую сущность человечка (ну или другого существа). Теперь все просто. Как только персонаж умирает, "физический скелет" принимает позу неудачливого бойца и загружается в физический движок. Теперь все движения "куклы" обусловлены физическими законами, тело упадет на землю так, как это было бы в жизни.
Интересно отметить, что тут нет абсолютно никакой разницы, какой метод моделирования использовать, - главное, чтобы он смог правильно смоделировать все необходимые нам тела и соединения.
Железо
Несложно догадаться, что все эти радости требуют затраты огромных ресурсов памяти и процессора. А ведь в современных компьютерных играх помимо физики надо рассчитывать просто горы информации: графика (хотя она почти полностью лежит на видеокарте, но все-таки затраты производительности CPU требуются немалые), искусственный интеллект, интерфейс и многое другое. Но при повышении реалистичности физики повышаются и требования к компьютеру, т.е. все более и более сложные физические модели требуют от системы все больше ресурсов. Что же делать? Когда-то давно подобная проблема возникла в области графики. Тогда судьбу центрального процессора облегчили, добавив принципиально новое устройство - 3D-ускоритель, процессор которого (GPU) взял на себя значительную часть вычислений, связанных с расчетами в области построения 3D-картинки. Теперь похожая ситуация повторяется и с физикой. Поэтому, для того чтобы снять с CPU обязанность рассчитывать медленную физику, в ближайшем будущем планируется повсеместное введение физического процессора (PPU - Physic Processor Unit). Первые реализации уже появились, но они еще не очень распространены, да и игр с их поддержкой совсем немного. Но все-таки эта технология рано или поздно приобретет ничуть не меньшее признание, чем аппаратное ускорение трехмерной графики. Первое "физическое ядро", разработанное сравнительно молодой компанией Ageia, называется PhysX. По заявлениям разработчиков, сделанным на конференции GDC (Game Developers Conference - конференция разработчиков игр), он позволяет честно смоделировать в реальном времени систему из 50 000 тел (это против 10-50 тел современными программными способами!) без особых потерь в скорости выполнения программы.
Взгляд в будущее
Итак, что же ждет нас в будущем? В этом вопросе я соглашусь с человеком, чье имя знакомо каждому разработчику игр и некоторым продвинутым геймерам - Джоном Кармаком (John Carmack). На конференции разработчиков игр GDC-2004 он сказал: "...d будущих поколениях игр появится моделирование погоды, моделирование жидкостей, моделирование пылевых облаков, переносимых ветром и огибающих окружающую среду". Сейчас мощности среднего персонального компьютера недостаточно для правильного моделирования таких сложных систем в реальном времени, тем более в компьютерных играх, но в будущем такое станет возможным. Это принесет еще больше реалистичности в компьютерные игры. С введением и развитием PPU будет достигнут новый уровень взаимодействия графики и физики: все процессы в окружающей героя среде будут подчиняться соответствующим законам физики, и выглядеть это будет максимально реалистично. Так что ждем-с.
|