2

我创建了一个具有纹理和 AO 的对象,它们位于 Maya 中的不同 UV 集(具有分层纹理)中,并且在 Maya 中,mash 看起来不错。

如何在 Unity3D 中实现相同的效果?

我无法统一使用第二个 UV 集。

4

1 回答 1

4

您需要编写一个着色器来执行此操作。这是一个非常小的示例,但您可能需要对镜面反射等进行更精细的设置。

    Shader "Custom/twotex" {
        Properties {
            _MainTex ("Base (RGB)", 2D) = "white" {}
            _AoTex ("AO (RGB)", 2D) = "white" {}

        }
        SubShader {
            Tags { "RenderType"="Opaque" }
            LOD 200

            CGPROGRAM
            #pragma surface surf Lambert

            sampler2D _MainTex;
            sampler2D _AoTex;


            struct Input {
                float2 uv_MainTex : TEXCOORD0;
                float2 uv_AoTex :   TEXCOORD1;
            };

            void surf (Input IN, inout SurfaceOutput o) {
                half4 c = tex2D (_MainTex, IN.uv_MainTex.xy);
                half4 ao = tex2D (_AoTex, IN.uv_AoTex.xy);
                o.Albedo = c.rgb * ao.rgb;
                o.Alpha = c.a;
            }
            ENDCG
        } 
        FallBack "Diffuse"
    }
于 2013-10-04T01:33:40.497 回答