Irradiance Map VRay урок

10 Feb, 2011 renderstuff (Staff Author)

Всем привет! Итак, мы продолжаем настройку глобального освещения в V-Ray. В предыдущем уроке об общих настройках и принципах Indirect Illumination мы рассмотрели, что такое глобальное освещение и зачем оно необходимо. В данном уроке мы рассмотрим принципы работы, параметры, а также аргументы за и против алгоритмов просчета вторичных GI отскоков Brute Force и Irradiance Map.

Этот урок ответит на следующие вопросы:

- Как работает Brute force GI engine?

- Куда делся Quasi-Monte Carlo GI engine?

- Как работает Irradiance Map алгоритм?

- Как выглядит трехмерная карта Irradiance?

- Каким образом IM определяет детализацию сцены?

- Что такое предпроходы IM?

- Почему не следует устанавливать одни и те же значения Min и Max rate?

- Как работает опция Detail enhancement в Irradiance Map?

- Для чего предназначена функция Multipass?

- Какое значение интерполяции дает сглаженную, но детализированную Irradiance Map?

- Почему возникают яркие световые пятна на визуализации и как от них избавляться?

best v-ray engine settings 2.2 by renderstuff

Беспристрастный Brute force GI

Brute force GI – базовый алгоритм, устанавливающий фиксированное количество вторичных лучей, отраженных от точки в сцене после попадания в нее первичного луча от источника света. Если Вы помните, ранее было рассмотрено, что луч от источника света попадает на поверхность объекта сцены и разбивается на множество дополнительных лучей, которые, в свою, очередь бомбардируют другие объекты сцены (вспомните пример с одуванчиком). Разумеется, что на чем большее количество отраженных диффузных лучей вторичного освещения будет разбит луч первичного света, тем больше деталей и меньше шума будет на финальном изображении.

Subdivs – параметр, банально определяющий количество вторичных лучей, на которое будет разбит каждый луч от первичного источника света, попавший на объект сцены. Числовое значение параметра Subdivs – это не буквально количество лучей, на которое будет разбит каждый луч от первичного источника света. Реальное число лучей будет равняться квадрату этого числа. То есть, если Subdivs равно 2, то это значит, что первичный луч будет разбит на четыре вторичных луча, если равно 4, то первичный луч будет разбит на шестнадцать вторичных и так далее.

Secondary bounces – величина, задающая, какое количество раз будут отражаться лучи дополнительных отскоков. Он активен, только если Brute force алгоритм установлен как алгоритм просчета Secondary bounces в выпадающем списке GI engine, так как именно в этом случае он будет просчитывать нужное количество переотражений. Если Brute force установлен как Primary GI engine, то Secondary bounces параметр будет неактивным.

Алгоритм Brute force не имеет адаптивности и попросту просчитывает GI для каждого пикселя финального изображения сцены, в не зависимости от ее сложности, цветов и детализации объектов. Тем самым он расходует одинаковое количество вычислительных ресурсов, как в заметных, так и в маловажных участках сцены. Совсем не странно почему он был назван грубой силой :) Также хочется отметить, что Brute force это прямой расчет по методу Quasi-Monte Carlo (QMC) и именно так он назывался в ранних версиях V-Ray, что иногда вызывало путаницу, когда 3d визуализаторы долго искали в новом интерфейсе V-Ray алгоритм Quasi-Monte Carlo GI.

Грубая сила этого алгоритма весьма иррациональна, ее использование приводит к чудовищным срокам расчета даже несложных сцен при адекватном уровне качества. Поэтому его не стоит номинально использовать в универсальных настройках V-Ray как рендер-движок ни первичных, ни вторичных отскоков. Его использование оправданно лишь в особых ситуациях, когда остальные алгоритмы, из-за своей адаптивности не могут справиться с просчетом мелких деталей в сцене, но об этом позже.

Адаптивный Irradiance map

Irradiance map – это адаптивный алгоритм просчета отскоков глобального освещения. Основная особенность его работы заключается в выявлении наиболее значимых детализированных зон визуализируемой сцены, вычислении в них GI и игнорировании менее важных зон, с последующим заполнением информации о GI в них путем интерполяции информации из уже просчитанных важных зон.

Для того, чтобы понять как именно работает и что из себя представляет алгоритм Irradiance map, давайте взглянем на его карту, которая, кстати, называется аналогично - Irradiance map.

Пред Вами та тестовая сцена, которая была использована в предыдущем уроке о GI, с той же геометрией и тем же первичным освещением, что и ранее. Для наглядности из материалов сцены удалены все текстуры, дабы не мешать обзору Irradiance map. Внимательно посмотрите на зоны наибольшего скопления белых точек. Это внутренние углы помещения, скругленные углы ChamferBox и места на близко расположенных друг к другу частях разных объектов, в частности на стороне сферы, обращенной к кубу, а также на зоне соприкосновения куба с лицевой стеной. Эти зоны имеют наибольшую важность в получении красивого детализированного вторичного освещения.

Именно совокупностью этих точек и является карта Irradiance map, которую мы и наблюдаем на изображении. Данные точки содержат информацию о цвете и яркости GI в этих зонах. Остальная часть изображения заполнена серым цветом. Серые зоны на Irradiance map это части сцены, где Irradiance map не содержит информацию о GI. Однако это полностью компенсируется интерполяцией между уже вычисленными точками Irradiance map. Другими словами, Irradiance map вычисляет наиболее важные зоны, просчитывая лишь их, после чего недостающую информацию о не просчитанных зонах попросту компенсирует интерполяцией, взяв данные о цвете и яркости из уже имеющихся.

Вполне очевидно, в чем заключается адаптивность Irradiance map. В отличие от Brute force (BF), Irradiance map (IM) не просчитывает каждый пиксель сцены. Он просчитывает лишь важные ее зоны, за счет чего происходит весьма существенная экономия вычислительных ресурсов.

Алгоритм Irradiance map строит трехмерную карту точек, содержащих информацию о GI точно на поверхности объектов сцены. В объеме карта Irradiance map этой сцены выглядит следующим образом:

Если посмотреть на показанные выше второй и третий скриншоты специальной утилиты Irradiance map viewer, то отчетливо видно не только факт трехмерности Irradiance map, но и ее зависимость от вида из камеры, через которую происходит визуализация сцены. В частности, сразу же бросается в глаза отсутствие точек GI на невидных в кадре камеры частях куба и на той части помещения, которая находится за ней.

