【问题标题】:Unity 3D multiple UV setsUnity 3D 多个 UV 集
【发布时间】:2013-10-04 09:33:40
【问题描述】:

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

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

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

【问题讨论】:

  • Unity 的内置着色器除了光照贴图外,没有一个使用 UV2。您需要编写自己的着色器。
  • Unity Asset Store 中有很多着色器可用。可能已经有一个将 UV2 用于 AO。可能会花一点钱,但可能比花几天时间学习着色器编程便宜。 (这个提到了顶点 AO 支持 assetstore.unity3d.com/#/content/8880 。也许可以联系他们以确认它是否符合您的要求。)

标签: import unity3d maya


【解决方案1】:

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

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

【讨论】:

  • 对于那些需要更多信息的人,我只是将其更改为使用网格中的第二个 UV 集并添加了一个滑块来控制强度(更改了以下 float2 uv_AoTex : TEXCOORD1; -> float2 uv2_AoTex : TEXCOORD1; 和 half4 ao = tex2D (_AoTex, IN.uv_AoTex.xy);) -> half4 ao = tex2D (_AoTex, IN.uv2_AoTex.xy);)
  • 顺便说一句,我刚刚注意到它不会读取 Alpha 通道,我修改为“#pragma surface surf Lambert alpha”但是整个网格是半透明的,这是一个链接@ 987654321@,右图没有Ao。
  • 您想要 Alpha 透明度吗?如果 pragma 行包含 alpha,则上面的示例应该可以工作;但你得到什么取决于主要的 alpha 通道中的内容。如果您不想要透明度,请使用 o.Alpha = 1;是否有可能您的 Alpha 通道被反转了?
  • 这不仅仅发生在透明度上,一个没有任何 alpha 贴图或透明度的简单漫反射纹理会产生相同的效果,直到现在我可以通过使用剪切透明度来解决它,但现在这个着色器可以不要那样绕过它。
  • @eblue 肯定是 uv2_AoTex 之后的 2 使它工作,没有它它只使用 uv 通道 1...非常奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2020-11-15
  • 2020-12-30
  • 1970-01-01
  • 2019-06-10
  • 2018-05-21
相关资源
最近更新 更多