Способы достижения реализма в трехмерной графике

Работы, выполненные с использованием трехмерной компьютерной графики, одинаково привлекают к себе внимание и 3D-дизайнеров, и тех, кто имеет довольно смутное представление о том, как все это было сделано. Наиболее удачные работы в 3D невозможно отличить от реальных съемок. Такие работы, как правило, порождают вокруг себя жаркие споры о том, что же это: фотография или трехмерная подделка. Вдохновленные работами именитых 3D-художников, многие берутся за изучение трехмерных редакторов, полагая, что освоить их так же легко, как Photoshop. Между тем, программы для создания 3D-графики являются довольно сложными в освоении, и их изучение отнимает много времени и сил. Но даже изучив инструментарий трехмерного редактора добиться реалистичного изображения начинающему 3D-дизайнеру нелегко. Попав в ситуацию, когда сцена выглядит "мертвой", он не всегда может найти тому объяснение. В чем же дело?

Основная проблема создания фотореалистичного изображения заключается в трудности точной имитации окружающей среды. Картинка, которая получается в результате просчета (визуализации) в трехмерном редакторе, является результатом математических вычислений по заданному алгоритму. Разработчикам программного обеспечения трудно подобрать алгоритм, который помогал бы описать все физические процессы, которые имеют место в реальной жизни. Поэтому моделирование окружающей среды лежит на плечах самого 3D-художника. Существует определенный набор правил создания реалистичного трехмерного изображения. Вне зависимости от того, в каком трехмерном редакторе вы работаете и сцены какой сложности создаете, они остаются неизменными. Результатом работы в трехмерном редакторе является статичный файл или анимация. В зависимости от того, каким будет конечный продукт в вашем случае, подходы к созданию реалистичного изображения могут отличаться.

Начинаем с композиции

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

Не забудьте о деталях

При работе над трехмерным проектом нужно всегда принимать во внимание то, насколько объект виден в сцене, насколько он освещен и т.д. В зависимости от этого объект должен иметь большую или меньшую степень детализации. Трехмерный мир — это виртуальная реальность, где все напоминает театральные декорации. Если вы не будете видеть заднюю часть объекта — не моделируйте ее. Если у вас есть болт с накрученной гайкой, не стоит моделировать резьбу под гайкой; если в сцене будет виден фасад дома, не нужно моделировать интерьер; если вы моделируете сцену ночного леса, основное внимание стоит уделить лишь тем объектам, которые находятся на переднем плане. Деревья, расположенные на заднем плане, на отрендеренной картинке видны почти не будут, поэтому моделировать их с точностью до листика не имеет смысла.

Часто при создании трехмерных моделей едва ли не главную роль играют небольшие детали, которые делают объект более реалистичным. Если у вас не получается добиться реалистичности в сцене, попробуйте повысить степень детализации объектов. Чем больше мелких деталей будет содержать сцена, тем более правдоподобно будет выглядеть финальное изображение. Вариант с увеличением детализации сцены практически беспроигрышен, но имеет один недостаток — большое количество полигонов, что ведет к увеличению времени просчета. Убедиться в том, что реалистичность сцены напрямую зависит от степени детализации, можно на таком простом примере. Если создать в сцене три модели травинки и визуализировать их, то на зрителя изображение не произведет никакого впечатления. Однако, если эту группу объектов многократно клонировать, изображение будет смотреться эффектнее. Управлять детализацией можно двумя способами: так, как это описано выше (увеличивая количество полигонов в сцене), или же повышая разрешение текстуры. Во многих случаях имеет смысл больше внимания уделить созданию текстуры, нежели самой модели объекта. При этом вы сэкономите системные ресурсы, требуемые на просчет сложных моделей, уменьшив тем самым время рендеринга. Лучше делать более качественную текстуру, чем увеличивать количество полигонов. Прекрасным примером разумного использования текстуры может служить стена дома. Вы можете моделировать каждый кирпичик по отдельности, что займет и время, и ресурсы. Гораздо проще использовать фотографию кирпичной стены.

Если нужно создать пейзаж