В IM "прощупывание" важных мест сцены, в которых ведется просчет GI, реализовано очень элегантным образом. Оно использует концепцию субсэмплирования, рассмотренную ранее в первом уроке серии уроков оптимальных настроек V-Ray. Для начала, GI всей сцены просчитывается в минимальном разрешении, которое обычно меньше разрешения рендеринга, точно также не адаптивно, как и BF алгоритмом. После чего, из полученных данных выбираются наиболее важные, то есть вычисляются те самые зоны, где следует вести более точный просчет. И начинается просчет в следующем по величине разрешении, но лишь в требуемых зонах. Эта процедура поэтапно повторяется несколько раз, каждый раз увеличивая разрешение, и так, пока не достигнет максимально установленного разрешения просчета IM. Минимальное и максимальное разрешение просчета IM указывается в ее параметрах. Шаг просчетов отличается вдвое большим или вдвое меньшим значением разрешения, то есть в четыре раза по площади изображения в пикселях. Например, при разрешении рендеринга 800 на 450 пикселей, следующий шаг субсэмплирования это 400 на 225, следующий – 200 на 113 и так далее. Стоит отметить, что IM позволяет использовать как субсэмплирование, так и суперсэмплирование. То есть карта IM может быть просчитана как на меньших, чем разрешение рендеринга, так и на больших, в четное количество раз, разрешениях.

Каждая фаза просчета GI называется pass, т.е. проход. Фазы просчетов, с помощью которых происходит определение важных зон, называются Prepass, т.е. предпроход. Прогресс просчета предпроходов, их общее количество и то, какой предпроход вычисляется в данный момент можно наблюдать в системном окне Rendering, появляющемся после старта рендеринга.

Давайте посмотрим, как выглядит просчет IM на примере четырех предпроходов.

В этом примере максимальным разрешением просчета IM является разрешение 800 на 450, равное разрешению рендеринга самого финального изображения. Для определения важных зон, сначала используются три субсэмплированных предпрохода на меньших разрешениях: 100 на 56 в первом предпроходе, 200 на 113 во втором предпроходе, и 400 на 225 в третьем. Вместе с финальным четвертым предпроходом выходит всего четыре предпрохода IM.

Обратите внимание на первый предпроход. Можно заметить, что в нем не выделены никакие зоны, все изображение просчитано одинаково с одинаковой точностью, так же, как просчитывает алгоритм BF. Совершенно иную картину можно наблюдать уже на третьем и, особенно, на последнем четвертом предпроходе. Сразу же становится видно, как алгоритм IM выделил важные детали сцены, усыпав их сэмплами GI, и существенно проредил плоские не детализированные поверхности. Неважными оказались такие части, как плоскость стен, плоская грань куба и т.д. На них осталось лишь по несколько точек, которые позже будут просто интерполированы алгоритмом IM между собой, заполнив пустые зоны. Также сразу же можно заметить, что размер семплов относительно всего изображения на разных предпроходах – разный, т.к. чем больше разрешение просчета IM, тем меньше величина одного семпла, соответственно – больше деталей и точнее IM.

Несложно догадаться, что карта GI, просчитанная IM даже на полном финальном разрешении без предварительных предпроходов, а значит без вычисления важных зон, будет так же груба и не адаптивна, как и в случае просчета GI с помощью алгоритма BF. Время ее вычисления конечно же будет почти столь же долгим, как и в случае с BF.

На этом изображении показана IM карта, просчитанная одним предпроходом сразу же в финальном разрешении. Глядя на нее, кажется, что тут семплов нет вообще. Однако все как раз наоборот. Все, что сейчас видно на этом изображении, это и есть семплы, плотно-плотно усеявшие каждый пиксель финального разрешения. Так, карта IM не сосредоточенна в каких-то важных зонах, она полностью покрывает все объекты сцены, видимые из данной камеры. Получение столь плотной карты влечет за собой столь же долгие вычисления. В частности, все четыре предпрохода в первом случае были просчитаны за 5 минут, в то время как просчет одного лишь прохода во втором случае потребовало 50 минут вычислительного времени. Разница более чем очевидна. Не стоит заблуждаться, что во втором случае качество финального изображения будет существенно лучше, чем в первом, в виду более насыщенной IM. Дело в том, что на маловажных зонах сцены, представляющих из себя по большей части плоские одноцветные поверхности, цвет GI будет однородный и без деталей в обоих случаях. Однако в важных зонах сцены, по сути, что просчитанная с адаптивностью, что просчитанная без предпроходаов IM, одинаково детализированы. Именно поэтому нет никакого смысла тратить в десять раз больше вычислительных ресурсов на просчет однородных плоских поверхностей и получить по сути тот же результат. Думаем, теперь масштаб экономии времени при расчете IM, по отношению к времени расчета BF, вполне очевиден.

Когда карта важных точек, содержащих информацию о цвете GI, просчитана, происходит интерполяция недостающих точек GI. Затем, в каждой точке, как и в случае с BF, просчитывается фиксированное количество лучей вторичного освещения по полусфере, как это было описано в предыдущем уроке.

Основные настройки Irradiance Map

За то, какие зоны алгоритм IM будет считать важными, какое количество вторичных лучей будет принимать каждая точка IM, а также в каких разрешениях производить прощупывание важных деталей, отвечают параметры IM, расположенные в свитке V-Ray:: Irradiance map.

Current preset – это всего лишь быстрые наборы предустановленных значений для основных параметров IM. Выпадающий список с этими наборами находится в зоне Built-in presets. Назначение каждого из них легко можно понять по их названиям, они говорят сами за себя: Very low, Low, Medium, Medium animation, High, High animation, Very high. Однако наибольший интерес для нас представляет значение Custom. Как видно из его названия, это значение позволяет вручную настраивать параметры IM. Особенностью работы Current preset опции является то, что если выбрать одну из предустановок, а затем выбрать Custom, то в числовых полях IM останутся значения этой последней предустановки. По умолчанию в настройках IM стоит предустановка High, именно ее и стоит выбрать как начальную, а затем изменять основные параметры IM, выбрав Custom.

