І зворотне, якщо ваша сцена завантажує процесор повністю, але не бере всю оперативну пам'ять, не лякайтеся, значить сцені більше не потрібно, швидше рендер все одно не стане.
Відразу обмовлюся, про всяк випадок. Win32 не підтримує роботу з більш ніж 2,7Gb оперативної пам'яті, так що якщо у вас Win32 і 4Gb оператіви, як це буває у багатьох, 1.3 гіга будуть простоювати.
Так як апгрейд компа справу метушливе і не щохвилинне, ми підемо по більш раціональному шляху - оптимізація сцени.
Щоб зрозуміти, як оптимізувати сцену, потрібно спочатку розібратися в тому, які основні чинники можуть впливати на використання оперативної пам'яті?
1. Завантаженість сцени високополігональні об'єктами.
Це такі об'єкти як дерева, машини, класична меблі; об'єкти в яких полігонів досить багато - 300-400 тисяч і їх самих чимало. Такі об'єкти можна буде переводити в Vrayproxy. Замінювати більш-менш схожі об'єкти дублікатами. І взагалі стежити за наповнюваністю сцени і полігонажем.
Так як останнім часом дуже мало які об'єкти моделюються, в силу того, що бази навіть безкоштовних моделей просто космічного масштабу, стежте за тим, які об'єкти ви додаєте в сцену. Якщо ви бачите, що на об'єкті дуже багато фасок і ви в своєму кадрі цього просто не побачите - не мучте ваш комп'ютер, зробіть кілька кліків і прооптімізіруйте модель. Повірте, в майбутньому це збереже вам багато часу і нервів.
Як перевести об'єкт в Vrayproxy об'єкт? Правий клік на об'єкті, який ви хочете перевести в проксі і далі по картинках,
де
a. шлях до майбутнього проксі файлу.
b. ім'я цього проксі файлу.
c. якщо поставити цю галочку, поточний об'єкт автоматично заміниться на проксіоб'ект.
2. Завантаженість сцени текстурами високої роздільної здатності та їх дублікатами.
Тут я хотів би сказати про кількість і обсяги цих самих текстур. Завжди стежте за форматом і розміром текстури, найчастіше розмір в 8000х8000 пікселів в форматі png невиправданий і займає багато місця в тій самій оперативної пам'яті. Орієнтуйтеся по кадру, як близько буде видна ця текстура і, виходячи з цього, оптимізуйте її розмір.
Слідкуйте за тим, щоб однакові текстури не "тяглися» з різних місць. Перевіряйте шляху за допомогою Asset Tracking (Shift + T). Коли працюєте над великим проектом - це часто буває актуальною проблемою.
2.1 Відображення текстур у вьюпорте.
Коли текстур в проекті багато, і всі вони у нас великого розміру, відображення їх у вьюпорте може просто «покласти» сцену, тому раджу відключати відображення текстур у вьюпорте, по крайней мере в фінальних сценах. І зробити це треба до збірки сцени.
Самий улюблений косяк всіх, як показує практика. Якщо ви зробили проксі-об'єкт, або просто потрібно розсадити в сцені багато однакових об'єктів робіть це за допомогою Instance, побачите, як це позитивно вплине на витрату оперативної пам'яті.
4. Налаштування дісплейсмента в сцені.
З настройками за замовчуванням, VrayDisplaycementMod в 3D режимі жере купу оператіви, тим більше всі ми любимо текстури Arroway, але ніхто не любить їх оптимізувати під ракурси. Так що до цього режиму потрібно підходити з обережністю і хелпом під пахвою.
Edge length - Довжина ребра - визначає якість дісплейсмента. Кожен трикутник оригінального меша подразбівается на певну кількість трикутників. Більша кількість трикутників означає більш високу детальність дісплейсмента, збільшення часу прорахунку і використання більшої кількості оперативної пам'яті. Менша кількість трикутників означає меншу кількість деталей, більш швидкий прорахунок і меншу кількість використовуваної пам'яті. Сенс параметра Edge length залежить від значення параметра View-dependent.
View-dependent - Залежність від виду - коли опція включена, параметр Edge length визначає максимальну довжину ребра трикутника в пікселях. Значення 1.0 означає, що найдовше ребро кожного трикутника буде близько одного пікселя довжиною при проекції на екран.
5. Глибина прорахунку сцени і настройки рендеру.
У вкладці System є параметри, які допоможуть нам скоротити кількість витрачається пам'яті.
Налаштуйте raycaster settings: зменшіть Max. levels, збільште Min. leaf size, збільште Face / level коефіцієнт. (Vray Help).
Параметр Max. tree depth - високі значення призведуть до того, що Vray візьме більше пам'яті, але прорахунок буде швидше. Більш низькі значення цього параметра відповідно навпаки, але рендер буде займати більшу кількість часу. До критичних випадках я ставлю аж 40.
Також можна виставити в Default geometry -> Dynamic memory, дозволить машині переварити все ваші проксі.
6. Додавання оперативної пам'яті BackBurnerServer іVray Spawner.
Почну з історії з життя, щоб було зрозуміло про що я говорю:
Була підготовлена сцена для рендера, послав задачу на стійку, стійка у нас складається з десяти 4-х ядерних і десяти 8-ми ядерних, тобто очікуваний ефект - час на завдання у однієї половини повинно було бути менше приблизно в два рази, ніж в іншої.
Приходжу з ранку дивлюся статистику, всі машини видавали час на завдання в 2 години. У чому може бути проблема, адже машини різні і не можуть видавати однаковий час? Проблеми якраз була в нестачі оперативної пам'яті, тобто всі машини були обмежені швидкістю вінчестерів, а вони у них схожі.
Чому таке сталося, адже сцена готувалася до Рендер і все було заміряні, ніяких вильотів оперативної пам'яті бути не повинно? Справа в тому, що зазвичай я працюю так: вдень Рендер за допомогою інших машин, відповідно всюди запущений Vrayspawner, а вночі посилаю завдання на стійку. Тобто на кожній машині запущені BackBurner Server і Vrayspawner.
Проблема криється в тому, що Vray НЕ вивантажує дані з Vrayspawner і коли завантажується задача через BackBurner Server ми отримуємо викидень по оперативної пам'яті. Тобто оперативна пам'ять з BackBurner Server і Vrayspawner складаються. Тому перед відправкою завдання на стійку краще перевантажувати Vrayspawner. У новій версії Vray 1.5 sp4 з'явилася галочка перевантажувати vrayspawner після закінчення рендеру.
Ми розглянули основні фактори, які впливають на витрачання оперативної пам'яті при рендер сцен в 3dsMax і Vray. Але цими шістьма пунктами, звичайно, не обмежується настройка рендера, можна копати глибше і глибше в пошуках причин «затикаючи» прорахунку.
Ось деякі поради, які можуть також допомогти:
1. І найпростіше, що можна зробити безпосередньо перед рендером на одній машині - це закрити і відкрити заново 3dmax. Це дозволити вам очистити буфер 3dmax від всіх Undo і решті капості, яка залишається вивантажені з пам'яті після роботи зі сценою.
2. Включити Bitmap pager. Робиться це так: «Customize» -> «Preferences» -> вкладка «Rendering» внизу праворуч є заповітний прапорець. Він допоможе вам при рендер великих зображень, зображень з використанням великої кількості і великих текстур. Включаючи цю опцію, програма створить на вашому диску файл підкачки, де буде зберігати частину оптимізованих текстур.
3. Також живий Motion Blur і Depth of View підвищить споживання оперативної пам'яті. Вихід - переводити ці ефекти на постеффекти. В цьому випадку для MB вам знадобитися пас Vray_Velocity і для глибини різкості Vray_ZDepth, включити ці паси можна у вкладці Render Elements.
4. При наявності великої кількості проксі об'єктів і важкої геометрії часто виручає зв'язка Brutforce + LC, сцена більш стабільна, якщо лайткеш прорахувався і сцена не впала - пощастило, хоч повільно, але отрендеріть. Пояснюється це тим, що в разі зв'язки Irrmap і LightCache вся інформація про світло зберігатися в буфері комп'ютера, що теж займає місце в оперативній пам'яті.
5. Відсутність стандартних і рейтрейс матеріалів. Часто на цьому підводять моделі бібліотек з евермоушн. Бажано після кожного мерджа неперевіреною моделі проходитися по ній Vray-mtl converter'ом. Та й взагалі бажано будь-яку модель, яка потрапляє до вас в сцену перевіряти, об'єднувати в один об'єкт, давати осмислене назва і перевіряти всі матеріали.
6. Фільтрація текстур. Summed area фільтр займає більше пам'яті ніж Pyramidal фільтр. Але дивіться при цьому на фінальне зображення або анімації, може з'явитися невеликий шум.
7. Канали текстурних координат, кожен канал маппінга займає приблизно стільки ж пам'яті скільки і не сама геометрія. Намагайтеся уникати великої кількості каналів, у багатьох об'єктах можна обійтися стандартним маппінгом.
8. Алгоритми антиалиасинга в Vray вимагає певну кількість пам'яті для зберігання даних. Ця кількість може бути досить великим, в залежності від обраного розміру Бакет-регіону і рівня семпліювання. Для зменшення цієї кількості:
а. зменшіть розмір Бакет-регіону.
b. замініть метод семпліювання image sampler. Наприклад, Adaptive QMCsampler використовує менше пам'яті ніж Adaptive subdivision sampler.
Коли створюєте сцену важливо віддавати собі звіт в тому, на що здатна ваша машина. І звичайно ж для комфортної роботи краще мати 8 гігабайт оперативної пам'яті, це дозволить вам деякий час не думати про її нестачі.
На цьому все. Швидкого рендеру вам.
Леонід Куров
icq: 202843575
skype: leonid_kurov
mail: [email protected]