Уроки: Maya

Создание реалистичного шейдера глаза

Автор о себе:

О 3D-графике я узнал на кафедре художественной и промышленной обработки металлов в Новгородском государственном университете, где, собственно, и учился на отделении дизайна. Был у нас преподаватель - практикующий архитектор Поплевин, который предложил изучать архитектурный дизайн на компьютере. В институте не было готовых спецов, лекции по трехмерному моделированию читали бывшие выпускники ВУЗа - самоучки в 3D. Кстати, один из них как раз занимался компьютерными играми и удаленно сотрудничал с Render.Ru. Подходило время защиты дипломной работы. В мои планы входило написать ее по архитектуре, однако завкафедрой предложил другую тему - дизайн компьютерной игры. На этом проекте я реально и учился моделингу.


Для создания шейдера глаз используем слоеный материал (Layered shader) с двумя слоями – материалами, первый слой будет имитировать роговицу глаза с выпуклостью, второй – сетчатку с радужной оболочкой и зрачком.

1.Создаем NURBS-сферу. Это будет модель глаза.

2.Открываем Hypershade. Создаем материал Blinn, называем его Eye_blinn1.

На канал bump назначаем текстуру ramp. С его помощью мы добьемся имитации выпуклости на роговице. Значение Bump Depth оставляем по умолчанию на единице. Меняем тип рампа (Type) на U Ramp, а Interpolation – на Smooth. Удаляем все цвета, самый верх (0.985) и самый низ (0.000) делаем белым. Низ делаем белым потому, что градиент рампа начинается не совсем от начала UV-координат, если этого не сделать, в центре глаза будет сильная вмятина J. В координатах 0.815 и 0.350 поставить черный цвет.

Цвет и прозрачность материала делаем белыми. Diffuse выкручиваем на единицу. Eccentricity в свитке Specular Shading делаем равным 0.083
Specular Roll Off – 4.562.
Reflectivity ставим 0.050, Reflected color – черный.
На канал Specular Color вешаем рамп (Type – U Ramp, Interpolation –Smooth). Значения градиента рампа: 0.960 – белый
0.805 – серый (HSV, H=0, S=0, V= 0.297)
0.565 – черный
0.130 – черный
0,000 – белый.

Результат (без прозрачности):

3. Создаем еще один материал Blinn, называем его Eye_blinn2.

4. На канал Color назначаем рамп (Type – U Ramp, Interpolation –Smooth). Значения градиента рампа: 0.970 (в зависимости от величины зрачка, чем меньше зрачок, тем больше значения) – черный, далее – сложнее: в зависимости от требуемого цвета глаз значения подбираются индивидуальные, для имитации неоднородности цвета радужной оболочки вместо значений цвета используется карта фрактального шума (fractal) измененная с помощью Color Balance. Так, в данном примере:

0.965 – фрактал, с амплитудой равной одному, Color Balance: Default color – серый, Color Gain – HSV, H= 27.35, S= 0.636, V= 0.420, Color Offset – HSV, H= 27.17, S= 0.662, V= 0.314.
0,950 – фрактал, с амплитудой равной одному, Color Balance: Default color – серый, Color Gain – HSV, H= 50.96, S= 0.424, V= 0.330, Color Offset – HSV, H= 25.88, S= 0.586, V= 0.274.
0,910 – фрактал, с амплитудой равной одному, Color Balance: Default color – серый, Color Gain – HSV, H= 25.19, S= 0.178, V= 0.376, Color Offset – HSV, H= 45.64, S= 0.214, V= 0.041.
0,890 – фрактал, с амплитудой равной одному, Color Balance: Default color – серый, Color Gain – HSV, H= 41.33, S= 0.729, V= 0.153, Color Offset – HSV, H= 41.33, S= 0.729, V= 0.000.
Дальше – проще, так как радужная оболочка закончилась, и начался белок глаза. В большинстве случаев могут подойти следующие параметры:
0.875 – HSV, H= 25.07, S= 0.105, V= 0.786
0.810 – HSV, H= 23.91, S= 0.221, V= 0.809
0.475 – HSV, H= 4.70, S= 1.000, V= 0.370
0.000 – черный.

Результат:

Для добавления капилляров на значение 0.810 можно повесить карту marble с параметрами:

Filler Color – HSV, H= 23.91, S= 0.221, V= 0.809
Vein Color – HSV, H= 360, S= 0.656, V= 0.627
Vein Width – 0.005
Diffusion – 0.100
Contrast – 0.600
Amplitude – 1.700
Ripples – 2; 2; 2
Depth – 1.0; 20.0

Результат:

5. Переходим к созданию бампа. Снова создаем карту рампа (Type – U Ramp, Interpolation –Smooth), вешаем на канал bump. Значение Bump Depth оставляем по умолчанию на единице.

Значения рампа:
1.000 – черный (HSV, H= 0, S= 0, V= -10)
0.970 (диаметр зрачка) – черный (HSV, H= 0, S= 0, V= -5)
0.965 – фрактал с амплитудой 0.400, Color Balance: Default color – серый, Color Gain – HSV, H= 0, S= 0, V= 0.165, Color Offset – HSV, H= 0, S= 0, V= 0.
в параметрах Placed Texture выставляем Repeat UV 2.0 и 5.0
0.885 – фрактал с амплитудой 0.020, Color Balance: Default color – серый, Color Gain – HSV, H= 0, S= 0, V= 1, Color Offset – HSV, H= 0, S= 0, V= 0.463.
0.720 – фрактал с амплитудой 0.060, Color Balance: Default color – серый, Color Gain – HSV, H= 0, S= 0, V= 0.306, Color Offset – HSV, H= 0, S= 0, V= 0.760.
0.345 – фрактал с амплитудой 0.050, Color Balance: Default color – серый, Color Gain – HSV, H= 0, S= 0, V= 0.372, Color Offset – HSV, H= 0, S= 0, V= 0.322.
0.090 – черный (HSV, H= 0, S= 0, V=0)
0.000 – черный (HSV, H= 0, S= 0, V= -10)

Результат Bump:

Color+Bump

6.Diffuse выкручиваем на единицу

7. Eccentricity в свитке Specular Shading делаем равным 0.347

Specular Roll Off – 0.700.
Reflectivity ставим 0.000
Reflected color – черный.

На канал Specular Color вешаем рамп (Type – U Ramp, Interpolation –Smooth). Значения градиента рампа:

0.970 – HSV, H= 0, S= 0, V=0
0.915 – HSV, H= 28.37, S= 0.465, V=0.567
0.830 – HSV, H= 196.57, S= 0.337, V=0.745
0.130 – HSV, H=360, S= 1, V=0.280
0.000 – HSV, H= 0, S= 0, V=0

Specular:

Color+Bump+Specular:

8. Заходим в HyperShade, создаем Layered shader. Называем его eye_LayeredShader. Коннектим к нему наши два материала, созданные ранее.

Сначала присоединяем eye_blinn1, он должен быть верхним (слева в редакторе атрибутов), затем eye_blinn2. Назначаем полученный материал на нашу сферу.

Результат:

Настраивать цвет, форму, размер глаз, зрачков, степень отражаемости, яркость и величину бликов следует после установки и настройки освещения.

Изменяя цвета рампа материала eye_blinn2, в канале цвета и спекуляра, можно менять цвет глаз. Меняя их положение можно менять размеры зрачков и радужной оболочки.

Итоговый шейдер:



Файл урока: eye.mb

 

39050 Автор:
Актуальность: 540
Качество: 567
Суммарный балл: 1107
Выбор Публики
Голосов: 52 оценки

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

2 | След.
аватар
 
Игорь Изевлин 5 0
С предыдущим вопросом сам справился, но попались новые "грабли"...

Моделирую персонаж, дошёл до создания шейдера для глаз. Использовал слоеный материал (Layered shader) с двумя слоями–материалами. При рендере в Maya HardWare видно сглаженное лицо персонажа, но текстуры глаза вообще не видно. А при рендере в Maya SoftWare видно не сглаженное лицо персонажа(видны полигоны), но видна текстура глаза.

Ни как не пойму - как проявить и то и другое? Какой рендер лучше?

Большое спасибо!

С уважением,
Игорь Изевлин.
аватар
 
Игорь Изевлин 5 0
Здравствуйте!
У меня Eye_blinn1 и Eye_blinn2 получились раздельно - как их можно объединить? Большое спасибо!
аватар
 
Игорь Изевлин 5 0
Здравствуйте!
У меня Eye_blinn1 и Eye_blinn2 - как их можно объединить? Большое спасибо!
аватар
 