Далее идут настройки зоны Basic parameters  – основные параметры.

Min rate – значение, определяющее разрешение первого предпрохода, рассчитывающего GI.

Max rate – значение, определяющее финальное разрешение просчета GI или попросту разрешение последнего предпрохода.

Как мы уже знаем, алгоритм IM с помощью нескольких просчетов GI выбирает наиболее важные и детализированные зоны. Если Вы посмотрите на примеры выше, то в правом верхнем углу Вы найдете значение rate, определяющее разрешение данного предпрохода в просчете IM. Значение rate равное 0 означает, что просчет GI будет вестись в разрешении, равном разрешению финального рендера. Значение rate равное -1 означает, что расчет GI будет вестись во вдвое меньшем разрешении, чем разрешение финального изображения. Значение rate равное -2 означает, что расчет GI будет идти во вдвое меньшем разрешении, чем разрешение при -1, а значит вчетверо меньше финального изображения. По аналогии, значение rate, равное 1, будет означать, что расчет GI будет вестись во вдвое большем разрешении, чем разрешение финального изображения и т.д.

Абсолютно аналогичную концепцию субсэмплирования и суперсэмплирования использует алгоритм антиалиасинга V-Ray Adaptive subdivision, подробно рассмотренный в первом уроке об универсальных настройках V-Ray.

Алгоритм Irradiance Map это очень гибкий и технологичный инструмент. Несмотря на кажущуюся логичность просчета последнего прохода GI на финальном разрешении, то есть при Max rate равном 0, на практике нет совершенно никакой необходимости этого делать в виду небольшой разницы в качестве, и огромной разницы в вычислительных затратах.

Следующие примеры наглядно демонстрируют это:

На первом изображении, где IM окончательно просчитана на разрешении самого рендера – немного более четкая и плотная тень под сферой, чем на втором, а также более точная и резкая тень внизу куба, особенно это видно в его левом нижнем углу. Это происходит потому, что в первом случае IM имеет много мелких деталей, а во втором они интерполируются из IM меньшего разрешения. Однако, время просчета IM в первом случае (max rate: 0) более, чем в 5 раз больше, чем в случае, когда последний предпроход рассчитан в 8 раз меньшем разрешении (max rate: -3). Пять минут и три секунды против пятидесяти семи секунд. На большем разрешении и на более сложной сцене, разница во времени просчета IM будет еще значительнее. В то же время, на больших разрешениях, таких как 2500 - 3500 пикселей на сторону, в которых и должен вестись финальный рендеринг, эта разница будет менее заметна вследствие абсолютного увеличения разрешений просчета. Кроме того, эта мелкая размытость и бледность деталей за несколько минут элементарно устраняется в графическом 2d редакторе. На практике, значений Min rate -5 и Max rate -3 вполне достаточно для полноценного фотореалистичного рендеринга и именно эти значения следует устанавливать в стартовые универсальные настройки V-Ray.

Параметр HSph. subdivs (в более развернутом варианте: HemiSphere Subdivisions, т.е. субделения полусферы) – количество лучей GI, которые будут отражены от точки на поверхности объекта. Это параметр, определяющий количество диффузных лучей вторичного освещения принимаемых каждой точкой IM, как говорилось ранее – в виде полусферы. То есть это полный аналог параметра Subdivs алгоритма BF. В подавляющем большинстве случаев значения  HSph. Subdivs, равное 80 будет вполне достаточно и именно его следует установить для универсальных настроек V-Ray.

Interp. Samples – параметр, определяющий качество интерполяции в IM. Вспомните примеры с IM сэмплами, где сэмплы были обозначены светлыми точками, а пропущенные в результате адаптивности зоны были серые. Interp. samples определяет качество интерполяции не важных серых пропущенных зон из информации, имеющейся в важных светлых зонах. Чем выше значение параметра Interp. samples, тем выше интерполяция, вследствие чего GI более размытое, в то время, как при низких значениях Interp. samples GI карта менее "замыленная", однако и более шумная с большим количеством артефактов. Установленного по умолчанию значения в 20 семплов вполне достаточно и это значение не стоит менять.

Как мы уже знаем, IM с помощью предпроходов прощупывает сцену с целью выявления ее важных деталей. IM делает это на основании информации предыдущих предпроходов, руководствуясь тремя основными критичными в плане деталей свойствами. Это цвет, разница нормалей и взаимное расположение объектов. В IM эти параметры представлены параметрами Clr thresh, Nrm thresh и Dist thresh соответственно.

Clr thresh - определяет порог чувствительности алгоритма IM к цветам сцены. Чем выше этот порог, тем меньшие цветовые изменения на объектах сцены будут учтены, как важные зоны и тем легче и быстрее будет проходить расчет IM. Снижение порога чувствительности сделает алгоритм IM более чувствительным к цветовым изменениям в сцене и позволит создавать более детализированную IM, а значит – и более качественные изображения. Значение параметра Clr thresh равное 0.3 вполне остаточно для создания приемлемой IM и в универсальных настройках следует использовать именно его.

Nrm thresh - определяет порог чувствительности алгоритма IM к геометрии сцены, в частности к интенсивности изменения нормалей объектов в ней. Чем ниже этот порог, тем больше геометрических деталей на объектах сцены будут учтены как важные зоны, соответственно качественнее будет финальное изображение. Значение параметра Nrm thresh равное 0.1 вполне хватает для создания нормальной IM и в универсальных настройках V-ray следует использовать именно его.

Dist thresh - определяет порог чувствительности алгоритма IM к взаимному расположению поверхностей в сцене. Чем выше этот порог, тем дальше находящиеся друг от друга поверхности объектов будут учтены как важные зоны, соответственно и качественнее будет финальное изображение. Взглянув на показанный пример, можно с легкостью понять отличие параметра Dist thresh от параметра Nrm thresh. Если от Nrm thresh в этой сцене будет зависеть плотность IM в углах помещения, то Dist thresh будет определять детализацию IM в зоне близкого расположения сферы и куба. Следует учесть, что при уменьшении порога Dist thresh, будут учитываться меньшие дистанции между поверхностями объектов, тем самым уменьшая плотность семплов на IM, а значит и качество финального изображения. В отличие от Clr и Nrm thresh, где уменьшение порога наоборот улучшает его. Значение параметра Dist thresh равное 0.1 вполне достаточно для создания хорошей IM и в универсальных настройках V-ray следует использовать именно его.

