Не вистачає пам’яті при рендері V-ray
Мене звуть Ілля aka iLyxa. Займаюся CG вже понад 5 років. Живу та працюю в Києві. У цьому уроці хочу розповісти про те, як виконати якісну візуалізацію в 3d Studio Max+VRay, коли ресурси комп'ютера не дозволяють цього.
Нещодавно, виконуючи візуалізацію інтер'єру кімнати, я зіткнувся з проблемою нестачі оперативної пам'яті, при рендері vray'ем. І знайшов рішення, яке надам вашій увазі зараз.
Сцена являла собою цікавим чином поєднані зал, вітальню та кухню. Все це займало понад 100 кв. Всі абсолютні меблі виконані в класичному стилі + на всіх вікнах були гардини та портьєри. Ще було 3 величезні люстри з сотнями дрібних скель і пару десятків лампочок на кожній.
РАЗОМ: 3 млн. полігонів та 2 млн. геометрії одночасно були присутні у сцені. Файл*.max займав близько 100 Мб у не стислому вигляді.
“UNHANDLED EXCEPTION: Memory allocation failure; …” багатьом знайоме повідомлення про помилку VRay. Мені пощастило його побачити тільки при рендері сцени з найпростішими налаштуваннями vray'я та при роздільній здатності картинки 320х240. Коли ставив щось більше – 3D Studio Max 9 SP2 просто закривався під час прорахунку Глобального освітлення або вже під час промальовування картинки, а повідомлення про помилку писалося в C:/vraylog.txt.
Залізо, на якому виконувався рендер:
Intel Core Quad Q6600 2.4 Ghz (це 4 ядра)
4 планки пам'яті по 1Gb DDR-II 800Mhz + 3Gb файл підкачування.
Відеокарта Asus GeForce 8600 GTS 256Mb
Windows XP 32bit L
На жаль, як пізніше з'ясувалося на практиці, Windows XP 32bit не може повноцінно використовувати оперативну пам'ять об'ємом понад 2,7Gb, тому мої 4 Гб оперативні пам'ятки просто гуляли.
Своє вирішення проблеми я опишу після, а спочатку: є кілька простих дій, які можуть вирішити проблему пам'яті.
Увімкнення опціїAutomatically create proxies автоматично створить на місці об'єкта, що експортується, його образ. Якщо об'єкт, який ви переводите в Проксі, складається з більш ніж 1 млн. полігонів, то помилка нестачі пам'яті ймовірно знову з'явиться.
Один із найпростіших способів вирішення проблеми –приховати (Hide) всі об'єкти сцени, які не потрапляють у поле зору камери. Неодноразово доводилося його використовувати, але без особливого задоволення, при рендері, наприклад 10 видів однієї сцени, потрібно було для кожної камери прибирати/додавати об'єкти сцени, стежити за поверхнями, що відбивають.
Наша проблема, якщо дивитися на неї прямо, полягає в тому, на старті рендеру сцени vray просить у windows виділити, наприклад 10Gb оперативної пам'яті, як у моєму випадку було, а це не можливо, тому і виникає помилка програми або якогось модуля. Буває помилка вискакує на різних етапах рендеру – прорахунки карт глобального освітлення, дисплейсу, фотонів, рейтрейс…
РозробникиVray передбачили рішення у такій ситуації -Dynamic Memory, але воно чомусь не працювало у мене нормально.
Я встановлював значення лімітDynamic memory limit, спостерігаючи через Диспетчер завдань за обсягом оперативної пам'яті, що використовується, до рендеру і в момент вильоту помилки або автоматичного закриття Max'a. Тепер vray запитує у операційної системи рівно стільки ресурсів, скільки йому потрібно на певному етапі і ми ставимо критичний ліміт. Не з усіма 3D сценами це працювало у мене, а коли працювало – рендер тривав вкрай повільно.
Якщо способи, описані вище, не позбавили помилки, а вставляючи додаткові планки пам'яті вже нікуди:
Отже, основна частина.
Цей спосіб рендерингу не прискорив процес, але дозволив все ж таки отримати картинку 2500х1500 за наявності в сцені 3 млн. полігонів, при високих налаштуваннях якості прорахунку картинки.
-
ЗапускаємоBackburner Manager. Він зазвичай встановлюється разом із установкою 3DS Max.
Якщо з'явиться вікно налаштувань, просто натискаємо ОК, погоджуємося зі стандартними налаштуваннями.
ЗапускаємоBackburner Server, там же у меню знаходиться.
У налаштуваннях знімаємо позначку біляAutomatic Search і вводимо свій локальнийIP 127.0.0.1.
Таким чином, на вашому комп'ютері запущено Менеджера, готового прийняти завдання на рендер від 3D Max, і відправити частину завдання на Сервер, для його обробки. Саме розбиття завдання 2500х1500 наприклад на частини дозволить практично будь-якому залізу обробити сцени підвищеної складності. Так само єBackburner Monitor для наочного стеження я за процесом, що відбувається (запускати за бажанням).
Відкриваєте свою сцену в 3D Max, встановлюєте бажані налаштування рендера, і головне, відзначити в налаштуванняхNet Render, що дозволить відправити рендер завдання доBackburner Manager, а не виконувати його самостійно.
УRender Output вкажіть, куди зберігати результат, обов'язково.
Всі смуги зберігаються в ту папку, в яку ви вказали зберегтиRender Output, а потім зливаються в одну картинку після завершення процесу. Вуа-ля
На цьому все!
Сподіваюся, що цей урок дозволить отримати те, що раніше не було доступним. Питання лише часу.