image

Новости
Уроки и статьи
Загрузка
Обо мне
Ссылки

Switch to English
В данной статье собраны советы по оптимизации тяжёлых сцен для визуализации в mental ray. Некоторые советы применимы ко всем случаям, другие же зависят от ситуации. Начнем в порядке убывания важности и действенности методов.

x64

Для работы нужно использовать только x64 битную систему и софт. Нет никаких причин чтобы использовать x86(x32). Время x86 систем уже давно прошло. К слову, 32 битный софт прекрасно работает на любой 64 битной системе. И работает, как правило, лучше.

Дистанция FG, Occlusion и тп эффектов

Если у вас экстерьер, то обязательно нужно ограничить дистанцию Final Gather'а, Occlusion и тому подобныx эффектов. Это нужно сделать даже если сцена у вас не очень тяжелая. Это может серьезно убыстрить рендер FG и существенно сократить расход памяти. Причем на картинке это почти не скажется.

Типичный пример. Есть сцена с лесом. Для того чтобы осветить какую то точку FG будет испускать лучи во все стороны по полусфере, подгружая всю попавшуюся геометрию. В лесу это приведет к тому, что будут подгружаться все деревья вокруг. Но, зачем нам свет пришедший из другого конца леса, когда он будет практически не заметен. Поэтому имеет смысл принимать свет только от близ лежащих объектов вокруг освещаемой точки.

Для Final Gather это параметры 'FG Falloff Stop' и 'FG Falloff Start'. Главным является 'FG Falloff Stop', именно он отсекает ненужную геометрию. А 'FG Falloff Start' делает отсечение более плавным и менее заметным. Как правило дистанция 'FG Falloff Stop' вычисляте на глаз. Берем типичный наиболее крупный объект в сцене, например здание или дерево. И ставим в 'FG Falloff Stop' зачение 1-3 высоты от него. 'FG Falloff Start' ставится чуть меньше 'FG Falloff Stop'.
Например, если в сцене самый большой объект это дерево высотою 5 единиц, то 'FG Falloff Start' и 'FG Falloff Stop' нужно поставить в значения ~9 и ~12 соответственно.

Имейте ввиду, что когда геометрия, отсекается остается небо (environment), которое будет светить на ваши объекты. Поэтому не стоит сильно уменьшать дистанцию отсечения, в противном случае можно получить излишнюю освещенность от неба со всех сторон.

Для интерьеров falloff использовать не стоит, потому как свет должен доходить от одной стены до другой.

BSP2

Если сцена тяжёлая и требует большое количество памяти, то лучше использовать режим акселерации BSP2. BSP2 это автоматический режим не имеющий настроек. Эффективен для тяжелых сцен, но для легких сцен влезающих в память Regular BSP обычно быстрее.

Instance и Proxy

Если в сцене много повторяющихся объектов нужно использовать инстансы где это возможно. Именно инстансы, а не Proxy(Assembly). Инстансы загружаются в память лишь один раз, другие копии "бесплатные". Proxy тоже очень полезны, они загружаются/выгружаются по мере необходимости. Это и экономит память, но может быть не очень быстро, особенно в случае с FG и массивном рейтресинге. Поэтому Proxy лучше использовать для уникальных объектов или когда копий объекта не так много. Или когда уникальных объектов много на столько, что они все разом не поместятся в памяти. В mental ray 3.8.x и выше Proxy уже работают почти как инстансы. Тоесть, если с помощью Proxy подгружается много копий одного объекта, то память расходуется как на один.

Scanline | Raytrace

Для первичных лучей лучше включать режим 'Raytrace' (scanline=off) за место 'Scanline'. Часто это может немного ускорить рендер, а так же сократить расход памяти. В некоторых случаях, особенно с тяжелыми сценами, экономия памяти может быть очень существенной.

NURBs, Displace и Subdive

Если в сцене есть NURBs, Displace или Subdive, то не надо надеяться что настройки их тесселяции по умолчанию всегда самые лучшие. В большинстве случаев их лучше настроить вручную с помощью Aprroximation ноды на объекте. Особенно это касается случаев когда таких объектов много и они не крупно видны в кадре.

fg override settings

fg override settings


MAP textures

Если в сцене есть большие текстуры и их не так мало, то стоит самые большие из них сконвертировать в формат *.map. Это нужно сделать чтобы они не загружались в память целиком, а только кусочками по мере надобности. Если разрешение текстуры 2048 пикселей и более, то можно подумать о конвертации в *.map. Если размер меньше, то скорее всего этого делать не стоит. Так как памяти в этом случае сэкономится мало, а скорость может немного упасть. В теории загружать текстуру частями немного медленнее, особенно по сети. Поэтому, использовать *.map просто так, без особой нужны, не стоит.

Конвертацию осуществляет утилита imf_copy.exe. Команда для конвертации выглядит вот так:

imf_copy -p -r texture.tif texture.map

Причем флаги "-p -r" обязательны, иначе текстура сконвертируется, но все равно будет загружаться в память целиком.

Деревья

Если вы рендерите много деревьев, то тут дополнительно несколько советов:
По возможности лучше не использовать прозрачность на листьях. Это может замедлить рендер и увеличить расход памяти. Часто, если форма листа видна на рендере, то лучше сделать лист геометрией (без фанатизма). А для дальних планов подойдут квадратные листья.
Не надо просто так включать на листьях отражения и тп. Это все сильно скажется на скорости и расходе памяти.
Иногда при анимации на кроне деревьев можно поставить более низкие настройки для FG. Обычно, там не видно пятен или кипения.

fg override settings

Ну и конечно, не надо использовать сильно детализированные деревья если это не видно на рендере, особенно на дальнем плане. Реализма от этого не добавится, а вот проблем...



Свои вопросы, предложения и пожелания прошу на puppet@rambler.ru
Удачи!
Ваш Puppet.