Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оптимальные настройки V.docx
Скачиваний:
36
Добавлен:
11.02.2015
Размер:
11.55 Mб
Скачать

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 обладает таким способом загрузки геометрии в память. Этот способ воплощен в особом, динамическом типе рейкастера, который рассчитан как раз на подобную ситуацию.