Вы, наверное, читаете эту статью на экране монитора компьютера или мобильного устройства — дисплей, который имеет реальные размеры, высоту и ширину. Но когда вы смотрите, например, мультфильм История Игрушек или играете в игру Tomb Raider, вы лицезреете трёхмерный мир. Одной из самых удивительных вещей трехмерного мира является то, что мир, который вы видите, может быть миром, в котором мы живем, миром, в котором мы будем жить завтра, или миром, который живет только в умах создателей фильма или игры. И все эти миры могут появиться только на одном экране — это как минимум интересно.
Как компьютер делает так, что обманывает наши глаза и мы думаем, что смотря на плоский экран видим глубину представленной картины? Как разработчики игр делают так, что мы видим реальных персонажей, передвигающихся в реальном ландшафте? Сегодня я расскажу вам о визуальных трюках, используемых графическими дизайнерами, и о том, как всё это разрабатывается и кажется нам настолько простым. На самом деле всё не просто, и чтобы узнать, что из себя представляет 3D-графика, ступайте под кат — там вас ждёт увлекательная история, в которую, я уверен, вы погрузитесь с небывалым удовольствием.
Что делает изображение трехмерным?
Изображение, которое имеет или кажется, что имеет высоту, ширину и глубину является трехмерным (3D). Картинка, которая имеет высоту и ширину, но не глубину является двумерной (2D). Напомните-ка мне, где вы встречаете двумерные изображения? — Практически везде. Вспомните даже обычный символ на двери туалета, обозначающий кабинку для того или иного пола. Символы спроектированы таким образом, что вы можете распознать их и узнать с первого взгляда. Вот почему они используют только самые основные формы. Более детальная информация о каком-либо символе может рассказать вам, какую одежду носит этот маленький человечек, весящий на двери, или цвет волос, например, символики двери женского туалета. Это одно из основных отличий между тем, как используется трехмерная и двумерная графики: 2D-графика проста и запоминаема, а 3D-графика использует больше деталей и вмещает в казалось бы обычный объект значительно больше информации.
Например, треугольники имеют три линии и три угла — всё, что нужно, чтобы рассказать из чего состоит треугольник и вообще что представляет собой. Однако посмотрите на треугольник с другой стороны — пирамида — является трехмерной структурой с четырьмя треугольными сторонами. Обратите внимание, что в этом случае имеется уже шесть линий и четыре угла — из этого и состоит пирамида. Видите, как обычный объект может превратится в трехмерный и вместить в себя гораздо больше информации, необходимой, чтобы рассказать историю треугольника или пирамиды.
На протяжении сотен лет художники использовали некоторые визуальные трюки, которые могут сделать плоское 2D-изображение настоящим окном в реальный трехмерный мир. Вы можете увидеть подобный эффект на обычной фотографии, которые вы можете сканировать и просмотреть на мониторе компьютера: объекты на фотографии кажутся меньше, когда они дальше; объекты же, близкие к объективу камеры, находятся в фокусе, значит, соответственно, всё, что за объектами в фокусе — размыто. Цвета, как правило, менее яркие, если объект не так близок. Когда мы говорим о 3D-графике на компьютерах сегодня — мы говорим об изображениях, которые движутся.
Что такое 3D-графика?
Для многих из нас игры на персональном компьютере, мобильном устройстве или вообще продвинутая игровая система — самый яркий пример и распространенный способ, благодаря которому мы можем созерцать трехмерную графику. Все эти игры, крутые фильмы, созданные при помощи компьютера, должны пройти три основных шага по созданию и представлению реалистичных трехмерных сцен:
- Создание виртуального 3D-мира
- Определение того, какая часть мира будет показана на экране
- Определение того, как пиксель на экране будет выглядеть, чтобы полное изображение казалось максимально реалистичным
Создание виртуального 3D-мира
Виртуальный 3D-мир — это, понятное дело, не то же самое, что и реальный мир. Создание виртуального 3D-мира — комплексная работа по компьютерной визуализации мира, схожего с реальным, для создания которого используется большое количество инструментов и который подразумевает крайне высокую детализацию. Возьмите, к примеру, очень маленькую часть реального мира — свою руку и рабочий стол под ней. Ваша рука обладает особенными качествами, которые определяют, как она может двигаться и выглядеть внешне. Суставы пальцев сгибаются только в сторону ладони, а не противоположно от неё. Если вы ударите по столу, то с ним никаких действий не произойдёт — стол тверд. Соответственно, ваша рука не может пройти через ваш рабочий стол. Вы можете доказать, что это утверждение истинно, смотря на что-то естественное, а в виртуальном трехмерном мире дела обстоят совсем по-другому — в виртуальном мире нет природы, нет таких естественных вещей, как ваша рука, например. Предметы в виртуальном мире полностью синтетические — это единственные свойства, данные им с помощью программного обеспечения. Программисты используют специальные инструменты и разрабатывают виртуальные 3D-миры с особой тщательностью, чтобы всё в них всегда вело себя определённым образом.
Какая часть виртуального мира показывается на экране?
В любой момент экран показывает только крошечную часть виртуального трехмерного мира, созданного для компьютерной игры. То, что показывается на экране — определенные комбинации способов, которыми определяется мир, где вы принимаете решение куда пойти и что посмотреть. Независимо от того, куда вы идёте — вперёд или назад, вверх или вниз, влево или вправо — виртуальный трехмерный мир вокруг вас определяет то, что вы видите, находясь на определенной позиции. То, что вы видите, имеет смысл от одной сцены к другой. Если вы смотрите на объект с того же расстояния, вне зависимости от направления, он должен выглядеть высоко. Каждый объект должен выглядеть и двигаться таким образом, чтобы вы верили в то, что он имеет ту же массу, что и реальный объект, что он такой же твёрдый или мягкий, как и реальный объект, и так далее.
Программисты, которые пишут компьютерные игры, прикладывают огромные усилия к разработке виртуальных 3D-миров и делают их так, чтобы вы могли блуждать в них, не сталкиваясь ни с чем, что заставляло бы вас думать «Это не могло произойти в этом мире!». Последней вещью, которую вы хотите видеть — два твёрдых объекта, которые могут пройти прямо друг через друга. Это — резкое напоминание о том, что всё, что вы видите, является притворством. Третий шаг включает в себя ещё как минимум столько же вычислений, сколько и другие два шага и должны происходить так же в реальном времени.
Слева компьютерная графика, справа — актер мокапа
Освещение и перспектива
Когда вы входите в комнату, вы включаете свет. Вы, наверное, не тратите много времени на раздумья, как же это на самом деле работает и как свет исходит от лампы, распространяясь по комнате. Но люди, работающие с трехмерной графикой, должны думать об этом, потому что все поверхности, окружающие каркасы и прочие подобные вещи должны быть освещены. Один из методов — трассировка лучей — предполагает участки пути, которые берут лучи света, покидая лампочку, отскакивая от зеркал, стен и других отражающих поверхностей и, наконец, приземляются на предметы с различной интенсивностью от различных углов. Это сложно, ведь от одной лампочки может быть один луч, но в большинстве помещений используется несколько источников света — несколько светильников, потолочные светильники (люстры), торшеры, окна, свечи и так далее.
Освещение играет ключевую роль в двух эффектах, которые придают внешний вид, вес и внешнюю прочность объектов: затемнение и тени. Первый эффект, затемнение, представляет собой место, где с одной стороны на объект падает больше света, чем с другой. Затемнение придает объекту множество натурализма. Эта штриховка — то, что делает сгибы в одеяле глубокими и мягкими, а высокие скулы кажутся поразительными. Эти различия в интенсивности света укрепляют общую иллюзию, что у объекта есть глубина, а также высота и ширина. Иллюзия массы происходит от второго эффекта — тени.
Твердые тела отбрасывают тени, когда свет падает на них. Вы можете увидеть это, когда вы наблюдаете тень, которую солнечные часы или дерево бросают на тротуар. Поэтому мы привыкли видеть реальные предметы и людей отбрасывающих тени. В трехмерном изображении тень, опять же, укрепляет иллюзию, создавая эффект присутствия в реальном мире, а не в экране математически произведенных форм.
Перспектива
Перспектива — одно слово, способное значить многое, но фактически описывающее простой эффект, который видели все. Если вы стоите на стороне длинной, прямой дороги и смотрите вдаль, кажется, как будто обе стороны дороги сходятся в одной точке на горизонте. Кроме того, если деревья стоят рядом с дорогой, деревья дальше будут выглядеть меньше, чем деревья близкие к вам. На самом деле будет похоже, что деревья сходятся в определённой точке горизонта, сформированной около дороги, но это не так. Когда все объекты на сцене будут выглядеть в конечном итоге сходящимися в одной точке на расстоянии — это перспектива. Есть множество вариаций этого эффекта, но большинство трехмерной графики использует единую точку зрения, которая только что была описана мною.
Глубина резкости
Другим оптическим эффектом, успешно использующимся для создания графических трехмерных объектов, является глубина резкости. Используя мой пример с деревьями, помимо вышеописанного происходит ещё одна интересная вещь. Если вы посмотрите на деревья, находящиеся близко по отношению к вам, деревья, расположенные дальше, как представляется, будут не в фокусе. Кинорежиссеры и компьютерные аниматоры используют данный эффект, глубину резкости, для двух целей. Первая заключается в укреплении иллюзии глубины в рассматриваемой пользователем сцене. Вторая цель — использование режиссерами глубины резкости сосредотачивает свое внимание на предметах или актерах, которые считаются наиболее важными. Чтобы обратить ваше внимание не героиню фильма, например, может использоваться «малая глубина резкости», где только актер находится в фокусе. Сцена, которая разработана таким образом, чтобы произвести на вас полное впечатление, наоборот будет использовать «глубокую глубину резкости», чтобы как можно больше объектов было в фокусе и таким образом заметно зрителю.
Сглаживание
Ещё один эффект, который также полагается на обман глаз — сглаживание. Цифровые графические системы очень хорошо подходят для создания четких линий. Но бывает и такое, что оказывают верх диагональные линии (они же довольно часто появляются в реальном мире, и тогда компьютер воспроизводит линии, которые больше напоминают лесенки (я думаю, что вы знаете, что такое лесенка при детальном рассмотрении объекта изображения)). Таким образом, чтобы обмануть свой глаз при виде гладкой кривой или линии, компьютер может добавить определённые оттенки цвета в строки пикселей, окружающих линию. Этим «серым цветом» пикселей компьютер как раз-таки и обманывает ваши глаза, а вы, тем временем, думаете, что зубчатых ступенек больше нет. Этот процесс добавления дополнительных цветных пикселей для обмана глаз называется сглаживанием, и он является одним из методов, которые создаются вручную компьютерной трехмерной графикой. Другой сложной задачей для компьютера является создание трехмерной анимации, пример которой будет представлен вам в следующем разделе.
Реальные примеры
Когда все трюки, описанные мною выше, используются вместе для создания потрясающе реальной сцены — итог соответствует трудам. Последние игры, фильмы, машинно-генерируемые объекты сочетаются с фотографическими фонами — это усиливает иллюзию. Вы можете увидеть удивительные результаты, когда вы сравните фотографии и компьютерную сцену.
На фотографии выше представлен обычный офис, для входа в который используется тротуар. В одной из следующих фотографий на тротуар был положен простой однотонный мяч, после чего эту сцену сфотографировали. Третья фотография представляет из себя уже использование компьютерной графической программы, которая и создала на самом деле несуществующий на этой фотографии мяч. Можете ли вы сказать, что есть какие-то существенные различия между двумя этими фотографиями? Думаю, что нет.
Создание анимации и видимости «живого действия»
До сих пор мы рассматривали инструменты, которые заставляют любое цифровое изображение казаться более реалистичным — является ли изображение стиллом или частью анимационной последовательности. Если это анимационная последовательность, то программисты и дизайнеры будут использовать ещё больше различных визуальных уловок, чтобы создать видимость «живого действия», а не изображений, созданных компьютером.
Сколько кадров в секунду?
Когда вы идете на шикарный блокбастер в местное кино, последовательность изображений, называемых кадрами работает в количестве 24 кадра в секунду. Так как наша сетчатка сохраняет изображение немного дольше, чем 1/24 секунды, глаза большинства людей будут смешивать кадры в один непрерывный образ движения и действия.
Если вы не понимаете, о чём я только что написал, то посмотрим на это с другой стороны: это означает, что каждый кадр кинофильма — фотография, сделанная на выдержке (экспозиции) 1/24 секунды. Таким образом, если вы посмотрите на один из многочисленных кадров фильма о гонках, вы увидите, что некоторые гоночные автомобили «размываются», потому что они проехали с большой скоростью в то время, пока у камеры открыт затвор. Данная размытость вещей, создающаяся за счёт быстрого движения — то, что мы привыкли видеть, и это часть того, что делает изображение реальным для нас, когда мы смотрим на него на экране.
Однако, цифровые трехмерные изображения — это ведь не фотографии как ни крути, поэтому никакого эффекта размывания не происходит, когда объект перемещается в кадре во время съёмки. Чтобы сделать изображения более реалистичными, размывание должно быть явно добавлено программистами. Некоторые дизайнеры считают, что для «преодоления» этого отсутствия естественного размытия требуется более 30 кадров в секунду, посему и подтолкнули игры выйти на новый уровень — 60 кадров в секунду. Хотя это и позволяет каждому отдельному изображению выглядеть в мельчайших подробностях и отображать движущиеся объекты в меньших приращениях, оно существенно увеличивает количество кадров для данной анимационной последовательности действий. Есть и другие определенные куски изображений, где точный рендеринг на компьютере должен быть принесен в жертву ради реализма. Это относится как к подвижным, так и неподвижным объектам, но это уже совсем другая история.
Подойдем к концу
Компьютерная графика продолжает удивлять весь мир, создавая и генерируя самые разнообразные действительно реалистично движущиеся и недвижущиеся объекты и сцены. С 80 колонок и 25 линий монохромного текста графика значительно продвинулась, и результат очевиден — миллионы людей играют в игры и проводят самые различные симуляции с сегодняшней технологией. Новые 3D-процессоры также дадут о себе знать — благодаря им мы сможем в буквальном смысле исследовать другие миры и испытывать то, чего мы никогда не осмеливались попробовать в реальной жизни. Напоследок вернемся к примеру с мячом: как создавалась эта сцена? Ответ прост: изображение имеет сгенерированный компьютером мяч. Нелегко сказать, который из двух является подлинным, не так ли? Наш мир удивителен и мы должны соответствовать ему. Надеюсь, вам было интересно и вы узнали для себя очередную порцию интересной информации.
Великий могучий.есть же синонимы!