Какой рендер выбрать? Часть 1
На написание этой статьи меня подтолкнула странная ситуация, с которой я часто сталкиваюсь, читая форумы, посвященные различным рендерам. Очень часто разговор скатывается к простой фразе: "...этот рендер - 'отстой', вот ТОТ - лучше!.. " . Считаю, что эта точка зрения довольно абсурдна, ведь это то же самое, что утверждать, будто кофе лучше, чем кола.
Однако цель этого обзора - не доказать, что тот или иной рендер лучше, а дать комплексное сравнение возможностей некоторых рендеров и мотивировать свой выбор в зависимости от предстоящей задачи. Я не буду подробно останавливаться на настройках, т.к. таких статей в сети достаточно много.
Это первая из двух частей обзора, в которой описаны некоторые особенности распространенных рендеров. В конце второй части будет подведен итог и даны некоторые рекомендации на тему, какой же всё-таки рендер выбрать в той или иной ситуации.
Все рендеры можно разделить на два класса по алгоритму расчета и качеству результата (финальной картинки). Это biased и unbiased рендеры. Biased рендеры вначале рассчитывают отдельные компоненты картинки (Global Illumination, Caustics, Reflections, Refractions, etc, причем как правило достаточно далеко от физической корректности). Затем, производя расчет по частям (напр. scanline - выводит картинку сверху вниз), складывают эти компоненты воедино.
Unbiased рендеры сразу выводят все изображение целиком, постепенно улучшая качество картинки, и все отмеченные выше компоненты рассчитывают одновременно с основным изображением. Очевидные преимущества таких рендеров в том, что процесс можно остановить в любое время, получив тем самым изображение требуемого качества.
Кроме того, большинство таких рендеров основано на истинных (на сколько это сейчас возможно) законах физики, так что финальное изображение выглядит правдоподобно, на уровне фотографии. Maxwell Render, например, так и утверждает - "As easy, as take a photo" - "Так же просто, как сделать фотографию". Ещё один плюс - минимальное количество настроек (напр. Busyray, см. рис.), рендер сам подстраивает некоторые параметры, а в большинстве случаев настроек и не требуется вовсе ввиду физической природы рендера.
С одной стороны, это избавляет визуализатора от ряда тестов, с другой же стороны, лишает его гибкости в манипулировании некоторыми свойствами. К минусам unbiased-рендеров следует отнести довольно большое время ожидания, когда зашумлённость картинки достигнет приемлемо низкого уровня. Например, для серьезных проектов, содержащих до миллиона полигонов и нескольких десятков источников света, для картинки высокого разрешения (от 1600x1200pix) может потребоваться до нескольких десятков часов даже на достаточно мощных компьютерах. (см рис.)
Итак, рассмотрим вкратце предложенные выше рендеры, начиная с самого простого.
Scanline
Рендер scanline появился вместе с появлением 3DStudioMax и является рендером по умолчанию. Этот рендер поддерживает все типы материалов, эффектов и процессов пост-обработки, имеющиеся в 3DSMax базовой комплектации, однако не все материалы и эффекты, разработанные для другого рендера могут быть корректно обработаны им. Например, материалы рендера Brazil будут отрендерены (исключая некоторые специфические свойства), а материалы Mentalray - нет (см. рис.)
Как видим, материал Brazil Advanced отрендерился, однако, отражения отсутствуют. Материал MentalRay не отрендерился вовсе.
Scanline считается самым простым рендером и на сегодняшний день уже не способен конкурировать с остальными рендерами по соотношению Скорость/Качество. Объясню почему:
1) ВСЕ без исключения поверхности отражают и/или рассеивают падающий свет.
2) достаточно много материалов рассеивают свет в околоповерхностной зоне
3) абсолютно точечных источников света не существует в природе
4) рассеивая падающий свет поверхность материала освещает окружающие предметы.
Все эти и некоторые другие свойства реальных поверхностей лишь частично могут быть реализованы рендером scanline. Конечно, и в таком сравнительно простом рендере можно создавать конкурентоспособные работы, а если сцена не изобилует оптически активными поверхностями (стекло, металл), то и за приемлимое время.
Современный рендер трудно представить без технологии Global Illumination, глобальное освещение, дающей реальное распределение рассеяного и/или отраженного света (сравните рис.)
Стандартный рендер 3DSMax тоже позволяет моделировать глобальное освещение, и называется эта технология Advanced Lighting - расширенные настройки освещения. Данная технология имеет 2 алгоритма - Light Tracer и Radiosity.
Правда, возможности ее достаточно скромны. Так, например, Light Tracer дает достаточно точное распределение света и имеет настройки для управления количеством сэмплирующих, диффузных переотражений, Color Bleeding (цветовое окрашивание), и т.д., однако значительно проигрывает второму алгоритму в скорости. Минусом Radiosity является очень приблизительное распределение света. Еще одно свойство по которым оценивают алгоритмы Global Iluumination (далее - GI) - это так называемый параметр View-dependancing, в переводе - зависимость от угла зрения. Это свойство говорит о том, что рассчитанное вторичное освещение зависит (или не зависит) от положения камеры в сцене. Т.е. используя зависимый от камеры алгоритм каждый раз при смене положения камеры в сцене вторичное освещение приходится рассчитывать заново. Итак - Light Tracer - камерозависимый алгоритм, Radiosity - камероНЕзависимый.
Поддержка Area Light - "протяженный свет" (примерный перевод) - осуществляется частично, только за счет установки типа теней (см. рис.), геометрический тип источника света (Geometry Light) отсутствует.
Дополнительный эффект, обеспечивающий фотореалистичность картинки, называемый глубиной резкости (Depth of Field), присутствует в настройках камеры в разделе Multi-Pass effect. Правда, как и некоторые другие эффекты, этот является лишь имитацией и работает в двух вариантах, первый из которых быстрый, но менее качественный (просто размывает картинку в нужных местах), а второй очень медленный, но близкий к истине (рендерит многократно одну и ту же сцену, смещая в пространстве положение камеры). Эффект размытия движения (Motion Blur) функционирует по такому же принципу.
Вцелом, можно сказать, что scanline больше никаких дополнительных возможностей или алгоритмов не имеет. Все остальные эффекты являются скорее дополнениями или имитацией реальных оптических физически точных процессов.
Резюме: Достаточно простой рендер.
(+): скорость, простота настройки/управления, полная интеграция с 3DSMax.
(-): физически некорректный, для получения правильного результата необходимо прибегать к имитации.
Global Illumination | есть | LightTracer, Radiosity |
Area Light | частично | Area Shadows, soft ShadowMaps |
Depth of Field | имитация | Настройка камеры |
Motion Blur | имитация | Настройка камеры |
BusyRay
Следующий по сложности рендер не является встроенным, распространяется бесплатно, с тем лишь исключением, что картинка будет содержать водяные знаки. Платная версия не содержит водяных знаков.
Интерфейс рендера, пожалуй, еще проще, чем scanline, но отличает его то, что помимо почти полной интеграции с 3DSMax BusyRay имеет встроенный алгоритм GI. Однозначно к какому либо классу его отнести нельзя, т.к. BusyRay имеет как biased-алгоритм (Final, Раздел Computation), так и unbiased. Имеется поддержка протяженных источников света, как Area Light, так и Geometry Light, кроме того немного более быстрый, чем scanline, алгоритм skylight (освещение небосвода). Следует сказать, что для такого простого рендера (один единственный файл, размером около 380 Kb), поддержка GI и Geometry Light сделана очень добротно. В качестве последнего источника света можно использовать объект произвольной формы с любой самосветящейся текстурой(см. рис.).
Эффект глубины резкости (DoF) отсутствует полностью, даже при попытке включить его в настройках камеры (см. scanline) в разделе Multi-Pass Effect, или использовать плагины, вроде finalDoF, ни к чему не приведет. Единственный вариант - попытаться написать скрипт. Тоже самое ожидает и при попытке использовать эффект Motion Blur в сочетании с Preview-алгоритмом расчета, однако при включении алгоритма Final данный эффект начинает работать.
Интересен рендер и тем, что нет необходимости настраивать абсолютную мощность источников света, а только относительную (относительно друг друга), т.к. рендер проводит дополнительное вычисление перед началом расчетов, в котором подстраивает яркость финальной картинки под диапазон яркостей сцены. Например, если в сцене есть только один источник света, то неважно, какая у него яркость, 1 или 100, картинка получится одинаковая с точки зрения распределения яркостей. Это напоминает адаптацию человеческого глаза к темным или светлым условиям освещения. Разумеется, такую автоматическую настройку можно отключить.
Серьезный минус рендера в текущей версии - отсутствие рефракции (преломления в прозрачных материалах), а также - никакого подповерхностного рассеивания света (SSS - Sub-surfase Scattering). В остальном можно считать его достойной заменой стандартного scanline.
Резюме: не на много сложнее стандартного рендера scanline, отсутствует поддержка некоторых эффектов. В целом - практически тот же scanline с поддержкой более совершенных алгоритмов GI.
(+): быстрый и точный алгоритм GI, простота настройки.
(-): нет поддержки некоторых эффектов камеры, нет рефракции.
Global Illumination | есть | Preview, Final |
Area Light | есть | Area Shadow, Geometry Light |
Depth of Field | нет | - |
Motion Blur | частично | Настройка камеры, только Final |
vRay
Нельзя сказать, что этот рендер достаточно прост даже в самых ранних версиях, подтверждением тому служат многочисленные и, надо сказать, гениальные работы, которые можно в изобилии найти в Интернете на любом крупном ресурсе, посвященном 3D-графике.
Интерфейс рендера достаточно разнообразен и, что приятно - логичен и структурирован (см.рис.).
В каждом разделе представлены настройки какого-то конкретного эффекта или алгоритма. Сам же рендер относится к biased-типу, хотя, начиная с версии 1.46.15 во вкладке Light Cash, в окне выбора режима (Mode) появился Progressive Path Tracing ("прогрессивная трассировка"), который при должной настройке превращает vRay в полноценный unbiased-рендер. Не уходя далеко от темы надо сказать, что такая реализация выполнена недостаточно оптимально, во всяком случае существует ряд условий даже для простых сцен, в которых рендер затягивается достаточно надолго. Так, например, сцены, содержащие Geometry Light, отраженную в зеркальных поверхностях каустику, Motion Blur + Glossy effects (размытые отражения или преломления) или освещение только от рассеяного, многократно переотраженного света, представляют серьезную проблему для unbiased-рендеров на основе Path Tracing. На настройках рендера я, естественно, останавливаться не буду.
Что приятно - алгоритм расчета GI в vRay не только отделён от Direct Lighting (прямое освещение), но и разделён на первичный диффузный отскок и все остальные, но и это ещё не все! Для каждого из них есть несколько алгоритмов расчёта, отличающихся скоростью, точностью и требуемой памятью (см.рис.). Описание этих алгоритмов заняло бы целую статью как минимум, поэтому, дабы не раздувать обзор, я сведу это в небольшую таблицу.
Алгоритм | Скорость | Качество | Память | Описание |
Irradiance Map | средняя | среднее | средне | Довольно гибкий в настройках алгоритм с поддержкой интерполяции. Есть преднастройки на различный уровень качества, от которого зависит и время расчёта. View-depended. |
Photon Map | выше средней | среднее-выше среднего | максимум | Один из самых сбалансированных алгоритмов, дающий высокое качество за приемлемое время. Расплата - память. Качество зависит от количества фотонов, регулируется в настройках источника света. View-INdepended. |
Quasi-Montecarlo | самая низкая | самая высокая точность | минимум | Самый медленный, но самый точный рендер, основной параметр - subdivs, чем он больше - тем меньше шум картинки и тем больше время рендера. View-depended. |
Light Cash | ниже средней | среднее-выше среднего | средне | Довольно интересный инкрементальный алгоритм, рассчитывающий все возможные переотражения света. качество зависит от параметра subdivs, увеличение его в 2 раза увеличивает в среднем время расчёта в 4 раза. View-depended. |
Любопытной особенностью алгоритмов GI является то, что все они способны расчитывать каустику, в том числе и от рассеяного света, что прибавляет картинке реалистичности. Тем не менее, основной расчет каустики вынесен отдельно для большей гибкости и контроля над освещением в сцене и выполняется только методом фотонных карт.
Эффекты камеры, Motion Blur и Depth of Field, настраиваются в самом рендере и имеют приближенный к физической корректности алгоритм. В последней версии vRay render появился специальный тип камеры - vRay Physical camera, имеющий не только настройки вышеуказанных эффектов, но и таких, как чувствительность в единицах ISO (как если бы это была настоящая фотокамера), диафрагма, время выдержки и прочие параметры "реальной" камеры
vRay имеет собственный тип источника света, сферический или прямоугольный, который изначально подразумевает объемные тени (Area Light, см.рис.), а также поддерживает и стандартные типы и Geometry Light.
Современные знания об оптических свойствах реальных материалов говорят о том, что в той или иной степени свет отражают (рассеивают) ВСЕ без исключения поверхности, т.е., например, даже автомобильные покрышки или, скажем, кирпичная кладка, в какой-то степени обладают зеркальными свойствами. Исходя из этой предпосылки и построен интерфейс настроек материалов vRay - на сфере не появится всем знакомый блик (Specular), если материал не будет отражать хоть немного света (см. рис.). Конечно, всё это сделано с целью максимально увеличить реалистичность материалов с одной стороны, а с другой, возможно, сократить количество настроек. Понятно, что покрышки и кирпич невозможно использовать в качестве зеркала, это связанно с тем, что отражают они "рассеяно", что-то наподобие зачищенного куска нержавеющей стали. Это и есть Glossy Reflect/Refract - размытое отражение/преломление. В двух словах скажу, что эта технология в её "прямой" реализации довольно медленная, требуется большое количество лучей для получения незашумлённого результата. Так вот vRay Glossy имеет возможность интерполировать результаты расчёта, жертвуя качеством в пользу скорости.
Ещё один немаловажный аспект имитации реальных материалов - это подповерхностное рассеяние света (Sub-surface scattering, SSS), которое также в полной мере реализовано в материалах vRay. Его обычно используют для имитации органических материалов, пластик, кожа, воск, листья растений и некоторых неорганических - мутная вода, лёд, стекло.
Резюме: vRay занимает одну из лидирующих позиций среди рендеров благодаря качеству и гибкости настройки, однако относительно низкая скорость рендеринга, которая, к сожалению, с каждой новой версией становится всё ниже, не позволяет использовать его в полной мере в домашних условиях на комплексных сценах. Впрочем, любой серьёзный рендер будет достаточно медленным, чтобы пытаться использовать его в серьёзных проектах да ещё на ОДНОЙ! машине...=). Поддержка всех основных распространённых эффектов и материалов. Рекомендуется пользоваться материалами типа vRay, т.к. (особенно в старых версиях) стандартные материалы не совсем корректно работают с GI.
(+): высокое качество, на уровне кино-спецэффектов("Я, робот"), раздельный контроль над этапами рендера.
(-): неполная интеграция с 3DSMax, низкая скорость.
Global Illumination | есть | Quasi-Montecarlo, Irradiance Map, Photon Map, Light Cash |
Area Light | есть | Area Shadows, Geometry Light |
Depth of Field | есть | настройки рендера или камеры |
Motion Blur | есть | настройки рендера или камеры |
Glossy Reflect/Refract | есть | настройки материала, есть интерполяция |
SSS | есть | настройки материала |
Продолжение следует.