Unity Certified Associate: Game Developer (ver1)

tangoo·2022년 7월 1일
0

Unity

목록 보기
1/2
post-thumbnail

Unity Certified Associate : Game Developer를 학교에서 바우처를 제공해주셔서 응시하게 되었습니다.
2일 공부컷으로 통과하면서 총정리했던 것을 공유하겠습니다.

라이팅과 Materials 의 상호 작용

Object에는 Shader가 존재한다.
Normal Map : 표면 내용 더욱 정교하게 나타냄
Occlusion Map :간접 광선에서 밝거나 어둡게 구현되는 부분 결정
Smoothness: 부드러운 정도, 값이 높아지면 밝아지고 빛남
Specular Map : 빛나거나 어두운 부분을 결정

Light

PointLight : 10m 반경에 있는 구의 범위를 밝게 해줌
Directional Light : 빛과 Materials은 함계 작용해 게임의 전체 외형을 만듦, 빛은 적절하게 배치해줘야함.

게임에서의 라이팅

조명은 즉각적으로 일어나야한다.
조명이 이동하면서 캐릭터 등 사물이 그 조명에 실시간으로 반응함
조명을 미리 계산하고 캐시로 저장해 놓는 Light Baking 으로 보강하는 일이 많음
-> 반대로 Maya 같은 툴에서는 조명을 프레임 별로 계산한다.
라이팅 유형별 속성 분석

조명 옵션

각 조명의 옵션의 차이를 특히 모양을 집중적으로 공부!

Light Component -> 조명의 종류 , Baking , Color, Intensity등의 옵션 정의

Directional Light

->향해 있는 공간과 광선이 가리키는 지점
->평행하면서 무한히 넓어짐
-> Scene을 아우르는 평행한 원통
->광범위한 범위를 갖고 있어서 위치는 중요하지 않고, 회전 값에 따라 빛이 비춰지는 방향만 중요시 여김

Point Light

-> 빛을 내는 구체로 Transform 요소에 따라 한 장소에서 시작해 고정된 범위 혹은 반경으로 빛을 발산
->고정된 범위를 갖고 있어 빛이 뿜어져 나오는 범위와 부딪히는 오브젝트 개수를 제한한 할 수 있어 실시간 조명으로 중요함
-> Scene 내 노란색의 와이어 프레임 구체를 따름
-> 구체 노드의 반지름을 키워 반경을 넓힐 수 있음

SpotLight

->원뿔 모양으로 생김
-> 한 장소에서 시작해 원뿔 빛의 로컬 Z 축을 따라 빛 발산
-> 노드를 드래그 하여 범위를 넓힐 수 있음

Area Light

-> 빛의 직사각형
-> 유니티 유닛의 넓이의 높이를 따름
-> Baked Light 에서만 적용됨 -> 씬의 조명의 Baked 혹은 미리 계산되지 않는 이상 빛을 볼 수 없음
-> 평행하고 약하게 빛이 나오며, 커다락 구역에서 Spot 같은 지점으로 배출

Skybox (window->rendering-> light-> environment)

-> 씬의 뒷편에 보이는 하늘색 그라데이션 부분이 Skybox
-> 대기 두께, 하늘 색조, 지면, 노출량 등을 통제 가능
-> 하늘의 모습에 따라 씬의 밝기와 색상을 조절 가능

조명 설정하기

조명 앞에 오브젝트를 배치하는 과정이의 속도를 높임
Window -> Rendering->Lighting
창 오른쪽 하단에서 Generate Lighting 선택
Auto Lighting -> Rendering 더 빠름. ..자동으로 생성 됨

레이어로 라이팅에서 오브젝트 제외하기

실시간 조명의 최적화에 특히 유용
-> 조명에 필요한 조명 개수를 축소시킬 필요가 있음
-> Add Layer -> 새로운 레이어 추가 -> 추가한 레이어를 오브젝트에 할당
오브젝트 Light 컴포넌트에서 Culling Mask의 옵션을 해제하려면 해당하는 오브젝트에 조명이 비춰지지 않음.
-> Culling Mask : 레이어를 이용해 캐릭터에만 조명을 비춘다거나 , 방천장을 제외한 모든 물건으로부터 조명을 제외시킬 수 있음

Standard Shader

다용도 물리기반의 Shader
물리 기반 렌더링 워크플로우의 일부분
Material이 자신을 비추는 빛에 물리적으로 정확히 반응
빛에서 발산하는 입사각과 밝기 뿐 아니라 Shader에서 설정한 내용에 영향을 밝으며 Material이 얼나 부드럽고, 얼마나 반사되어지는 지 정의
Material은 조명없이 Material의 원래 색상만 있는 Albedo를 포함
Standard : Albedo, Metalic, Smoothness
Standard Specular Sharder : Specular Map, Smoothness

Rendering Mode

새로운 Material 생성 후 Rendering Mode 설정이 가능
Opaque : 표면 전제에 색상을 지닌 단단한 형태
Cutout : 이미지의 알파 채녈에 따라 일부를 자르거나 제거 (crossHair)
Fade Material : 켜고 끄는 사물에 적합 (업그레이드 동작 )
Transparent : 투명도를 지님

