В результате этого урока у вас должны получиться процедурные (т.е. созданные без использования текстур) трещины, как на заглавной картинке (она кликабельная).
Я использовал 3ds Max 2016 Ext.1 + SP1 и V-Ray 3.20.03.
Поскольку это процедурные трещины, то они совсем не зависят от UV-координат, а значит их можно добавлять на 3D объект, который не имеет нормальной UV развёртки.
Но есть и обратная сторона медали - такие трещины зависят от размеров объекта. Поэтому, чтобы у вас получились в точности такие трещины как у меня, вы должны использовать те же самые системные единицы, что и у меня, а также создать сферы такого же радиуса.
Поэтому заходим в Customize -> Units Setup -> Жмём большую кнопку вверху System Unit Setup -> Выставляем, чтобы 1 unit был равен 1 сантиметру. Всё, больше ничего не трогаем здесь.
Дальше создаёте GeoSphere радиусом 42 см.
Приступаем к созданию самой трещины.
Логика тут простая:
- Берём стандартную процедурную карту Noise (или намного продвинутую Bercon Noise, о которой я писал тут).
- Проделываем с ней манипуляции, чтобы остались только края, а не чёрно-белые пятна.
- Используем эту карту для выдавливания трещин с помощью дисплейсмента.
- Используем слегка модифицированную версию карты из п.2, чтобы сделать материал внутри трещин отличающимся от основного материала.
1. Логика создания карты трещины.
Вот такая сеть нод (дальше я будут карты (maps) называеть нодами, поскольку они соединяются в цепь нод) позволяет создать процедурную текстуру трещины в 3ds Max. Это я привёл скриншот из редактора материалов в режиме нод (Slate Material Editor). Если вы еще не перешли на нодовое отображение, то очень рекомендую. Это во много раз улучшает восприятие логики работы сложных материалов, а также убыстряется процесс работы с материалом.
Чтобы переключится в этот режим вам нужно -> открыть редактор материалов (клавиша M) -> в верхнем меню выбрать пункт Modes (режимы) -> переключиться с Compact Material Editor на Slate.
Теперь собственно объясняю логику. Читаем сеть нод слева направо.
За основу я взял карту BerconNoise (обозвал её JustNoise). Потом эту карту смешал саму с собой с помощью ноды Composite (обозвал её Difference, поскольку режим смешивания нужен Difference). Только на один вход ноды Composite я подал оригинал, а в другой слот - инвертированную версию (инвертировал с помощью стандартной ноды Color Correction, которую назвал Invert). И в конце, с помощью ноды ColorCorrect (это отдельный бесплатный плагин, который можно
2. Теперь о том, что делает каждая нода (карта).
2.1. BerconNoise.
Самая первая карта BerconNoise под названием JustNoise создаёт шум, на основе которого мы и будет делать трещину. От настроек этой карты зависит размер трещины, их плотность и детализированность. Мои настройки таковы:
Тут самое главное - это размер Size = 60. Размер влияет на размер трещин.
Также важна настройка Fractal с детализацией (Levels) = 15 (но думаю тут и 7 должно было хватить). Levels влияет на то насколько детализированной будет трещина.
2.2. Color Correction
Дальше карта Color Correction. Тут нужно поставить лишь одну галочку - Invert:
2.3. Composite.
Следующая карта Composite:
Здесь главное создать два слоя и верхний слой установить в режим смешивания Difference. В итоге мы получим чёрные края/линии и серые пятна между ними.
2.4. ColorCorrect.
Последняя карта - ColorCorrect, которую я назвал ClampNormalize:
Здесь важно поставить галочку Clamp для "обрезания" цвета в пределах от 0 до 0.05. Таким образом мы указываем 3ds Max'у, что нам нужно превратить весь светлый цвет в тёмно серый (0 - это чёрный, а 0.05 - это очень близко с чёрному). А отметив галочку Normalize, мы заставляем НОВЫЙ УРЕЗАННЫЙ диапазон цветов (от чёрного до тёмно серого) растянуть снова на ВЕСЬ
диапазон оттенков (от чёрного до белого).
Таким образом, изменяя в будущем верхний предел параметра Clamp, мы сможем контролировать ширину трещин. Чем больше этот параметр, тем больше ширина.
Конкретно в моём примере, значение 0.05 означает узкие трещины (как на заглавной картинке). А если поставить там 0.1, то я получу широкие трещины (картинка ниже кликабельна):
3. Теперь разберёмся с настройкой дисплейсмента.
Вот эту текстуру, что мы получили в конце цепи нод можно запихивать в слот Texmap модификатор VRayDisplacementMod, который мы накинем на нашу Геосферу. Его настройки будут следующими:
Тип дисплейсмента Type - 3D mapping. Величина дисплейсмента Amount - 1 см. Поправка Shift -1см (минус один см). Галочка, что это статическая геометрия Static - включена. Она ускорит рендер дисплейсмента, но если геометрия будет как-то изменятся во времени (не будет статичной), то появятся артефакты.
4. Настроим материал.
Материал может быть каким угодно. Я выбрал, что верхний - это будет блестящий толстый слой якобы белой краски, а сами трещины шероховатые и тёмные.
Подробно на настройках V-Ray материалов я останавливаться не буду, ведь я об этом написал замечательную серию статей.
Вот мои настройки блестящего белого материала:
Единственный новый параметр - это новый тип BRDF: Microfacet GTR (GGX). Я стараюсь его использовать везде, где только можно, ведь он прибавляет реалистичности материалу.
В результате, если мы отрендерим наши полученные трещины с таким материалом, то получим следующий результат (кликабельно):
Теперь нужно настроить материал для трещин:
Ну и самое главное, нужно теперь смешать эти два материала так, чтобы шероховатый был только внутри трещин, а блестящий везде вокруг.
Для этой цели используем материал VRayBlendMtl со следующими настройками:
Тут также всё просто. Базовый материал - это мой шершавый материал. Материал покрытия (Coat material) - это мой блестящий материал.
А вот моя карта NarrowClampNormalize в слоте Blend amount, по которой эти два материала будут смешиваться немножко хитрая.
За основу я взял карту ClampNormalize из пункта 2.4, но в ней я так подправил верхний и нижний лимиты параметра Clamp, чтобы они были почти одинаковыми:
При этом я сделал верхний лимит НОВОЙ карты слегка ниже верхнего лимита СТАРОЙ карты (которую я использовал для дисплейсмента). Для дисплейсмента я использовал значение 0.05, а для смешивания материалов (как видно со скриншота выше) - 0.045. Эта малюсенькая разница позволила закрасить не ВСЮ трещину тёмным шершавым материалом, а оставить на самом верху трещины узкую полоску из белого блестящего материала. Таким образом, я сымитировал толщину краски.
Ну а подняв нижний лимит почти до верхнего (было значение 0.0, а стало 0.04) я закрасил ВСЮ трещину шершавым материалом на 100%. Если бы я оставил там 0.0, то трещина была бы на 100% закрашена в шершавый материал ТОЛЬКО в самых глубоких её местах. А там где трещина не глубокая, там было бы смешение двух материалов (блестящего белого и шершавого тёмного) в какой-то пропорции. Это бы давало совсем нереалистичный результат.
5. Нюансы.
Если посмотреть на рендер из пункта 4, то видно, что верхний блестящий материал выглядит совершенно стерильно гладким и поэтому нереалистичным.
Чтобы это хоть как-то быстренько исправить, я добавил карту Normal Bump в слот Bump блестящего белого материала. В слот Normal я положил текстуру микроцарапин, а в дополнительный слот Additional Bump я положил карту Noise с мелким шумом в режиме Turbulence (цепь нодов смотрите на скриншоте ниже). Более подробно о том, как сделать текстуру микроцарапин и как правильно настроить карту Normal Bump я рассказывал здесь.
Подпишитесь на обновление блога (вот 3 причины для этого).
Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.
комментариев 8 к статье “Как создать реалистичные процедурные трещины 3ds Max, V-Ray”
Извините, в данный момент комметарии закрыты.
А у меня вопрос к автору, пробовал ли он сабстанс дезигнер? Всё таки там возможностей побольше в плане реализации различных процедурок.
Плюс можно вывести различные рульки для каждой ноды, что бы иметь возможность динамически изменять различные параметры.
Плюс там есть утилиты-конверторы уже готового пбс шейдера, в стандартные текстуры для использования оных с обычными рендерами.
К сожалению, еще не дошли руки у меня к этому пакету (я редко сам занимаюсь текстурированием).
Не могу поставить ColorCorrect ни в 2016 ни в 2014.
А какая ошибка?
Извиняюсь, что сразу не ответил. У нас временная разница большая, и я уже спал, живу на Сахалине. Дело в том, что я загружаю плагин как положено в папку plagins\plagins , а Max его не видит. В свитке Maps его нету вообще, Может его как-то по другому запускать? Или я его установил неправильно? Я из новичков, потому мог что-то упустить. Может подскажите?
Если Макс не видит плагин, то нужно добавить путь к плагину внутри 3ds Max: Customize -> Configure System Path -> закладка 3rd Party Plug-Ins -> жмёте кнопку Add… и добавляете путь. Всё плагин должен заработать.
Спасибо! Всё получилось!
Спасибо за пост !!!
http://3ddd.ru/galleries/gallery/nie_boisia_izmienienii
Побаловался и вот что получилось:
Еще раз спасибо за очень дельную информацию =)