Уроки: Maya

Maya Software Render SSS

Тагинцев Владислав Александрович, Fiend3D

Автор о себе: Меня зовут Тагинцев Владислав Александрович, живу в г. Воронеже, работаю в игровой индустрии 2 года. 3D я занимаюсь довольно давно и всё свободное время посвящаю ему (а именно персонажное моделирование, анимация, визуализация). Учусь заочно в политехническом институте на втором курсе (мне 19 лет). В галерее и на форуме известен как Fiend3d.

Эту сцену создал для демонстрации результатов метода, о котором я расскажу далее.

Я решил рассказать вам о принципах Fake SSS (Subsurface Scattering). т. е. не физический просчёт, а полученный обманным путём. Урок, я надеюсь, будет интересен всем. Уникальность урока в том, что эффект SSS создаётся в Maya Software Render, который пока что к этому не приспособлен (далее объясню почему). А так же начинающим поможет в освоении Hypershade. Я такого ранее нигде не видел, это пришло мне в голову, когда увидел статью про это на rendermanacademy.com, только там описывался prman.

Начну с того, что поясню: SSS - это подповерхностное распространение света. Этим свойством обладает большинство предметов, окружающих нас. Например: мы сами. Давайте поглядим на наши руки. Вы, надеюсь, видите их розоватыми, но кожа (на самом деле) синевато-белого цвета, а розоватый цвет им придаёт то, что находится под кожей (но о шейдинге кожи я, возможно, расскажу в следующих уроках). А речь у меня пойдёт о воске или о веществе похожем на воск.

Физический просчёт SSS получается за счёт трассировки фотонов (так может Mental Ray, Maxwell), занимает много времени, очень сложен, не всегда можно предугадать результат точно (получить то, что хотел). Физический просчёт – это громко сказано, так как в реале является лишь имитацией физических процессов (наблюдаемых в реале).

Итак, что нужно чтобы получить шейдер воска? А нужен нам pointcloud (набор точек с тремя координатами) полученный из lightmap, т. е. чтобы получить SSS требуется разблурить эти точки с заданным радиусом, и проецировать получившийся цвет на поверхность. Такое размытие невозможно получить из обычной lightmap так как она плоская и имеет всего 2 координаты, а размытие надо делать именно по трём. Тут возникает трудность. Получить такую lightmap можно только в Mental Ray (о принципах работы SSS в Brazil, Vray, Final Render я ничего не знаю, но думаю, что принципы схожи) в Software Render получить нельзя (и даже в Prman). А нужно использовать shadowmap, а именно depth map shadow, так как эта карта имеет три координаты и может быть размыта с заданным радиусом.

Запускаем Maya :) Создаём несложную модель (для начала) как показано на картинке, и очень желательны единые UV координаты для всех объектов. Если вам не хочется утруждать себя, то скачайте это здесь.

Очень советую для подобных (как и для подавляющего большинства сцен) использовать SpotLight. Создаём и жмём panels>look Through selected как показано ниже:

Перемещаем новую «камеру»:

Открываем окно атрибутов источника света (самый удобный и быстрый способ попасть в окно атрибутов это Ctrl+A). Настраиваем атрибуты:

И настраиваем тени, а именно depth map:

Рендерим…

Что-то есть уже, но ещё пока не то. Сейчас мы имеем рассеивание тени, а фронтального рассеивания света в объекте мы не видим. Открываем Hypershade и делаем второй lambert, настраиваем (если хотите IPR работает при этом очень быстро), но я советую настроить всё как тут:

Значение color=0.5 (rgb (0.5;0.5;0.5)), а translucenceDepth настраиваем по вкусу ;) Получается уже что-то очень похожее на SSS. Полученный результат уже можно использовать при компоузинге видео (AE, shake и т.д.) ведь скорость просчёта очень высока. А мы не будем останавливаться на достигнутом и пойдём дальше :)

Теперь запечем полученный результат в текстуру. Для этого выделяем нашу модель, а затем шейдер который мы будем запекать (lambert2 через shift) и в окне Hypershade>Edit:

Настраиваем:

Запекаем. После просчёта (он займёт немного времени) мы получаем surfaceShader с запеченной текстурой, что нам и нужно было. Рендерим:

Получаем баги на краях UV… Почему-то майя имеет такой баг (Mental Ray может запекать без таких багов, надеемся что в новой версии майя добавят такую приблуду и в Software Render) . Для начала поменяем тип фильтрации у запечённой текстуры на mipmap:

У сложной модели баги могут вовсе пропасть… У нас лишь уменьшатся, но не беда, чуть правим UV и рендим:

Обратите внимание на скорость рендера. Мы можем крутить камеру вокруг объекта, и не будет никаких проблем. Но нам этого мало. Нам нужен красивый SSS шейдер. Для этого создаём ramp и соединяем атрибуты запеченной картинки (file ) и ramp (предварительно удалив place2dTexture который был присоединён к ramp). Для этого перетаскиваем ноду текстуры(запеченной) на ramp и выбираем “Other” в появившемся окне присоединяем

Этим способом мы мапим цвет нашего SSS рамповым градиентом. Далее создаём новый шейдер Blinn и присоединяем ramp к incandescence нового Blinn шейдера. Лезем в атрибуты единственного источника света и отключаем тени. Рендерим:

Получаем что-то забавное. На этой картинке вы видите, как действует ramp на нашу текстуру. Заводим IPR и настраиваем ramp. Потом включаем назад тени (предварительно сделав настройки нормальными). И рендерим:

Отлично. Мы получили SSS шейдер, который моментально считается и виден в рефлектах. С настройками рампа и слоями можно добиться очень достойных результатов, которые будут очень быстро считаться. На всякий случай ещё вот покажу то, что у меня в Hypershade получилось:

Если урок будем популярен, то напишу про то, как написать и прикрутить SSS шейдер к Renderman. Всем спасибо и, надеюсь, что вы оцените.

48557 Автор:
Актуальность: 747
Качество: 487
Суммарный балл: 1234
Голосов: 18 оценки

Отзывы посетителей:

аватар
 
maxer 7 0
Очень интересные сведения.
аватар
 
scripterBB 11 0
Интересный метод. Спасибо.
аватар
 
crest 7 0
Актуально.
аватар
 
Fiend3d 229 0
I-jan Да есть... только ссылку на моё дополнение снесли... в следующем месяце, возможно, пришлю более полную версию
аватар
 
I-jan 15 0
Запекание хорошо для статичных сцен. Интересно, есть что-либо подобное для анимированных.
аватар
 
Давид Колосов 1 0
Мне этот урок очень понравился!
аватар
 
Fiend3d 229 0
Leshiy Видел недавно новые шейдера на видюхах… Всё это скоро войдёт и в реал тайм… Такими темпами…
аватар
 
Leshiy 152 0
интересно, но чего-то как-то уж слишком фейковый, местами не правдоподобно выглядит
а как насчет Hardware Render SSS? )))
аватар
  vip
Skif 2787 0
Администратор 3D галереи
Fiend3d спасибо... посмотрю.
аватар
 
Rimidalv Vonavi 2 0
хм... интересно, спасибо, а то я как то над этим думал, так ничего толкового в голову и не пришло.....
аватар
 
Fiend3d 229 0
Admin Буду знать :)

skif Погляди в хелпе про то как создавать лайтмап ;) Там всё описано. Фишка в нём.
аватар
  vip
Skif 2787 0
Администратор 3D галереи
не мог бы поподробнее рассказать? вот мыло... stoodent собака mail.ru просто идёт работа над небольшим демо... рендер ментал... а вот с мисс фаст никак не могу разобраться... пробовал не только его но так ничего не получилось :(... заранее благодарю :)
аватар
 
Fiend3d 229 0
DrFlash Да. Можно. Спасибо, что напомнил… забыл написать про это… Но тени такими и останутся. А с запеканием можно выставить нормальные тени. И остальным объектам в сцене мешать это не будет. Самый простой способ – это запечь. Да и считаться это будет очень быстро. А ещё я хотел рассказать немного о том, как запекать шейдер в текстуру.
аватар
 
Сергей Хатенков 197 0
а зачем запекать? разве нельзя подсоединить ламберт к рампу через сlamp ?
аватар
 
Fiend3d 229 0
skif Нет. Там я использовал Mental Ray (misss_fast)
аватар
  vip
Skif 2787 0
Администратор 3D галереи
спасибо. очень кстати... Авард заслуженый... как ты там делал SSS ? так же?
аватар
 
Fiend3d 229 0
Если у вас возникнут вопросы, то с радостью на них отвечу.
аватар
 
veent 34 0
Очень интересно ! вот только недавно начал SSS увлекаться и тут урок как нельзя кстати.... жаль, что прийдется скоро на Макс возвращаться, так как фирма в которую я ухожу вся на максе работает и майи там никто не знает.... :(
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 203 уникальных посетителей