Последний параметр, находящийся в зоне Basic parameters, это неактивный Interp. frames. Он отвечает за то, какое количество карт IM, просчитанных для разных кадров анимации в режиме Animation (prepass), V-Ray будет использовать для просчета текущего кадра в режиме Animation (rendering). Именно в последнем случае этот параметр будет активным и доступен к изменению. Однако это очень специфические режимы работы IM, которые будут описаны в уроке, посвященном рендерингу разных типов анимации в V-Ray. По умолчанию, в универсальных стартовых настройках V-Ray его не стоит изменять.

В зоне Options свитка V-Ray.: Irradiance map можно включить опции, отвечающие за визуализацию IM во фрейм буфере. Это позволит наглядно наблюдать за фазами просчета предпроходов IM, показывать прямой свет совместно с GI на визуализации предпроходов, а также позволит наблюдать за расположением семплов на IM в сцене. За эти возможности отвечают функции Show calc phase, Show direct light и Show samples соответственно. Это тестовые функции, не влияющие на просчет IM, и в универсальных стартовых настройках V-Ray их не стоит активировать.

Улучшение деталей Irradiance map

Следующая зона параметров IM это зона Detail enhancement.

Как мы уже знаем, основной изюминкой IM является вычисление важных деталей сцены с помощью предпроходов на низких разрешениях. Опция Detail enhancement позволяет создать гибрид между адаптивным, но создающим несколько размытую карту семплов алгоритмом IM и грубым, но прецизионным в деталях BF.

Когда функция Detail enhancement активирована, IM, так же как и раньше, с помощью предпроходов вычисляет детализацию сцены. Однако, на последнем калькуляционном проходе, когда конечная информация о детализации сцены получена, в игру вступает Detail enhancement. Суть работы Detail enhancement в том, что основываясь на информации о детализации сцены, сэмплы GI наиболее важных зон просчитываются алгоритмом Brute Force на полном разрешении финальной визуализации, без субсэмплирования. Все остальные зоны, как и в штатном режиме работы IM, вычисляются с помощью интерполяции.

Алгоритм работы Detail enhancement по вычислению, какие буквально сэмплы в важных зонах будут просчитаны, по принципу работы похож на алгоритм Ambient occlusion (AO), но при этом, в отличие от AO, алгоритм Detail enhancement берет в расчет направление света.

Стоит отметить, что при активированной функции Detail enhancement, алгоритм IM используется лишь для определения детализации сцены, а непосредственный просчет важных деталей ложится на BF составляющую Detail enhancement. Зная это, при активной опции Detail enhancement можно понижать все настройки алгоритма IM, кроме Interp. samples. Interp. samples можно даже увеличить.

Активируется алгоритм путем установки галочки в чекбокс On. Тогда становятся активными его параметры Scale, Radius и Subdivs mult.

Scale – определяет единицы измерения параметра Radius.

Radius – величина радиуса полусферы, определяющей зону, в которой BF будет просчитывать семплы GI относительно исходной точки. Расположение исходных точек применения BF, как уже было сказано выше, определяется на стадии вычисления детализации сцены с помощью предпроходов.

Subdivs mult. - по сути, полный аналог Subdivs параметра алгоритма BF, определяющего количество диффузных лучей. Указывается в процентном отношении от установленного в HSph. subdivs значения.

Чтобы лучше понять, что такое радиус полусферы, и о какой полусфере точки идет речь, необходимо плотнее познакомиться с концепцией AO. Пояснение данной концепции выходит за рамки данного урока, однако она будет подробно рассмотрена в отдельном уроке, посвященном AO и в частности областям применения параметрической карты VRayDirt. В любом случае, Detail enhancement – это специфическая опция, сильно снижающая адаптивность и существенно увеличивающая время просчета GI. Именно поэтому ее не следует активировать без особой необходимости и тем более в универсальных настройках V-Ray рендерера.

Дополнительные опции Irradiance Map

Далее в настройках IM расположена зона дополнительных опций Advanced Options.

Interpolation type – выпадающий список, позволяющий выбрать метод интерполяции сэмплов IM, то есть алгоритм, который заполняет пропущенные зоны на IM, получая недостающие сэмплы из уже просчитанных. Всего в этом списке четыре метода, это Weighted average (good/robust), Least squares fit(good/smooth), Delone triangulation(good/exact) и Least squares with Voronoi weights. Технически они отличаются разными математическими принципами для вычисления результата. Совершенно нет никакой необходимости углубляться в принципы их работы. Для конечного пользователя достаточно взглянуть на подсказки, указанные в круглых скобочках для каждого из них, и сразу же станут ясны особенности каждого из них. Оптимальный метод интерполяции – установленный по умолчанию Least squares fit. Именно его стоит использовать в стартовых настройках V-Ray.

Sample lookup – выпадающий список, позволяющий выбрать метод, который определяет какие именно из просчитанных семплов IM будут участвовать в интерполяции пропущенных областей в соседних зонах. Всего четыре метода выбора семплов, это Quad-balanced (good), Nearest (draft), Overlapping (very good/fast) и Density-based (best). Это – также алгоритмы, имеющие свои математические особенности в методах выбора нужных семплов, в которые не стоит вникать без особой необходимости. Аналогично Interpolation type методам, подсказки в круглых скобочках рядом с их названиями отлично поясняют их особенности. По умолчанию установлен самый лучший метод Density-based (best), именно его и нужно использовать в универсальных настройках V-Ray.

Calc. pass interpolation samples – значение, определяющее число вычисленных сэмплов, которыми будет руководствоваться алгоритм IM при интерполяции во время последнего калькуляционного прохода. Номинально установленного значения в 10 сэмплов вполне достаточно для получения качественного результата. Его нужно использовать в универсальных настройках V-Ray.

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

Irradiance map просчитывается, как и финальный рендер, во много потоков для полноценного использования потенциала современных вычислительных систем, которые зачастую многопоточны благодаря многопроцессорности и многоядерности. Изначально, при просчете IM многопоточной системой, каждая порция IM рассчитывается отдельным потоком, независимо друг от друга. Данные для текущего просчета берутся лишь из предыдущего предпрохода. Из-за этого получается, что каждая порция просчета IM, не имея информации об окружающих порциях выдает несогласованный с соседними результат. На просчитанной таким образом карте IM проявляется решетка границ этих порций.

