LOD是Level Of Detais 的简称,多细节层次,根据摄像机与物体距离,unity会自动切换模型。一般离摄像机近的时候显示高模,离摄像机远的时候显示低模,借此来提升性能。

 

如果你在Blender里创建了一组名称以_LOD0,_LOD1,_LOD2等结尾的网格,则将网格导入Unity时自动为您创建具有适当设置的对象的LOD组。 例如,如果网格的基本名称是Player,则可以创建名为Player_LOD0,Player_LOD1和Player_LOD2的文件来生成具有三个LOD级别的对象。 

 

 导出FBX,导入到Unity,就可以直接看到LodTest上有LOD Group的组件了。

LOD Fade

可以通过选择具有所有LOD的GameObject并在LOD组内部将Fade Mode设置为Cross Fade并启用Animated Cross-fading来启用LOD Fade。

 

 

 

 

 然后去keijiro的github下拿到CrossFadingLod.shader的文件,做成材质,然后把材质都赋给LodTest下的3个物体,为的是让他们有个渐变的过渡。或者直接在下面复制

Shader "Custom/CrossFadingLod"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        LOD 200
        
        CGPROGRAM

        #pragma multi_compile _ LOD_FADE_CROSSFADE

        #pragma surface surf Standard alpha:fade
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

        void surf(Input IN, inout SurfaceOutputStandard o)
        {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
#ifdef LOD_FADE_CROSSFADE
            o.Alpha = c.a * unity_LODFade.x;
#else
            o.Alpha = c.a;
#endif
        }
        ENDCG
    }
    FallBack "Transparent/Diffuse"
}

 

 

 

关于Lod的链接:https://docs.unity3d.com/Manual/class-LODGroup.html

 

posted on 2020-07-16 18:30  魔域大道  阅读(790)  评论(0)    收藏  举报