Render.ru

Создание двустороннего шейдера в Maya

_HoRn_

Пользователь сайта
Рейтинг
2
#1
Есть вопрос - как сделать 2-сторонний шейдер для рендера.
Шейдер используется для решеток, стекла, поэтому должен поддерживать прозрачность на альфе.

В уроке http://www.render.ru/books/show_book.php?book_id=12 много неточностей, можно разбираться, отталкиваясь от него и обсуждать его,
но если есть возможность сделать такой шейдер через Ментал РЕй, то почему нет? А как?
 

_HoRn_

Пользователь сайта
Рейтинг
2
#3
Да, это все работает для шейдеров без дырок (и http://www.render.ru/books/show_book.php?book_id=12 тоже), но все прозрачные места, отмеченные в альфа-канале, рендерятся как черные, решение для поддержки прозрачности пока не найдено. Вот на картинке - односторонний полигон ясно показывает альфу. Но ведь народ постоянно имеет дело со стеклом, решетками, даже ветвями деревьев - должен же быть способ!
 

Вложения

al d

Знаток
Рейтинг
37
#4
в настройках текстуры, в разделе color balance стоит галочка Alpha Is Luminance?
 

_HoRn_

Пользователь сайта
Рейтинг
2
#7
На основе использованных материалов получил 3 разных графа, способа создания двухстороннего материала. Все они дают следующий результат при рендере. Приведу первый граф из
http://greensoda.squarespace.com/blog/2009/6/25/create-a-double-sided-shader-in-maya.html
 

Вложения

_HoRn_

Пользователь сайта
Рейтинг
2
#8
как ты дерево собираешь?.. про прозрачность не забыл?..
интересно. А один из блинов - это прозрачность? Alternative, можно поподробней? как чекер коннектится? И куда текстуру присоединить? Тут я попробовал, у меня вот такой изврат получается:
 

Вложения

Alternative

Активный участник
Рейтинг
8
#9
сейчас попробую поподробней..(см.рис)
есть 2 текстуры Color_True и Color_False(связь outColor-Color_If_True\Color_If_False)..они связаны с узлом типа Cond_Color, к которому подсоединен узел SemplerInfo_Color по средством связи FlippedNormal - FirstTerm..есть также карта смешивания AlfaMask, которая подсоединена в узлу Condition_Transp - связь outColor-Color_If_True\Color_If_False. узел семплера прозрачности подключен так же как и для цвета.. в итоге все сходится в узле шейдера типа Blinn ..связи, как уже можно догадаться, Cond_Color - Color, Cont_trans-Transparency
 

_HoRn_

Пользователь сайта
Рейтинг
2
#11
Получилось

Дано:
Текстура с альфа-каналом
альфа-канал = прозрачность
двухсторонний меш
Maya

Требуется:
создать двухсторонний материал с прозрачностью для рендера меша

Решение:
1. В Hypershade, вкладка Create Maya Nodes:
создаем материал Blinn и натягиваем его на меш
2. Создаем 3 узла типа File (trans, side1, side2) и в каждый в Image name вставляем нашу текстуру
3. Добавляем 2 узла condition (cond_trans, cond_color)
4. И создаем узел samplerInfo
5. Cвязи: samplerInfo.flippedNormal->Cond_color.firstTerm //xor secondTerm, неважно
6. side1.outColor->cond_color.colorIfTrue
side2.outColor->cond_color.colorIfFalse
7. trans.outTransparency->(cond_trans.colorIfTrue and cond_trans.colorIfFalse) //коннектим к двум сразу!
8. cond_color.outColor->blinn.color
9. cond_trans.outColor->blinn.transparency

Можно рендерить
 

Вложения

Сверху