Render.ru

Проблема с Mental Ray.

MONARX3D

Знаток
Рейтинг
26
#1
Всем привет! Вот столкнулся с непонятной проблемой. Mental Ray при рендере сцены ругаеться матом :). В сцене присутствуют 6 текстур разрешением 2048x2048, 6 текстур 1024x1024, 6 текстур 512x512. 246398 полигонов.ОЗУ у меня 2Гб. При рендере используются FG + IBL с определенным цветом окружения. Изначально, рендеря модель, наложив на него простой серый мат. lambert2 -все нормально. Но потом я посоздовал для основных частей модели PSD-setы( 2048x2048-512x512) около 6.... Тут и начались проблемы. Некоторые PSD-setы заменил другим материалами с соответственными текстурами в каналах color, bump, diffuse. Но проблема так и осталась. Если назначить опять lambert2, проблема исчезает...
Есть несколько предположений:
1.Нехватает ОЗУ, использовано слишком много текстур высокого разрешения.
2.MR страшно не любит PSD-set'ы.

Вот что пишет MR в окне Output Window:
mental ray for Maya 8.5
mental ray: version 3.5.6.7, 22 Nov 2006, revision 19663
mental ray: mental ray for Maya - startup done
mental ray: got 8 satellite CPUs.
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
mental ray: out of memory
MEM 0.7 fatal 031008: can't allocate 22436580 bytes.
MEM 0.7 fatal 031008: can't allocate 22436580 bytes.
mental ray: out of memory
MEM 0.5 fatal 031008: can't allocate 22436580 bytes.
Помогите пожалуйста, кто знает, что это за....
 

DemX86

Активный участник
Рейтинг
18
#3
Варианты решения: запускаем Render Diagnostics и смотрим на что ругается MR. Текстуры можно сконвертить в .map формат (команда imf_copy в консоли винды). А еще можно снять галку Auto Memory Limit в настройках batch render и поставить кол-во озу вручную поменьше -- рендер будет дольше, но вероятность вылета из-за недостатка памяти снизится.
 

MONARX3D

Знаток
Рейтинг
26
#5
Непомогло ограничение в batch render'e, но проблему я решил , поснимал все сеты с модельки, рендерит на ура :) Прийдется их юзать только для того чтоб в Photoshop'e создать по развертке текстуру :)А потом снимать сет, и накладывать мат. с соответсвенными каналами. Так как какраз этот сет и жрет памяти очень много, в n раз больше чем отдельные текстуры в каналах)От того и MEM 0.7 fatal 031008: can't allocate 22436580 bytes. :)
 

MONARX3D