Внимательно посмотрите на изображение. Можно заметить отчетливо видные линейные границы порций просчета IM каждым из потоков. Например, этот эффект очень заметен на сфере и на стене справа, на потолке над кубом.

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

Randomize samples – функция, позволяющая генерировать сэмплы IM в случайном порядке, делая IM более реалистичной. Номинально алгоритм IM выбирает семплы на объектах сцены с регулярной периодичностью, напоминающей сетку, даже если выше рассмотренная опция Multipass включена.  Это наглядно можно посмотреть на изображении ниже.

Чтобы устранить эту регулярность, явно выдающую компьютерное происхождение изображения, и мешающую фотореалистичности визуализаций, функцию Randomize samples в универсальных настройках V-Ray следует обязательно держать активированной.

Check sample visibility – функция, которая позволяет интерполировать сэмплы IM, лишь находящиеся в прямой видимости друг от друга. Очень часто, вследствие небольшой плотности IM, в при интерполяции недостающих сэмплов, алгоритм IM берет соседние семплы, которые попадают в зону выборки сэмплов для данной точки, даже несмотря на то, что они могут находиться вне зоны прямой видимости относительно друг друга в сцене. Например, у нас есть книжный шкаф с тонкой деревянной полочкой, плотно прилегающей к задней стенке шкафа. На полочке сверху стоит светильник и освещает ее верхнюю часть. Под полочку прямые лучи света светильника никаким образом не попадают. Тем не менее, внизу под полочкой на задней стенке запросто могут появиться светлые пятна, несмотря на то, что их там просто не может быть. Это происходит, потому что алгоритм IM при интерполяции недостающих сэмплов в зоне под полочкой, берет расположенные рядом сэмплы с ее верхней части без учета геометрии полочки. Чтобы этого не происходило, алгоритму IM при интерполяции необходимо указать, что нужно проверять, какие сэмплы находятся в зоне прямой взаимной видимости, а какие – нет. Разумеется, такая проверка потребует дополнительных вычислительных ресурсов.

Предлагаем Вам посмотреть пример из V-Ray Help, превосходно иллюстрирующий работу данной функции.

Это очень полезная функция, однако, в большинстве сцен, описанные выше артефакты отсутствуют, и нет совершенно никакой необходимости всегда осуществлять проверку видимости сэмплов, напрасно расходуя вычислительные ресурсы. В универсальных стартовых настройках V-Ray функцию Check sample visibility следует отключать.

В зонах Mode и On render end задается режим работы IM, нужный для рендеринга анимации. Указывается папка и имя на жестком диске, под которым будет сохранена просчитанная IM. Как уже говорилось ранее, анимации в V-Ray будет посвящен отдельный урок, в котором и будут подробно рассмотрены эти опции. В универсальных стартовых настройках V-Ray их следует оставить нетронутыми, как они есть по умолчанию.

Последнее, что стоит отметить, это то, что алгоритм Irradiance map может быть использован только лишь для просчета первого диффузного отскока, то есть лишь в качестве Primary bounces GI engine. Из работы алгоритма IM вполне ясно, что при расчете лавины лучей GI, полученной после первого отскока, методы предпрохода IM совершенно неуместны. В любом случае, при выборе Secondary diffuse bounces GI движка, в свитке V-Ray.: Indirect Illumination (GI), возможность выбора IM как движка Secondary bounces отсутствует, что полностью исключает его использование для этих отскоков.

В этом уроке мы основательно познакомились с важными аспектами настройки двух алгоритмов рендеринга GI, а именно Brute Force и Irradiance Map. В частности, мы подробнейшим образом разобрали все мелочи, аспекты и твики адаптивного рендер-движка Irradiance Map, а также наглядно смогли все увидеть на многочисленных примерах.

Друзья, искренне надеемся, что внимательно прочитав этот урок, Вы стали значительно ближе к пониманию сути работы Brute Force и Irradiance Map. Также надеемся, что Вас перестали пугать множество настроек IM и вводить в заблуждения их специфические названия. Понимание этой важнейшей информации, любому пользователю V-Ray позволит с легкостью настраивать и получать отличные карты GI для фотореалистичных 3d визуализаций.

В следующем уроке мы познакомимся с алгоритмам просчета GI отскоков Photon mapping и Light Cache. Детально рассмотрим принцип их работы и каждую функцию Light cache в частности, узнаем об оптимальных значениях его настроек.

Всем легких настроек и красивых 3d визуализаций!



12 Feb, 2011 voron81
12 Feb, 2011 # Re: Irradiance Map VRay урок
Spasibo! Ochen poznavatelno!

13 Feb, 2011 Алексей
13 Feb, 2011 # Re: Irradiance Map VRay урок
Спасибо за такой разбор! Это очень полезное дело!
Только хотел задать один вопрос! Вы не рассказали про сохранение IM. О том что можно сократить время ожидания если сохранить картуIM. и хотелось бы узнать про "миф" - если просчитать IM при малом разрешении, то можно ее подсунуть в большое? Если анализировать вами написаное, то это можно делать, если завысить значения рейта... а?

13 Feb, 2011 RenderStuff (Staff Author)
13 Feb, 2011 # Re: Irradiance Map VRay урок
Привет, Алексей.

Конечно, карту IM можно сохранить, после чего смело загружать и просчитывать финальный рендер на разрешении большем, чем то, на котором велся первоначальный просчет IM. Однако параметры rate, как подробно было описано выше, это, по сути, и есть разрешение просчета IM. Лишняя операция сохранения на жесткий диск просто ни к чему.

Если суть этого мифа это просчитать карту IM на одном разрешении, а потом увеличить разрешение рендеринга и использовать эту карту, то в этом изначально нет никакого смысла, ведь сразу можно просчитать IM в желаемом разрешении, верно указав значение rate.

Если с самого начала производить рендеринг изображения в финальном разрешении, а в Max rate поставить меньшее значение, то IM карта, конечно же, будет просчитана в меньшем разрешении. В итоге получится аналогичный желаемый результат без возни с выгрузкой и загрузкой IM карты, что проще и разумней 😉

