EnglishРусскийTürkçeDeutschFrançais О сайте · RSS
WebInterface.org
WebInterface.org

Заметки о рисунке, печати, фотографии и картинках, которые делает компьютер.

Начало · Трёхмерная графика · Свет, материалы и готовое изображение

Свет, материалы и готовое изображение

Рендеринг превращает модель в изображение. Один путь в том, чтобы смоделировать распространение света и добиться фотографического результата. Другой в том, чтобы намеренно применить художественный стиль, и именно это называют нефотореалистичным рендерингом. В реалистичном рендерере есть две базовые операции: перенос, то есть сколько света попадает из одной точки в другую, и рассеяние, то есть что поверхность делает с падающим на неё светом. Эту работу выполняет программа трёхмерной графики или API трёхмерной графики. Чтобы привести сцену к виду, с которым может работать рендерер, нужна ещё и проекция, то есть отображение трёхмерного описания в двух измерениях. Некоторые программы для моделирования умеют и рендерить, например 3ds Max и Blender. Другие программы только рендерят, например Octane и Redshift.

Растеризация

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

Затенение по Гуро вычисляет цвет в вершинах и интерполирует его по грани. Затенение по Фонгу интерполирует нормали и вычисляет блик в каждом отсчёте. Второй способ дороже, но на кривой поверхности, приближённой плоскими гранями, блик выглядит убедительнее. Reyes, архитектура, на которой с конца 1980-х годов построена значительная часть полнометражной анимации, разбивает каждую поверхность на микрополигоны, а затем проверяет видимость в экранном пространстве с помощью z-буфера. Весь смысл именно в разбиении. Если кусочки достаточно мелкие, грубое описание кривой поверхности можно затенять так, будто кривая действительно существует.

По следам лучей

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

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

К 2017 году многие студии перешли от рендеринга микрополигонами в стиле Reyes к физически корректной трассировке путей. Стив Бако с коллегами обучили свёрточную нейросеть на кадрах из В поисках Дори и проверили её на Тачках 3. По нескольким десяткам отсчётов на пиксель эта сеть подбирает фильтр, который убирает значительную часть шума Монте-Карло. Open Image Denoise от Intel решает похожую задачу, и его встраивают в рендереры, в том числе в Arnold, Blender и V-Ray. В 2025 году Американская академия кинематографических искусств и наук вручила премию за технические достижения Аттиле Т. Афре за Open Image Denoise и Тимо Айле за применение сетей U-Net для шумоподавления. Эта премия служит хорошим ориентиром. Очистка рендера стала самостоятельной кинотехнологией, а не просто галочкой в настройках.

Лучи у вас на глазах

Nvidia анонсировала RTX 19 марта 2018 года, сначала для GPU Volta, вместе с DirectX Raytracing от Microsoft. Специальные ядра RT для теней, отражений, преломлений и глобального освещения на основе трассировки лучей появились в серии GeForce RTX, анонсированной 20 августа 2018 года. Пока игры не умели трассировать пути для всего кадра, обычно поступали скромнее. Тени, отражения или непрямое освещение трассировали лучами как отдельные эффекты и только для ограниченного числа источников света. Остальной кадр по-прежнему растеризовали.

Режим Ray Tracing: Overdrive, добавленный в Cyberpunk 2077 патчем 1.62 от 11 апреля 2023 года, трассирует пути для всего кадра. По умолчанию он выключен, потому что очень требователен к оборудованию. CD PROJEKT RED рекомендовала этот предварительный режим для видеокарт GeForce RTX 40-й серии начиная с 4070 Ti, а также для GeForce RTX 3090 при разрешении 1080p и 30 кадрах в секунду. Эти цифры устареют. Суть останется. Полная трассировка путей в игре на тот момент была предварительным режимом для мощных систем, а не обычным способом вывести изображение на экран телевизора.

Материалы

Материалы и текстуры это то, к чему обращается рендерер, когда нужно решить, как поверхность взаимодействует со светом. Материал задаёт правило. Текстура часто поставляет числа, которые меняются по поверхности. Цветовая карта, или карта альбедо, задаёт цвет поверхности. Карта рельефа или карта нормалей создаёт впечатление более мелких деталей, чем есть в сетке. Карта смещения идёт дальше и действительно сдвигает поверхность. Первые две карты обманывают только расчёт освещения. Третья меняет саму форму, которую будут рисовать, и может изменить силуэт, а карта нормалей этого не может.

