En este momento estás viendo Unity – cómo hacer material de doble cara

 – Unity

Unity – cómo hacer material de doble cara – Unity

Unity – cómo hacer material de doble cara

– UnityAssets3Free

buenas , soy josel luis y aqui os traigo
esta nueva pregunta

Buscar el problema da varias soluciones, pero por alguna razón no funcionan en mi Unity3D 5.4. Como una cámara dentro de una esfera.

yo no veo cull y/o sides en material en el editor de Unity. En c#

rend = GetComponent<Renderer>();
mater = rend.material;
rend.setFaceCulling( "front", "ccw" );
mater.side = THREE.DoubleSide;

no funciona setFaceCulling y side propiedad.

¿Cómo hacer material de doble cara?

6 respuestas 6

Necesita un sombreador personalizado para activar el material de doble cara usando Cull Off
La forma más fácil/rápida de probar es crear una nueva Standard Surface Shader en el editor y ábrelo. agregar la línea Cull Off Abajo de LOD 200.

Ahora, una cosa a considerar es que los rayos no se renderizarán correctamente para las caras posteriores. Si quieres eso, recomendaría hacer modelos con 2 lados.

Usa o crea un shader con

Para eliminar

Visto aquí en este sombreador simple de 2 lados:

Shader "Custom/NewSurfaceShader" 
    Properties 
        
    
    SubShader 
         Cull off   
         Pass 
             ColorMaterial AmbientAndDiffuse
         
        
    

Tal vez mi respuesta para su versión de Unity no funcione, pero aquí hay una solución para las versiones más nuevas de HDRP en la imagen a continuación.

solo crea uno Borrador y editar:

Deberías escribir Cull off por debajo de LOD 100, arrástrelo a un nuevo material y configure una imagen de prueba; ahora arrastre el material a un objeto. ¡El rayo se renderizará correctamente! ( mi unity es 2019.4)

enter code here

Shader "Unlit/unlit"

    Properties
    
        _MainTex ("Texture", 2D) = "white" 
    
    SubShader
    
        Tags  "RenderType"="Opaque" 
        LOD 100
        Cull off
        Pass
        
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile_fog
            #include "UnityCG.cginc"
            struct appdata
            
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            ;
            struct v2f
            
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            ;
            sampler2D _MainTex;
            float4 _MainTex_ST;
            v2f vert (appdata v)
            
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            
            fixed4 frag (v2f i) : SV_Target
            
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return col;
            
            ENDCG
         

Puede usar un sombreador de superficie personalizado con Para eliminar pero las caras opuestas no recibirán la luz adecuada, ya que las normales son válidas solo para las caras delanteras, para las caras traseras las normales son opuestas a las caras. Si desea que la cara posterior se trate como la cara frontal y no quiere hacer un modelo con malla de doble cara para consumir doble memoria, puede dibujar en 2 pasa1 Pasar para la cara frontal y 1 para la cara posterior, donde puedes invertir la normal para cada vértice en sombreador de vértices. Usted puede utilizar Apártate y frente de matanza.

SubShader

     //Here start first Pass, if you are using standard surface shader passes are created automated, 
     //else you should specify Pass   
     Tags  ... 
     LOD 200
     Cull Back

     ...
     struct Input 
     
         ...
     
     ...

     ...
     //or vert & frag shaders
     void surf(Input IN, inout SurfaceOutputStandard p)
     
           //processing front face, culling back face
           ...
     
     ...

     //Here start second pass put automated by unity
     Tags ...
     LOD 200
     Cull Front

     #pragma vertex vert
     #pragma surface ...

     ...
     struct Input 
     
         ...
     
     ...

     void vert(inout appdata_full v)
     
           v.normal = -v.normal;//flip
     

     void surf(Input IN, inout SurfaceOutputStandard p)
     
           //processing back face, culling front face
           ...
     

Además, en Unity 2020.3, el sombreador URP/Lit tiene una opción de renderizar cara.

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,espero que te halla servido

Deja una respuesta