Одна из наиболее трудных задач, с которой часто приходится иметь дело 3D-дизайнерам — моделирование природы. В чем же заключается проблема создания окружающей нас естественной обстановки? Все дело в том, что любой органический объект, будь то животное, растение и пр. — неоднороден. Несмотря на кажущуюся симметричную структуру, форма таких объектов не поддается никакому математическому описанию, с которым имеют дело трехмерные редакторы. Даже те объекты, которые, на первый взгляд, имеют симметричный вид, при более детальном рассмотрении оказываются несимметричными. Так, например, волосы на голове человека располагаются неодинаково с правой и левой стороны, чаще всего он их зачесывает направо, а лист на ветке дерева может быть поврежден гусеницей в каком-нибудь месте и т.д. Самым лучшим решением для имитации органики в 3D можно считать фрактальный алгоритм, который часто используется в настройках материалов и различных инструментов трехмерного моделирования. Этот алгоритм лучше других математических выражений помогает имитировать органику. Поэтому при создании органических объектов обязательно используйте возможности фрактального алгоритма для описания их свойств.

Тонкости создания материала

Материалы, которые имитируются в трехмерной графике, могут быть самыми разнообразными — от металла, дерева и пластика до стекла и камня. При этом каждый материал определяется большим количеством свойств, среди которых — рельеф поверхности, зеркальность, рисунок, размер и яркость блика и т.д. Визуализируя любую текстуру, нужно помнить, что качество материала на полученном изображении очень сильно зависит от множества факторов, среди которых — параметры освещения (яркость, угол падения света, цвет источника света и т.д.), алгоритм визуализации (тип используемого рендерера и его настройки), разрешение растровой текстуры. Также большое значение имеет метод проецирования текстуры на объект. Неудачно наложенная текстура может "выдать" трехмерный объект образованным швом или подозрительно повторяющимся рисунком. Кроме того, обычно в реальности объекты не бывают идеально чистыми, то есть на них всегда есть следы грязи. Если вы моделируете кухонный стол, то, несмотря на то, что рисунок на кухонной клеенке повторяющийся, ее поверхность не должна быть везде одинаковая — клеенка может быть потерта на углах стола, иметь порезы от ножа и т.д. Чтобы ваши трехмерные объекты не выглядели неестественно чистыми, можно использовать сделанные вручную (например, в Adobe Photoshop) карты загрязненности и смешивать их с исходными текстурами, получая реалистичный "изношенный" материал.

Добавление движения

При создании анимации геометрия объектов играет более важную роль, чем в случае со статичным изображением. В процессе движения зритель может видеть объекты под разным углом зрения, поэтому важно, чтобы модель выглядела реалистично со всех сторон. Например, при моделировании в статичной сцене деревьев можно пойти на хитрость и упростить себе задачу: вместо того, чтобы создавать "настоящее" дерево, можно сделать две пересекающиеся перпендикулярные плоскости и наложить на них текстуру с использованием маски прозрачности. При создании анимированной сцены этот способ не годится, так как такое дерево будет выглядеть реалистично только с одной точки, и любой поворот камеры "выдаст" подделку. В большинстве случаев, как только трехмерные объекты исчезают из объектива виртуальной камеры, лучше удалить их из сцены. В противном случае компьютер будет выполнять никому не нужную задачу, просчитывая невидимую геометрию.

Второе, что необходимо учитывать при создании анимированных сцен — это движение, в котором пребывает большинство предметов в реальности. Например, шторы в комнате колышутся от ветра, стрелки часов идут и т.д. Поэтому при создании анимации нужно обязательно проанализировать сцену и обозначить те объекты, для которых необходимо задать движение. Кстати сказать, движение придает реалистичности и статичным сценам. Однако, в отличие от анимированных, в них движение должно угадываться в застывших мелочах — в сползающей со спинки кресла рубашке, ползущей гусеницы на стволе, согнувшемся от ветра дереве. Если для более простых объектов сцены создать реалистичную анимацию относительно несложно, то смоделировать движение персонажа без вспомогательных инструментов практически невозможно. В повседневной жизни наши движения настолько естественны и привычны, что мы не думаем, например, запрокинуть ли нам голову во время смеха или пригнуться, проходя под низким навесом. Моделирование же подобного поведения в мире трехмерной графики сопряжено с множеством подводных камней, и воссоздать движения, и тем более мимику, человека не так-то просто. Именно поэтому для упрощения задачи применяется следующий способ: на тело человека навешивается большое количество датчиков, которые фиксируют перемещение любой его части в пространстве и подают соответствующий сигнал на компьютер. Тот, в свою очередь, полученную информацию обрабатывает и использует ее по отношению к некоторой скелетной модели персонажа. Такая технология называется motion capture. При движении оболочки, которая надевается на скелетную основу, необходимо также учитывать мускульную деформацию. Тем 3D-аниматорам, которые заняты персонажной анимацией, будет полезно изучить анатомию для того, чтобы лучше ориентироваться в системах костей и мускулов.

