CG in Games tosyk's blog

27Янв/115

3ds Max Visualization with shaders

Русский English

В статье описан процесс настройки визуализации с помощью 3ds Max и шейдеров.

Примечание: Статья рассчитана на пользователей знакомых с работой в 3ds Max и не описывает такие моменты как, например, текстурирование объектов, настройка материалов и т.п.

В статье я использовал инструменты:

  • 3ds Max (я использую 2008 х64) должно работать на версиях: 7-2011
  • Xoliulshader v1.6 (shader для 3ds Max) Автор: Laurens Corijn [скачать] [страница]

1. Вступление можно пропустить. Качество графики (текстуры и количество полигонов в моделях) в современных играх уже достигло такого уровня, что практически не нуждается в дополнительных инструментах улучшения изображения, таких как шейдеры, но для "сочности" картинки шейдеры всё ещё необходимы. А в таких приложения как допустим 3ds Max по-прежнему для качественной визуализации требуется настройка внешнего/внутреннего визуализатора. Картинка получается отличной, но не интерактивной, на помощь в достижении интерактивности с минимальными потерями в качестве приходят шейдеры. По сути шейдеры нас обманывают, заставляя поверить в то, что то, что мы видим: тени, отражения, блики, всё это действительно настоящее, но это не так (конечно в отличии от визуализаторов, которые просчитывают большинство условий при рендере)! Шейдеры автоматически "рисуют" для нас плоскую картинку, кажущуюся реальной! Они для этого сделаны, именно так устроены и бывают разными: шейдер для воды, или шейдер для человеческой кожи, или шейдер для бильярдного шара.

2. Настройка модели. Для лучшего отображения модели с шейдерами я рекомендую убрать все швы на ней. Эти швы:

Для этого нужно выделить объект, в 3ds Max создать новый скрипт (MAXScript -> New script). В появившееся окно (это MAXScript Editor) вставить этот скрипт (только для объектов со скелетом, имеющих модификатор Skin):

for obj in selection do
(
$.modifiers[#Skin].mirrorEnabled = off
modPanel.setCurrentObject $.baseObject
modPanel.addModToSelection (Edit_Normals ()) ui:on --Add Edit Normals Modifier under the Skin Modifier
actionMan.executeAction 0 "40021" -- Selection: Select All
$.modifiers[#Edit_Normals].EditNormalsMod.Average useThresh:on threshold:0.01 --Average selected by 0.01
modPanel.setCurrentObject $.modifiers[#Edit_Normals] --Select Edit Normals Modifier
maxOps.CollapseNodeTo $ 2 off --Collapse Edit Normals Modifier
)

Перед запуском скрипта убедиться, что активирована панель Modify, просто нажать на неё:Далее в MAXScript Editor запускаем скрипт (Evaluate All или Ctrl+E). После непродолжительного процесса выделенный объект будет выглядеть так:

Примечание: Для объектов не имеющих модификатора Skin и костей нужно добавить модификатор Edit Normals, в нём в разделе Average поставить галку на Use threshold, установить параметр на 0,01, выделить все нормали и нажать на кнопку Selected.

3. Установка шейдера. Скачиваем архив с шейдером Xoliulshader. Распаковываем содержимое Xoliulshader_v1.6.rar в папку:

<папка установки>\Autodesk\3ds Max 2008\maps\fx\

В 3ds Max открываем редактор материалов (Material Editor). В свободный слот добавляем DirectX Shader (розовенький шарик). В этом материале нажимаем на подчёркнутую кнопку:
и выбираем Xoliulshader_1.6_noshadows.fx (работает на большинстве системах).

4. Настройка материала, шейдера. Настраиваем только самое важное:

Показать скриншот шейдера »

  • Shader Hue Adjusment - влияет на "красность" объекта, нужен в основном для кожи, имитирует эпидермис, я ставлю 0.3-1.1
  • Half Lambert Shading - контролирует силу осветления затенения, я ставлю 1,2-1,8
  • Diffuse Map - основная диффузная текстура (цветная)
  • Spec Map - текстура (слабой цветности) отвечает за блики на модели, значения варьируются от 0.02 до 0.5, если такой текстуры нет (часто с индексом _spec/_sp/_s на конце имени файла), то просто на максимум ставлю Glossiness Level и уменьшаю Specular Global Level до 0.08
  • Normal Map - параметр отвечает за выпуклости, текстура обязательно должна быть сине-фиолетового цвета (стандарт nvidia). Тут важный параметр Flip Green - включать/выключать по необходимости, в зависимости от получившегося результата. Разница очень заметна на лице!
  • Use Fresnel Reflections - отражение света окружения на объекте. Очень важный параметр, при включении И НАСТРОЙКЕ которого кажется, что объект вписан в среду
  • Fresnel Power и Fresnel Muliplier - настройка силы и глубины параметра Use Fresnel Reflections, в основном никогда не изменяю, но можно чуть настроить
  • Reflection Map - текстура (чёрно-белая) указывающая  шейдеру в каких местах будет отражение (белые места), а в каких нет (чёрные места). Настраивается при наличии текстуры отражений
  • Cubemap - важная текстура задающая свет, цвет и отражаемое окружения, можно скачать [отсюда]
  • Cubemap Blur - размытие окружения

5. Визуализация. 3ds Max плюс шейдеры.

Комментарии (5) Пинги (0)
  1. Спасибо за отличный туториал. Коротко и ясно, ничего лишнего. Скажите, а по анимации перса вы сможете подсказать?

  2. спасибо, что именно по анимации?

  3. Вопрос можно ли анимацию лица из The Last Remannt — применить к моделям игры DMC4? Хотелось бы, что бы вы сделали туториал — как можно допустим моделям из гры RE5 или другой, прекрутить анимацию из других, например Gears of War 1,2. Если такое конечно возможно.

  4. слишком глубоко не разбирался в совмещении анимации и моделей из разных моделей

  5. Cкажите, а в анимации лица средствами 3ds max? Плагинами,скриптами — вы можете, что то подсказать? Какой нибудь туториал может хороший?

    P.S. Я увидел вы готовите туториал «Вскрытие моделей из игры Soul Calibur 4» очень интересно, я всегда хотел извлечь оттуда модели — но это оказалось для меня сложно.


Leave a comment

Нет обратных ссылок на эту запись.