Type of Material

FX : Flare 타입이 있음, 불꽃이나 불 입자 같은 Texture로 여겨짐
GUI : Texture Shader 존재
Mobile : 모바일 특성에 맞는 다양한 Shader 존재
Nature : SpeedTree, SpeedTree Billboard 등 자연을 만들 수 있음
Particle : 투명하거나 투명도를 지님. 담배연기, 불꽃 등
Skybox: 씬에서 뒤덮인 하늘을 정의
Sprite Material : 2d게임에서 UI 요소로 사용
Unlit Material : 게임에서 빛에 반응하지 않고 텍스처와 투명도를 지닌 Material이 필요할 때 사용, 단색으로 조명과 상관 없이 해당 색상만 표시
Legacy Shader :Unity 기존 버전에서 온 기능, 오래된 프로젝트 작업할 때 기존 기능을 갖고 올 수 있음

Material 복사 수정
생성 : Project View 에서 create->Material 로 메터리얼 생성
복사 : 1) Ctrl +D로 복제가능 2) Edit ->Duplicate로 복제 가능

Color Picker에서 V(value)값을 높이면 Material의 진짜 색상이 드러난다.
->기존 메터리얼에 색상 추가도 가능하고, 투명하게 하고 싶다면 A(Alpha) 값 조절해주면 된다.

Shawdow 용 Mesh Render 속성

Mesh Renderer 의 Cast Shadows와 Receive Shadows는 그림자를 드리울 만한 조명이 있을 때 그림자가 드리워진다는 것
오브젝트가 그림자를 드리고 있을 때도 나타남
Cast 는 내그림자 Receive는 받아지는 그림자
Light에서 Shadow Type을 Soft Shadows로 변경
해당 조명에서 방에 드리워진 그림자가 보임
-> inspector->mesh Renderer -> lighthing -> cast shadow off

Shadow Type

Soft Shadow : 부드러운 그림자 , 거리에 따른 그림자의 확산 묘사, 그림자가 부드러움(나무와같은 물체 )
Hard Shadow : 딱딱한 그림자, 아티펙트가 보임 (가까운 물체 )

Strength : 그림자의 수치, 농도를 변경, 1에 가까울 수록 선명
Resolution : 그림자의 퀄리티를 결정함, Quality Settings는 메뉴의 Edit-> Project Settings -> Quality에서 사용 가능, 게임 전반적인 외견을 결정
Bias : 0에 가까울 수록 그림자가 오브젝트와 가까이서 시작함
Normal Bias : 그림자의 너비, 숫자가 높을 수록 너비가 축소됨.

Unity에서의 Hierachy 생성

오브젝트를 아래에 생성하여 계층 구조를 만들 수 있음
Tree 오브젝트가 부모 오브젝트 , Clock오브젝트가 자식 오브젝트
자식 오브젝트는 부모를 따라다님 (Child가 피봇을 흡수한것)

Unity에서의 물리 시스템에 대한 이해

유니티 물리 시스템은 2d, 3d 두가지
물리 시스템은 오브젝트에 실제 물리 체계의 요소를 적용함
Physics 2d는 3d 시스템과 유사하나 2d 오브젝트용으로 사용됨

Rigidbody 컴포넌트

오브젝트에 Rigidbody컴포넌트 추가 (add component)
Rigidbody 속성
Mass : object의 무게나 중량
Drag : 씬에서 Rigibody가 물리력과 공기저항에 반응하는 방법
Use Gravity : 중력을 적용할지 결정
Is Kinematic : 추가적인 애니메이션에 관해 결정
Interpolate : 오브젝트의 외견, 위치, 다음 모션의 목적지 등 결정
Collision Detection : 빠른 오브젝트에 적용, 다른 오브젝트와 충돌 시 다양한 체크 방법 제공
Contraints : 하나 혹은 그 이상의 포지션과 회전을 고정

Collider

Collider는 물리 시스템의 주요 요소
플레이어의 이동 막기
광선을 발사해 장애물 찾기(Raycast를 이용해 Ray 발사하고 충돌체 감지)
오브젝트끼리 부딪히기
오브젝트에 Collider 추가
Box Collider, Sphere Collider 는 런타임과 게임 중에 최소한의 계산을 요구하는 간단한 방식
Mesh Collider는 폴리곤에 맞춰서 계산해서 복잡하다 .

Sphere Collider

Sphere Collider는 녹색 와이어 구형으로 나타남
Edit Collider 버튼을 누르면 녹색 점을 이용해 크기 변경 가능
여러개의 Collider 배치해서 물체의 외형에 맞게 수정이 가능하다.

게임 레벨 설계 입문

레벨 디자인 : 플레이어들이 게임을 즐길 때 거치는 레벨들의 디자인
->게임의 구조, 난이도, 제약조건 등을 레벨로 구분함
단순할 수도, 게임의 진행에 따라 달라질 수도 있음
->규모가 작으면 즉흥적으로 배치할 수도 있음
레벨 디자인을 마치면 해당 레벨의 미적인 외관을 생각
->조명, 환경 ,은폐 포인트 등
*이런 역할이 중요하지 않을 것 같지만.. 매칭 되는 문제가 나올 수 있다.