Освещение — это не только свет, но и тени

Создание сцены с реалистичным освещением — еще одна задача, которую предстоит решить для того, чтобы придать конечному изображению большую реалистичность. В реальном мире световые лучи многократно отражаются и преломляются в объектах, в результате чего тени, отбрасываемые объектами, в основном, имеют нечеткие, размытые границы. За качество отображения теней, в основном, отвечает аппарат визуализации. К теням, отбрасываемым в сцене, предъявляются отдельные требования. Отбрасываемая от объекта тень может сказать о многом — как высоко он находится над землей, какова структура поверхности, на которую падает тень, каким источником освещен объект и т.д. Если о тенях в сцене забыть, такая сцена никогда не будет выглядеть реалистичной, так как в реальности каждый объект имеет свою тень. Кроме этого, тень может подчеркнуть контраст между передним и задним планом, а также "выдать" объект, который не попал в поле зрения объектива виртуальной камеры. В этом случае зрителю дается возможность самому домыслить окружающую обстановку сцены. Например, на рубашке трехмерного персонажа он может увидеть падающую тень от веток и листьев и догадаться, что с обратной стороны от точки съемки растет дерево. С другой стороны, слишком большое количество теней не сделает изображение более реалистичным. Следите за тем, чтобы объект не отбрасывал тени от вспомогательных источников света. Если в сцене присутствует несколько объектов, излучающих свет, например, фонарей, то все элементы сцены должны отбрасывать тени от каждого из источников света. Однако, если в такой сцене вы будете использовать вспомогательные источники света (например, для того, чтобы подсветить темные участки сцены), создавать тени от этих источников не нужно. Вспомогательный источник должен быть незаметен зрителю, а тени выдадут его присутствие.

При создании сцены важно не переборщить с количеством источников света. Лучше потратить немного времени на то, чтобы наилучшим образом подобрать его положение, чем использовать несколько источников света там, где можно обойтись и одним. В случае же, когда использование нескольких источников необходимо, следите за тем, чтобы каждый из них отбрасывал тени. Если вы не можете увидеть тени от источника света, то, возможно, другой, более сильный, источник пересвечивает их. При расстановке источников света в сцене обязательно обратите внимание на их цвет. Источники дневного света имеют голубой оттенок, для создания же источника искусственного света нужно придать ему желтоватый окрас. Также следует принимать во внимание, что цвет источника, имитирующего дневной свет, зависит еще и от времени суток. Поэтому, если сюжет сцены подразумевает вечернее время, освещение может быть, например, в красноватых оттенках заката.

Самое главное — просчет

Визуализация — это завершающий и, безусловно, самый ответственный этап создания трехмерной сцены. Редактор трехмерной графики просчитывает изображение, учитывая геометрию объектов, свойства материалов, из которых они сделаны, расположение и параметры источников света и т.д. Если сравнивать работу в 3ds max с видеосъемкой, то значение движка рендеринга можно сопоставить с пленкой, на которой снимается материал. Точно так же, как на двух пленках разных фирм могут получаться яркий и блеклый снимки, результат вашей работы может быть реалистичный или только удовлетворительный в зависимости от того, какой алгоритм просчета изображения вы выбрали. Существование большого количества алгоритмов визуализации стало причиной увеличения числа внешних подключаемых рендереров. Часто один и тот же рендерер может интегрироваться с разными пакетами 3D-графики. По скорости и качеству просчитываемого изображения внешние визуализаторы, как правило, превосходят стандартный аппарат рендеринга 3D-редакторов. Однако нельзя однозначно дать ответ на вопрос, какой из них дает наилучший результат. Понятие "реалистичность" в этом случае является субъективным, потому что нет каких-либо объективных критериев, по которым можно было бы оценить степень реалистичности визуализатора.

