Недостаточно памяти для рендера

Обновлено: 06.07.2024

Меня зовут Илья 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 Гб оперативки просто гуляли.

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

  1. Как учил hrwraith в недавнем уроке (ссылка на урок), или немного иначе, нужно прописать в файле C:/boot.ini после примерно вот такой строчки «multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect» добавить «/3GB /useuptime», без кавычек. Это позволит Windows не стеснятся и использовать больший объем оперативной памяти компьютера на процесс, после перезагрузки.
  2. Вторая рекомендация – не использовать карты и материалы Raytrace.
  3. Если объект сцены содержит в себе до 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 укажите куда сохранять результат, обязательно.

  1. Убираем отметку возле Automatic Search
  2. Вписываем свой IP 127.0.0.1
  3. Справа будет кнопка Connect – выполняем поиск и подключение к Менеджеру. Справа появится список доступных серверов.
  4. !! Ставим отметку возле Split Scan Lines. По кнопке Define можно задать настройки разделения изобращения по высоте или по кол-ву полос. Вся большая картинка будет разделена на горизонтальные полосы высотой Strip Height, что позволит вашему компьютеру обрабатывать полосу за полосой, без появления ошибки и отказа :) А если ошибка и будет возникать, просто увеличьте количество линий.

Все полосы сохраняются в ту папку, в которую вы указали сохранить Render Output, а потом сливаются в одну картинку, по завершению процесса. Вуа-ля

На этом всё!

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

Читайте также: