Трёхмерная графика
Трёхмерная графика (фр. synthèse d'images tridimensionnelles, также 3D-графика, осмысляемая как работа в трёх измерениях: x, y, z — три оси прямоугольной системы координат), — совокупность методик (в том числе, унаследованных от САПР), позволяющих формировать изображения объектов в перспективе на экран компьютера. Трёхмерная графика широко применяется в цифровом искусстве, в индустрии кино (первые применения — студии Pixar, Disney, DreamWorks, Blue Sky, Illumination, ILM) и, начиная с 1992 года, в индустрии видеоигр. Следует отличать понятие 3D-графики от терминов, связанных с понятием рельефа или стереоскопии.
История
Термин «трёхмерные изображения» является современным обозначением того, что прежде называли рисунком или живописью в перспективе со времён Ренессанса.
«Идеальный город» (ок. 1475), долго приписывался Пьеро делла Франческа
Отличие состоит в том, что до появления компьютеров перспектива достигалась с помощью графических методов из проективной геометрии. В настоящее время вычисления выполняются численно на основе трёхмерных цифровых данных, что позволяет легко изменять точку проекции и её параметры, а также рассчитывать серии проекций для создания анимации.
Современные компьютерные синтезированные изображения базируются на тех же принципах проекции на плоскость, и их история неотделима от истории вычислительной техники. Появление компьютерной графики относится к началу 1950-х годов в США и изначально было связано с научными исследованиями. В частности, был реализован комплекс из ЭЛТ и светового пера по идее Айвена Сазерленда из MIT для управления воздушным движением в ВВС. В 1961 году добавили перекрестие на экране для отображения положения пера — сначала реализовывали 2D-графику, затем — трёхмерную, более затратную по времени и ресурсам.
В 1967 году Университет Юты (США) начал специализироваться в области трёхмерной графики под руководством Дэвида Эванса и Айвена Сазерленда, моделируя различные объекты (например, автомобиль Сазерленда), а в 1968 году была основана компания Evans & Sutherland. В 1970 году лаборатория Xerox PARC (Palo Alto Research Center) стала центром новаторских исследований, результатами которых Xerox не сумела воспользоваться. В 1975 году была создана одна из классических 3D-моделей — Ютская чайник, ставшая стандартом тестирования приложений трёхмерной графики. Оригинальный объект хранится в Бостонском компьютерном музее рядом с компьютером, отображающим его 3D-изображение.
До 1980-х годов область трёхмерной графики была доступна немногим из-за стоимости аппаратуры. С появлением персональных компьютеров — Xerox Star, IBM-PC (1981), Apple Macintosh (1984) — работа с трёхмерной графикой стала более доступной для обучения и производства. Развитие технологий позволило создавать зрелищные симуляции шаттлов и ракет для NASA, а также пейзажи и портреты.
Массовая доступность трёхмерной графики началась в 1990-х годах благодаря развитию аппаратуры, поддерживающей отрисовку в реальном времени: 3D-видеокарты от Silicon Graphics для рабочих станций, затем — для массовых ПК (например, Amiga, IBM PC — видеокарты 3dfx) и игровых консолей (PlayStation, Dreamcast и др.), что обеспечило распространение 3D-ускорения.
Общие сведения
В трёхмерной графике используется векторное пространство, обычно декомпозируемое на три оси — X, Y, Z.
Например, чтобы задать точку в комнате, фиксируют направление «влево–вправо» (X), «вперёд–назад» (Y) и «вверх–вниз» (Z). Для перехода из начала координат в заданную точку нужно:
- пройти x метров вправо,
- y метров вперёд,
- z метров вверх.
Порядок движения неважен — координатный тройник (x, y, z) однозначно определяет точку в пространстве (см. Координаты в пространстве, Декартова система координат, Аналитическая геометрия). Эта тройка называется координатами точки.
Начало координат («оригин») обычно обозначается O и соответствует тройке (0, 0, 0).
Смещение «a» влево эквивалентно смещению «-a» вправо; то же верно для других осей (см. Целое число).
Любой объёмный объект, например многогранник, описывается координатами своих вершин. Последовательность точек вида [(x₁, y₁, z₁), (x₂, y₂, z₂), …, (xₙ, yₙ, zₙ)] определяет объём.
К примеру, восемь точек:
- (-4, -4, -4)
- (-4, -4, 4)
- (-4, 4, -4)
- (-4, 4, 4)
- (4, -4, -4)
- (4, -4, 4)
- (4, 4, -4)
- (4, 4, 4)
задают вершины куба с рёбрами длиной 8 и центром в O.
Таким образом, куб задаётся числовым набором. Это пространство также называют трёхмерной или виртуальной матрицей в области 3D-графики.
Технологии и методы
Процесс создания трёхмерного изображения делится на два этапа:
- моделирование объекта — моделирование;
- визуализация (преобразование в итоговое изображение) — рендеринг.
В каждом из этих этапов применяется множество техник. Обычно методы моделирования и рендеринга логически разделены, однако на практике они тесно связаны.
Моделирование подразумевает хранение компьютером множества геометрических и графических характеристик, описывающих будущий модель. Такой набор называется 3D-сценой (от англ. scene — «вид»). Подробнее см. Трёхмерное моделирование.
- CSG (англ. Constructive Solid Geometry, конструктивная геометрия тел): объекты определяются как результат операций (объединение, пересечение и др.) над простыми формами (многогранники, сферы, коны, кривые Безье, сплайны, NURBS и пр.). Подходит для создания объектов «с нуля» — аналогична тому, как человек воображает форму вещей.
- B-Rep (англ. Boundary Representation, поверхностное представление): поверхность объекта ограничена двумерными геометрическими формами (обычно треугольниками). Это стандартная форма, получаемая со сканеров 3D, и основной способ представления при аппаратной акселерации 3D-графики.
- Сплайны, где поверхность задаётся сетью связанных кривых.
- Имплицитные поверхности, где объекты определяются поверхностями на границах между объёмами, чаще всего между сферами.
- Воксели: аналог растровых изображений для трёхмерного пространства (разбитие пространства на равные интервалы).
Моделирование может проводиться как автоматически (например, с помощью 3D-сканеров, формирующих цифровое представление по реальному объекту), так и вручную — с помощью 3D-редакторов. В последнем случае ответственность за создание модели несёт специалист по трёхмерной графике. Такие программы называют моделлерами (от англ. modeler). Подробнее — Программы для трёхмерного моделирования.
К числу наиболее известных и распространённых относятся 3D Studio Max, Maya, XSI, LightWave, Cinema 4D, 3D Turbo, Modo и Blender (открытое ПО).
Этап рендеринга делится на несколько фаз:
- расчёт освещения (иллюминация);
- проецирование на плоскость наблюдения;
- непосредственно рисование с возможным применением текстур.
Некоторые из этих фаз могут выполняться параллельно (например, в 3D-видеокартах.
Рендеринг (визуализация) заключается в преобразовании трёхмерной сцены в двумерное изображение. За это отвечает рендер-движок — отдельная программа или модуль, часто интегрированный с модельером.
- Локальное освещение:
- По поверхности: нормаль поверхности рассчитывается из положения вершин. Используя нормаль и свойства поверхности, складывается амбиентное освещение, отражённый (рассеянный и зеркальный) свет от источников. Это позволяет быстро добиться реалистичности при минимуме вычислений — точность можно повысить, разбив поверхности на большее число граней.
- Алгоритм Гуро: простейший — вычисляется нормаль вершины многогранника (обычно треугольник, реже четырёхугольник) по соседним; далее цвет рассчитывается в вершинах и интерполируется по пикселям между ними.
- Алгоритм Фонга даёт более точное объёмное восприятие: как и у Гуро, нормали вычисляются в вершинах, но затем интерполируются по точкам поверхности, после чего пересчитывается освещение. Метод требует больше вычислений, чем Гуро, но меньше, чем при определении нормалей в каждой точке отдельно. Если число граней велико, разница мельче, но при малом — Фонг выглядит заметно реалистичнее.
- Глобальное освещение:
- Радиосити (или радианс) вычисляет обмен световой энергией между поверхностями сцены с учётом отражения и поглощения — для этого сцена разбивается на конечные элементы поверхностей. Достигается естественное мягкое освещение, применимо вместе с трассировкой лучей для имитации переотражения света — это методы глобального освещения.
Построенные объекты переводятся в изображение: тройки (x, y, z) преобразуются в точки рисунка. Обычно используется линейная перспектива, при которой удалённые объекты рисуются меньшими («реальная 3D-проекция», или «естественное зрение»).
Положение точки определяется матричным преобразованием из координатной системы сцены в систему с началом в точке зрения и осью глубины z′, перпендикулярной к поверхности вывода. Оставшиеся оси x′ и y′ — параллельны ширине и высоте экрана. Делением координат по оси z′ приводят все точки к плоскости изображения.
Аксонометрия, в том числе кавалерийская перспектива и ортогональные проекции (например, изометрия, см. также Дескриптивная геометрия) — это частный случай линейной перспективы при бесконечно удалённой точке наблюдения: размеры не меняются с удалением. Такие проекции также реализуются через матричные вычисления.
Рендеринг, как правило, включает определение видимых и скрытых участков. Методы 3D-графики делят алгоритмы на вычисляющие скрытые грани (в пространстве 3D-сцены) и методы фотореалистичного рендеринга (в пространстве 2D-изображения). Современные алгоритмы чаще объединяют обе задачи.
Некоторые рендер-алгоритмы также учитывают ослабление деталей и контраста с удалением (атмосферная перспектива).
В каждом типе перспективы используется подходящий способ вывода:
- Z-буфер (буфер глубины): реализует «алгоритм художника» («рисуем от дальних к ближним»), обеспечивая корректное отображение пересекающихся полигонов (в том числе NURBS, сплайны) на уровне каждого пикселя, ведёт борьбу со скрытыми поверхностями.
- Трассировка лучей (англ. raytracing, и производный raycasting): моделирует обратный путь света от экрана к источнику, позволяет имитировать отражения, преломления и тени, однако результат зачастую слишком идеализирован/ненатурален. В этом случае проекция и рисование объединяются, ведь каждому лучу сопоставляется движение внутри 3D-сцены.
- и др.
Для повышения фотореализма обычно используют методы наложения текстур (texture mapping):
- применение натурных фототекстур;
- псевдообъёмная текстура — локальное искажение нормалей для передачи «зернистости», рельефа и т. д.;
- световые карты (lightmaps) и т. д.
С этими методами актуальна проблема фильтрации/устранения артефактов.
- Каркасное представление (отображение только граней, подобно штриховому рисунку): требует только расчёта скрытых поверхностей, остаётся востребованным при быстром предварительном просмотре в ряде 3D-моделлеров.
В результате всё равно получают двумерное изображение. Его можно было бы нарисовать сразу в 2D, но оно основано на трёхмерной модели.
В отличие от обычной «рисованной» 2D-картинки, мир трёхмерной графики существует как математическая структура — подобно скульптуре, изображаемой с любого ракурса. Финальное изображение — лишь частный случай виртуальной «проволочной» сцены: как художник может нарисовать объект с любого угла и масштаба, так и трёхмерная сцена теоретически допускает неограниченное число новых зрительных перспектив и параметров.
В то же время, в объёмном (или «волюметрическом», англ. volumetric) подходе каждой точке пространства приписывается отдельное значение (матричные расчёты). Связанные между собой такие точки образуют грани — фасеты, совокупность которых и составляет 3D-объект. Внутренние точки могут нести дополнительные функции, задавая не только форму, но и массу, наполненность (например, полый/сплошной объект).
Эффект рельефности (глубины) возникает за счёт смещения глаз (различие параллакса): каждый глаз видит объект под своим углом. Компьютер может сгенерировать два разных изображения — для левого и правого глаза, усилив эффект объёма.
Упрощённый вариант — анаглиф: одно изображение содержит информацию для обоих глаз в разных цветах (обычно зелёный и красный). Очки с цветными светофильтрами (зелёный и красный) разделяют поступающую информацию и формируют иллюзию глубины.
Возможны и другие методы, например, с одним исходным изображением и особым распределением цветов; вышеописанные очки подчёркивают глубинный эффект (перенос объекта вперёд/назад за счёт цвета), формируя стереоскопическое впечатление.
Подробнее см. Стереоскопия.
С помощью современных процессоров возможно за минуты или даже секунды вычислять «голограммы» для носителей с высоким разрешением. Аналогичные методы были разработаны ещё в 1970-х (статья в IBM Systems Journal сопровождалась напечатанным вычислённым голографическим изображением), но из-за высокой стоимости технологии не получили широкого распространения. Современная вычислительная производительность позволяет применять подобные подходы.
Временные ограничения
Хотя технология 3D-графики схожа как для кино, так и для видеоигр, есть важные различия. В играх требуется визуализация в реальном времени; в кино такой жёсткой необходимости нет, поэтому каждое изображение может отрисовываться отдельно и достигать очень высокого уровня детализации. Отсюда различие между «3D в реальном времени» и «предварительно вычисленной 3D-графикой».
Кроме кино и игр, трёхмерная графика применяется в других контекстах, например для виртуальных макетов — здесь используются гибридные решения между реалтайм-3D и предварительно рассчитанной визуализацией, подходящие для максимальной наглядности при приемлемой скорости.
Трёхмерная графика в реальном времени используется в видеоиграх, архитектурной и медицинской визуализации, симуляторах и множестве других приложений. Главная техническая задача здесь — максимально повысить качество изображения при заданном уровне быстродействия (частоты кадров). Ранее все вычисления выполнялись центральным процессором (CPU), но с ростом требований были созданы отдельные 3D-ускорители (PCI-карты). Первая массовая карта для ПК — Voodoo от 3dfx. В современных видеокартах стандартом стало наличие 3D-ускорения.
Использование специальных 3D-процессоров привело к необходимости в стандартных средствах разработки (API), открывающих быстродействующие функции как для программистов, так и для производителей. Самые распространённые 3D-API — OpenGL и Direct3D (компонент DirectX, разработан Microsoft исключительно для Windows, тогда как OpenGL кроссплатформенна). Vulkan — преемник OpenGL (финализирован в 2016 году консорциумом Khronos Group, включающим основных производителей железа (AMD, Intel, Nvidia)); Vulkan ориентирован на низкоуровневую работу с GPU и его памятью, обещает существенный прирост производительности и новых возможностей без замены «железа» (требуется только обновление графических драйверов). Samsung Galaxy S7 — первый мобильный смартфон с поддержкой Vulkan; показ с использованием движка Unreal Engine 4 задал новый стандарт качества мобильной 3D-графики. Впоследствии поддержка добавилась на планшетах Nvidia Shield (Android).
Этот вид 3D-графики применяется в производстве изображений, спецэффектов и анимационных фильмов. Главное достоинство — высочайшее качество и степень фотореализма: такие изображения зачастую неотличимы от фотографий. В 2001 году фильм Final Fantasy: Les Créatures de l'esprit был первой полной попыткой создания полнометражного анимационного фильма с фотореалистичной 3D-графикой.
Недостаток такой графики — полная статичность: зритель не может влиять на происходящее, так как каждая сцена просчитывается заранее (кино, телевидение). Ограничение по времени на вычисление есть, но оно выражается в других масштабах: в real-time-анимации требуется формировать более двадцати кадров в секунду, для precomputed оборудование может просчитывать один кадр от часов до дней, а потом показывать результат с нужной частотой (обычно 24 кадра/сек для фильма 35 мм). Обычно такие задачи решаются на фермах рендеринга — объединённых в сеть многочисленных компьютерах; для анимации продолжительностью 15 минут это более 27 000 изображений.
Софт для подобной задачи — т. н. «рендер-движки» (англ. renderers). За последние годы широко доступные программы существенно улучшились по реализму, в то же время студии держат штат квалифицированных аниматоров и моделеров. К известным рендерам относятся RenderMan, Mental Ray, finalRender, Brazil r/s, V-Ray.
Особую популярность приобрела техника raytracing: луч света проецируется из каждой точки экрана, отражается и взаимодействует с трёхмерными объектами сцены, что даёт натуралистичное поведение отражений, освещения, теней.
Благодаря появлению таких технологий трёхмерная визуализация стала массовой (в первую очередь — в кино). Pixar первым сосредоточился именно на производстве синтетических анимационных фильмов, разработав RenderMan — один из самых передовых рендеров, который используется во всех собственных и подавляющем большинстве сторонних полнометражных CGI-картин (см. фильмы с трёхмерной графикой и синтез изображений).
Методы постепенно проникли в архитектуру, дизайн интерьера и рекламу, где позволяют эффектно визуализировать будущие объекты и проекты.
Гибридная (комбинированная) 3D-графика позволяет повысить фотореализм изображения в режиме реального времени за счёт предвычисления (и, соответственно, «замораживания») некоторых параметров, критичных для качества, но очень ресурсоёмких. Пример — освещение: в real-time 3D полноценные тени и глобальное освещение обычно отсутствуют, что ухудшает реализм. Если параметры освещения «зашить» в текстуру (lightmap), качество приближается к кинематографическому без потери скорости. Минус — невозможность оперативной смены освещённости; однако для большинства задач (игры, онлайн-тур по зданию и т. д.) этого достаточно.
Современное применение
Сегодня трёхмерная графика активно применяется в недвижимости — для продвижения объектов, размещения трёхмерных визуализаций в брошюрах и на сайтах, создания промороликов, виртуальных туров (в том числе с помощью гарнитур виртуальной реальности)[1].
Кроме того, с ростом онлайн-маркетплейсов (интернет-магазинов) 3D-визуализация всё чаще используется поставщиками для выделения товаров, их фотореалистичного размещения в сценах. Это экономичнее фотосессий и позволяет быстро получать множество различных ракурсов[2].
Также возрастает использование 3D-анимации для ТВ, стриминговых платформ и даже государственных агентств (например, ESA): для производства документальных и промо-фильмов[3].
Примечания
Литература
- Жан-Поль Гурре, Даниэль Тальманн. Modélisation d'images fixes et animées. Париж, Милан, Барселона: Masson, 1994. — 482+xiv c. — (Manuels informatiques Masson). — ISBN 9782225845482.



