Наложение текстуры по маске 2Д

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Наложение текстуры по маске 2Д

Сообщение Alimath 19 сен 2011, 13:08

Вопрос вот в чем. У меня есть рисунок(png), который представляет собой контур горы с закрашенной нижней частью(просто закрашено одним цветом). Поверх этой горы мне нужно наложить текстуру(опять-таки в формате png), но текстура должна наложиться только на закраженную часть горы. Остальная часть должна остаться прозрачной, как и до наложения.
Как такое можно реализовать в юнити?
Alimath
UNец
 
Сообщения: 14
Зарегистрирован: 04 сен 2011, 18:23

Re: Наложение текстуры по маске 2Д

Сообщение ArtUni3d 19 сен 2011, 13:57

А куда вы собираете накладывать текстуру? Не проще сразу нарисовать требуемую текстуру и наложить её в естественном виде?
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Наложение текстуры по маске 2Д

Сообщение Guyver 19 сен 2011, 13:57

разумеется в шейдере дискардить (discard) пиксели ...

ну или альфой в текстуре.
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Наложение текстуры по маске 2Д

Сообщение Alimath 19 сен 2011, 15:07

ArtUni3d писал(а):А куда вы собираете накладывать текстуру? Не проще сразу нарисовать требуемую текстуру и наложить её в естественном виде?

такой вариант мне к сожалению не подходит. Мне требуется именно превратить одну текстуру в маску и желательно по альфе.

Guyver писал(а):разумеется в шейдере дискардить (discard) пиксели ...

Я так понял что это надо писать свой шейдер?

В общем еще немного разъясню чего я хочу добиться. У меня есть форма горы (задана текстурой №1). и есть штук 10 разных текстур для этой горы. Мне требуется именно сделать так, чтобы на форму №1 я мог накидывать эти текстуры.
другими словами у меня есть:
маска
Изображение

текстура
Изображение

а вот таким должен быть результат:
Изображение
Alimath
UNец
 
Сообщения: 14
Зарегистрирован: 04 сен 2011, 18:23

Re: Наложение текстуры по маске 2Д

Сообщение DbIMok 19 сен 2011, 15:17

а почему "гора" не может быть сразу с маской? т.е. что мешает использовать сразу "результат"?
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Наложение текстуры по маске 2Д

Сообщение Alimath 19 сен 2011, 15:39

DbIMok писал(а):а почему "гора" не может быть сразу с маской? т.е. что мешает использовать сразу "результат"?

"горы" будут создаваться в случайном порядке, и если сделать сразу результат, то будут проблемы на стыках
Alimath
UNец
 
Сообщения: 14
Зарегистрирован: 04 сен 2011, 18:23

Re: Наложение текстуры по маске 2Д

Сообщение DbIMok 19 сен 2011, 19:28

тогда да, шейдер оптимальный вариант
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Наложение текстуры по маске 2Д

Сообщение Alimath 19 сен 2011, 21:41

DbIMok писал(а):тогда да, шейдер оптимальный вариант

А насколько сложно реализовать такой шейдер? или может быть уже где-то есть готовый? т.к. я в шейдерах полный 0.
Alimath
UNец
 
Сообщения: 14
Зарегистрирован: 04 сен 2011, 18:23

Re: Наложение текстуры по маске 2Д

Сообщение Paul Siberdt 19 сен 2011, 21:54

Тини вингс убивец? Я тоже делаю тинивингсового убивца :D

Вариантов решения наберется с дюжину... наиболее безумный из только что выдуманных - бросить на горки кубомап с полосками :-
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Наложение текстуры по маске 2Д

Сообщение DbIMok 19 сен 2011, 23:34

да, есть готовые, которые используются в [unity 3D] + справка
Синтаксис:
Используется glsl
Shader "Custom/Mask" {
        Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
                _MaskTex ("Mask (RGB) Trans (A)", 2D) = "white" {}
                _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200
               
                CGPROGRAM
                #pragma surface surf Lambert alphatest:_Cutoff

                sampler2D _MainTex;
                sampler2D _MaskTex;

                struct Input {
                        float2 uv_MainTex;
                        float2 uv_MaskTex;
                };

                void surf (Input IN, inout SurfaceOutput o) {
                        half4 tex = tex2D (_MainTex, IN.uv_MainTex);
                        half4 mask = tex2D (_MaskTex, IN.uv_MaskTex);
                        o.Albedo = tex.rgb;
                        o.Alpha = mask.a;
                }
                ENDCG
        }
        FallBack "Diffuse"
}

подберите нужные вам параметры самостоятельно. например, замените alphatest:_Cutoff на alpha. здесь используется 2 UV, используйте одно, если не нужно, поменяйте значение LOD...
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Наложение текстуры по маске 2Д

Сообщение Guyver 20 сен 2011, 07:39

хех )) тут через бленд весь слой с опакью свойством.

т.о. все слои нарисуются 100% (овердро большой если слоёв много) ... можно для шейдеров модели 2.0 + сделать через иф и дискард ... местами будет быстрее (это в случае, если по филлрейту ударит ваш фон ..)


ещё вариант, стенсил .. там ваще всё клёва .. только не очень в курсе возможно ли юзать стенсил в юньке.
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Наложение текстуры по маске 2Д

Сообщение DbIMok 20 сен 2011, 13:05

а я бы делал на ffp, но суть учебного примера ведь не в этом. у всех своя специфика, каждый волен вылизывать свои шейдеры так, как считает нужным. человеку же нужно чтобы 1. было понятно. 2. работало. имхо, этот шейдер наиболее подходит под данные условия
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Наложение текстуры по маске 2Д

Сообщение Alimath 21 сен 2011, 10:47

Всем большое спасибо за помощь. Буду читать про шейдеры.
Alimath
UNец
 
Сообщения: 14
Зарегистрирован: 04 сен 2011, 18:23


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 13