Однако можно сказать наверняка, что для того, чтобы финальное изображение было более реалистичным, алгоритм визуализации должен учитывать все особенности распространения световой волны. Как мы уже говорили выше, попадая на объекты, луч света многократно отражается и преломляется. Просчитать освещенность в каждой точке пространства с учетом бесконечного числа отражений невозможно, поэтому для определения интенсивности света используются две упрощенные модели: трассировка (Raytracing) и метод глобальной освещенности (Global Illumination). До недавнего времени наиболее популярным алгоритмом визуализации была трассировка световых лучей. Этот метод заключался в том, что трехмерный редактор отслеживал ход луча, испускаемого источником света, с заданным числом преломлений и отражений. Трассировка не может обеспечить фотореалистичного изображения, поскольку этот алгоритм не предусматривает получения эффектов рефлективной и рефрактивной каустики (блики, возникающие в результате отражения и преломления света), а также свойств рассеиваемости света. На сегодняшний день использование метода глобального освещения является обязательным условием для получения реалистичного изображения. Если при трассировке просчитываются только те участки сцены, на которые попадают лучи света, метод глобального освещения просчитывает рассеиваемость света и в неосвещенных или находящихся в тени участках сцены на основе анализа каждого пикселя изображения. При этом учитываются все отражения лучей света в сцене.

Одним из наиболее распространенным способов просчета глобального освещения является Photon Mapping (фотонная трассировка). Этот метод подразумевает расчет глобального освещения, основанный на создании так называемой карты фотонов — информации об освещенности сцены, собранной при помощи трассировки. Преимущество Photon Mapping заключается в том, что единожды сохраненные в виде карты фотонов результаты фотонной трассировки впоследствии могут использоваться для создания эффекта глобального освещения в сценах трехмерной анимации. Качество Global Illumination, просчитанное при помощи фотонной трассировки, зависит от количества фотонов, а также глубины трассировки. При помощи Photon Mapping можно также осуществлять просчет каустики. Помимо просчета глобального освещения, внешние визуализаторы позволяют визуализировать материалы с учетом эффекта подповерхностного рассеивания (Sub-Surface Scattering). Этот эффект является необходимым условием достижения реалистичности таких материалов, как кожа, воск, тонкая ткань и т.д. Лучи света, попадающие на такой материал, помимо преломления и отражения, рассеиваются в самом материале, тем самым вызывая легкое свечение изнутри.

Еще одна причина, по которой изображения, просчитанные с помощью подключаемых рендереров, более реалистичны, чем картинки, визуализированные с использованием стандартных алгоритмов просчета — возможность использования эффектов камеры. К ним относятся, прежде всего, глубина резкости (Depth of Field), смазывание движущихся объектов (motion blur). Эффект глубины резкости можно использовать тогда, когда требуется обратить внимание зрителя на какую-нибудь деталь сцены. Если изображение содержит эффект глубины резкости, зритель в первую очередь замечает элементы сцены, на которые наведена резкость. Эффект глубины резкости может помочь в том случае, когда необходимо визуализировать то, что видит персонаж. С помощью эффекта глубины резкости можно фокусировать взгляд персонажа то на одном, то на другом объекте. Эффект глубины резкости является обязательной составляющей реалистичного изображения и тогда, когда внимание в сцене обращено на мелкий объект — например, на гусеницу на стволе. Если на картинке будут одинаково четко прорисованы все объекты, которые попадают в фокус включая ветки, листья, ствол и гусеницу, то такое изображение не будет выглядеть реалистично. Если бы подобная сцена существовала в действительности, и съемка велась не виртуальной, а настоящей камерой, в фокусе был бы только главный объект — гусеница. Все, что находится на расстоянии от нее, выглядело бы размытым. Поэтому на трехмерном изображении обязан присутствовать эффект глубины резкости.

Вывод

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

Сергей и Марина Бондаренко, http://www.3domen.com


Компьютерная газета. Статья была опубликована в номере 22 за 2007 год в рубрике soft

©1997-2024 Компьютерная газета