레벨 경계 설정하기

Level Boundaries : 게임 플레이 도중에 바닥에 노출된 모서리로 플레이어가 추락하는 일을 막는 Additional Collider
빈 게임오브젝트 생성후 Level Bounds로 이름 변경
Box collider 컴포넌트 추가
모서리 맞게 Collider 크기를 변경

쿠키 제작을 통한 라이트 형태 잡기

Cookies
조명 모양의 이미지 혹은 컷아웃으로 조명 전반에 빛과 그림자의 변형을 추가
지면 위의 나뭇잎 그림자를 묘사할 때 종종 사용
검은 색은 빛 차단 흰색은 빛 통과, 회색은 부분 통과
Texture Type -> Advanced 선택
Wrap Mode -> Clamp 선택
쿠키 생성하기 위해서는 알파 채널을 갖고 있는 이미지 를 불러오고 Directional Light를 생성
->빛이 통과할 것인지 완전히 차단할 것인지 결정하는 흑백의 알파 채널
쿠키슬롯에 넣어줌

라이트 베이킹

-> 게임에서 실시간으로 조명을 렌더링 하기 떄문에 조명을 언제 어떻게 계산할 것인지에 대해 최적화 방안이 필요함
-> 게임 플레이되는 동안 씬에서 조명을 미리 계산해 저장한 후 이를 다시 불러옴
-> 게임이 플레이 되는 동안에는 연산하지 않아 엄청난 양의 연산력을 절약함

라이트 베이킹을 위한 오브젝트의 Static 표시

-> Light Baking의 1단계 : 드롭 다운을 하면 Static에서사용 할 수 있는 다양한 변형 확인 가능
-> 필요한 상황을 Static으로 표시가 가능
->2단계: UV coordinates 생성
추가 UV 생성 (확장자 EXR) , FBX를 Maya로 임포트 해서 UV Editor 선택-> UV 들이 중첩되어 생성이 되어 있음
오브젝트에서 Generate Lightmap UV's 선택
->유니티에서 Uv 좌표의두번째 세트를 생성해 조명이 객체에 매핑 될 수 있또록 함
->자동으로 이 객체의 UV 좌표를 Split하고 Flatten 함

연속 및 수동 라이트 베이킹

라이트 베이킹 종류
자동 : Rendering -> Ligthing 옵션에서 Generate Lighting선택
자동으로 베이팅을 하지만 무거운 프로젝트에서는 연산이 오래 걸림
수동 : 대형 프로젝트에서는 수동으로 라이트 베이킹을 해줌

베이킹 된 내용을 지우고 싶다면 ?

Lighting 옵션의 오른쪽 하단에서 Clear Baked Data 선택
-> Lightmap 이 삭제됨
Lightmap Preview
Charting : 다양한 조명 요소 확인
Albedo : 조명이 이 객체 중 어디에서 베이킹 되는지 확인
Emissive : 방사되는 모습 확인 ,강도가 얼마나 적용되는지 영역을 보여줌
Realtime Intensity : 강도가 적용되는 영역을 보여줌.
Baked Intensity : Lightmap의 각기 다른 요소로 씬에서 보이는 외형에 영향을 미침

움직이는 오브젝트에 대한 Light Probe 배치

-> 동적이거나 움직이는 객체가 씬의 일정 지점에서 베이킹된 조명을 샘플링해서 해당 조명에 어울리게 한다.
Light Probe Group component 추가
-> Probe 및 추가한 내용을 갖고와서 씬에서 동적 객체가 갈만한 영역에 배치
-> Probe는 베이킹된 조명을 샘플링해서 조명에 어울리게한다.
-> 씬에 필요한 이곳저곳에 배치를 한다.

Reflection probe 제작

->물체에 빛을 반사하게 만들어서 현실감을 부여함
-> 씬의 일정 지점에서 반사를 샘플링하고, 이를 동적 객체에 적용
-> 미리 계산하거나 실시간 작업이 가능하고, 반사 계산을 최적화해 즉각 반응
-> 얘 만들면 컴포넌트 추가하면 상자가 생김.

Rendering->Lighting 설정
Ambient GI : 실시간으로 렌더링 할지 여부
Ambient Intensity : 엠비언트 강도
Reflection Source : Skybox/ Custom
Ambient Occlusion : 인접한 객체에서 튕겨져 나온 빛을 차단함. 모서리의 어둠 등 객체는 근접한 그림자로 인해 바닥에 닿은 것처럼 보임, Max Distance를 설정해서 어느정도의 거리만큼 떨어져 있어야 Ambient Occlusion 이 적용될지 설
Final Gather : 빛이 근처 표면을 산란한 후 다시 모이게 함.

profile
안녕하세요!

1개의 댓글

comment-user-thumbnail
2023년 7월 10일

안녕하세요 혹시 자격증 관련해서 몇가지 여쭈어봐도 괜찮을까요?

답글 달기