Недостаточно памяти для рендера
Меня зовут Илья aka iLyxa. Занимаюсь CG уже более 5 лет. Живу и работаю в Киеве. В этот уроке хочу рассказать о том, как выполнить качественную визуализацию в 3d Studio Max + VRay, когда ресурсы компьютера не позволяют этого.
Совсем недавно, выполняя визуализацию интерьера комнаты, я столкнулся с проблемой недостатка оперативной памяти, при рендере vray’ем. И нашел решение, которое предоставлю вашему вниманию сейчас.
Сцена представляла собой интересным образом совмещенные зал, гостиную и кухню. Всё это занимало более 100 кв.м. Вся абсолютна мебель выполнена в классическом стиле + на всех окнах были гардины и портьеры. Еще было 3 огромных люстры с сотнями мелких стекляшек и пару десятков лампочек на каждой.
ИТОГО: 3 млн. полигонов и 2 млн. геометрии одновременно присутствовали в сцене. Файл *.max занимал около 100 Мб в не сжатом виде.
Железо, на котором выполнялся рендер:
Intel Core Quad Q6600 2.4 Ghz (это 4 ядра)
4 планки памяти по 1Gb DDR-II 800Mhz + 3 Gb файл подкачки.
Видеокарта Asus GeForce 8600 GTS 256Mb
Windows XP 32bit L
К сожалению, как позже выяснилось на практике, Windows XP 32bit не может полноценно использовать оперативную память объемом более 2,7Gb, поэтому мои 4 Гб оперативки просто гуляли.
Свое решение проблемы я опишу после, а сначала: есть несколько простых действий, которые могут решить проблему с памятью.
- Как учил hrwraith в недавнем уроке (ссылка на урок), или немного иначе, нужно прописать в файле C:/boot.ini после примерно вот такой строчки «multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect» добавить «/3GB /useuptime», без кавычек. Это позволит Windows не стеснятся и использовать больший объем оперативной памяти компьютера на процесс, после перезагрузки.
- Вторая рекомендация – не использовать карты и материалы Raytrace.
- Если объект сцены содержит в себе до 1 млн. полигонов, то его можно перевести в VrayProxy. Делается это так:
Включение опции Automatically create proxies автоматически создаст на месте экспортируемого объекта его образ. Если объект, который вы переводите в Прокси состоит из более чем 1 млн. полигонов, то ошибка недостатка памяти вероятно снова появится.
Разработчики Vray предусмотрели решение в такой ситуации - Dynamic Memory, но оно почему-то не работало у меня нормально.
Я устанавливал значение лимит Dynamic memory limit, наблюдая через Диспетчер задач за объемом используемой оперативной памяти до рендера и в момент вылета ошибки или автоматического закрытия Max’a. Теперь vray запрашивает у операционной системы ровно столько ресурсов, сколько ему нужно на определенном этапе и мы задаем критический лимит. Не со всеми 3D сценами это работало у меня, а когда работало – рендер длился крайне медленно.
Если способы, описанные выше, не избавили от ошибки, а вставляя дополнительные планки памяти уже некуда:
Итак, основная часть.
Этот способ рендеринга не ускорил процесс, но позволил всё таки получить картинку 2500х1500 при наличии в сцене 3 млн. полигонов, при высоких настройках качества просчета картинки.
-
Запускаем Backburner Manager. Он обычно устанавливается вместе с установкой 3DS Max.
Если появится окно настроек, просто жмем ОК, соглашаемся с стандартными настройками.
В настройках снимаем отметку возле Automatic Search, и вводим свой локальный IP 127.0.0.1.
В Render Output укажите куда сохранять результат, обязательно.
- Убираем отметку возле Automatic Search
- Вписываем свой IP 127.0.0.1
- Справа будет кнопка Connect – выполняем поиск и подключение к Менеджеру. Справа появится список доступных серверов.
- !! Ставим отметку возле Split Scan Lines. По кнопке Define можно задать настройки разделения изобращения по высоте или по кол-ву полос. Вся большая картинка будет разделена на горизонтальные полосы высотой Strip Height, что позволит вашему компьютеру обрабатывать полосу за полосой, без появления ошибки и отказа :) А если ошибка и будет возникать, просто увеличьте количество линий.
Все полосы сохраняются в ту папку, в которую вы указали сохранить Render Output, а потом сливаются в одну картинку, по завершению процесса. Вуа-ля
На этом всё!
Надеюсь, что этот урок позволит получить то, что раньше было не доступно. Вопрос только времени.
Читайте также: