3D-рендеринг — Википедия
3D-рендеринг — процесс преобразования 3D-моделей в 2D-изображения на компьютере. 3D-рендеры могут включать в себя фотореалистичные эффекты или нефотореалистичные стили.
Методы визуализации
[править | править код]Рендеринг — конечный процесс создания реального 2D-изображения или анимации из подготовленной сцены. Это можно сравнить с фотографированием или съемкой сцены после завершения настройки в реальной жизни[1]. Было разработано несколько различных и часто специализированных методов визуализации. Они варьируются от явно нереалистичного рендеринга каркаса через рендеринг на основе полигонов до более продвинутых методов, таких как рендеринг скан-линий, трассировка лучей и другие. Рендеринг может занимать от долей секунды до нескольких дней для одного изображения/кадра. В общем, различные методы лучше подходят как для фотореалистичного рендеринга, так и для рендеринга в реальном времени[2].
В режиме реального времени
[править | править код]Рендеринг для интерактивных медиа, таких как игры и симуляторы, рассчитывается и отображается в режиме реального времени со скоростью примерно от 20 до 120 кадров в секунду. При рендеринге в реальном времени цель состоит в том, чтобы показать как можно больше информации, которую глаз может обработать за долю секунды (например, «в одном кадре»: в случае анимации 30 кадров в секунду кадр охватывает одну 30-ю долю секунды).
Основная цель состоит в том, чтобы достичь как можно более высокой степени фотореализма при приемлемой минимальной скорости рендеринга (обычно 24 кадра в секунду, поскольку это минимум, который человеческий глаз должен видеть, чтобы успешно создать иллюзию движения). На самом деле, эксплуатации могут быть применены к тому, как глаз «воспринимает» мир, и в результате конечный образ, представленный не обязательно является образом реального мира, но достаточно близким для человеческого глаза, чтобы его терпеть.
Программное обеспечение визуализации может имитировать такие визуальные эффекты, как вспышки объектива, глубина резкости или размытие движения. Это попытки симулировать визуальные явления, возникающие в результате оптических характеристик камер и человеческого глаза. Эти эффекты могут придать сцене элемент реализма, даже если эффект является всего лишь имитацией артефакта камеры. Это основной метод, используемый в играх, интерактивных мирах и VRML.
Быстрое увеличение вычислительной мощности компьютера позволило добиться все более высокой степени реалистичности даже для рендеринга в реальном времени, включая такие методы, как рендеринг HDR. Рендеринг в реальном времени часто полигональный и поддерживается графическим процессором компьютера[3].
Не в режиме реального времени
[править | править код]Анимация для неинтерактивных носителей, таких как художественные фильмы и видео, может занять гораздо больше времени[4]. Рендеринг не в реальном времени позволяет использовать ограниченную вычислительную мощность для получения более высокого качества изображения. Время рендеринга для отдельных кадров может варьироваться от нескольких секунд до нескольких дней для сложных сцен. Отрисованные кадры сохраняются на жестком диске, а затем переносятся на другие носители, такие как кинофильм или оптический диск. Эти кадры затем отображаются последовательно с высокой частотой кадров, обычно 24, 25 или 30 кадров в секунду (fps), чтобы достичь иллюзии движения.
Когда целью является фотореализм, используются такие методы, как трассировка лучей, трассировка траектории, картирование фотонов или лучеиспускание. Это основной метод, используемый в цифровых медиа и художественных произведениях. Методы были разработаны с целью моделирования других естественных эффектов, таких как взаимодействие света с различными формами материи. Примеры таких методов включают системы частиц (которые могут имитировать дождь, дым или огонь), объемный отбор проб (для имитации тумана, пыли и других пространственных атмосферных эффектов), каустику (для имитации фокусировки света неровными светопреломляющими поверхностями, такими как световые ряби, видимые на дне плавательного бассейна) и подповерхностное рассеяние (для имитации отражения света внутри объёмов твердых объектов, таких как кожа человека).
Процесс визуализации является вычислительно дорогостоящим, учитывая сложное разнообразие моделируемых физических процессов. Вычислительная мощность компьютера быстро росла на протяжении многих лет, позволяя постепенно повышать степень реалистичности визуализации. Киностудии, создающие компьютерные анимации, обычно используют рендер-ферму для своевременного создания изображений. Однако снижение стоимости оборудования означает, что вполне возможно создать небольшое количество 3D-анимации на домашнем компьютере. Выходные данные визуализатора часто используются как только одна небольшая часть законченной сцены кинофильма. Многие слои материала могут быть отрисованы отдельно и интегрированы в окончательный снимок с помощью программного обеспечения для композитинга.
Модели отражения и затенения
[править | править код]Модели отражения / рассеяния и затенения используются для описания внешнего вида поверхности. Хотя эти вопросы могут показаться проблемами сами по себе, они изучаются почти исключительно в контексте визуализации. Современная 3D компьютерная графика в значительной степени опирается на упрощенную модель отражения, называемую моделью отражения Фонга (не путать с затенением Фонга). В преломлении света важным понятием является показатель преломления; в большинстве реализаций 3D-программирования для этого значения используется термин «индекс преломления» (обычно сокращенный до IOR).
Затенение может быть разбито на две различные техники, которые часто изучаются независимо друг от друга:
- Затенение поверхности — как свет распространяется по поверхности (в основном используется в сканирующем рендеринге для 3D-рендеринга в реальном времени в видеоиграх).
- Отражение / рассеяние — как свет взаимодействует с поверхностью в данной точке (в основном используется в рендеринге с трассировкой лучей для фотореалистичного и художественного 3D-рендеринга в режиме реального времени как в CGI неподвижных 3D-изображениях, так и в CGI неинтерактивных 3D-анимациях)
Алгоритмы затенения поверхности
[править | править код]Популярные алгоритмы затенения поверхности в 3D компьютерной графике включают:
- Плоское затенение: метод, который затеняет каждый полигон объекта на основе «нормы» полигона и положения и интенсивности источника света.
- Затенение Гуро: изобретено Х. Гуро в 1971 году; быстрый и ресурсосберегающий метод затенения вершин, используемый для моделирования гладко затененных поверхностей
- Затенение Фонг: изобретен Буй Туонг Фонг; используется для имитации зеркальных бликов и гладких затененных поверхностей
Отражение
[править | править код]Отражение или рассеяние-это отношение между входящим и исходящим освещением в данной точке. Описания рассеяния обычно даются в терминах двунаправленной функции распределения рассеяния или BSDF[5].
Затенение
[править | править код]Затенение обращается к тому, как различные типы рассеяния распределены по поверхности (то есть, какая функция рассеяния применяется где). Описания такого рода обычно выражаются с помощью программы, называемой шейдером[6]. Простой пример затенения — это текстурное отображение, которое использует изображение для задания диффузного цвета в каждой точке поверхности, придавая ей более заметные детали. Некоторые методы затенения включают:
- Метод рельефного текстурирования изобретенный Джимом Блинном, метод нормального возмущения, используемый для моделирования морщинистых поверхностей[7].
- Сел-шейдинг: техника, используемая для имитации внешнего вида рисованной анимации.
Теория перенесения(транспорт) света
[править | править код]Транспорт описывает как освещение в сцене попадает из одного места в другое. Видимость является главным компонентом легкого транспорта.
Проекция
[править | править код]Затененные трехмерные объекты должны быть сглажены так, чтобы устройство отображения — а именно монитор — могло отображать их только в двух измерениях, этот процесс называется 3D-проекцией. Это делается с помощью проекции и, для большинства приложений, перспективной проекции. Основная идея, лежащая в основе перспективной проекции, состоит в том, что объекты, находящиеся дальше, уменьшаются по сравнению с объектами, находящимися ближе к глазу. Программы производят перспективу, умножая постоянную расширения, возведенную в степень отрицательного расстояния от наблюдателя. Постоянная расширения единицы означает, что перспективы нет. Высокие константы расширения могут вызвать эффект «рыбьего глаза», при котором начинает происходить искажение изображения. Ортогональная проекция используется в основном в CAD или CAM приложениях, где научное моделирование требует точных измерений и сохранения третьего измерения.
Примечания
[править | править код]- ↑ Badler, Norman I 3D Object Modeling Lecture Series (англ.) (PDF). University of North Carolina at Chapel Hill. Дата обращения: 28 апреля 2020. Архивировано 22 декабря 2018 года.
- ↑ Non-Photorealistic Rendering (англ.). Duke University. Дата обращения: 23 июля 2018. Архивировано 26 апреля 2021 года.
- ↑ The Science of 3D Rendering (англ.). The Institute for Digital Archaeology. Дата обращения: 19 января 2019. Архивировано 19 января 2019 года.
- ↑ Christensen, Per H.; Jarosz, Wojciech The Path to Path-Traced Movies (PDF). Дата обращения: 11 июня 2021. Архивировано 11 июня 2021 года.
- ↑ Fundamentals of Rendering - Reflectance Functions (PDF). Ohio State University. Дата обращения: 28 апреля 2020. Архивировано 11 июля 2019 года.
- ↑ Слово «шейдер» иногда используется для программ, описывающих локальные геометрические вариации.
- ↑ Bump Mapping . web.cs.wpi.edu. Дата обращения: 23 июля 2018. Архивировано 19 июля 2018 года.