Создание Lit Sphere материала в 3dsmax
Last Updated on 14/10/2019
В этой статье я хочу вернуться к тренду прошлых лет — Lit Sphere материалам (которые также называют matcap/Spherical Environment Mapping (SEM) и т.д.). Суть этого материала в том что все параметры шейдера: цветность, отражения, и др. находятся в картинке на которой изображена сфера. Для того, чтобы использовать такую картинку в качестве материала вам понадобится специальный шейдер, умеющий извлекать из нее необходимые параметры.
Такого рода материалы очень удобны при моделировании (особенно органики) и позволяют выявлять погрешности топологии. Они хорошо зарекомендовали себя в таких программах как Mudbox и Zbrush. Наличие библиотеки с такими материалами и возможность быстро переключаться между ними по моему мнению в разы облегчает моделирование.
Именно созданием Lit Sphere материалов и библиотеки с ними в 3dsmax мы с Вами и займемся. В данной статье мы не будем рассматривать создание изображений со сферами а возьмем уже готовые. Наша задача создать материал, свойства которого будут одинаково видны как при работе с моделью во viewport, так и в случае, когда нам понадобится отрендерить нашу модель.
Lit Sphere 3dsmax material
В 3ds max за визуализацию материала во viewport и за визуализацию во время рендера отвечают разные шейдеры, таким образом материал созданный только для рендера скорее всего будет некорректно отображаться во viewport и наоборот.
Перед началом, скачайте и распакуйте архивы с изображениями со сферой:
LitSphere images collections
— pixelcg.com collection by pixelcg.com
— orgelf’s collection (1),(2),(3) by orgelf
— eat3d.com collection by eat3d.com
- Начнем мы с материала для работы во viewport. В комплекте 3dsmax нет готового шейдера, который бы работал с такими изображениями, поэтому мы воспользуемся Matballz шейдером написанным Charles Hollemeersch.
— Для работы в режиме direct3d (directx 9) вы используете оригинальный matballz_directx9 (original) шейдер.
— Для работы в режиме Nitrous (directx 11) вы используете модифицированный мной Matballz11.fx с поддержкой directx 11.
Материал для viewport выглядит следующим образом:
Materials -> Standard ->DirectX shader -> Matballz.fx -> Lit Sphere map -> изображение со сферой
Назначив его на на свой объект вы увидите его работу во viewport, но если вы отрендерите сцену, то свойства вашего материала будут утеряны, так как DirectX shader не работает с визуализаторами. - В качестве визуализатора мы рассмотрим Mental Ray. С Mental Ray в комплекте идет шейдер Environment Probe/Gray Ball , его свойства схожи с Matballz.fx.
Таким образом материал для Mental ray выглядит следующим образом:
Materials-> Mental Ray -> mental ray -> Surface -> Environment Probe/Gray Ball -> Gray Ball Image -> изображение со сферой
Этот материал будет виден на визуализации сделанной Mental Ray но при работе во viewport его свойства будут утеряны. - Соответственно наша задача — совместить два созданных ранее материала таким образом, чтобы один работал для viewport, а другой для визуализации. И в этом нам поможет 3dsmax Shell material.
Наш финальный материал будет выглядеть следующим образом:
Materials -> Standard -> Shell material -> Original Material ->DirectX Shader (созданный ранее); Baked Material -> mental ray (созданный ранее).
Обязательно нужно указать в параметрах Shell Material:
Original Material -> Viewport ; Baked Material -> Render
Таким образом наш финальный материал будет выглядеть одинаково и во viewport и на визуализации, в чем вы можете убедиться на скриншотах.
Lit Sphere materials library
Создавать сотню практически идентичных материалов вручную это утомительная задача, поэтому я написал maxscript (litsphere_lib), который поможет нам автоматизировать эту задачу. Вам необходимо будет указать .fx шейдер, который вы хотите использовать, и папку, в которой лежат ваши изображения со сферами. Скрипт автоматически переберет все изображения в папке и подпапках, а затем создаст материалы по тому же принципу, который мы рассмотрели выше, после чего сохранит их в новую библиотеку. Используя созданную библиотеку вы сможете быстро менять полученные материалы на ваших объектах, что позволяют выявлять погрешности топологии.
Заказать maxscript своему техническому заданию
Иногда работа по моделированию, текстурированию или анимации в 3ds max требует оптимизации. В случае уникальной задачи требуется инструмент, который подходит только для ее решения.
Если Вам не удалось найти готовый maxscript для решения для Вашей задачи Вы можете заказать maxscript у меня.
Стоимость работы от 10 000р и выше в зависимости от сложности.
Воспользуйтесь формой ниже для заказа разработки maxscript по Вашему техническому заданию. Не забудьте указать свой email, по которому с Вами можно будет связаться для уточнения списка работ.
Супер, благодарю!
Спасибо за урок. Столкнулся с тем, что в режиме Nitrous Direct3D11, материал shell не красит объект во вьюпорте модифицированным шейдером Matballz11.fx, а просто оставляет его черным. Без shell материала directx shader и mental ray(Environment Probe/Gray Ball) работают нормально по отдельности. Так же и с обычным шейдером Matballz.fx в режиме Nitrous Direct3D9. А вот в обычном Direct3D режиме, shell материал работает исправно.
Так же интересует, что в шейдере matballz есть NormalMap. А вот каким способом можно добавить карту нормалей, чтобы она работала с Environment Probe/Gray Ball шейдером в mentalray, Вопрос?
Здравствуйте Кирилл!
Спасибо за ваш комментарий.
Я протестировал работу Shell material в разных версиях 3ds max (2014-2016) в связке с Directx shader и описанная вами проблема действительно существует при использовании 3ds max 2014. При этом в 2015-2016 Shell Material работает как и должен. Я прихожу к выводу, что это либо ограничение Nitrous в 2014 максе либо баг. Не уверен что можно как-то исправить работу для версии 2014 и для более ранних версий, так как их я не тестировал. 🙁
Environment Probe/Gray Ball игнорирует Normal Bump map. Поэтому стандартными средствами мне пока не удалось добавить поддержку Normal Bump. Если будет какой то прогресс в этом направлении — я дам знать.