2013-10-02 3 views
2

텍스쳐와 AO가있는 오브젝트를 만들었습니다. 그것들은 Maya (Layered Texture)의 다른 UV 세트에 있으며 마야에서는 매시가 괜찮아 보입니다.유니티 3D 다중 UV 세트

Unity3D에서 어떻게 동일한 효과를 얻을 수 있습니까?

두 번째 UV 세트를 사용할 수 없습니다.

+0

Light2D를 제외한 다른 어떤 것에도 Unity2의 내장 쉐이더는 UV2를 사용하지 않습니다. 자신 만의 셰이더를 작성해야합니다. – Jessy

+0

Unity Asset Store에는 많은 셰이더가 있습니다. 이미 AO에 UV2를 사용하는 것이 가능합니다. 약간의 비용이 들지만, 셰이더 프로그래밍을 배우는 데 투자하는 것보다 비용이 적게 듭니다. (이것은 버텍스 AO 지원 https://www.assetstore.unity3d.com/#/content/8880을 언급합니다. 당신이 원하는 것을 확인하기 위해 연락 할 수 있습니다.) – Calvin

답변

4

이렇게하는 셰이더를 작성해야합니다. 아주 최소한의 예가 있지만 specular 등의 것들을 좀 더 정교하게 설정할 필요가 있습니다.

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" 
    } 
+0

감사합니다. :) – eblue

+1

더 많은 정보를 필요로하는 사람들을 위해 메쉬에서 2 번째 UV 세트를 사용하고 intencity를 제어하기 위해 슬라이더를 추가했습니다 (floow2 uv_AoTex 변경 : TEXCOORD1; -> float2 uv2_AoTex : TEXCOORD1; half4 ao = tex2D (_AoTex, IN.uv_AoTex.xy);) -> half4 ao = tex2D (_AoTex, IN.uv2_AoTex.xy);) – eblue

+0

방금 ​​내가 알파 채널을 읽는 것으로 나타났습니다. 그것은 "#pragma surface surf Lambert alpha"이지만 전체 메쉬는 반투명합니다. 링크는 다음과 같습니다 (http://imageshack.us/a/img849/6179/dml8.jpg). 권리에는 Ao가 없습니다. – eblue