패키지매니저에서 Polybrush를 다운로드한다.

 

 

 

기존 프리팹의 애니메이션을 제거한다.(해당 기능을 구현할 시 애니메이션 사용 불가)

 

 

 

 

 

컴포넌트 세팅

 

 

셰이더 코드

Shader "Custom/Golem"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _MainTex2("Albedo (RGB)", 2D) = "white" {}
        _MainTex3("Albedo (RGB)", 2D) = "white" {}
        _MainTex4("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        CGPROGRAM
        #pragma surface surf Lambert
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _MainTex2;
        sampler2D _MainTex3;
        sampler2D _MainTex4;       
    
        struct Input
        {
            float2 uv_MainTex;
            float2 uv_MainTex2;
            float2 uv_MainTex3;
            float2 uv_MainTex4;
            float4 color:COLOR;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            fixed4 d = tex2D(_MainTex2, IN.uv_MainTex2);
            fixed4 e = tex2D(_MainTex3, IN.uv_MainTex3);
            fixed4 f = tex2D(_MainTex4, IN.uv_MainTex4);

            //o.Albedo = IN.color.rgb;
            o.Albedo = c.rgb;
            o.Albedo = lerp(o.Albedo, d.rgb, IN.color.r);
            o.Albedo = lerp(o.Albedo, e.rgb, IN.color.g);
            o.Albedo = lerp(o.Albedo, f.rgb, IN.color.b);
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

 

         Polybrush를 사용하여 Mesh Renderer에 생상을 칠해주고 셰이더에서  o.Albedo = IN.color.rgb; 로 색상을 확인한다.

rgb값을 활용해야하기 때문에 원하는 부위에 rgb 중 한가지 색깔을 칠하고 검정색(0)을 칠하여 lerp기능을 적용하지 않을 구간을 지정한다.

 

 

Ploybrush의 mesh export기능을 사용하여 메시를 파일을 생성한다.

해당 mesh 파일과 material을 적용하면 기존에 제작했던 메터리얼을 다른 Skinnned Mesh Renderer에서 Bone과 함께 적용하여 애니메이션을 사용할 수 있다.

+ Recent posts