Популярно о компьютерной 3D графике, часть 1
Как было сказано выше, чем больше полигонов, тем более модель может (может, потому, что модель должна быть еще похожа на оригинал, а это вопрос мастерства моделера, а не полигонов) походить на оригинал. Но у большого кол-ва полигонов есть обратная сторона: понижение производительности. Чем больше полигонов, тем больше точек по которым они строятся, тем больше данных приходится обрабатывать процессору. Поэтому 3D графика — это всегда компромисс между детализацией модели и производительностью. В связи с этим даже возникли термины: hight poly и low poly, соответственно высоко полигональная модель и низко полигональная модель. В играх применяются низко полигональные модели, так как в них выполняется визуализация в реальном времени. Кстати, модели в играх представлены треугольниками для повышения производительности: графические процессоры умеют на аппаратном уровне быстро обрабатывать сотни миллионов треугольников за секунду.
Как правило, полигональное моделирование относится к пустотелому моделированию, где объект имеет только объем, но внутри пустой. Это означает, что если мы смоделируем куб, а потом удалим одну из стенок, то увидим внутри пустоту. Также имеются программы для твердотельного моделирования, где тот же самый куб представлен в виде монолитного объекта. В таких программах (к примеру, Autodesk Inventor) применяются математические модели отличные от тех, что в полигональном моделировании. Алгоритмы твердотельного моделирования лучше подходят для моделирования механизмов при разработке техники. Программы вроде Autodesk Inventor имеют средства для моделирования с учетом особенностей технологического процесса, как то фаски, сверление отверстий, проставление размеров, допусков и т.п. Получаемые модели можно сразу отправить на подходящий станок для получения изделия в металле или другом материале. Также существуют так называемые программы 3D лепки (ZBrush, Autodesk Mudbox) в которых моделирование сводится (грубо говоря) к созданию углублений или выпуклостей. Такая техника похожа на то, как скульпторы лепят из глины — убирая ненужное и добавляя необходимое. С помощью таких программ можно добиться реалистичного рельефа поверхности, например морщин на коже или складок ткани. В настоящее время высокополигональные (а для лепки модель должна обладать солидным кол-вом полигонов) реалистичные модели людей и вообще животного мира выполняются, в большинстве своем, с применение программы лепки. Распространена практика когда заготовка модели создается с помощью полигонального моделирования, а затем в программе лепки тесселируется и добавляются мелкие детали.
Но вот у нас есть готовая модель, скажем, танка. Но на танк, собственно, она не совсем похожа. В чем же тут дело? На данном этапе у нас всего лишь математическая модель содержащая данные только о геометрической форме. Но у реального объекта кроме формы есть еще и цвет, плотность, отражающая способность, и, возможно, запах. Последнее пока в 3D графике не применяется, а вот все остальное можно смоделировать. Придание модели нужного цвета и блеска называют текстурированием, от слова текстура.
В общем случае текстура — это двумерный рисунок который накладывается на 3D модель. Текстура может быть как процедурной — сгенерированной при помощи алгоритма, так и нарисованная в графическом редакторе, или фотографией реального объекта. С помощью текстуры задается рисунок и цвет модели, но реальная поверхность обладает и другими параметрами: отражающей способностью, преломлением, рельефом, позрачностью и т.п. Все эти параметры задаются в свойствах материала. Т.е. материал с точки зрения 3D графики — это некая математическая модель описывающая параметры поверхности. Например, для воды обязательно необходимо указать прозрачность и преломляющую, отражающую способности. Перед «нанесением» материала на 3D модель необходимо создать ее развертку, т.е. представить все (несколько, одну) поверхности в виде проекции на плоскость. Это необходимо для того, чтобы затем двумерная текстура правильно «лягла» на модель. Таким образом изготовление 3D модели в общем случае состоит из следующих стадий: 1. Получение изображений референса (т.е. того, с чего будет моделироваться) или самого референса. Или отрисовка экскиза. 2. Моделирование геометрии на основе референса. 3. Создание развертки. 4. Отрисовка текстур или получение их другим способом в виде файлов. 5. Настройка параметров материала (текстуры, преломление, отражение, прозрачность). Теперь 3D модель готова для визуализации — получении картинки. Первый и четвертый пункт могут быть быть опущены если модель простая, но, как правило, хороших результатов без всех 5 шагов не добиться. Подытожим. Между обычным рисунком, скажем, на бумаге, и построением 3D изображения есть существенные различия в самом процессе. Двумерный рисунок, как правило, создается в два этапа: эскиз и раскрашивание. В 3D графике после изготовления модели ее необходимо поместить в сцену к другим объектам (или в так называемую студию), добавить освещение, камеру и лишь затем можно надеяться получить финальную картинку. Изображение в 3Dграфике просчитывается на основе физической модели, как правило, это модель распространения луча света с учетом отражения, преломления, рассеивания и т.п. Рисуя красками мы сами отрисовываем тени, блики и т.д., а в трехмерной графике мы подготавливаем сцену с учетом освещения, материалов, геометрии, свойств камеры, программа рассчитывает итоговую картинку сама.
Вот, на сегодня пока и все. Комментарии, а особенно вопросы и замечания по существу приветствуются.