1-1. 학습환경 만들기

3D Object -> Plane 생성 -> Position값을 (0 , 0, 0)으로 설정 -> 이름을 Floor로 변경

 

Create Empty를 생성 -> 이름을 TrainingArea로 변경

 => 이것은 추후에 Agent가 학습을 하는 환경이 된다.

 

3D Object -> Sphere 생성 -> 이름을 RollerAgent로 변경 -> Position값을 (3, 0.5, 0)으로 설정

 

3D Object -> Cube 생성 -> 이름을 Target으로 변경 -> Position값을 (-3, 0.5, 0)으로 설정 -> Tag에 Target을 추가한 후 적용

 

1-2. Agent와 Target 쉐이더 및 메테리얼 만들기

RollerAgent쉐이더와 메테리얼을 생성 -> 생성된 쉐이더를 RollerAgent 메테리얼에 드래그앤드롭 -> RollerAgent쉐이더 수정

Shader "Custom/RollerAgent"
{
	Properties
	{
		redController("Red", Range(0,1)) = 1.0
		greenController("Green", Range(0,1)) = 1.0
		blueController("Blue", Range(0,1)) = 1.0
	}
		SubShader
	{
		Tags { "RenderType" = "Opaque" }
		LOD 200

		CGPROGRAM
		#pragma surface surf Standard fullforwardshadows
		#pragma target 3.0

		sampler2D _MainTex;

		struct Input
		{
			float2 uv_MainTex;
		};

		UNITY_INSTANCING_BUFFER_START(Props)
		UNITY_INSTANCING_BUFFER_END(Props)

		float redController;
		float greenController;
		float blueController;


		void surf(Input IN, inout SurfaceOutputStandard o)
		{
			o.Emission = float3(redController, greenController, blueController);
		}
		ENDCG
	}
		FallBack "Diffuse"
}

Target쉐이더와 메테리얼을 생성 -> 생성된 쉐이더를 Target 메테리얼에 드래그앤드롭 -> Target쉐이더 수정

Shader "Custom/Target"
{
    Properties
    {
        redController("Red", Range(0,1)) = 1.0
        greenController("Red", Range(0,1)) = 1.0
        blueController("Red", Range(0,1)) = 1.0  

    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        UNITY_INSTANCING_BUFFER_START(Props)
        UNITY_INSTANCING_BUFFER_END(Props)


        float redController;
        float greenController;
        float blueController;

        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            o.Emission = float3(redController, greenController, blueController);
        }
        ENDCG
    }
    FallBack "Diffuse"
}

 

수정된 각 쉐이더가 적용된 메테리얼을 알맞게 적용

 

1-3. 학습을 위한 DeadZone만들기

3D Object -> Plane을 생성 -> 이름을 DeadZone으로 변경 -> Posiont 값을 (0, -2, 0)으로 수정 ->

Scale값을 (2, 2, 2) 수정 -> DeadZone이라는 Tag를 추가 후 적용 -> 

DeadZone 오브젝트의 Mesh Renderer를 비활성화

※ 이는 학습하면서 오답일 경우 감소보상과 재학습을 위한 용도

 

1-4. Prefab으로 만들기

위에서 생성한 TrainingArea를 Prefab으로 생성

효율적인 학습을 위해 총 9개의 TrainingArea를 생성 및 배치

 

'Unity3D > 인공지능(ML-Agent)' 카테고리의 다른 글

4. ML-Agent를 해보면서..  (0) 2021.03.04
3. ML-Agent 학습하기  (0) 2021.03.04
2. ML-Agent 학습 준비하기  (0) 2021.03.04
Unity 인공지능_ML-Agent  (0) 2021.03.04

+ Recent posts