Наша новая игра 8 сентября в раннем доступе на steam



Прокси для текстур в 3ds Max

Это одна из тех статей, в которых я описываю разные методы, как выкрутится, если у вас слабые системные ресурсы. Но при этому нужно отрендерить в огромном разрешении огромную сцену. Да еще и чтобы время визуализации было меньше продолжительности вашей жизни 🙂

Один метод я уже описывал. Там нужно было разбить изображение на полосы, чтобы уменьшить необходимой объём оперативной памяти.

Прокси текстур и кеширование изображений на диск - это еще пара способов сокращения объёма данных, которые будут загружаться в оперативную или видеопамять.

Дело в том, что все сторонние рендереры (я в частности имею в виду VRay) не управляют текстурами. Этим занимается 3ds Max. И делает он это в большинстве случаев так: в начале визуализации подгружает все текстуры в оперативку и держит их там до получения финального изображения (которое также висит в оперативной памяти).

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

Управление загрузкой текстур в оперативную память

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

Настройа прокси и кеширования текстур

А ниже указан путь, куда этот кеш будет складываться.

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

Зачастую, когда начинающие (и не только) тридешники создают свои сцены, то они не уделяют должного внимания размеру текстур. Таким образом, может получиться так, что текстура кирпичной стены, которая занимает на финальной картинке область 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'а, к примеру), но это уже совсем другие истории 🙂



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:


Кстати, уменьшить время получения финальной картинки можно не только "железными" методами, но и оптимизируя эффективность своих действий. Именно секретики на эту тему я публикую в рубрике советы по эффективности для 3ds Max и ZBrush.

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




Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментариев 7 к статье “Прокси текстур в 3ds Max или освобождаем оперативную память”

  1. Класс!!! Побольше бы статей по экономию оперативы.

  2. Спасибо, пригодится!

  3. Спасибо, очень полезно.

  4. Шикарно!!

  5. Зачетная статья, THNX!!!

  6. Спасибо за статью!

    Но, что-то у меня не получается изменить пути сохранения текстур и Рендер-картинки. Как изменить, не подскажите?

    • Оп! Все, нашел ! 🙂

      Надо пройти по Cutomize -> Configure User Path… . И в выскочившем окне, в его списке выбрать «BitmapProxies» и щелкнуть по кнопке Modify… — где уже надо указать папку/путь сохранения Proxy тектур.

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com