13 Feb, 2011 Алексей
13 Feb, 2011 # Re: Irradiance Map VRay урок
Ну да, согласен... спасибо!
А можно складывать IM ? То есть считаешь IM для одной камеры потом IM для другой камеры... складываешь или "досохраняешь"... тем самым есть возможность еще сильнее улучшить детализацию, чтобы причем на минимальных рейтах? мне кажется это было бы быстрее🙂 хотя может и глупость...

13 Feb, 2011 Алексей
13 Feb, 2011 # Re: Irradiance Map VRay урок
Ждем продолжения... очень🙂

13 Feb, 2011 RenderStuff (Staff Author)
13 Feb, 2011 # Re: Irradiance Map VRay урок
Складывать сохраненные на диск карты, просчитанные из разных камер, в одну большую карту IM можно, например, с помощью специальной утилиты. Можно и сразу это автоматически делать средствами Vray. Можно даже отрендерить одну камеру, а потом при рендеринге последующих, просчитывать только те зоны сцены, для которых IM не просчитана, тем самым экономя вычислительный ресурс в уже просчитанных 🙂

Но, как уже говорилось в уроке, об этом позже в отдельной статье, посвященной рендерингу анимации разных типов в V-Ray.

2 Mar, 2011 Владимир
2 Mar, 2011 # Re: Irradiance Map VRay урок
Привет, спасибо за такой разбор настроек, давно не хватало понимания основ!

11 Apr, 2011 Илья
11 Apr, 2011 # Re: Irradiance Map VRay урок
Отличная статься!Очень жду следующего урока про анимацию!!!

5 Aug, 2011 ASRockus
5 Aug, 2011 # Re: Irradiance Map VRay урок
Ув. RenderStuff,решил поэкспериментировать с настройками рекомендуемыми Вами.Создал сцену как у Вас на скрине,свет VrayLight в окне.А теперь проблемы: без GI сцена освещена почему-то не так как Ваша,сзади сферы на стене куда падает её тень и тени от куба грязно-чёрное пятно,и сама сфера наполовину такого же цвета.А с включённым GI на стене тени очень шумные. Хотелось бы услышать хотя бы предположения.











С Уважением!

13 Feb, 2011 RenderStuff (Staff Author)
5 Aug, 2011 # Re: Irradiance Map VRay урок
Привет!

Ты зря смутился 🙂

У тебя все вполне нормально получается.

Просто у тебя значительно большего размера VRayLight Plane, а так же сам куб почти одной высоты со сферой. За счет этого часть сферы освещается прямым светом попадающим на нее напрямую от VRayLight.

Уменьши размер лайта или увеличь высоту куба и ты получишь тот же эффект с «невидимой» сферой 😁

Кроме того, если ты внимательно посмотришь на скриншоты статьи, - ты увидишь, что чемфер-бокс там не только выше твоего, но и значительно длиннее в сторону камеры 😁

При включении Global illumination, как собственно и без него, попросту продолжает шуметь VRayLight. Всего-навсего потому, что установленные по умолчанию 8 Subdivs, определяющие качество теней отбрасываемых этим источником света, это очень низкое значение.

Поднимай Subdivs до 30 – 40 и шум в тенях исчезнет 😉

5 Aug, 2011 ASRockus
5 Aug, 2011 # Re: Irradiance Map VRay урок
VRayLight Plane размером с проём окна.И у Вас же на скрине к уроку такой безобразной чёрной грязи нет.Ваша Сфера находится в полной мягкой темноте(если так можно выразиться), а у меня грязная чёрная полоса.Как Вы посветовали у VRayLight поднял сабдивы до30,куб увеличил в размерах, с включённым GI шум всётаки полностью не пропал вот посмотрите с включённым GI и без него:





13 Feb, 2011 RenderStuff (Staff Author)
5 Aug, 2011 # Re: Irradiance Map VRay урок
Конечно полностью не пропал. Но все в твоих руках. Крути до 60и или выше, а так же накручивай LC и IM. Так ты сможешь добиться полного визуального отсутствия шума.

По поводу темноты, то чемфербокс на то и чемфер, чтобы у него были скошенные углы 🙂

Если ты посмотришь как твой чемфербокс прилегает к стене, ты увидишь откуда пробивается свет.

Чтобы тебе не заморачиваться, уменьшая филет радиус или вдвигая чемфербокс в стену, просто замени его на обычный Box и плотно придвинь этот бокс к стене, чтобы не было щелей, можешь даже немного вдвинуть внутрь стены его, чтобы наверняка.

Далеко не только одни настройки рендерера важны при визуализации. Геометрия сцены так же играет немаловажную роль в достижении требуемого результата 😉

5 Aug, 2011 ASRockus
5 Aug, 2011 # Re: Irradiance Map VRay урок
С шумами на рендере с GI понятно, можно и покрутить всё что есть (LC, IM и т.д), но вот насколько это будет рациональным, ведь скорее всего и время рендера возрастёт ух как! и всё это в простой сцене, а что будет с накинутыми материалами , представить страшно. Чамфербокс заменил на куб, придвинул к стене так что свет не пробьётся 😉 однако без изменений. Очень хочеться понять причину возникновения этой чёрной псевдо-тени и добиться сходства с Вашим скрином.Простите за мою назойливость(возраст) 😉

13 Feb, 2011 RenderStuff (Staff Author)
5 Aug, 2011 # Re: Irradiance Map VRay урок
Вообще то не совсем понятно что именно тебя не устраивает?

Последний вариант отлично выглядит как с GI так и без него.

Без GI выглядеть именно так и должно.

Внимательно прочти второй урок серии про оптимальные настройки V-Ray:

http://ru.renderstuff.com/indirect-illumination-vray-urok-176/

В частности главу «Глобальное освещение в компьютерной графике».

Там совершенно отчетливо видно эту же "тень".

Твои рендеры выглядят СОВЕРШЕННО аналогично 🙂

По поводу рациональности, то следует понимать, что ситуация белая сцена с белыми геометрическими фигурами – совершенно синтетическая.

В реальной 3d визуализации сцена будет с материалами и текстурами, которые напрочь скроют все артефакты. Помести в диффуз слот своего белого материала любую текстуру, например, текстуру дерева и ты увидишь, что шум практически исчез.