Феечка 1 0
Огромное спасибо! Вы не представляете как помогли мне с моим проектом!
аватар
 
IRISH@ 1 0
Очень красивые глаза у Вас, мистер, получились)) Я буду брать с Вас пример.
аватар
 
Barbarus 1 0
Привет, Макс
молодчина!

Кровеносные сосуды не должны следовать за зрачком.
???
сосуды находятся в глазном яблоке...или может я чего не понял?

специально для максеров, лайтвейверов и пр. :
рассматривайте тутор как схему, все это вполне реально повторить в других прогах. Вопрос в том, что в некоторых местах подход будет несколько иным, но общий принцип тот же!
Изучайте инструментарий программ, в которых работаете и дерзайте!

Макс!
передай привет Лехе Шаману, Андрюхе Shark, Сашке Миргородскому и всем кто меня знает :)
Alexis Timofeev
аватар
 
maxer 7 0
Очень, очень даже неплохо. И полезно.
аватар
 
scripterBB 11 0
Понравилось. Отличный урок.
аватар
 
crest 7 0
Полезно!
аватар
 
kurigo 5 0
Спасибо за урок. Предлагаю следующие усовершенствования:

1) Если я захочу с этим шейдером сделать анимацию расширения зрачка (персонаж испугался), то, как я понимаю, мне придется заняться целой горстью атрибутов. Почему бы в шейдере не создать атрибут, задающий значение радиуса зрачка (eye_LayeredShader.zrachok_raduis) и не создать несколько expressions в рампах, которые бы автоматически подгоняли все необходимые параметры. Тогда мне бы оставалось работать только с eye_LayeredShader.zrachok_raduis.

2) Как корректно сделать зрачок подвижным? Насколько я понимаю, поворот зрачка повлечет за собой и поворот глазного яблока, а это некорректно. Кровеносные сосуды не должны следовать за зрачком.
аватар
 
Liam 5 0
Максим, я учусь делать игры и мне было бы очень интересно и полезно прочитать Вашу дипломную работу "дизайн компьютерной игры". Я обещаю, что не буду её использовать в качестве своей дипломной работы (да и не могу т.к. ещё учусь в школе:))) и в качестве рефератов докладов и т.д. Мой адрес: Liam562006@mail.ru
Заранее спасибо.
аватар
 
Aless_Design 4 0
Вот по Максу бы то-же самое...
аватар
 
Asombroso 1 0
Изучаю maya недели полторы, с уроком проблем не возникло, но получилось не совсем то, что показано на картинках (в общих чертах похоже, но очень грубо) =))
Наверное надо с настройками повозиться, а так полезный урок =))
аватар
 
konoplev 42 0
Очень полезный урок, я как раз перехожу на Майку, с моделированием проблем вроде нет, а по шейдерам инфа не помешает. Автору спасибо!
аватар
 
real arhangel 46 0
урок ХОРОШИЙ, НО Я Майи вообще в глаза не видел...и я еще и новичек в 3D - графике. А мне как раз глаза нужны для 3д макса...
аватар
 
FIN 2 0
все очень граматно. Для тех кому нужна вода - пакупайте "дорогие" книжки. А для эксперементов всегда время найдется!
аватар
 
alex-all 20 0
Михаил Куркубет, точно подмечено, сам уважаю процедурки именно за это
аватар
 
Михаил Куркубет 24 0
Битмап и процедурные карты - две разные вещи. Сам не майщик, но так понял что при подобном подходе можно более менее реалистично анимировать зрачок и рудужку (расширение\сужение зрачка и изменение размера роговицы). Чево при тупом текстурирование битмапом в принципе не возможно.
аватар
 
Cubus 2 0
Хороший урок именно по процедурному текстурированию. Фотошоп с проекциями это совершенно другая тема. Причем она тут вообще?. Даже если просто с хайэнда перевел за то уже респект, а то половина молодых моделеров по буржуйски даже "мама" не прочитают.
аватар
 
Миша Ершов 325 0
Модератор форума
Думаю предложенный способ моделирования глаза не самый лучший.
На мой взгляд эффективнее делать по-старинке, с помощью старины Фотошопа и проекционных координат.
Ну а если урок воспринимать как описание инструментария, а не эффективный способ создания глаза, то очень даже неплохо.
Успехов!
2 | След.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 289 уникальных посетителей