Проксі текстур в 3ds max або звільняємо оперативну пам'ять

Проксі текстур в 3ds max або звільняємо оперативну пам'ять

Це одна з тих статей, в яких я описую різні методи, як викрутиться, якщо у вас слабкі системні ресурси. Але при цьому потрібно отрендеріть в величезному вирішенні величезну сцену. Та ще й щоб час візуалізації було менше тривалості вашого життя

Один метод я вже описував. Там потрібно було розбити зображення на смуги. щоб зменшити необхідної обсяг оперативної пам'яті.

Справа в тому, що всі сторонні рендерер (я зокрема маю на увазі VRay) не управляють текстурами. Цим займається 3ds Max. І робить він це в більшості випадків так: на початку візуалізації підвантажує все текстури в оперативку і тримає їх там до отримання фінального зображення (яке також висить в оперативній пам'яті).

Але є у Макса одна фіча, яка дозволяє виправити цю ситуацію - Bitmap Performance and Memory Options (швидкодія текстур і настройки пам'яті), знаходиться на закладці Сommon вікна налаштувань рендерера (клавіша F10):

Проксі текстур в 3ds max або звільняємо оперативну пам'ять

Після натискання на кнопку Setup. вискакує вікно, де можна поставити галочку (якщо вона до цього не стояла) Page Large Images to Disk (Saves Memory). що буквально означає "кешувати великі зображення на диск, щоб заощадити оперативну пам'ять":

Проксі текстур в 3ds max або звільняємо оперативну пам'ять

А нижче вказано шлях, куди цей кеш буде складатися.

Включення цієї опції дозволяє не закидати в оперативку великі текстури і не зберігати в оперативці великі отрендерённие зображення. Тепер рендер буде проходити трошки повільніше за рахунок того, що вінчестер працює не так спритно як ОЗУ, але зате ви більш ефективно використовуєте ОЗУ.

Найчастіше, коли початківці (і не тільки) трідешнікі створюють свої сцени, то вони не приділяють належної уваги розміром текстур. Таким чином, може вийти так, що текстура цегляної стіни, яка займає на фінальній зображенні область 370 на 154 пікселів, має розмір 2048x2048 px! Та ще й у форматі psd розміром 10-50 МБ або більше! І таких текстур може бути більше десятка.

Як результат, у вас кілька сотень мегабайт оперативної пам'яті зайнято текстурами, які абсолютно ніяк не впливають на якість фінальної картинки, але сильно впливають на можливість її взагалі отрендеріть.

Якщо у вас саме така ситуація, то відмінним способом виправити ситуацію буде створення проксі текстур. Хоча спочатку ця опція призначалася для того, щоб зменшити розмір текстур відображаються у вьюпорте. Але і для фінального рендера ці texture proxies шикарно підходять.

Саме завдяки проксі з'являється можливість динамічно (прямо під час рендеринга) довантажувати і вивантажувати текстури в / з оперативної пам'яті.

Щоб активувати використання проксі для текстур потрібно поставити галочку Enable Proxy System.

Після цього можна буде навіть вибрати у скільки разів потрібно зменшити оригінальну текстуру в випадаючому списку Downscale map to:

  • Full - залишити без змін,
  • Half - в половину,
  • Third - в три рази,
  • Quarter - в чотири рази,
  • Eighth - у вісім разів.

Також нижче можна вказати який мінімальний розмір текстур не потрібно перетворювати (за замовчуванням, все що менше 512на512 пікселів НЕ буде ресайз і перетворюватися в проксі). Якщо ви хочете, щоб все текстури система перетворювала в проксі, потрібно поставити там 0 (нуль).

Список, що випадає Render Mode (режим рендеринга) контролює, як повинен вести себе 3d Max з проксі:

  • Render with Proxies (High Performance, Low Memory) - рендерить з проксі (висока продуктивність, використовується мало оперативки).
  • Render with Full Resolution Images and Keep them In Memory (High Performance, High Memory) - рендерить з оригінальними текстурами і тримати їх в оперативці (висока продуктивність, використовується багато оперативки).
  • Render with Full Resolution Images and Free them from Memory (Low Performance, Low Memory) - рендерить з оригінальними текстурами і вивантажувати їх з оперативки (низька продуктивність, використовується мало оперативки).

Є ще кілька десятків методів, які дозволяють заощадити оперативну пам'ять (як відключення Frame Bufer'а, наприклад), але це вже зовсім інші історії

До речі, зменшити час отримання фінальної картинки можна не тільки "залізними" методами, але і оптимізуючи ефективність своїх дій. Саме секретик на цю тему я публікую в рубриці поради по ефективності для 3ds Max і ZBrush.

P.S. Діти в гостях на Дні народження (на головній картинці) зроблені румунами в ZBrush. зібрані в 3ds Max, отрендеріть за допомогою VRay. а текстури з постобработкой в ​​Photoshop. Оригінальні зображення і рендер в сермате дивіться там.

Відповідей: 7 до статті "Проксі текстур в 3ds Max або звільняємо оперативну пам'ять"

Схожі статті