что такое трехмерная графика
Что такое 3D-графика и как она устроена
Мы каждый день видим 3D-графику, но не задумываемся, как она устроена изнутри. Давайте заглянем за ширму.
Современные компьютеры генерируют графику, которая почти неотличима от того, как видим жизнь мы. И если вам всегда было интересно, как создаются реалистичные шедевры (или вы занимаетесь чем-то похожим), то будет полезно узнать, как вообще работает 3D.
Давайте разберёмся, как обычные точки превращаются в 3D-графику:
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Создание 3D-моделей
Кажется, что это просто гладкий шар, но на самом деле он состоит из множества точек — вершин (англ. vertices — вершины):
Чем больше вершин, тем более детализированной выглядит модель и тем больше ресурсов требуется компьютеру, чтобы отрисовать такой объект на экране.
Вершины соединяются друг с другом и образуют рёбра (англ. edge) и грани (англ. face):
Всё это образует полигональную сетку (англ. polygon mesh или просто меш, геометрия) —- совокупность вершин, рёбер и граней (плоскостей), которая определяет форму объекта.
У каждой вершины есть свои координаты по осям X, Y и Z. А то, как грань отображается на мониторе, зависит от её положения относительно камеры и источников света:
Изменяя меш, добавляя вершины и меняя их положение, мы можем создавать любые сложные объекты:
Для создания твёрдых объектов (англ. hard surface) 3D-художники обычно меняют положение граней вручную, как это показано выше.
При работе с персонажами чаще используется скульптинг (англ. sculpting) — напоминает лепку из пластилина:
Но геометрия — не последний этап создания 3D-модели. Например, у моделей, созданных скульптингом, плохая топология (то, как именно устроен меш) — слишком много задействовано вершин:
Чтобы исправить это, используют специальные инструменты для ретопологии — это когда удаляют лишние грани, чтобы оптимизировать модель.
Также нужно подготовить материал — это то, как окрашены разные грани или вся модель. Возможен как и простой цвет, так и изображение или паттерн.
Есть множество других важных моментов: анимирование, запекание текстур, составление карт нормалей и так далее. Всё это стоит вплотную изучить тем, кто собирается моделировать 3D. Сейчас же мы поговорим о более техническом вопросе.
Отображение 3D-моделей на экране
Как на двумерном экране показать трёхмерную модель? В этом вопросе столько математики, что может показаться, будто это какая-то магия.
Пространство, в котором находятся объекты, называется сценой. Всё, что на ней, существует пока только в памяти компьютера в виде данных о геометрии, материалах и прочем.
Чтобы компьютер понял, как это всё отобразить, нужен наблюдатель, чьими глазами он будет смотреть на сцену, — камера. А чтобы мы могли хоть что-то разглядеть, нужен источник света.
Вот тут и начинается магия: компьютеру предстоит определить, как бы выглядела эта сцена с точки зрения камеры. Вот так это устроено:
Мы видим только то, что расположено между областями отсечения. Всё остальное, как можно догадаться, отсекается. Компьютер должен понять, какие цвета отобразить на мониторе в каждом из пикселей. Для этого он отправляет из камеры лучи и смотрит, во что они ударяются.
Если луч попадает в объект, то дальше компьютер проверяет, в какой именно полигон было попадание, какой материал у объекта, как падает свет, на каком расстоянии находится объект от камеры и многие другие переменные.
Всё это транслируется на плоскость проекции (англ. viewport) — двумерный квадрат в трёхмерном пространстве. Эта плоскость уже используется для того, чтобы составить изображение, которое будет показано на мониторе.
Процесс перевода 3D-сцены в 2D-изображение называется рендерингом (англ. rendering) или отрисовкой.
Движение в 3D
Мы узнали, как выводится одно изображение, но ведь 3D бывает ещё и в фильмах и играх, где постоянно происходит какое-то движение. На самом деле мы до сих используем тот же принцип анимации, что и несколько веков назад.
В 1877 году был изобретён праксиноскоп — барабан, обклеенный изнутри последовательностью изображений. В его центре есть ещё один барабан поменьше, обклеенный зеркалами. Если смотреть в центр устройства, когда оно вертится, можно увидеть иллюзию движения:
Сейчас это выглядит так:
Большинство современных мониторов могут выводить 60 картинок (кадров) в секунду (англ. Frames Per Second, FPS), благодаря чему создаётся ощущение плавности.
В случае с играми все кадры отрисовываются в реальном времени. То есть, пока пользователь играет, положение объектов на сцене меняется, компьютер 60 раз в секунду проверяет, как это всё выглядит, и обновляет изображение на мониторе.
Разумеется, это накладывает ограничения на качество изображения. Например, в играх только недавно появилась технология трассировки лучей (англ. Ray Tracing), которая позволяет программно рассчитывать рассеивание лучей света.
Вот, например, как выглядит сцена из Minecraft без RTX (технология трассировки лучей в видеокартах Nvidia):
Что такое 3D-графика
Под понятие 3D-графики можно отнести двухмерные изображения с элементами объема, который придается за счет работы с освещением и другими элементами, создающими на экране визуальную иллюзию. Еще к 3D-графике относятся полноценные трехмерные модели, создаваемые в специальных программах и применяемые в играх, кинематографе и мультипликации.
Далее я предлагаю детальнее остановиться на этом типе графики, разобраться во всех ее тонкостях, характеристиках и принципах создания при помощи современных технологий.
Что такое 3D-изображение
Для начала остановимся на 3D-изображениях и поймем, что вообще делает их трехмерными и какие типы картинок можно отнести к этой категории. Если при просмотре изображения вы можете описать ширину и высоту, но не наблюдаете глубины, значит, это двухмерная графика. Значки на рабочем столе и указатели на улицах – все это относится к 2D-графике (за некоторым исключением, когда художник использует тень или другие приемы, чтобы сделать картинку объемной). 3D-изображение обязательно обладает глубиной, то есть является объемным. Простой пример такой графики вы видите на следующем изображении:
Если нарисовать квадрат, представив только основные его четыре линии, это будет двухмерная модель. Но если немного повернуть квадрат, дорисовать грани и вершины, получится куб, являющийся объемным элементом, а значит, к нему относится характеристика 3D-модели.
История развития 3D
Полноценное представление 3D-элементов на экране мир увидел в короткометражном фильме «A Computer Animated Hand», вышедшем в 1972 году. На скриншоте ниже вы видите то, как аниматоры смогли спроектировать человеческую руку и анимировать ее на экране.
Это дало сильный толчок в развитии анимационных технологий и применении подобных эффектов в кинематографе. Одним из первых фильмов, в котором зритель мог увидеть анимацию человеческого лица, считается «Futureworld», вышедший в 1976 году. Сразу после этого трехмерная графика начала прогрессировать очень быстро. Появились специальные программы, кинокомпании стали набирать сотрудников соответствующих должностей и реализовывали самые разные эффекты в своих проектах. Обладатели персональных компьютеров уже в начале 80-х годов могли скачать программу под названием 3D Art Graphics, которая включала в себя набор различных трехмерных объектов и эффектов.
Создание трехмерной графики
Как же работает трехмерная графика на компьютерах и на какие этапы делится ее создание?
3D-моделирование. На компьютере создается модель, в точности передающая форму объекта, который нужно представить. Это может быть любой предмет, животное или человек. В общем, все, что нас окружает. Существует несколько видов трехмерного моделирования, каждый из которых имеет свои особенности и принципы, но сейчас не будем вдаваться в эту тему. Если хотите, можете ознакомиться с такими программами, как Blender или 3Ds Max, чтобы узнать, как трехмерные объекты рисуются при помощи программ.
Сценарий и анимация. Модели всегда размещены на сцене и необходимы для выполнения определенного действия: перемещения, разрушения или передачи любого другого эффекта. Для расположения объектов на сцене и их анимирования может использоваться та же программа, которая применялась и для моделирования, но иногда разработчики обращаются к другому софту. Анимации тоже бывают разными, например, сейчас особо популярен захват движения (когда программа считывает движения человека и передает их на трехмерную фигуру).
Рендеринг. Завершающий процесс работы над проектом. Подразумевает обработку цветов, типов поверхности, освещения и всех других параметров сцены. Для обработки необходим мощный компьютер, способный быстро считывать кадры и выдавать на экран необходимый результат.
3D-моделирование
В рамках этой статьи остановимся только на 3D-моделировании, поскольку именно этот процесс и является основной трехмерной графики. Вы уже знаете, что для выполнения данной операции используется специальный софт. Аниматор может взаимодействовать как с отдельными геометрическими фигурами и точками, преобразовывая их в необходимый объект, так и с одной болванкой, доводя ее до необходимой формы (как скульптор в реальной жизни).
Изначально модель имеет серый цвет, поэтому обязательным этапом является наложение текстур и материалов. В крупных компаниях этим занимается специально обученный человек, получивший заготовку от 3D-моделировщика. Он по эскизам или специальным шаблонам накладывает на модель различные элементы, имитирующие волосы, ткань или типы поверхностей. Это и делает 3D-модель похожей на настоящую.
Тему можно развивать бесконечно, поскольку 3D-графика обладает огромным множеством интересных особенностей, которые делают индустрию такой сложной и высокооплачиваемой. Кинокомпании тратят миллионы долларов на создание моделей и эффектов, которые в реальной жизни повторить проблематично и еще более затратно. Сейчас при помощи 3D-графики создаются практически все современные игры и мультфильмы.
Трёхмерная графика
Трёхмерная графика (3D (от англ. 3 Dimensions — рус. 3 измерения ) Graphics, Три измерения изображения) — раздел компьютерной графики, совокупность приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов.
Трёхмерное изображение на плоскости отличается от двумерного тем, что включает построение геометрической проекции трёхмерной модели сцены на плоскость (например, экран компьютера) с помощью специализированных программ (однако, с созданием и внедрением 3D-дисплеев и 3D-принтеров, трёхмерная графика не обязательно включает в себя проецирование на плоскость). При этом модель может как соответствовать объектам из реального мира (автомобили, здания, ураган, астероид), так и быть полностью абстрактной (проекция четырёхмерного фрактала).
Содержание
Применение
Трёхмерная графика активно применяется для создания изображений на плоскости экрана или листа печатной продукции в науке и промышленности, например в системах автоматизации проектных работ (САПР; для создания твердотельных элементов: зданий, деталей машин, механизмов), архитектурной визуализации (сюда относится и так называемая «виртуальная археология»), в современных системах медицинской визуализации.
Самое широкое применение — во многих современных компьютерных играх.
Также как элемент кинематографа, телевидения, печатной продукции.
Создание
Для получения трёхмерного изображения на плоскости требуются следующие шаги:
Моделирование
Моделирование сцены (виртуального пространства моделирования) включает в себя несколько категорий объектов:
Задача трёхмерного моделирования — описать эти объекты и разместить их в сцене с помощью геометрических преобразований в соответствии с требованиями к будущему изображению.
Назначение материалов: для сенсора реальной фотокамеры материалы объектов реального мира отличаются по признаку того, как они отражают, пропускают и рассеивают свет; виртуальным материалам задается соответствие свойств реальных материалов — прозрачность, отражения, рассеивания света, шероховатость, рельеф и пр.
Наиболее популярными пакетами сугубо для моделирования являются:
Текстурирование
Текстурирование подразумевает проецирование растровых или процедурных текстур на поверхности трехмерного объекта в соответствии с картой UV-координат, где каждой вершине объекта ставится в соответствие определенная координата на двухмерном пространстве текстуры.
Как правило, многофункциональные редакторы UV-координат входят в состав универсальных пакетов трехмерной графики. Существуют также автономные и подключаемые редакторы от независимых разработчиков, например Unfold3D magic, Deep UV, Unwrella и др.
Освещение
Заключается в создании, направлении и настройке виртуальных источников света. При этом, в виртуальном мире источники света могут иметь негативную интенсивность, отбирая свет из зоны своего «отрицательного освещения». Как правило, пакеты 3D графики предоставляют следующие типы источников освещения:
Существуют также другие типы источников света, отличающиеся по своему функциональному предназначению в разных программах трехмерной графики и визуализации. некоторые пакеты предоставляют возможности создавать источники объемного свечения (Sphere light) или объемного освещения (Volume light), в пределах строго заданного объёма. Некоторые предоставляют возможность использовать геометрические объекты произвольной формы.
Анимация
Одно из главных призваний трехмерной графики — придание движения (анимация) трехмерной модели, либо имитация движения среди трехмерных объектов. Универсальные пакеты трехмерной графики обладают весьма богатыми возможностями по созданию анимации. Существуют также узкоспециализированные программы, созданные сугубо для анимации и обладающие очень ограниченным набором инструментов моделирования:
Рендеринг
На этом этапе математическая (векторная) пространственная модель превращается в плоскую (растровую) картинку. Если требуется создать фильм, то рендерится последовательность таких картинок — кадров. Как структура данных, изображение на экране представлено матрицей точек, где каждая точка определена по крайней мере тремя числами: интенсивностью красного, синего и зелёного цвета. Таким образом рендеринг преобразует трёхмерную векторную структуру данных в плоскую матрицу пикселов. Этот шаг часто требует очень сложных вычислений, особенно если требуется создать иллюзию реальности. Самый простой вид рендеринга — это построить контуры моделей на экране компьютера с помощью проекции, как показано выше. Обычно этого недостаточно и нужно создать иллюзию материалов, из которых изготовлены объекты, а также рассчитать искажения этих объектов за счёт прозрачных сред (например, жидкости в стакане).
Существует несколько технологий рендеринга, часто комбинируемых вместе. Например:
Грань между алгоритмами трассировки лучей в настоящее время практически стёрлась. Так, в 3D Studio Max стандартный визуализатор называется Default scanline renderer, но он считает не только вклад диффузного, отражённого и собственного (цвета самосвечения) света, но и сглаженные тени. По этой причине, чаще понятие Raycasting относится к обратной трассировке лучей, а Raytracing — к прямой.
Наиболее популярными системами рендеринга являются:
Вследствие большого объёма однотипных вычислений рендеринг можно разбивать на потоки (распараллеливать). Поэтому для рендеринга весьма актуально использование многопроцессорных систем. В последнее время активно ведётся разработка систем рендеринга использующих GPU вместо CPU, и уже сегодня их эффективность для таких вычислений намного выше. К таким системам относятся:
Многие производители систем рендеринга для CPU также планируют ввести поддержку GPU (LuxRender, YafaRay, mental images iray).
Самые передовые достижения и идеи трёхмерной графики (и компьютерной графики вообще) докладываются и обсуждаются на ежегодном симпозиуме SIGGRAPH, традиционно проводимом в США.
Программное обеспечение
3D-моделирование фотореалистичных изображений
Программные пакеты, позволяющие создавать трёхмерную графику, то есть моделировать объекты виртуальной реальности и создавать на основе этих моделей изображения, очень разнообразны. Последние годы устойчивыми лидерами в этой области являются коммерческие продукты, такие как:
Кроме того, существуют и открытые продукты, распространяемые свободно, например, пакет Blender (позволяет создавать 3D модели, c последующим рендерингом), K-3D и Wings3D.
SketchUp
Бесплатная программа SketchUp от Google позволяет создавать модели, совместимые с географическими ландшафтами ресурса Google Планета Земля, а также просматривать в интерактивном режиме на компьютере пользователя несколько тысяч архитектурных моделей, которые выложены на бесплатном постоянно пополняемом ресурсе Google Cities in Development (выдающиеся здания мира), созданные сообществом пользователей.
Визуализация трёхмерной графики в играх и прикладных программах
Есть множество движков, используемых для создания трёхмерных игр, отвечающих не только за трёхмерную графику, но и за расчёты физики игрового мира, взаимодействия пользователя с игрой и связь пользователей в игре при многопользовательском режиме и многое другое (см. также статью 3D-шутер). Как правило движок разрабатывается под конкретную игру, а затем лицензируется (становится доступен) для создания других игр.
Моделирование деталей и механизмов для производства
Существуют конструкторские CAD/CAE/CAM пакеты, предполагающие создание моделей деталей и конструкций, их расчёт и последующее формирование программ для станков ЧПУ и 3D-принтеров.
Такие пакеты даже не всегда дают пользователю оперировать 3D-моделью напрямую, например есть пакет OpenSCAM, модель в котором формируется выполнением формируемого пользователем скрипта, написанного на специализированном языке.
Трёхмерные дисплеи
Трёхмерные, или стереоскопические дисплеи, (3D displays, 3D screens) — дисплеи, посредством стереоскопического или какого-либо другого [2] эффекта создающие иллюзию реального объёма у демонстрируемых изображений.
В настоящее время подавляющее большинство трёхмерных изображений показывается при помощи стереоскопического эффекта, как наиболее лёгкого в реализации, хотя использование одной лишь стереоскопии нельзя назвать достаточным для объёмного восприятия. Человеческий глаз как в паре, так и в одиночку одинаково хорошо отличает объёмные объекты от плоских изображений. [источник не указан 45 дней]
Стереоскопические дисплеи
Методы технической реализации стереоэффекта включают использование в комбинации со специальным дисплеем поляризованных или затворных очков, синхронизированных с дисплеем, анаглифических фильтров в комбинации со специально адаптированным изображением.
Существует также относительно новый класс стереодисплеев, не требующих использования дополнительных устройств, но имеющих массу ограничений. В частности, это конечное и очень небольшое количество ракурсов, в которых стереоизображение сохраняет чёткость. Стереодисплеи, выполненные на базе технологии New Sight x3d, обеспечивают восемь ракурсов, Philips WOWvx — девять ракурсов. В октябре 2008 года компания Philips представила прототип стереодисплея с разрешением 3840×2160 точек и с рекордными 46 ракурсами «безопасного» просмотра. Вскоре после этого, однако, Philips объявил о приостановке разработок и исследований в области стереодисплеев. [3]
Ещё одна проблема стереодисплеев — это малая величина зоны «комфортного просмотра» (диапазон расстояний от зрителя до дисплея, в котором изображение сохраняет четкость). В среднем она ограничена диапазоном от 3 до 10 метров.
Стереодисплеи сами по себе не имеют прямого отношения к трёхмерной графике. Путаница возникает вследствие использования в западных СМИ термина 3D в отношении как графики, так и устройств, эксплуатирующих стереоэффект, и некорректности перевода при публикации в российских изданиях заимствованных материалов.
Существует также технология WOWvx, с помощью которой можно получить эффект 3D без использования специальных очков. Используется технология лентикулярных линз, которая дает возможность большому количеству зрителей широкую свободу движения без потери восприятия эффекта 3D. Слой прозрачных линз закрепляется перед жидкокристаллическим дисплеем. Этот слой направляет разные картинки каждому глазу. Мозг, обрабатывая комбинацию этих картинок создает эффект объемного изображения. Прозрачность линзового слоя обеспечивает полную яркость, четкий контраст и качественную цветопередачу картинки.
Существует технология отображения трехмерного видео на светодиодных экранах.
Наголовные дисплеи, видеоочки
Прочие дисплеи
На данный момент (июнь 2010 г) существуют несколько экспериментальных технологий, позволяющих добиться объёмного изображения без стереоскопии. Эти технологии используют быструю развёртку луча лазера, рассеивающегося на частицах дыма (аэрозольный экран) или отражающихся от быстро вращающейся пластины.
Существуют также устройства, в которых на быстро вращающейся пластине закреплены светодиоды.
Такие устройства напоминают первые попытки создать механическую телевизионную развёртку. Видимо, в будущем стоит ожидать появление полностью электронного устройства, позволяющего имитировать световой поток от объёмного предмета в разных направлениях, чтобы человек мог обойти вокруг дисплея и даже смотреть на изображение одним глазом без нарушения объёмности изображения.
Кинотеатры с 3D
Использование для обозначения стереоскопических фильмов терминов «трёхмерный» или «3D» связано с тем, что при просмотре таких фильмов у зрителя создаётся иллюзия объёмности изображения, ощущение наличия третьего измерения — глубины и новой размерности пространства уже в 4D. Кроме того, существует ассоциативная связь с расширяющимся использованием средств компьютерной трехмерной графики при создании таких фильмов (ранние стереофильмы снимались как обычные фильмы, но с использованием двухобъективных стереокамер).
На сегодняшний день просмотр фильмов в формате «3D» стал очень популярным явлением.
Основные используемые в настоящее время технологии показа стереофильмов [4] :
Дополненная реальность и 3D
Своеобразным расширением 3D-графики является «дополненная реальность». Используя технологию распознавания изображений (маркеров), программа дополненной реальности достраивает виртуальный 3D-объект в реальной физической среде. Пользователь может взаимодействовать с маркером: поворачивать в разные стороны, по-разному освещать, закрывать некоторые его части — и наблюдать изменения, происходящие с 3D-объектом на экране монитора компьютера.
Толчком к широкому распространению технологии послужило создание в 2008 году открытой библиотеки FLARToolKit для технологии Adobe Flash.