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 |