SoftimageRu Форум -> Bump в XSI (v2)

Новости • Форум • Помощь • Поиск • Участники • Календарь • База


Страницы: (2) [1] 2   ( Перейти к первому непрочитанному сообщению ) Ответ в темуОтвет      Создание новой темыНовая тема   

> Bump в XSI (v2)   
OZazello
Профиль
Статус: Fool Power
Группа: Элита
Рейтинг: 10
С момента написания первого туториала по бампу в XSI прошло много времени, но я постоянно сталкивался с проблемами, то по маске бамп не обрезать, то вообще его нет. Естественно это происходило от непонимания, а вернее от нехватки информации по mentalRay. В конце концов информация (по крайней мере её часть) была найдена, изучена и систематизирована. И теперь я попытаюсь поставить точку в этой (надо сказать порядком надоевшей) истории.

Итак, лирическое отступление закончено, перейдем непосредственно к изучению.
Для туториала были подготовлены три карты (Рис.1):

 

Первые две для бампа, последняя для маски.

Но сначала теоретическая часть.

Рис.1

Как видно из картинки, карта бампа нанесена на объект и расположенна на нем используя UV координаты. Каким образом получает MR (Mental Ray) информацию о бампе из текстуры? Посмотрите на Рис.2.

Красная точка показывает собой место откуда шейдер запрашивает информацию о бампе. Зеленые точки это шаг (Step). Между красной и зеленой точкой происходит усреднение цвета, который затем используется для информации как отклоняется нормаль относительно поверхности. Т.е. шейдер получает значение нормали из геометрической поверхности, затем (если есть бамп) высчитывает нормаль бампа, cкладывает эти две нормали и отдает данные на рендер (ну или дальше по шейдеру).

Зачем нужен Step? Предположим мы используем 2K картинку для бампа. В таком случает, чтобы бамп учитывал такое больше разрешение нам необходимо уменьшить Step. Иначе мы можем потерять мелкие детали. В XSI еденица в значении Step является размером картинки. Соответственно, чтобы получить максимальное кол-во информации для бампа надо в значение Step поставить число 1/2048 (вы не забыли что у нас картинка 2K ?). Естественно поле step покажет 0, однако на самом деле там будет число 0.00048828125. (если проделывать операцию по изменению шага в скрипт едиторе, то можно контролировать какие числа получаются).
Если поставить в поля Step 1 1 1, это значит, что вся картинка используется для расчета нормали бампа.
Если мы изменяем размер объекта, то нам необходимо так же изменить и поле Step. Увеличим Grid в пять раз, тогда в step необходимо вбить [значение Step]/5, а в Factor
[значение фактора]/5.
Если вы увеличиваете текстуру с помощью Repeats (в ноде Images\advanced) то надо поступать аналогичным способом. Делить знаение step на число увеличения.
При увеличении и там и там:
[значение steps]/[фактор Scale]/[фактор Repeat]


Теперь перейдем к практическим занятиям. Создадим Grid и сделаем на нем Texture Support. Уменьшите Texture Support
на 30-40% относительно центра.

1. Получение бампа из картинки или процедурного шейдера (Рис. 3)

Тут все очень просто. Присоединяем картинку или процедурный шейдер на вход BumpMap_Generator (Nodes\Bump\Bumpmap Generator), а BumpMap_Generator присоединяем ко входу Bump в Phong шейдере (или любой другой шейдер у которого есть вход bump), или ко входу Bump в Material. Присоединение ко входу Phong называется локальный бамп. К материалу - глобальный бамп. В данном случае нет никакой разницы, куда присоединять.

2. смешивание двух карт для бампа. (Рис. 4,5,6)

Первый способ.

Как видим тут тоже нет ничего сложного. Мы используем ноду ImageLookup и подаем на воход coord ноду Vector_state. Данная нода (VectorState) говорит какие координаты использовать, в данном случае Texture Vector, это означает, что для нанесения бампа будут использовать UV координаты поверхности, которые задаются Texture Projection.
Нода Mix2colors указыавет как и в какой пропорции смешивать карты. В данном случае стоит Mix, а Weight управляет весом карт.

Второй способ:


На вход Bump_Generator подаем процедурную текстуру Cloud (nodes/texture generator/cloud). У данной ноды есть вход coord на который мы подаем ноду vector_State с параметром Texture Vector. Так же у Bump_Generator ставим поле Base Normal = Relative to input normal, чем мы указываем что нормали будут высчитываться относительно входа Normal. На этот вход мы подаем Bump_Generator1 и задаем текстурные координаты .
Обязательно включите в Bump Generator галочку Clamp. Она укажет образать бамп по Texture Projection.

Учтите, чем больше Bump_Generator`ов в дереве шейдера, тем больше будет рассчитываться шейдер, т.к. каждая такая нода рассчитывает бамп для поверхности.

Третий способ:


В данном случае для смешивания используется нода Vector_math_Vector (Nodes/math/vector-vector). в ней указываем что надо делать с векторами (сложить). Опять не забудьте в Bump_Generator включить Clamp чтобы обрезать текстуры по Texture_Projection.

Обрезание бампа по маске(Рис. 7)

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

Все делается через ноду Mix_8colors (Nodes/mixers/mix 8 colors). Base Color в миксере ставим черным и включаем использование Layer 2. значения Mode у Layer1 и Layer2 я установил в Add. Естественно, в зависимости от задач это значение нужно менять. Попробуйте поставить Mix и посмотрите, что произойдет.

Bump2.png обрезается по процедурной маске Checkerboard. Она заводится в миксере на weight1 указывая, где нужен бамп, а где нет.
Нода 3D_vein подается на color2 ноды Mix_8Colors а маской дня неё служит BumpMask.png, которая подается на weight2.
Обратите внимание, что между 3d_Vein и Vector State (вы не забыли, что Vector State должен быть равен Texture Vector?) стоит нода Texture_edit (Nodes/texture space controller) с помощью которой мы можем управлять размером, кол-ом повторений и т.д. ноды 3d_Vein. (собственно Texture Edit вставлен тут просто для примера)
Mix_8Color мы подаем на который ссылается на текстурные координаты (Texture Projection).
Теперь, если вам необходим дополнительный бамп в другом месте поверхности смикшируйте Bump_Generator с другим Bump_Generator`ом как было показано выше (например через Vector-Vector) и уажите другие текстурные координаты для второго Bump_Generator`а.

Трехмерные координаты для Bump.

По-моему все ясно. Не забудьте отключить Clamp в Bumpmap_generator (clamp обрезает текстуру по TextureProjection и здесь активный Clamp не даёт ничего хорошего), и указать Spatial Texture Projection. Как видно из названия (Spatial = пространственный), данные текстурные координаты задают UVW пространство для нанесения 3D текстур и 3D бампа.
Так же это было проверено на нодах DarkTree. Все замечательно работает.

BumpMap

 

Осталось рассмотреть ноду BumpMap (Nodes\Bump\BumpMap).
Данная нода является полным аналогом входа Bump на Material. Она необходима для таких шейдеров, которые не имеют входа Bump. Например, Cooktorrance. Использование этой ноды показано ниже.

Вы скажете, а в чем проблема? Заведем BumpGenerator на вход Bump ноды Material и получим аналогичный результат. И будете правы, но это просто пример. А вот более сложное дерево шейдера с использованием Bumpmap:


Обратите внимание на ноду Image (выделена белым) и Color_share. Нам необходимо получить текстурные координаты для нанесения бампа (почему не будет работать без этой конструкции я так и не смог понять, хотя BumpGenerator и ссылается на TextureProjection, но без подавания на вход Duffuse чего-нибудь бамп не работает. Очередные пробелы в образовании :)


Персональное сообщениеСайт пользователяICQAOL
Цитировать сообщение Дата 29.04.2004 - 18:50 Top
Ё-моё
Профиль
Статус: Энерджайзер
Группа: Заслуженные артисты
Рейтинг: 0
Ещё одна полезная нода для работы с бампом (IMG:http://softimage.ru/images/inter/zip.gif)Mix_8vectors.zip.

Пример использования приведен ниже.
Login require!
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 30.04.2004 - 09:25 Top
Ё-моё
Профиль
Статус: Энерджайзер
Группа: Заслуженные артисты
Рейтинг: 0
сорри, до сих пор не понял как 2 картинки загрузить.

Это дерево к картинке выше.
Login require!
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 30.04.2004 - 09:27 Top
Bunch
Профиль
Статус: Херосимо
Группа: Заслуженные артисты
Рейтинг: 1
Попытаюсь объяснить своё предположение(не более)
Нода Color2Scalar возвращает значения в диапазоне от 0 до 1
Величина значения bump factor может варьироватся теоретически от минус бесконечности до плюс бесконечности чтобы побороть эту несправедливость вводится нода Change Range
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 5.05.2004 - 09:51 Top
OZazello
Профиль
Статус: Fool Power
Группа: Элита
Рейтинг: 10
хехе, а в 4 XSI нода ChangeRange между Color2Scalar и фактором бампа на Cell не нужна. все-таки это был баг :) (ну или фича, уж кому как больше нравится). Что и следовало доказать
Персональное сообщениеСайт пользователяICQAOL
Цитировать сообщение Дата 6.05.2004 - 21:52 Top
Bunch
Профиль
Статус: Херосимо
Группа: Заслуженные артисты
Рейтинг: 1
Оз мир устоял:) теперь по умолчанию второй предел берется 0
т.е. даже в 4ке ты не получишь без ноды Change Range маску где она половина имеет отрицательный фактор а вторая положительный
так что баг или фича суди сам:)
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 7.05.2004 - 10:16 Top
depol
Профиль
Статус: кибермух
Группа: Администраторы

классная статья Оз B) Спасибо
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQ
Цитировать сообщение Дата 16.09.2004 - 04:32 Top
uno
Профиль
Статус: Мексиканский Тушкан
Группа: Редакторы
Рейтинг: 15
script от guillaume laforge >>>
устанавливает корректные значения steps в Bumpmap_generator и Images Nodes для всех материалов

TheGoodBumpStep.js
Login require!
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 13.09.2005 - 16:49 Top
Lir
Профиль
Статус: алоЭЭ
Группа: Заслуженные артисты
Рейтинг: 3
Несколько раз прочитал тут этот тутор, но разницы между бамп нодой и бамп генератором не увидел. Еще не понимаю зачем последовательно подключать ноду генератора к ноде бампа, что мы таким образом получаем, усиление бампа?
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 27.08.2009 - 12:19 Top
OZazello
Профиль
Статус: Fool Power
Группа: Элита
Рейтинг: 10
Bump_Generator позволяет назначать на бамп отличные от основных текстурные координаты.

второй вопрос не очень понял. Нода бампа это Bumpmap? Или вход Bump на любых нодах?
Персональное сообщениеСайт пользователяICQAOL
Цитировать сообщение Дата 27.08.2009 - 16:18 Top
Lir
Профиль
Статус: алоЭЭ
Группа: Заслуженные артисты
Рейтинг: 3
Все, разобрался со вторым вопросом, спасибо за пояснение ... :thankyou:
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 28.08.2009 - 03:02 Top
bananov
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 3
В чем может быть проблема.
При подключении Bump map локально в шейдер то тени отображаются правильно, но если подключить глобально на материал, то получается лесенка из теней по полигонам. Хотя я больше ничего не трогал кроме как переключил bump.
Geometry Approximation включен 60 градусов. Image filtering выключен, при включении только чучуть исправляет ситуацию.
Login require!
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 8.02.2012 - 23:30 Top
bananov
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 3
заметил такой косяк при использовании architectural материала, если использовать phong то все нормально работает.
с normal map такая же ситуация что и с bump.

вложил сцену на всяк случай. может это только у меня такой глюк
Login require!
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 8.02.2012 - 23:44 Top
/voo-doo/
Профиль
Статус: три дэ бугор
Группа: Заслуженные артисты
Рейтинг: 7
некропост первого уровня :sarcastj:
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 9.02.2012 - 09:31 Top
Wats
Профиль
Статус: слон
Группа: Модераторы
Рейтинг: 17
bananov
Ну с архматом лучше в его порт подавать бамп, а не глобально на материал, тоже сталкивался с подобным и вроде как первый раз в 2011 версии такое вылезло.
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 9.02.2012 - 10:44 Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Страницы: (2) [1] 2  Ответ в темуОтвет      Создание новой темыНовая тема   

 

Текстовая версия