6. Альтернативные подходы В современных играх помимо стандартной, полигональной технологии представления трехмерной графики используются и другие, альтернативные. У каждой из таких технологий – своя область применения, свои достоинства и недостатки.
(Вставить видео, как в Maya или другом редакторе они делаются)
NURBS Нет в природе идеально прямых линий и плоскостей. Природой правят различной формы и сложности кривые. Так почему бы не положить в основу альтернативной технологии трехмерной графики эти самые кривые? Такая система идеально подошла бы для моделирования растений, деревьев, животных и даже человека. Не останутся в стороне и объекты, для которых важна динамическая пластика, например развевающиеся плащи, плещущиеся на ветру полотнища флагов и даже каскады пышных.
Один из видов таких кривых – кривые Безье. Однако больше всего интересны не сами кривые, а их совокупности, которые вместе задают криволинейную поверхность. Такие поверхности сокращенно называются NURBS (от Non-Uniform Rational B-Spline — неравномерная рациональная кривая Безье). Каждая такая поверхность задается сложным математическим уравнением. Графическая библиотека решает это уравнение относительно заданной области и получает набор точек в трехмерном пространстве, которые затем проецируются на экран.
Программист или моделер может поставить на поверхность столько опорных точек, сколько захочет. Если он потом изменит положение одной из этих точек, все остальные точки поверхности будут рассчитаны так, чтобы в поверхности не образовалось разрывов. Именно поэтому простая поверхность с всего парой десятков опорных точек может стать красивым платьем принцессы с множеством живописных складок, которое меняет свою форму в такт ходьбе.{FF из ролика игромании за 06.07.06 «танцующие девушки»}
К сожалению, NURBS пока никак не обрабатываются графическими акселераторами, и все тяготы по их обсчету ложатся на плечи центрального процессора. Именно поэтому NURBS в компьютерных играх используются эпизодически. Однако с каждым годом число игр, в которых тем или иным образом применяются сплайновые поверхности, растет.
Voxel
Как известно, любая двумерная картинка, которая выводится на экран монитора, состоит из пикселей. Само слово pixel происходит от picture element – элемент изображения. Такое представление довольно естественно, ведь экран монитора также состоит из дискретных элементов, каждый из которых может принимать тот или иной цвет. А почему бы этот принцип не перенести без изменений в 3D? Ведь любой объект в реальном мире состоит из атомов, молекул. Но моделировать каждую молекулу – занятие неблагодарное. А вот если взять структурные единицы побольше да составить из них трехмерные картинки, то вывести их на экран монитора будет не так сложно. Этот принцип лежит в основе так называемой воксельной графики.
Воксель – это, по сути, трехмерный пиксель (слово voxel образовано из VOlumized piXEL, то есть «объемный пиксель»). Как и пиксель, он имеет свой цвет. Иногда воксель называют квантом объема. Из полигональной графики воксель позаимствовал свойства материала – он может быть полупрозрачным и даже зеркальным. Любой объект в 3D, как из кубиков, составляется из вокселей. При этом воксели, как правило, образуют только внешнюю поверхность объектов, внутренности не заполняются. Да и зачем обсчитывать то, что мы и так не видим? Так как каждый воксель передает свой цвет, необходимость в текстурах отпадает. Объекты из вокселей очень просто сделать разрушаемыми – ведь перемещение каждого элемента объекта при, скажем, взрыве рассчитывается по простым и очевидным законам. Воксельные объекты очень просто анимировать – достаточно задать последовательность трехмерных кадров.
Очевидно, что качество конечной картинки зависит от размера и формы вокселей. Чем они меньше – тем лучше. В идеале, даже в сложных криволинейных поверхностях они вообще не должны быть заметны. Форма вокселей подбирается из соображений производительности. Лучше всего выглядят воксели-сферы. Но их отрисовка довольно требовательна к ресурсам. В первых играх, которые использовали воксельную технологию, они были просто кубиками или даже плоскостями, повернутыми к наблюдателю. Из-за этого порой была заметна зернистость изображения и даже просветы между кубиками.
В целом, воксельное представление трехмерного мира куда более естественно, чем полигональное. Картинка, полученная с использованием этой технологии, будет четкой и красивой. Это в теории. У вокселей есть два существенных недостатка. Первый заключается в том, что для хранения даже небольшой сцены высокого качества уходит огромное количество памяти и дискового пространства. Конечно, есть хитрости, которые позволяют уменьшить эту цифру в десятки раз. Например, можно хранить не матрицу вокселей, а их список. Это проще, так как в объектах очень много пустот. Данные о вокселях можно хранить в сжатом виде. И все равно – качественное представление трехмерного мира потребует больших ресурсов памяти. Второй – все те же акселераторы. Хотя здесь ситуация получше, чем с NURBS и Ray Tracing. Если воксели представлять геометрическими примитивами (да теми же кубиками), акселератор возьмется-таки их ускорять. Но вот толку от этого будет существенно меньше, чем, если бы акселератор был специально предназначен для обработки вокселей.
Игры, целиком сделанные по воксельной технологии, очень мало. Тем не менее воксели применялись и применяются во многих играх как вспомогательные элементы. Самый известный пример полного применения технологии вокселей – игра Outcast, вышедшая в 1999 году. Эта игра вообще не поддерживала трехмерные ускорители, а использовала лишь ЦП, однако максимальное разрешение игры было 640*480. (видео из Outcast)
|