Он конечно останется там же, просто на фоне текстуры не будет заметен.

Так же, для чистоты тестов, не забудь про форму бокса. У нас он глубже и выше, чем у тебя 😉


5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
Вот теперь кое-что стало проясняться, а именно: после того как я решил сохранить рендер-картинку в графическом формате и показать Вам что именно меня не устраивает, я к своему удивлению увидел, что картинка стала выглядеть лучше. Исчезла эта грязно-чёрная полоса (т.е. она есть,но не такая как раньше) и пятна кляксовые которые видны на скрине сделанном во вьюпорте, всё стало намного мягче! Выходит, то что мы видим сразу после рендера(не сохраняя в формат графический)это ещё не полноценная картинка? Кстати она бывает темнее чем в Максе(почему?). Если это так ,то подтвердите или опровергните мои догадки.

GI включён и картинка сохранена в JPEG


а это без GI

13 Feb, 2011 RenderStuff (Staff Author)
6 Aug, 2011 # Re: Irradiance Map VRay урок
Тебе сюда:

http://ru.renderstuff.com/gamma-2-v-3dsmax-i-vray-urok-44/

Гамма 2.2 тебе все подробно расскажет 😉

5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
А по поводу картинки в Максе до сохранения и после, что скажете? Почему всё таки некоторые артефакты просто пропадают после того как картинку сохраняем в 2d формат?

5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
Спасибо ув.RenderStuff за участие в моих так сказать экспериментах. Многое уяснил и многое прояснилось.Если возникнут ещё вопросы, можно обращаться? Ещё раз спасибо.

13 Feb, 2011 RenderStuff (Staff Author)
6 Aug, 2011 # Re: Irradiance Map VRay урок
Конечно!

Обязательно обращайся, мы с радостью тебе поможем 😉

Специально для этих целей у нас есть мини-форум по вопросам 3d графики:

http://ru.renderstuff.com/cg-obsuzhdenija

Смело заходи туда и задавай интересующий тебя вопрос. Если нет подходящей темы, то открывай новую.


По поводу картинки в Максе до сохранения и после – читай статью про гамма 2.2 по ссылке выше. Там есть ответ на твой вопрос 🙂

5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
По поводу картинки в Максе, Вы меня не совсем правильно поняли, я имел ввиду: почему некоторые артефакты пропадают после сохранения в графический формат? На скринах выше видно, что имею ввиду.Там где Вы красным нарисовали, эта картинка-скрин рендера Макса(именно скрин), а ниже картинки тот же рендер НО сохранённый уже в формате JPG из окна Макса обычным способом(сохранить как). Незнаю, понятно ли высказался... В статье гамма, про артефакты вроде нет ничего,в любом случае перечитаю ещё раз, но как бы там нибыло, огромное ещё раз Спасибо!

13 Feb, 2011 RenderStuff (Staff Author)
6 Aug, 2011 # Re: Irradiance Map VRay урок
Да, действительно, мы не совсем верно тебя поняли, но переходя к делу, картинка во фрейм буфере, обычно, интерполирована, то есть она показывается не в масштабе пиксель-в-пиксель, а слегка уменьшенной.

Иногда при такой интерполяции (из за уменьшения), могут появляться кажущиеся артефакты, которых на самом деле нет 😉

5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
Интересно, а как же тогда контролировать этот "процесс"?, ведь реально как будет выглядеть картинка, увидеть можно будет только после сохранения.

13 Feb, 2011 RenderStuff (Staff Author)
6 Aug, 2011 # Re: Irradiance Map VRay урок
Жми Ctrl и кликай мышкой в окне фрейм буфера. Либо просто крути колесико на ней, так ты сможешь изменить масштаб отображения рендера во фрейм буфере, на тот, который тебя устроит, а так же рассмотреть вплотную все интересующие тебя детали.

Так же, РАЗУМЕЕТСЯ, необходимо всегда использовать V-Ray frame buffer, а не некорректно работающий с V-Ray - стандартный максовский 🙂

5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
По поводу V-Ray frame buffer, если в нём нажать на иконку "клон", то откроется Максовский,а в нём картинка светлее(понятно, что гамма),а как тогда сделать клон, чтобы потом после дополнительных каких-то поправок или настроек можно было сравнивать результат?

13 Feb, 2011 RenderStuff (Staff Author)
6 Aug, 2011 # Re: Irradiance Map VRay урок
Сохраняй рендер на диск и сравнивай результаты, листая то один то другой файл имейдж вьювером 🙂

В V-Ray 2.0, например, вообще есть новая функция VFB History, которая позволяет сравнивать предыдущий и новый рендеры.


5 Aug, 2011 ASRockus
6 Aug, 2011 # Re: Irradiance Map VRay урок
В V-Ray Adv 1.5 RC5 тоже есть что-то подобное Show Last VFB кнопка в закладке V-Ray Frame Buffer.,но позволяет просмотреть последний сделанный рендер(вроде так).

13 Feb, 2011 RenderStuff (Staff Author)
6 Aug, 2011 # Re: Irradiance Map VRay урок
Нет, на самом деле, Show Last VFB, всего лишь позволяет вызвать случайно закрытое окно фрейм буфера с последним рендером в нем, в то время, как VFB History (история фрем буфера), - позволяет сравнивать два разных рендера.

В любом случае, эта тема уже сильно вышла за рамки обсуждения Irradiance Map и пошла в сторону фрейм буфера 🙂

По этому, если есть желание пообщаться на любую другую CG тему, отличную от непосредственно темы данного обсуждения (IM), пожалуйста, открывай новое обсуждение и мы там обязательно продолжим беседу 😉

30 Aug, 2011 Fco3d
30 Aug, 2011 # Re: Irradiance Map VRay урок
Отлично объяснение, которое я искал что-то вроде этого долгое время, поздравляю очень полезно.


13 Feb, 2011 RenderStuff (Staff Author)
15 Sep, 2011 # Re: Irradiance Map VRay урок
Спасибо за Ваш интерес! Вы можете следить за следующие обучающие программы, они описывают все аспекты оптимальной настройки V-Ray.


19 Nov, 2011 oumhani
19 Nov, 2011 # Re: Irradiance Map VRay урок
большой учебник на не так легко понять концепцию, спасибо