Модель Кука–Торренса 1982 года рассматривает поверхность как набор микрограней. Она учитывает относительную яркость материалов, показанных рядом, направленное рассеяние отражённого света и изменение цвета при изменении угла падения. Если поставить пластиковый стакан рядом с латунным под одним и тем же светом, модель опишет оба, а не растянет одно число «блеска» на все вещества.

Principled BRDF Брента Бёрли, описанную в курсе на SIGGRAPH 2012 года, создали в Walt Disney Animation Studios на основе короткого списка принципов. Параметры должны быть интуитивно понятными, а не строго физическими. Их должно быть немного. Обычно они должны лежать в диапазоне от нуля до единицы, но могут и выходить за его пределы. При сочетании друг с другом они должны давать правдоподобный результат. Студия применила полученный шейдер практически ко всем материалам в мультфильме Ральф. Самое интересное в этом списке это слово «правдоподобный». Шейдер для кино должен слушаться художника в обычный рабочий день. Физически полная модель, которой художник не может управлять, это неподходящий инструмент, даже если её интеграл красивее.

Три новые задачи и одна, которая к ним не относится

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

При шумоподавлении сеть создаёт очищенный кадр по шумному рендеру и, если рендерер их выгружает, по вспомогательным буферам, например альбедо и нормалям поверхности. Она оценивает изображение, к которому сошёлся бы расчёт с гораздо большим числом отсчётов. Сцену она не придумывает. Она угадывает окончание расчёта, который прервали.

Реконструкция начинается с фотографий, для которых известны положения камер. Нейронное поле излучения (NeRF), предложенное в 2020 году Беном Милденхоллом, Пратулом Шринивасаном, Мэттью Тансиком, Джонатаном Барроном, Рави Рамамурти и Реном Нгом, сопоставляет трёхмерной точке и направлению взгляда плотность и цвет, зависящий от направления. Вдоль каждого луча камеры обычный объёмный рендеринг берёт отсчёты этой функции и строит изображение. Такое представление точное, но дорогое. Бернхард Кербль с коллегами, описывая следующий шаг, отмечают, что нейронные поля излучения дорого обходятся и при обучении, и при рендеринге.

Трёхмерный гауссов сплаттинг, опубликованный в 2023 году Керблем, Георгиосом Копанасом, Томасом Лаймкюлером и Джорджем Дреттакисом, заменяет нейросеть анизотропными трёхмерными гауссианами. Их оптимизируют, а затем отрисовывают методом сплаттинга. На сценах, которые проверяли авторы, они получают новые ракурсы в реальном времени при разрешении 1080p со скоростью 30 кадров в секунду и выше. Гауссианы и есть сохранённая сцена. Это поле излучения, которое отрисовывают сплаттингом, а не сетка из треугольников. В glTF такие сплаты может хранить расширение KHR_gaussian_splatting, поэтому они и попадают в список файлов моделей.

DreamFusion, метод создания трёхмерных объектов по тексту, разработанный Беном Пулом, Аджаем Джейном, Джонатаном Барроном и Беном Милденхоллом, оптимизирует случайно инициализированное нейронное поле излучения до тех пор, пока изображения со случайных камер не получат высокую оценку у замороженной модели, которая генерирует изображения по тексту. Поскольку эта модель обучена на обычных изображениях, для оптимизации не нужна коллекция трёхмерных моделей. Для каждого запроса выполняется своя оптимизация. Известный сбой называют проблемой Януса: у одного объекта оказывается несколько лицевых сторон. Это происходит, когда каждый выбранный ракурс стягивается к каноническому виду спереди. Пэйхао Ван с коллегами связывают этот сбой со схлопыванием целевой функции score distillation, которую сделал популярной DreamFusion. Объект не снимают с разных сторон. Каждую «сторону» тянет к тому виду спереди, который модель изображений знает лучше всего.

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

Раньше: Как строят модель и приводят её в движениеДальше: Файлы, в которых хранится трёхмерная модель