Знаток
Рейтинг
26
#6
Эх, блин...Сцена увеличилась в размерах, проблем также стало больше :(. Опять таже ошибка. В сцене уже используется вообщем около 80 текстур, большинство текстур 2к на 2к. В Render Diagnostics нашло около 160 Warning. Сократил их до 47, также переконвертил все текстуры в map формат. Остались только такие Warnings:
...............
- file5 has a resolution of 2048x2048 which may be unefficient.
- file8 has a resolution of 2048x2048 which may be unefficient.
- file25 has a resolution of 2048x2048 which may be unefficient.
- file26 has a resolution of 2048x2048 which may be unefficient.
- file39 has a resolution of 2048x2048 which may be unefficient.
- file40 has a resolution of 2048x2048 which may be unefficient.
- file41 has a resolution of 2048x2048 which may be unefficient.
.................
Много также текстур используются не на полную.Тоесть в текстуре остается еще куча места, не считая развертку, которое не используется. Я так делал, чтоб сделать правильные пропорции текстур, другого способа незнаю, т.к. неопытный еще в этом деле...
Подскажите пожалуйста, что еще сделать,чтоб решить проблему, ато работа почти завершена, осталось подстроить немного свет и визуализацию, работы на несколько часов, а эта ошибка недает покоя...:(((((((
 

MONARX3D

Знаток
Рейтинг
26
#8
Цитирую MONARX3D #5:Непомогло ограничение в batch render'e
А какие числа вы ставили? Попробуйте, например, 500Мб или даже меньше.
Последнее время не ставил(автолимит был), но когда ставил - 700 мб. И вроде же это пакетная визуализация, или это отвечает и за простой рендеринг? Попробую еще раз....
 

MONARX3D

Знаток
Рейтинг
26
#9
Поставил 300 Мб, непомогло... :( Есть вариант рендерить по маленьким кусочкам картинку(Render Region), но наверняка это не совсем корректный вариант, скорее аварийный :(.
 

MONARX3D

Знаток
Рейтинг
26
#10
Цитирую MONARX3D #5:Непомогло ограничение в batch render'e
А какие числа вы ставили? Попробуйте, например, 500Мб или даже меньше.
Последнее время не ставил(автолимит был), но когда ставил - 700 мб. И вроде же это пакетная визуализация, или это отвечает и за простой рендеринг? Попробую еще раз....
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#11
Попробуй отрендерить из командной строки, это сэкономит 500 мб - может их тебе и не хватало. Насчет кусочек - почему не корректный вариант, если такая возможность выхода из траблы есть?
 

MONARX3D

Знаток
Рейтинг
26
#12
Попробуй отрендерить из командной строки, это сэкономит 500 мб - может их тебе и не хватало. Насчет кусочек - почему не корректный вариант, если такая возможность выхода из траблы есть?
Незнаю уж...какой памяти ему может нехватать, 3.25 Гб ОЗУ. Это явно не оперативная память, хотя очень похоже. Насчет кусочков, у меня есть предположение( верное или нет - незнаю), что как-то это можно решить, делая рендер по слоям, в чем я еще толком не разобрался, т.к. нет времени. Есть конретная цель в данный момент - доделать работу. И хотелось бы показать ее тут, но уже доделанную :)

Дело в том, что сначало у меня были все текстуры как бы PSD -сетами(писал в начале). Но памяти ест вроде как очень много(3.25 Гб? Хм...)эти сеты. Потом я поразрывал сеты, сделал текстуры JPG. Потом переконвертил их в MAP. MAP видимо ест меньше памяти, но ненамного.

RGBam, к Вам вопрос, как к опытному пользователю, нормально ли в текстурах - если в текстуре часть покрывает развертку, а другая часть как-бы используется в холостую?
В Warning'е пишет, что: Использован размер 2048 на 2048, который может быть неэффективен.
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#13
Ну то, что не вся текстура используется в развертке - это нормальным назвать сложно. Попробуй срезать излишек/уменьшить или как то наложить подругому. Вообще было бы неплохо скриншот посмотреть, а то я могу чего-то не до конца понять.

Рендер по слоям тоже выход, так как сцену на несколько более простых разбиваешь. Можно еще углубиться и на разные пассы разбить =)

ЗЫ "RGBam, к Вам вопрос, как к опытному пользователю" - приятно, но я еще не настолько старый, чтобы со мной на Вы =)
 

Fabis

Активный участник
Рейтинг
16
#14
MONARX3D, вы странно как-то думаете насчет рендера. Во-первых, читайте HELP:
In general, when rendering with file textures, take into consideration how much space the texture takes up in screen space. Larger textures (in one or both dimensions) use a lot of memory and take longer to render because the hardware renderer must spend more time reducing their size. Try to keep textures as small as possible when rendering. This substantially decreases rendering time and memory usage and may result in better quality (fewer aliasing problems and texture crawling).
Это объясняет почему он ругается на неэффективность использования 2048х2048 текстур
Maya is more efficient if it scales any non-square texture into a square texture, using a square image to begin with is recommended. If the object you are texturing is not square, for example, a lamp pole, place your texture in a black square.
Это говорит, что как раз-таки лучше использовать текстуры с равными сторонами. Но необходимо оптимально расположить внутри этого квадрата развертку.
Во-вторых, в том же хелпе написано, что для текстур 2k и выше, лучший формат - EXR, MAP действительно экономит оперативку, но для сетевого рендеринга это головная боль.
В-третьих, есть в настройках рендеринга Acceleration method: BSP2 - более эффективное применение ОЗУ при больших сценах, но стоит попробовать и Primary rendering не Scanline а Raytracing, во избежание Flushing memory.
В-четвертых, Майа и mental ray - замечательный софт и предлагает кучу методов для рендеринга и ни один из них не считается аварийным. Можно рендерить по пассам, по слоям, по кускам, через Майю и через командную строку.
Лично при моей проблеме я использовал рендеринг через командную строку с помощью .bat по кускам. По пассам и по слоям не хотел, так как нежелательны были проблемы с AA при рендеринге с линейным workflow и без tonemapping'a при просчете рендера
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#15
Fabis, объясни мне тупому, что за линейный workflow. Так же "без tonemapping'a" плз )
 

Fabis

Активный участник
Рейтинг
16
#16
Linear workflow это настройка гаммы рабочего процесса. Программы, почти все работают по линейному алгоритму, но тем не менее, на заботятся о том, чтобы человек вводил и видел линейные данные. Только фотошоп из популярных программ умеет нормально обращаться с изображениями и то, только при 32-битном режиме. Но я больше люблю Nuke, он поддерживает работу с 32-битными изображениями в полной мере, лучше чем фотошоп. Поэтому все входные данные (текстуры, color picker) переводятся в гамме 2.2>1 затем при настройке рендеринга принимается решение сделать выходную гамму сразу 2.2 или оставить HDRI с гаммой 1 и перевести в гамму в конце рабочего потока, например, в том же самом, фотошопе. В любом случае надо использовать tonemapping, то есть корректировать гамму и экспозицию, к примеру с помощью одного из mia_exposure. В первом случае просто задается гамма 2.2, ну и с knee и compression для обрезания диапазона для борьбы с пересветами, во втором случае - гамма 1 и диапазон также урезается но намного меньше (knee примерно 2-3, хотя это по ситуации и compression 2-3). AA вычисляет четкость границ после определения гаммы и экспозиции. Представьте как он будет вычислять переход пикселей на границе окна с солнечным светом и стеной в HDRI картинке. Если в деталях то так, если взять в LDR картинке диапазон яркости от 0 до 1, то яркость пискеля на стене, к примеру, 0.2, а на окне 0.9-1, тогда как в HDR на стене пиксель может быть равен -0.5, а на окне 2-3, вычислить рендеру как сгладить переход между такими пикселями порой сложно. Результат - зубчатые границы. Поэтому даже при рендеринге HDR надо применять контроль яркостного диапазона, чтобы сузить этот диапазон, но ненамного, чтобы оставался простор для творчества, особенно стоит проявить внимание, если рендеринг идет по слоям или пассам, когда слои соберутся в фотошопе то ореолы будут заметны. Спрашивается, для чего вся это линейная возня? Для того, чтобы отрендерив картинку и переводя в фотошопе из HDR в LDR мы сами решали какую часть из этого широкого диапазона оставить, а какую отсечь, плюс ко всему даже если мы в сцене без текстур применим mia линзу с гаммой 2.2, то это уже будет линейный workflow потому как Quadratic Decay будет именно квадратичным и наложение двух ИС с интенсивностью 0.25 (без decay, для точности измерений) друг на друга даст яркость на картинке именно 0.5, а не 0.6-0.7 В общем, Master Zap написал пару полезных статей на этот счет и на Siggraph'e 2008 проводить лекции именно об этом будет.
 

DemX86

Активный участник
Рейтинг
18
#17
И вроде же это пакетная визуализация, или это отвечает и за простой рендеринг? Попробую еще раз....
Если вы рендерите отдельный стилл, то лимит памяти необходимо поставить в настройках Render -> Render Current Frame. Ну а для пакетной визуализации соответственно в настройках Batch Render.
 

MONARX3D

Знаток
Рейтинг
26
#18
Лично при моей проблеме я использовал рендеринг через командную строку с помощью .bat по кускам.
Fabis, скажите пожалуйста, где я могу прочитать про этот метод? Или Вы можете написать детально, как это делается? И вот еще что, загрузил плагин для фотошопа, чтоб конвертить в OpenEXR, отконвертил файл, но Maya нехочет загружать его :(.
 

tadpole

Знаток
Рейтинг
24
#19
создаешь файл с расширением bat пишешь в нем ... render -r mr -cam (имя камеры) -s 1 -e (последний кадр) С:/(имя файла).mb

скобки не надо писать.

запускаешь.
 
Сверху