我创建了一个具有纹理和 AO 的对象,它们位于 Maya 中的不同 UV 集(具有分层纹理)中,并且在 Maya 中,mash 看起来不错。
如何在 Unity3D 中实现相同的效果?
我无法统一使用第二个 UV 集。
您需要编写一个着色器来执行此操作。这是一个非常小的示例,但您可能需要对镜面反射等进行更精细的设置。
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"
}