Что такое 3D-графика и как она устроена

Мы каждый день видим 3D-графику, но не задумываемся, как она устроена изнутри. Давайте заглянем за ширму.

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

Давайте разберёмся, как обычные точки превращаются в 3D-графику:

Cyberpunk 2077 — Official Cinematic Trailer | E3 2019

Евгений Кучерявый

Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.


Создание 3D-моделей

Персонажи, оружие, машины, пончики, пейзажи… всё, что вы видите в играх и фильмах с использованием 3D-графики, состоит из точек, граней и плоскостей. Вот, например, изображение трёхмерной сферы:

Кажется, что это просто гладкий шар, но на самом деле он состоит из множества точек — вершин (англ. vertices — вершины):

Чем больше вершин, тем более детализированной выглядит модель и тем больше ресурсов требуется компьютеру, чтобы отрисовать такой объект на экране.

Вершины соединяются друг с другом и образуют рёбра (англ. edge) и грани (англ. face):

Всё это образует полигональную сетку (англ. polygon mesh или просто меш, геометрия) —- совокупность вершин, рёбер и граней (плоскостей), которая определяет форму объекта.

У каждой вершины есть свои координаты по осям X, Y и Z. А то, как грань отображается на мониторе, зависит от её положения относительно камеры и источников света:

Изменяя меш, добавляя вершины и меняя их положение, мы можем создавать любые сложные объекты:

3D-моделирование в Blender

Для создания твёрдых объектов (англ. hard surface) 3D-художники обычно меняют положение граней вручную, как это показано выше.

При работе с персонажами чаще используется скульптинг (англ. sculpting) — напоминает лепку из пластилина:

Скульптинг в Blender

Но геометрия — не последний этап создания 3D-модели. Например, у моделей, созданных скульптингом, плохая топология (то, как именно устроен меш) — слишком много задействовано вершин:

Чтобы исправить это, используют специальные инструменты для ретопологии — это когда удаляют лишние грани, чтобы оптимизировать модель.

Также нужно подготовить материал — это то, как окрашены разные грани или вся модель. Возможен как и простой цвет, так и изображение или паттерн.

Есть множество других важных моментов: анимирование, запекание текстур, составление карт нормалей и так далее. Всё это стоит вплотную изучить тем, кто собирается моделировать 3D. Сейчас же мы поговорим о более техническом вопросе.

Отображение 3D-моделей на экране

Как на двумерном экране показать трёхмерную модель? В этом вопросе столько математики, что может показаться, будто это какая-то магия.

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

Чтобы компьютер понял, как это всё отобразить, нужен наблюдатель, чьими глазами он будет смотреть на сцену, — камера. А чтобы мы могли хоть что-то разглядеть, нужен источник света.

Вот тут и начинается магия: компьютеру предстоит определить, как бы выглядела эта сцена с точки зрения камеры. Вот так это устроено:

Мы видим только то, что расположено между областями отсечения. Всё остальное, как можно догадаться, отсекается. Компьютер должен понять, какие цвета отобразить на мониторе в каждом из пикселей. Для этого он отправляет из камеры лучи и смотрит, во что они ударяются.

Если луч попадает в объект, то дальше компьютер проверяет, в какой именно полигон было попадание, какой материал у объекта, как падает свет, на каком расстоянии находится объект от камеры и многие другие переменные.

Всё это транслируется на плоскость проекции (англ. viewport) — двумерный квадрат в трёхмерном пространстве. Эта плоскость уже используется для того, чтобы составить изображение, которое будет показано на мониторе.

Процесс перевода 3D-сцены в 2D-изображение называется рендерингом (англ. rendering) или отрисовкой.

Движение в 3D

Мы узнали, как выводится одно изображение, но ведь 3D бывает ещё и в фильмах и играх, где постоянно происходит какое-то движение. На самом деле мы до сих используем тот же принцип анимации, что и несколько веков назад.

В 1877 году был изобретён праксиноскоп — барабан, обклеенный изнутри последовательностью изображений. В его центре есть ещё один барабан поменьше, обклеенный зеркалами. Если смотреть в центр устройства, когда оно вертится, можно увидеть иллюзию движения:

Сейчас это выглядит так:

  1. На монитор транслируется отрисованная сцена.
  2. Положение объектов на ней немного меняется.
  3. И на экран выводится обновлённое изображение.

Большинство современных мониторов могут выводить 60 картинок (кадров) в секунду (англ. Frames Per Second, FPS), благодаря чему создаётся ощущение плавности.

Сравнение плавности движения в играх при 30 FPS и 60 FPS

В случае с играми все кадры отрисовываются в реальном времени. То есть, пока пользователь играет, положение объектов на сцене меняется, компьютер 60 раз в секунду проверяет, как это всё выглядит, и обновляет изображение на мониторе.

Разумеется, это накладывает ограничения на качество изображения. Например, в играх только недавно появилась технология трассировки лучей (англ. Ray Tracing), которая позволяет программно рассчитывать рассеивание лучей света.

Вот, например, как выглядит сцена из Minecraft без RTX (технология трассировки лучей в видеокартах Nvidia):

И вот так она меняется с RTX:

Технология Ray Tracing делает свет и тени реалистичными, поэтому даже такие кубические игры, как Minecraft, выглядят очень правдоподобно.

В мультипликации же таких ограничений почти нет:

  1. 3D-художники составляют сцену.
  2. Прописывают поведение камеры и объектов.
  3. И запускают рендеринг видео.

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

Заключение

Хоть в этой статье не описана вся магия 3D в мельчайших деталях, с формулами и алгоритмами рендеринга, я надеюсь, вы стали лучше понимать, как это всё вообще работает.

Знание таких фундаментальных вещей делает вас профессиональнее, даже если никакого практического применения у них нет. Важно не только уметь что-то делать, но и понимать, зачем вы это делаете и на что повлияют ваши действия.

Если же вас интересует практическая сторона вопроса и вы хотите научиться создавать крутые 3D-модели, то можете записаться на наш курс. Вы выполните массу заданий, получите обратную связь от экспертов, прокачаете свои навыки и положите несколько проектов в портфолио.

Курс

Профессия 3D-художник


Вы изучите Photoshop, Autodesk Maya и Houdini с нуля, научитесь 3D-моделированию и добавите 8 практических работ в портфолио. За год вы освоите профессию, востребованную в кино и игровой индустрии.
После прохождения обучения — помощь в трудоустройстве.

Хочешь получать персональную подборку статей по дизайну?
Подпишись на рассылку Skillbox