Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Textura Alpha y sombras projectadas

Iniciado por vlandaroth, Octubre 06, 2015, 05:19:35 AM

Tema anterior - Siguiente tema
Hola a todos, soy nuevo en Unity.
Importe mi modelo creado en Blender Low poly, y resulta que no soy muy bueno con los shaders.
El problema es el siguiente, comence con el problema de que Unity solo me dibujaba una cara del poligono, (Lo solucione con el "Cull off" el cual lo coloque en el standard shader y lo guarde como un shader nuevo) hasta ahi OK. ahora el problema es que quiero darle un toque artistico y no puedo lograrlo.
baje unos Toon Shaders para ir dando un rumbo, pero no logro hacer que:
1-Dibuje solo una sombra (como los dibujos anime) o que las sombras de un objeto proyecten en mi personaje.
2-que la textura del pelo sea Alpha-(dejo una foto para que puedan apreciarlo) y sin sombra, ya que puedo lograr que sea alpha map en el "Custom Shader" (el que modifique) pero no puedo quitarle la sombra. les dejo el script del shader que estoy usando (no es de mi autoria) y fotos para que vean a lo que quiero llegar.
En el shader dice Lighting Off yo lo cambie a "On" pero no hizo nada.Shader "TSF/Base1" 
{
    Properties 
    {
        [MaterialToggle(_OUTL_ON)] _Outl ("Outline", Float) = 0                         //0
        [MaterialToggle(_TEX_ON)] _DetailTex ("Enable Detail texture", Float) = 0     //1
        _MainTex ("Detail", 2D) = "white" {}                                        //2
        _ToonShade ("Shade", 2D) = "white" {}                                          //3
        [MaterialToggle(_COLOR_ON)] _TintColor ("Enable Color Tint", Float) = 0     //4
        _Color ("Base Color", Color) = (1,1,1,1)                                    //5    
        [MaterialToggle(_VCOLOR_ON)] _VertexColor ("Enable Vertex Color", Float) = 0//6        
        _Brightness ("Brightness 1 = neutral", Float) = 1.0                            //7    
        [MaterialToggle(_DS_ON)] _DS ("Enable DoubleSided", Float) = 0                //8    
        [Enum(UnityEngine.Rendering.CullMode)] _Cull ("Cull mode", Float) = 2        //9    
        _OutlineColor ("Outline Color", Color) = (0.5,0.5,0.5,1.0)                    //10
        _Outline ("Outline width", Float) = 0.01                                    //11
        [MaterialToggle(_ASYM_ON)] _Asym ("Enable Asymmetry", Float) = 0            //12
        _Asymmetry ("OutlineAsymmetry", Vector) = (0.0,0.25,0.5,0.0)                 //13
        [MaterialToggle(_TRANSP_ON)] _Trans ("Enable Transparency", Float) = 0       //14
        [Enum(TRANS_OPTIONS)] _TrOp ("Transparency mode", Float) = 0                //15
        _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 
        
                                                                          //16
    }
   
    Subshader 
    {
        Tags { "RenderType"="Opaque" }
        LOD 250
        ZWrite On
           Cull Off
        Lighting Off
        Fog { Mode Off }
        
        Pass 
        {
            Name "BASE"
            CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #pragma fragmentoption ARB_precision_hint_fastest
                #include "UnityCG.cginc"
                #pragma glsl_no_auto_normalization
                #pragma multi_compile _TEX_OFF _TEX_ON
                #pragma multi_compile _COLOR_OFF _COLOR_ON                
                #if _TEX_ON
                sampler2D _MainTex;
                half4 _MainTex_ST;
                #endif
                
                struct appdata_base0 
                {
                    float4 vertex : POSITION;
                    float3 normal : NORMAL;
                    float4 texcoord : TEXCOORD0;
                };
                
                 struct v2f 
                 {
                    float4 pos : SV_POSITION;
                    #if _TEX_ON
                    half2 uv : TEXCOORD0;
                    #endif
                    half2 uvn : TEXCOORD1;
                 };
               
                v2f vert (appdata_base0 v)
                {
                    v2f o;
                    o.pos = mul ( UNITY_MATRIX_MVP, v.vertex );
                    float3 n = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal);
                    n = n * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
                    o.uvn = n.xy;
                     #if _TEX_ON
                    o.uv = TRANSFORM_TEX ( v.texcoord, _MainTex );
                    #endif
                    return o;
                }                  sampler2D _ToonShade;
                fixed _Brightness;
                
                #if _COLOR_ON
                fixed4 _Color;
                #endif
                
                fixed4 frag (v2f i) : COLOR
                {
                    #if _COLOR_ON
                    fixed4 toonShade = tex2D( _ToonShade, i.uvn )*_Color;
                    #else
                    fixed4 toonShade = tex2D( _ToonShade, i.uvn );
                    #endif
                    
                    #if _TEX_ON
                    fixed4 detail = tex2D ( _MainTex, i.uv );
                    return  toonShade * detail*_Brightness;
                    #else
                    return  toonShade * _Brightness;
                    #endif
                }
            ENDCG
        }
    }
    CustomEditor "TSF"
    Fallback "Diffuse"
}

Imagen 1 tiene un personaje Low poly y otro un poco mas suavizado. el low poly (izquierda) tiene el Shader TSF (toon shader). el pelo tambien lo tiene pero no me da la transparencia.

imagen 2 el Low poly tiene pintado con Photoshop sobre la foto para que ustedes vean lo que quiero lograr o algo parecido. el suavizado tiene el custom shader con -cull off-

Imagen 3 el low poly tiene el TSF shader activo pero el pelo tiene custom shader (vieron como cambia jejeje) pero si notan el pelo tiene sombra del (no proyectada por otro objeto) sino la sombra del mismo poligono que no se como sacarla o disminuir las capas de sombras .

Imagen 4 esta retocada en Photoshop- si ven la cara del personaje tiene la sombra del pelo.

las ultimas dos son imagenes a modo de muestra.

muchas gracias desde ya y espero que puedan ayudarme.

 

Etiquetas: