Оптимальные настройки V-Ray – Raycasting
В прошлом уроке про контроль адаптивности DMC Sampler, мы познакомились со способом глобального управления качеством и скоростью рендеринга в V-Ray. В этом уроке мы разберемся в настройках свитка V-Ray:: System вкладки Settings окна Render Scene (F10) в 3ds Max.
Содержание:
- Проблемы Крэша V-Ray
- Теория:
- Raycasting, Основа Рендеринга V-Ray
- Недостатки Не Организованности Данных
- BSP tree и Удобное Структурирование Данных
- Static Raycaster – Загрузка Всей Сцены в Память
- Dynamic Raycaster – Загрузка Геометрии Порциями
- Практика:
- Настройки Двоичного Дерева
- Настройки Динамического Рейкастера
- Параметры Бакетов
- Статистика Frame stamp
- Настройки распределенного рендеринга
- Журнал рендеринга V-Ray
- Второстепенные опции
- Карты GI Вне Контроля
- Заключение
Этот урок ответит на следующие вопросы:
- Что делать если происходит краш 3ds Max из-за нехватки оперативной памяти?
- Что делать если V-ray вылетает при рендере?
- Как бороться с нехваткой ОЗУ в V-Ray?
- Как отрендерить сцену с огромным количеством полигонов?
- Что делать если, при рендеринге тормозит компьютер?
- Что такое Raycasting и как V-Ray ускоряет его работу?
- Что такое BSP tree и как выглядит его структура в V-Ray?
- Чем отличается Static Raycaster от Dynamic Raycaster?
- Когда V-Ray использует свопинг?
- Как переключить работу V-Ray на динамический рейкастер?
- Что такое бакеты V-Ray?
- Зачем нужны логи рендеринга VRay log?
- Как менять приоритет рендеринга V-Ray?
- Что делать если V-Ray вылетает при просчете Light Cache?
- Как высчитать оптимальный размер Dynamic Memory Limit?
Проблемы Крэша V-Ray
При рендеринге сложных насыщенных сцен в V-Ray существует одно отвратительное явление, которое заставляет пользователей понервничать, а кого-то оно просто обезоруживает, убивая всякий энтузиазм продолжать любую дальнейшую работу над текущей сценой. Особенно неожиданным и каверзным это явление становится в момент, когда идет работа над коммерческой сценой и есть конкретные сроки, с четко обозначенным дедлайном. Все форумы, ведущие обсуждения V-Ray рендерера, просто завалены сообщениями с полу-умоляющими просьбами помочь не завалить сроки, выйти из критичной ситуации и закончить визуализацию сложной сцены :D
Разумеется, речь идет о нехватке оперативной памяти во время рендеринга, которая является причиной крэша 3ds Max и вылета сцены.
Почему же это все-таки происходит? Что приводит к этой ошибке? Неужели нельзя ничего сделать? Неужели, чтобы завершить сложный проект, неминуемо потребуется увеличивать количество оперативной памяти, установленной в текущем компьютере? Правда ли что единственный выход это идти в магазин компьютерных комплектующих и банально докупать несколько планок ОЗУ?
Чтобы ответить на эти вопросы, давайте разберемся, как же V-Ray использует оперативную память и какие инструменты управления процессом ее использования нам доступны.
В любом программном обеспечении, управление оперативной памятью и способ размещения данных в ней, это очень сложный и рутинный материал. По крайней мере, для тридешника. Нет совершенно никакого смысла вдаваться в точнейшие подробности, описывая массивы данных и адресацию к ним, глубоко уходящие корнями в программирование. Для того, чтобы уметь гибко управлять оперативной памятью программы на уровне профессионального пользования, достаточно лишь условного представления о процессах, происходящих с ней. Тем более, что в любой программе, пользователь всецело ограничен ее интерфейсом. V-Ray – не исключение.
Raycasting, Основа Рендеринга V-Ray
Для того, чтобы V-Ray смог приступить к рендерингу, то есть, смог из трехмерной сцены сделать растровую картинку, ему перед началом просчета необходимо загрузить данные о геометрии в оперативную память, чтобы использовать их для вычисления цвета пикселей финального изображения. Это начальный аспект рендеринга. Осознав его, важность оперативной памяти в процессе визуализации сразу становится ясной. Но, конечно же, мы этим не ограничимся и пошагово последуем порядку рендеринга.
Как только данные загружены в память, V-Ray может начинать рендеринг. Просчет каждого пикселя начинается с базовой операции, а именно "прощупывания" геометрии с помощью специального алгоритма, так называемого Рейкастинга (Ray casting). Суть этого алгоритма в том, что из камеры выпускается луч по направлению сцены, который летит до первого столкновения с каким-либо объектом сцены. Каждое такое столкновение фиксируется и, таким образом, V-Ray определяет местоположение геометрии в сцене, ее базовые свойства и другую требуемую для последующего рендеринга информацию.
Недостатки Не Организованности Данных
Процесс просчета одиночного рейкаста, т.е. столкновения луча с геометрией и определение ее свойств, сам по себе не значителен по времени. Однако, количество таких рейкастов при фотореалистичном рендеринге, может во много раз превышать количество пикселей рендера, которых и самих немало. Например, рендер HD разрешения 1920х1080 состоит из более чем 2 миллионов пикселей. Такой масштаб кардинально меняет ситуацию, делая процесс рейкастинга очень ресурсоемким.
Давайте проведем формальную аналогию технически замысловатому алгоритму рейкастинга. Она здорово поможет понять конкретные проблемы использования оперативной памяти в V-Ray.
Итак, представим геометрию сцены совокупностью обычных зеленых листьев с дерева, а алгоритм рейкастинга – неустанным муравьем, которому нужно найти среди всех листьев самый вкусный желтенький лист. В нашей аналогии, этот желтый лист будет представлять требуемую информацию о геометрии, с которой пересекся луч рейкастинга, чтобы произвести рендер какой-то одной зоны изображения.
Изначально, данные о геометрии сцены, которым предстоит загрузка в оперативную память, с точки зрения процесса рейкастинга расположены хаотично. Поэтому пусть предполагаемые листья так же будут хаотично свалены в кучу.
Наш работяга-муравей знает, что ему нужно найти желтый листик среди огромного множества ненужных ему зеленых. Как ему это сделать? Конечно же, ему придется последовательно перебрать кучу зеленых листочков, начиная с самого ближнего к нему и заканчивая самым дальним, пока не отыщется тот самый желтый, лакомый листик.
Подошел к первому, посмотрел, спелый ли он. Подошел ко второму, посмотрел, нужен ли ему второй. Подошел к третьему, посмотрел, желтый ли этот. И так, ему нужно перебрать буквально каждый листик в огромной куче, отсекая зеленые, чтобы найти заветный желтый.
Да, вероятна ситуация, что муравей попадет на желтенький листик в самом начале своего поиска. Но также нет абсолютно никакой гарантии, что желтый листик не окажется самым последним. Тогда, для отыскания одного единственного желтого листика ему придется пересмотреть всю огромную кучу зеленых.
Аналогичная ситуация произойдет с неорганизованными данными о геометрии сцены. Алгоритм рейкастинга будет вынужден последовательно перебирать все данные о геометрии для отыскания свойств единой точки в сцене, с которой пересекся выпущенный из камеры луч.
Такой способ поиска требуемой информации излишне утомителен и для нашего условного муравья, и для процессора, который вместо сугубо рендеринга, вынужден заниматься последовательным перебором данных в оперативной памяти.
BSP tree и Удобное Структурирование Данных
Для ускорения процесса определения свойств части сцены, с которой пересекся луч рейкастинга, V-Ray организовывает всю геометрию в удобную ему структуру.
V-Ray «раскладывает» данные о геометрии в оперативную память «по полочкам» иерархической древовидной структуры. Она называется Binary Space Partitioning (BSP) tree. Это особый метод представления массива данных в виде двоичной древовидной структуры.
Его общая суть в том, что все имеющиеся данные о геометрии делятся надвое, разделяя пространство сцены напополам. Таким образом, образуются две ветки, отходящие от исходной точки (всей сцены), которая называется корнем дерева – Root. После первого деления, каждая из веток данных, исходящая из корня, снова делится напополам, образовывая новые ветки. Точки, из которых исходят новые ветки, называют узлами дерева – Node. Процесс деления геометрии сцены и запись новых веток древовидной структуры в память продолжается до тех пор, пока не будет достигнут предельный уровень деления, который задается в параметрах создания двоичного дерева BSP tree. Результат последнего деления веток называется листьями дерева – Leaf. Таким образом, создается разветвленная структура геометрии всей сцены, по которой может происходить быстрый поиск свойств нужной области сцены.
Для условного, но наглядного представления того, как это происходит, давайте вернемся к нашему энтомологическому примеру. Аналогия с листиками и муравьем-сыщиком прекрасно показывает, как начальная организация помогает в поиске нужных данных.
Если мы не будем сбрасывать листья в беспорядочную кучу, а аккуратно расположим их на ветках дерева, то мы можем в разы ускорить процесс нахождения желтого листика. Ведь тогда наш муравей, минуя все лишние ветки, прямиком отправится к заветному желтому листочку. Так, ему не придется последовательно осматривать все листики. Вместо этого, он сразу глянет на дерево и, увидев на какой из веток растет желтый листик, быстренько заберется к нему своими цепкими лапками.
По такому принципу V-Ray структурирует данные о геометрии в сцене, не упуская возможностей сэкономить наше драгоценное время даже на таких, казалось бы, мелких операциях.
Базовый принцип рендеринга на этом уровне достаточно прост: загрузил, структурировал, отыскал нужные свойства и отрендерил :)
Теперь, когда мы познакомились с принципом структурирования данных для рейкастера, можно переходить к следующему шагу, который встречается на пути рендеринга насыщенных сцен в V-Ray.
Static Raycaster – Загрузка Всей Сцены в Память
Как мы теперь знаем, для начала процесса рендеринга, в память должна быть загружена геометрия сцены. В предыдущей главе мы рассмотрели древовидную структуру, решающую проблему медлительности рейкастинга.
Однако, на пути рендеринга встречается еще одна проблема, с упоминания которой мы начали этот урок. Всё гладко до тех пор, пока для загрузки геометрии в том или ином виде, не требуется ОЗУ больше, чем физически установлено на текущем компьютере.
Дело в том, что в V-Ray есть разные типы алгоритмов рейкастинга. Самый простой из них – это так называемый Static Raycaster. Он загружает в память геометрию сцены сразу и целиком.
Представьте, что мы собираемся запустить рендеринг сцены со многими миллионами полигонов, а для всей ее загрузки не хватает доступного нам объема ОЗУ. Что происходит в таком случае? К сожалению, в таком случае происходит одна из самых неприятных неожиданностей V-Ray – краш программы.
Краш (англ. crash) – это программный сбой, непредвиденная критическая ошибка, приводящая к аварийному завершению программы. Этот самый сбой V-Ray происходит в тот момент, когда свободный объем ОЗУ исчерпан и дальнейшее заполнение памяти геометрией просто невозможно. Сообщение о создании в памяти древовидной структуры геометрии «Current Task: Buliding static raycast accelerator...» это, как правило, последнее, что видят 3d визуализаторы в информационном окне Rendering. Далее рендеринг, а за ним и работа 3ds Max с V-Ray, самопроизвольно обрываются, вызывая окно отчета об ошибке.
В нашей аналогии, например, это попытка использовать излишне ветвистое дерево для расположения листиков. Слишком тяжелое дерево, под массой огромного количества листьев и ветвей, просто рухнет, вырвавшись из держащей его земли.
Единственным выходом из подобной ситуации без увеличения объема ОЗУ, будет отказ от единоразовой загрузки всей сцены в память и поочередная загрузка ее отдельных частей, просчет которых должен происходить в данный конкретный момент рендеринга.
Как и следовало ожидать, V-Ray обладает таким способом загрузки геометрии в память. Этот способ воплощен в особом, динамическом типе рейкастера, который рассчитан как раз на подобную ситуацию.
Dynamic Raycaster – Загрузка Геометрии Порциями
В отличие от базового движка рейкастинга под названием Static, динамический Dynamic Raycaster позволяет динамически загружать лишь определенную часть геометрии, необходимую в данный момент рендеринга.
Dynamic Raycaster загружает в оперативную память лишь определенную порцию геометрии, не превышающую заданное нами количество мегабайт. После того, как загруженная порция геометрии использована в просчете текущей части изображения, эта часть оперативной памяти очищается и загружается новая порция геометрии, которая будет использована для просчета следующей части изображения.
Рендеринг с помощью Dynamic Raycaster позволяет избавиться от проблемы переполнения оперативной памяти не только благодаря лимитированию оперативной памяти используемой рендерером. Динамический рейкастер использует возможности операционной системы по распределению памяти. Даже если для просчета текущей части изображения придется загрузить объекты, общий размер которых превышает установленный нами лимит памяти, то операционная система сможет выделить ресурс для успешного продолжения рендеринга. В частности Windows, будет использовать т.н. свопинг, сохранение на жесткий диск не поместившихся в физическую оперативную память данных.
Как бы ни было хорошо с динамической загрузкой геометрии, следует понимать, что если бы она была на самом деле универсальным решением, то ненадежный «вылетающий» Static рейкастер был бы просто не нужен. Однако V-Ray по умолчанию использует именно static raycasting engine.
Вполне ожидаемо, что, как и на любые операции, на загрузку и выгрузку информации тратится драгоценное время. Даже если мы установим идеально подходящий под нашу ситуацию лимит ОЗУ, использование Dynamic Raycaster существенно скажется на общем времени рендеринга, увеличив его. А в случае необходимости использовать свопинг – время просчета возрастет еще больше.
Вкратце это и есть все основы работы рейкстера с оперативной памятью и причины проблем ее использования им. Теперь, когда мы познакомились с сутью работы Raycaster, давайте взглянем на практические настройки и хитрости управления им.
Raycaster Params – Настройки Двоичного Дерева
Начнем с настроек, представленных в зоне Raycaster parameters свитка V-Ray:: System.
Первые три параметра задают свойства акселерационной структуры, двоичного дерева BSP tree. Они несколько абстрактны, поэтому для начала определимся с действием каждого.
Max tree depth – параметр, ограничивающий глубину разветвлений дерева. То есть, этот параметр определяет количество делений пространства сцены. Числовое значение этого параметра отражает максимальное количество уровней от корня Root до листьев Leaf. Чем больше значение Max tree depth, тем более разветвленным становится дерево.
Min leaf size – параметр, ограничивающий структуру бинарного дерева минимальным размером листьев. Этот параметр позволяет прекратить деление геометрии в сцене, указав величину минимального размера листьев в системных единицах измерения. Маленькие значения Min leaf size позволяют не ограничивать степень разветвления дерева, и таким образом дают ему разрастись настолько, насколько это позволяет предыдущий параметр.
Face/level coef. – параметр, определяющий максимальное количество треугольников (минимальных единиц геометрии) в одном листке Leaf. Меньшие значения этого параметра, как и с предыдущим Min leaf size, позволяют получать более разветвленное дерево, с большим количеством листьев.
Как нам известно, организация данных о геометрии в сцене в виде двоичного дерева BSP tree призвана ускорить процесс рейкастинга. Вполне логично предположить, что чем ветвистее наша древовидная структура, чем мельче у нее листья и чем меньше единиц геометрии содержит каждый лист, тем больше будет потенциал ускорения и тем больше места в оперативной памяти потребуется для удержания ее ветвей.
Но, этому ускорению существует предел. После некоторого порога, дальнейшее деление не имеет смысла, так как при чрезмерно разветвленной структуре BSP tree, работа с ним становится слишком ресурсозатратной. Алгоритм рейкастинга будет банально тратить вычислительный ресурс на блуждание по огромному BSP tree, нивелируя выигрыш в скорости по сравнению с неорганизованным видом данных.
Как найти этот предел, а с ним и оптимальный размер BSP tree, настроив скорость работы рейкастера с геометрией сцены на максимум?
Ответ на этот вопрос не самый ободрительный: исключительно экспериментальным путем. Не существует настроек, которые бы дали максимальную производительность в любой сцене с любым количеством геометрии. Для каждой конкретной сцены оптимальная глубина BSP tree индивидуальна.
Для рендеринга статичных изображений возня и многочисленные эксперименты с вышеописанными параметрами совершенно неоправданы. Просто потому, что для определения оптимальных параметров BSP tree, их необходимо подбирать, тратя уйму времени. Согласитесь, это абсурд, проводить 10 раз финальный рендеринг в поисках оптимальных настроек BSP tree, чтобы в итоге провести его же в одиннадцатый раз, но на 10 минут быстрее :D
Как бы там ни было, параметры создания BSP tree это не просто демонстрация технических возможностей рендер-движка. Их назначение становится понятным, когда речь заходит об анимации. Например, необходимо просчитать секвенцию в 1000 кадров. Тогда можно смело проводить экспериментальный подбор оптимальных параметров BSP tree. Даже если для выбора лучших значений потребуется просчитать 10 или 20 финальных рендеров, но при этом скорость рендеринга каждого кадра увеличится на 20 секунд, то настройка будет весьма полезной. Ведь такой оптимизацией будет с легкостью сэкономлено более 5 часов вычислительного времени.
В практике статического рендеринга, необходимость изменять значения этих параметров существует лишь теоретически. Она может иметь смысл тогда, когда нужно уменьшить размер BSP tree и, ценой снижения скорости рендеринга, освободить часть оперативной памяти в угоду других нужд.
В универсальных стартовых настройках V-Ray, в параметрах, отвечающих за структуру BSP tree, следует оставлять номинально установленные значения, не внося в них свои коррективы без реальной необходимости.
Raycaster Params – Настройки Динамического Рейкастера
Dynamic memory limit – параметр, определяющий лимит оперативной памяти в мегабайтах, выделенный динамическому рейкастеру. Именно этот параметр определяет максимальный размер доли оперативной памяти, которая будет использована для каждой порции геометрии при работе dynamic raycaster. Буквально, установленное в этом параметре количество мегабайт делится между вычислительными потоками текущего компьютера. Низкие значения этого параметра могут существенно понизить производительность рейкастера, т.к. это может повысить частоту загрузки/выгрузки порций геометрии и частоту обращений к сравнительно медленному свопингу. Завышенные значения могут несколько замедлить работу рендерера и существенно повлияют на комфорт работы в операционной системе. Значение в 60–80% от общего количества оперативной памяти, доступного Вашей системе позволяет добиться наибольшей производительности. Именно его и следует использовать в универсальных настройках V-Ray.
Калькулятор Dynamic Memory Limit
Чтобы Вы не утруждали себя подсчетом, воспользуйтесь этим javascript калькулятором Dynamic memory limit для определения оптимального количества мегабайт для использования в этом параметре на Вашем компьютере:
Default geometry – параметр, определяющий способ загрузки геометрии в оперативную память. Здесь можно выбрать тип рейкастера, которым будет просчитываться геометрия в текущей сцене. Параметр Default geometry управляется выпадающим списком, из которого можно выбрать тип рейкастинга.
До описания опций параметра Default Geometry, стоит упомянуть VRayProxy и VRayFur объекты. Особенностью рендеринга сцен с такими объектами является то, что в независимости от того, каково текущее значение Default geometry, эти объекты в обязательном порядке просчитываются динамическим рейкастером. Такие объекты по определению сверхвысокоплигональные и желательно всегда загружать их геометрию порционно, номинально избегая крушения программы.
Static – самый тривиальный режим рейкастинга. В режиме Static, все данные о геометрии сцены, необходимые для рендеринга, целиком загружаются в оперативную память перед началом визуализации.
Dynamic – компромиссный динамический режим Default geometry. В режиме Dynamic не происходит загрузки всех данных о геометрии сцены в оперативную память целиком. Они загружаются дозировано, в виде порций. Максимальный размер порции определяется количеством мегабайт, установленным в числовое поле Dynamic memory limit.
Auto – установленный по умолчанию параметр Default geometry. В этом режиме, V-Ray самостоятельно решает, какие объекты в сцене просчитывать статическим рейкастером, а какие – динамическим. Просчитывать ли тот или иной объект динамическим рейкастером, V-Ray решает на основании свойств самого объекта. А именно в зависимости от количества составляющих его полигонов и от количества его образцов (instances). Это гибридный способ загрузки геометрии, совмещающий работу и статического, и динамического рейкастеров.
Если сравнивать типы рейкастеров, то Dynamic это самый неприхотливый, но и самый медленный режим. С ним реже всего возникают проблемы краша 3ds Max, однако, в связи необходимостью постоянно заполнять и очищать ограниченный объем памяти, скорость рендеринга существенно замедляется. Когда просчет геометрии ведется Static raycaster, он самостоятельно распоряжается всем ресурсом доступного ОЗУ в данной системе. Это самый производительный, но и самый нестабильный режим. Если все данные о геометрии полностью умещаются в памяти, то рендеринг идет максимально быстро, ведь не нужно дозировать геометрию и ожидать загрузки/выгрузки очередной порции данных, и уж тем более использовать свопинг. Однако, если данных больше, чем может уместиться в доступной на данном компьютере, оперативной памяти, то это немедленно приведет к крушению программы, аварийно завершив ее работу. Вспомните картинку со сломленным деревом :)
Номинально, Default geometry установлен в режим Auto. Это самый универсальный режим из трех и именно его следует использовать в универсальных стартовых настройках V-Ray.
Параметры Бакетов
Настройки зоны Render region division системных настроек V-Ray рендерера позволяют выбирать размер и очередность рендеринга порций изображения, последовательно просчитываемых рендерером.
Render region division или, как его еще называют, бакет – это минимальный регион-порция финального изображения, на которые оно разбивается рендерером для последовательного многопоточного просчета. Суть такого разбиения аналогична сути параметра Number of passes для Light Cache. Бакеты – это те самые маленькие квадратики, которые весело (а иногда не очень :D) бегают по фрейм буферу, постепенно просчитывая и открывая нашему взору конечный результат рендеринга.
Как бы банально это не звучало, но собственно процесс рендеринга, который принято считать эталоном многозадачности, сам по себе не многозадачный. То есть само вычисление не может быть выполнено более чем одним ядром даже многоядерного процессора. Можно представить, во что может вылиться время рендеринга, если он будет вестись только одним ядром процессора, в то время как остальные ядра будут простаивать. Такой вариант совершенно неприемлем, и, конечно же, необходим выход из этой ситуации. Именно таким выходом и есть равноправное деление процесса рендеринга между разными вычислительными потоками. Для этого финальный рендер предварительно делится на множество самостоятельных частей, другими словами на множество маленьких рендеров, каждый из которых может быть просчитан отдельным вычислительным потоком. Таким образом, однообразное вычисление разделяется на несколько частей, позволяя полностью использовать ресурс всех вычислительных конвейеров, доступных системе. Так просчитываются все эти маленькие изображения (бакеты). Когда очередной бакет просчитан, он отображается во фрейм буфере, подобно детскому паззлу, собирающемуся из меленьких кусочков в одну финальную картинку, нарисованную на картонной коробке :) Для того, чтобы финальный рендер не выглядел как паззл или настенная мозайка, где четко различимы границы соседних ячеек, производится их взаимное сглаживание.
X и Y значения определяют величину бакета в пикселях по горизонтали и вертикали соответственно. По умолчанию эти два числовых поля зависимы и равны. Однако достаточно отжать кнопку L (Lock) и станет доступным значение Y, которое можно будет задать независимо от значения X. Значения X и Y будут определять высоту и ширину бакета в пикселях, но лишь до тех пор, пока в выпадающем списке рядом (напротив X), выбрано значение Region W/H. Если же в нем установить значение Region Count, то числовые значения в полях X и Y будут определять количество бакетов, на которые будет разделен финальный рендер по горизонтали и вертикали.
Очевидно, что если финальное изображение разбивается на большое количество порций, то больше вычислительных ресурсов тратится на сглаживание их границ с соседними порциями. В тоже время, маленький размер порции-бакета служит залогом того, что в него попадет минимальное количество геометрии. Ведь бакет это и есть та порция просчитываемого изображения, которую загружает динамический рейкастер в ОЗУ. Уменьшение размера бакета может оказаться полезным, когда попадающие в бакет объекты превышают лимит оперативной памяти, доступной одному потоку. Меньший бакет теоретически может захватить меньший объем геометрии, что возможно избавит рендеринг от использования медленного свопинга. Как бы там ни было, такая ситуация сложно предсказуема и в стартовых настройках V-Ray следует использовать значения 64х64 Region W/H, установленные по умолчанию.
Region sequence – опция, задающая вид последовательности просчета порций или, другими словами, узор рендеринга бакетов. На выбор доступны шесть узоров рендеринга бакетов. Это Top/bottom, Left/right, Checker, Spiral, Hilbert curve и Triangulation.
Из названия первых четырех режимов вполне ясно, какой узор будут вычерчивать бакеты во фрейм буфере: сверху вниз, слева направо, шахматный узор и спираль, соответственно. В режиме Hilbert curve бакеты будут следовать друг за другом, словно змейка из кубиков в примитивном портативном тетрисе :)
Наиболее же интересный режим, это Triangulation. С ним бакеты будут вычерчивать треугольники разного размера, последовательно покрывая все зоны фрейм буфера. Главная особенность Triangulation в том, что в нем последовательно очерчиваются очень плотные зоны изображения, что весьма полезно при работе динамического рейкастера. С таким узором есть большая вероятность того, что при просчете текущих бакетов, может быть использована информация о геометрии, которая была загружена в оперативную память для только что просчитанных бакетов. Это позволит сэкономить вычислительный ресурс, минуя лишние операции загрузки и выгрузки данных, ограниченных порцией Dynamic memory limit. Именно по этой причине, даже если Вам больше нравится змейка или шахматный узор, в номинальных стартовых настройках V-Ray всегда следует использовать узор просчета бакетов Triangulation.
Reverse sequence позволяет обратить направление последовательности просчета бакетов. Эта опция всего-навсего меняет последовательность просчета по узору, заданному в параметре Region sequence. Например, если просчет ведется слева направо (Left/right), то активация опции Reverse sequence заставит бакеты просчитываться справа налево, то есть в реверсном направлении. По сути, эта функция никак не влияет на процесс рендеринга. Но она может быть весьма полезна в тех случаях, если рендеринг сцены по каким-то причинам остановлен до завершения. Тогда рендеринг можно возобновить, активировав реверсное направление просчета бакетов и продолжить просчет сцены с непросчитанной части изображения. В оптимальных стартовых настройках изменение данной опции не имеет никакого практического смысла.
Previous render – параметр, позволяющий задать действие, производимое с предыдущим изображением во фрейм буфере во время рендеринга нового. Оставить предыдущий рендер неизменным позволяет режим Unchanged. Перекрыть старую картинку затемняющим узором шахматной доски или чередующихся линий помогут режимы Cross и Fields. Режим Darken и Blue позволяют просто затемнить или же придать синий оттенок предыдущему рендеру для подчеркивания контраста. Самый полезный из перечисленных режимов это стандартный Unchanged, который позволяет четко наблюдать за изменениями в новом рендере. Его и следует использовать в начальных настройках V-Ray.
На этом все важные системные настройки V-Ray заканчиваются. Последующие зоны и настройки свитка V-Ray:: System не оказывают существенного влияния на суть рендеринга и являются второстепенными. С ними мы тоже познакомимся.
Статистика Frame stamp
Далее в свитке V-Ray:: System расположен раздел Frame stamp, управляющий единственной функцией с несколькими параметрами.
Это второстепенная функция, позволяющая включать отображение статистической информации на изображении финального рендера. С помощью этой функции в финальный рендер можно добавить полосочку с различной технической информацией. Такой, как время рендеринга текущего кадра, название процессора ведущего рендеринг, текущая версия V-Ray и даже размер финального изображения в пикселях. Эта специфическая возможность предназначена для особых случаев, например, для тестирования сцены на предмет того же оптимального размера двоичного дерева. Или же банальное желание похвастаться перед коллегами новым процессором и тем, как же классно и быстро он ренедерит Вашу сложнейшую сцену :D Разумеется, в универсальных стартовых настройках V-Ray активация Frame stamp совершенно ни к чему.
Настройки распределенного рендеринга
Следующая зона свитка V-Ray:: System активирует и вызывает настройки режима сетевого распределенного рендеринга Distributed rendering.
Это одна из самых революционных возможностей современных рендер движков. Distributed rendering позволяет производить рендеринг одного изображения мощностями нескольких компьютеров. Для этого они должны быть настроены соответствующим образом и объединены в локальную сеть. V-Ray может распределять и отправлять отдельные бакеты всем доступным компьютерам, а затем собирать результаты их просчетов в едином фрейм буфере.
Это очень объемная и интересная тема, которая со временем будет раскрыта на страницах RenderStuff. Как бы там ни было, просчет изображения несколькими компьютерами не имеет отношения к стартовым настройкам V-Ray и, следовательно, опцию Distributed rendering активировать не нужно.
Журнал рендеринга V-Ray
Далее в свитке V-Ray:: System расположен раздел VRay log. Он весь, как и ранее рассмотренный раздел Frame stamp, отвечает за работу одной функции – журнала V-Ray.
В отличие от Frame stamp, полезность этой функции весьма очевидна. Активация чекбокса Show window в настройках VRay log позволяет вызывать информационное окно Vray messages, в котором будет отображены логи работы V-Ray во время рендеринга. В частности, очень удобно наблюдать за информацией о процессе рендеринга. Это различные предупреждения, ошибки и просто статистика. Например, VRay log незаменим в процессе настройки и контроля за вышеупомянутым дистрибутивным рендерингом. В окне Vray messages можно четко увидеть, какие компьютеры приняли участие в текущем просчете, а какие – остались не у дел и простаивают. Такая информированность позволяет сэкономить уйму времени и заранее упредить многие проблемы на начальной стадии рендеринга.
VRay log также ведет запись в текстовый файл, путь к которому можно указать в поле ниже под галочкой Show window. Он может быть полезен в случае, если произошло крушение 3ds Max. При этом всегда можно открыть этот файл простым текстовым редактором и посмотреть сообщения ошибок, среди которых можно найти ту, которая повлекла сбой программы.
Числовое значение Level указывает глубину ведущейся статистики. Единица в этом параметре указывает, что в журнал следует помещать только сообщения об ошибках. Двойка – ошибки и предупреждения. Тройка – ошибки, предупреждения и просто информационные сообщения. Четверка заставляет добавлять в журнал сообщения обо всех событиях, происходящих при рендеринге.
Для того, чтобы быть в курсе самых важных событий, происходящих во время рендеринга, в номинальных стартовых настройках V-Ray опцию Show window следует включать и устанавливать глубину информирования Level в 3.
Второстепенные опции
Следующей, расположена зона Miscellaneous options. В эту зону собраны все оставшиеся второстепенные системные параметры V-Ray.
MAX-compatible ShadeContext (work in camera space) – функция, позволяющая V-Ray работать с так называемым пространством камеры.
Дело в том, что номинально V-Ray ведет вычисления в пространстве сцены. Другими словами, в V-Ray при рендеринге использует координаты геометрии относительно всей сцены. Однако, некоторые плагины, особенно старые, работают с координатами относительно самой камеры. Активация работы в пространстве камеры, позволяет V-Ray работать с подобными плагинами, минуя проблемы несовместимости. Именно поэтому, в стартовых настройках V-Ray, галочку MAX-compatible ShadeContext, всегда следует держать активной.
Опция Check for missing files включает проверку на наличие пропущенных файлов, например не найденных файлов текстур или прокси в текущей сцене. Результат такой проверки немедленно отображается в качестве предупреждения в логе. Как правило, мы и так осведомлены о недостающих файлах сцены. В частности, когда сцена загружается в 3ds Max, то он сразу же выдает список недостающих файлов. На практике, такая проверка будет скорее назойливой, нежели полезной и поэтому, для универсальных стартовых настроек V-Ray этот чекбокс следует выключать.
Optimized atmospheric evaluation – опция, позволяющая отключить шейдирование объектов сцены, находящихся в или за зоной атмосферных эффектов, если объекты слабо видны сквозь непрозрачность этих эффектов. Ее включение может существенно сэкономить вычислительный ресурс при просчете материалов таких объектов. Активация функции Optimized atmospheric evaluation заставляет V-Ray сначала просчитать атмосферный эффект, чтобы заранее оценить степень видимости объектов и надобность их шейдирования. Разумеется, автоматическое определение видимости объектов через атмосферный эффект не всегда идеальное и возможна ситуация, при которой объект будет достаточно заметный, но при этом не будет шейдирован. В универсальных стартовых настройках V-Ray эту функцию номинально следует отключать.
Low thread priority – опция, автоматически присваивающая низкий приоритет процессу рендеринга в операционной системе. Аналогично тому, как это можно сделать с помощью диспетчера задач Windows во вкладке Процессы. Ее использование позволит немного разгрузить компьютер, освободив вычислительные ресурсы другим приложениям, что даст возможность комфортно работать с ними даже во время рендеринга. Однако, ресурсоемкие приложения все равно могут подтормаживать, несмотря на активацию Low thread priority.
Назначение низкого приоритета какому-либо процессу снижает его эффективность и как следствие, уменьшает скорость вычислений, что в большинстве случаев совершенно неприемлемо. И поэтому, в стартовых настройках V-Ray эту функцию номинально следует выключать.
Последние опции раздела Miscellaneous options, это кнопки Objects settings, Light settings и Presets.
Кнопки Objects settings и Light settings вызывают окна параметров объектов и источников света, аналогичные тем, которые можно вызвать, нажав правую клавишу во вьюпорте на выделенных объектах сцены. Данные функции, по сути, не являются непосредственно настройками V-Ray, поэтому к оптимальным настройкам они отношения не имеют.
Presets – функция, с помощью которой можно сохранять настройки текущей сцены в профиль V-Ray и позже загружать их в любую другую. Использование этой функции позволяет не повторять рутинное выставление одних и тех же галочек и значений как ритуал от проекта к проекту. Это напрямую касается номинальных стартовых настроек V-Ray, однажды выставив которые, можно запросто сохранить как профиль настроек и использовать в любой новой сцене по назначению.
Эта функция вполне очевидна и без дополнительных разъяснений, но, в любом случае, ее практическое применение и ее альтернатива будут подробно описаны в следующем уроке.
Карты GI Вне Контроля
Хочется отметить, что все описанные в этом уроке настройки, которые управляют распределением данных о геометрии сцены, не имеют отношения к распределению данных о картах GI в оперативной памяти. Это значит, что вне зависимости от того, какова ветвистость BSP tree, какой тип рейкастера выбран и какой лимит памяти выставлен, карты GI будут полностью загружены в оперативную память и будут занимать там столько места, сколько им необходимо.
Вполне реальна ситуация, когда рендер проходит все подготовительные стадии, связанные с загрузкой геометрии, и даже начинает просчет карт GI, например карты Light Cache. Затем, просчитав некоторый объем LC – рендеринг обрывается, вызывая ненавистное окно V-Ray exception. Происходит это, потому что памяти, оставшейся после загрузки геометрии, попросту не хватило на запись информации о карте LC.
К сожалению, элегантного решения, вроде динамического рейкастера для геометрии, для карт GI нет. Однако некий выход все же есть. Самый банальный это, конечно же, уменьшить детализацию карт GI, понизив визуальное качество финального рендера. Существует также и более компромиссное решение. Можно пойти по пути разделения процесса рендеринга, попросту разбив рендеринг одного изображения на несколько частей. А именно, можно отрендерить все изображение регионами. Например, сначала отрендерить одну половину изображения, воспользовавшись region render, затем досчитать вторую половину, перенеся рамку региона на не просчитанную зону изображения. Разумеется, что если тот же Light Cache будет просчитан лишь для половины текущего кадра, то его карта займет вдвое меньше оперативной памяти, нежели при рендеринге всего изображения целиком.
Заключение
Вот собственно и все системные настройки и особенности V-Ray, о которых необходимо знать любому 3d визуализатору, использующему V-Ray рендерер в своей работе.
Друзья, надеемся, что эта статья поможет Вам в трудной ситуации, когда сроки сдачи проекта на носу, а Max, как назло, вылетает в самый неподходящий момент :) Теперь, понимая основные принципы работы с системными настройками V-Ray рендерера, Вы сможете с легкостью осуществлять менеджмент данных рендеринга сцены со сложной геометрией, в не зависимости от того, сколько оперативной памяти установлено в Вашем компьютере.
Желаем всем легких настроек и красивых рендеров!
До встречи в следующем уроке, следите за обновлениями, и, конечно же, поддерживайте нас, приобретая понравившиеся Вам прекрасные премиум 3d модели :) Вы можете это сделать!
Свои вопросы и предложения по поводу данного урока смело пишите в комментариях, мы откликнемся и поможем Вам.





О чем интересно будет следующий урок ?