21 Feb, 2012 Peps
21 Feb, 2012 # Re: Irradiance Map VRay урок
Привет! Появилась проблема. У меня есть сцена с вашими настройками рендера, я поменял в Irridiance map min rate -6, max rate -1. Итого количество препассов 6. рендер 1500Х1000 - 4-5 часов, качество устраивало. Я сделал другую сцену, и пробовал залить ее в первую через мердж (предварительно вытер ее), также пробовал загружать настройки рендера первой сцены через load presets чтоб сделать рендер для второй, но тут облом - количество препасов стало 7 и время рендера уходить в бесконечность. В чем причина? Хелп!

21 Feb, 2012 Anton (Staff Author)
21 Feb, 2012 # Re: Irradiance Map VRay урок
Привет, причина в материале использующим для интерполяции Glossy эффектов Irradiance Map, то есть в одном из материалов активирована функция Use interpolation. Кроме того, если в одном из материалов сцены используется карта Raytrace, это так же может быть причиной ухода рендера V-Ray в бесконечность.



21 Feb, 2012 Peps
21 Feb, 2012 # Re: Irradiance Map VRay урок
Огромное спасибо! Прочитал все о проблемах рендера Vray, и понял что мне на будущее еще нужна хорошая библиотека с материалами именно для Vray. Хочется готовых, делать самостоятельно не научился и учитывая мою специфику работы это не обязательно. Порекомендуйте такие библиотеки пожалуйста.

21 Feb, 2012 Anton (Staff Author)
21 Feb, 2012 # Re: Irradiance Map VRay урок
21 Feb, 2012 Peps
21 Feb, 2012 # Re: Irradiance Map VRay урок
Низкий поклон Вам! 👌

22 Feb, 2012 Ant
22 Feb, 2012 # Re: Irradiance Map VRay урок
Большие учебные пособия, но вы были очень быстры, чтобы отказаться от грубой силы в качестве опции GI ,,, При использовании в правильных руках, и с достаточным опытом и пониманием Vray визуализируем настройки, Brute Force обеспечивает превосходные вычисления GI, приводящие к высоким качеством и в то время как вы правильно, что это может занять много времени, я чувствую, что это может поставить новичков прочь и может помешать им когда-либо достижения конечных результатов Vray в. Помимо этого комментария, ваши учебники были очень информативны и сообщество CG является лучшим местом для получения этой информации😉


15 Mar, 2012 cybreous
15 Mar, 2012 # Re: Irradiance Map VRay урок
Im failuring каждый раз, когда я делаю это, экономя карты и делать учебник шаг за шагом И. М., все это прекрасно работает с precalc, но когда я делаю окончательное сделать его заклинивание и делает первый кадр снова и снова, он никогда не движется вперед, пожалуйста, может кто-нибудь помочь мне получить эту работу правильно, не знаю, что делаю неправильно IAM


22 Mar, 2012 Delgado
22 Mar, 2012 # Re: Irradiance Map VRay урок
Большие учебники, я новичок в V-Ray, и они являются на сегодняшний день лучшие учебники я видел относительно начального V-Ray множество окон спасибо


20 Nov, 2012 MARCO
20 Nov, 2012 # Re: Irradiance Map VRay урок
Почему может быть яркий свет пятна на визуализации и как от них избавиться? то, что об этой теме? : | нет информации не было дано на эту тему ...


21 Nov, 2012 Maks (Staff Author)
21 Nov, 2012 # Re: Irradiance Map VRay урок
МАРКО, пожалуйста, приложите ссылку на изображение с этих пятен, так что мы можем получить более полное представление о причинах их появления на вашем рендеринга.


25 Jan, 2013 Ioan Alex
25 Jan, 2013 # Re: Irradiance Map VRay урок
Thx для объяснения все подробные параметры большой учебник Thx !!


28 Dec, 2013 phadron
28 Dec, 2013 # Re: Irradiance Map VRay урок
Привет, это супер учебник! Спасибо тебе за это. У меня есть вопрос. 🙄 что это правильный баланс между изображением полной точек (образцов) и один с меньшим количеством образцов? когда я должен остановиться с параметрами изменения обмена мгновенными сообщениями? есть правило для этого? это хорошая карта IM? ->


21 Nov, 2012 Maks (Staff Author)
29 Dec, 2013 # Re: Irradiance Map VRay урок
Правильные точки равновесия в теории, когда есть много точек на мелких деталях, чтобы обеспечить более высокое качество, а также несколько точек на плоских регулярных плоскостей выпускающих один, чтобы снизить время рендеринга. На практике, однако, мы не советуем смотреть на карте IM, если у вас есть какие-то таинственные артефакты; IM карта может помочь решить такие проблемы. Вы предпочитаете смотреть на результаты рендеринга и настроить параметры, основанные на окончательном выводе цвета. Единственным критерием хорошего рендеринга, когда рендер выглядит хорошо, не тогда, когда это теоретически правильно или сбалансированным.


14 Jun, 2014 Olivié C
14 Jun, 2014 # Re: Irradiance Map VRay урок
Спасибо за этот большой учебник. 2 примечания:> ваше объяснение ". Interp Образцы" не в соответствии с онлайновом руководстве V-Ray: это не про "качество" интерполяции, а скорее о "количестве" (количество образцов IM интерполяцией). Вы говорите: "Значение по умолчанию 20 образцов достаточно, и это значение не должно быть изменено." а вы на самом деле нужно увеличить это при использовании высокого качества IM (скажем Максимальная скорость = 0), чтобы избежать артефактов (так как вам нужно, чтобы интерполировать больше образцов для сглаживания высоко отобранной GI). Увеличение "интерполяцией. Образцы" на самом деле может оказаться необходимым в таких случаях для внутренней визуализации. > "Минимальная ставка -5 и -3 Максимальная скорость достаточна для хорошей фотореалистичной визуализации" хорошо это звучит немного оптимистично и хороший совет для предварительного просмотра, но это все-таки хорошо, чтобы вынести окончательное изображение с Максимальная скорость -1, или 0, если полезно. Еще раз спасибо за урок!


Комментировать

Имя:  


Анти-спам (отметьте пункты, с которыми Вы согласны, и уберите отметку, с которыми - нет)
Да, я спам-бот.
Да, я человек.
Правила Пользования Сайтом

RenderStuff © 2008