Study/Unity learn

Unity learn - Creative Core

hiheybye 2024. 4. 29. 20:44

Unity learn - Creatie Core

 

Daily

더보기
2024 / 04   hour
29 Introduction to Creative Core 1/2 1
2024 / 05    
01 Introduction to Creative Core - 완 2
02 Shaders and matarials 2/3 4
03 Shaders and matarials -완 3
06  Lighting - 완 4
07 Animation - 완 3
08 VFX 1/2 3
10 VFX ,Cameras, Post-processing -완
3
13 Audio, UI -완 3
14 Prototyping 3
total 10 days , 29 hours

 

Mission_Introduction to Creative Core

: Render Pipeline, copyright

더보기

Welcome to the creative Core Pathway

  • 유니티 에디터로 매력적인 환경을 만드는 방법, 프로그래밍이 필요없다.
  • 실시간 3d 개발목표와 관게없이 유니티의 창의 워크플로우들이 밀접하게 상호작용하기 시작하면서, 이들을 단단히 이해하는 것은 중요하다.
  • 과정이 끝나면, 이러한 분야에 관련된 주요스킬과, 어필할 포트폴리오를 가지게 될것이다.
  • 나의 경우는 유니티 시스템의 상호작용을 이해하기 위해 진행한다.
  • 각 내용을 가이드 프로젝트를 통해 적용하고, 마지막에 최종 프로젝트를 진행한다.

 

진행할 내용

  • 쉐이더와 메터리얼
  • 애니메이션
  • 시각효과
  • 카메라
  • 후작업
  • 오디오
  • Ui

Meet the Creators

  • 동기부여쓰

Select your guided project

  • design document를 통해 자세한 계획을 세운다.
  • 여러 스타일의 가이드 프로젝트 중 하나를 일택한다.

Get started on your guided project

  • 3D, 3D HDRP, URP 는 다른 렌더 파이프라인를 사용한다. Built-In Render Pipeline , High Definition Render Pipeline , Universal Render Pipeline
  • 렌더링은 3D 데이터를 통해 화면을 위한 2D 이미지를 만드는 과정이다.
  • 파이프라인을 데이터를 처리하는 일련의 과정이다.

 

  •  Built-in Render Pipeline은 모든 플랫폼에서 작동하고, 작동을 신뢰할 수 있다. 사용하기 쉽지만, 유니티에 빌트인 되어있어서 별로 커스텀 가능하다고 할 수 없다. 또 가장 효율적이지도 않다
  • Universal Render Pipeline은 모바일, 웹, VR 프로젝트에 이상적이다. 가장 성능에 최적화 되어있다. 설정에 다소 복잡함이 있다. 하지만 Built-in Render Pipeline 보다 커스텀이 가능하고, 꽤 괜찮은 그래픽을 만들 수 있다.
  • High Definition Render pipeline의 경우 고퀄리티 그래픽, 콘솔과 컴퓨터 같이 성능 좋은 플랫폼을 위한 것이다. 꽤나 처리력이 좋아야한다. 매우 설정이 복잡하며, 많은 그래픽 전문성이 있어야한다.

URP와 HDRP 모두 스크립트 할 수 있는 Render Pipeline으로 높은 수준으로 커스텀이 가능하고, 기본적인 요소부터 작성 가능하다. 렌더링 파이프라인을 작성하는 건 큰 작업이 된 이래, 유니티는 이 두개의 SRPs 를 탬플릿으로써 제공한다.

 

 

  • 당장은 HDRP는 제외하고 선택하자
  • URP는 Built-in 보타 커스텀이 가능하고, 좀 더 전문적으로 이끌어 줄 수 있다.
  • shader graph와 VFX graph는 URP 에서 호환 가능하다. (Built-in 은 그렇지 않다)
  • URP는 어떤 플랫폼이던 호환가능하다

 

  • 이제 URP 3D 샘플 을 사용하여 프로젝트를 생성한다.
  • 메인 메뉴에서, Edit-> project Settings > Quality 를 선택하고, 보라
  • 플랫폼 별로된 설정을 바꾸어보고, 그림자, 빛, 반사 차이를 확인해보자.

 

  • 프로젝트를 생성하고, 주어진 에셋을 임포트한다. Scene을 생성하고, 프리팹을 사용해 scene을 구성한다.

해당 버튼을 통해, 정수 위치에 배치되도록 할 수 있다.

또한 게임 오브젝트가 다중으로 선택된 상황에서, L(0,8) 를 통해 균등하게 배치할 수 있다.

 

 

Copyrighe for creators

  • 지적 재산권에 대해서
  • 아이디어 보단 아이디어의 표현에 대해 적용된다.
  • 저작권 심볼이 있다. 하지만 저작권을 주장하기위해 심볼을 표시할 필요는 없다.
  • 라이센스를 통해 저작물 사용이 가능하고, 라이센스에 따라 사용 가능한 범위가 다르다.

Get started with Unity documentation

https://docs.unity.com/

 

Unity Documentation

Docs and guides to work with the Unity ecosystem.

docs.unity.com

https://docs.unity3d.com/ScriptReference/index.html

 

Unity - Scripting API:

Welcome to the Unity Scripting Reference! This section of the documentation contains details of the scripting API that Unity provides. To use this information, you should be familiar with the basic theory and practice of scripting in Unity which is explain

docs.unity3d.com

  • cookie는 그림자 효과를 위해, 빛에 적용하는 mask이다.
  • Sprites 는 DataUtility 클래스를 가진다.

Develop your critical evaluation skills

  • 비판적 사고를 기르자

 

 

 

Mission_Shaders and materials

:materials, texture, nomal map, height map, shadergraph

더보기

Get started with shaders and materials

  • 쉐이더와 머터리얼은 3d 오브젝트의 색상, 반사, 물리 텍스쳐를 정의한다.

Explore meshes and rendering

  • 쉐이더와 머터리얼은 매시가 어떻게 렌더링 되는지 정의한다.
  • Draw mode에서 Wireframe로 토글한다. 쉐이더와 머터리얼없이 3D scene이 어떻게 보이는지 보아라 
  • 큐브와 곡선 오브젝트를 비교해보아라 
  • 메시란 무엇인가? 메시는 3D 게임 오브젝트의 뼈대이다. 오브젝트의 기하학적 요소이다.
  • 쉐이더와 머터리얼은 3D 오브젝트이 메쉬가 스크린을 위한 2D 이미지로 메시가 어떻게 렌더링될 것인지 전달한다.
  • 메시는 일련의 평면 2D 도형, 도형은 정점으로 정의된다. 각 정점은 xyz 좌표를 가진다.
  • 만약 3d 오브젝트가 2D 도형으로만 만들어지면, 각진 형태를 가지게 된다. 3D 메시는 곡면 표현을 위해 추가적인 정보가 필요하다.
  • 메시 데이타는 법선를 포함한다. 각 평면의 가장자리에 모두 수직인 법선을 가지면, 각진 형태를 가진다.
  • 법선을 통해, 해당 면이 평면인지 곡면인지 알 수 있다. 이를 통해 쉐이더는 메시를 변경하지 않고, 메시를 곡면(선)으로 렌더링한다.
  • 메시는 유니티 에디터에서 간단한 기본 모양을 만들수 있고, 복잡한 것은 외부 프로그램에서 만들어야 한다.
  • 주어진 프로젝트의 튜토리얼 scene의 계층에서 Apple 하위 AppleBody를 선택한다. Mesh Filter 와 Mesh Renderer 컴포넌트를 본다.
  • Mesh Filter 컴포넌트는 메시 좌표 데이터를 가르킨다. mesh를 바꾸어 매시를 바꿀수 있다.
  • Mesh Renderer 컴포넌트는 메시가 어떻게 렌더링 될지 지정하게 된다. 머터리얼을 여기서 설정한다.
  • 한 오브젝트에 여러개의 머터리얼을 적용할 수 있지만, 이 부분은 프로젝트의 학습 범위의 벗어난다.

 

Explore shaders

  • 쉐이더는 스크립트이다. 이것으로 머터리얼의 속성을 적용할 수 있다. 각 쉐이더는 특정 렌더 파이프라인을 위해 작성된다.
  • 쉐이더는 사용하는 렌더 파이프라인을 의존한다.
  • 쉐이더는 다양한 시각 스타일을 적용할 수 있다.

 

  •  쉐이더는 두개의 동작 타입이 잇다. fragment shading, vertex shading
  • Fragment shading은 pixel shading 으로 알려져 있다.이것은 2D 이미지의 픽셀의 색상을 만들기 위해 메시 표면을 표현한다.
  • Vertex shading은 메시의 정점에 대해 동작하며, 표면의 움직임이나, 이동에 대해 정점을 이동시킨다.

 

  • 컴퓨터의 처리능력이 강력해지면서, Physically Based Rendering 이 더 넓게 활용 가능해졌다. PBR 은 실제 물리와 빛을 시뮬레이트한다.
  • RBR를 통해, 빛의 특성과 표면의 특성이 분리된다.
  • Non - RBP은 물리적 계산없이 색의 그림자와 반사가 렌더링된다.

 

  • 많은 쉐이더는 Lit, 또는 Unlit 이란 이름이 붙는다. lit 쉐이더는 빛에 반응하며, unlit은 그렇지 않다. unlit 쉐이더는 빛을 사용하지 않는 프로젝트에 효과적이다.

 

  • Lemon의 inspector에서 머터리얼에 적용된 쉐이더를 바꾸어 본다.
  • 2D > Sprite-lit-Default : 2D 프로젝트용으로 설계되었고 3D 오브젝트를 2D로 렌더링한다. 조명 쉐이더로서, 객체에 도달하는 빛을 기반으로한다.
  • Particles > lir, sample lit, unlit : 이 쉐이더 들은 시각효과를 위해 있다.
  • Terrain > Lit : 이 쉐이더는 유니티 지형도구에 최적화 되어있다.
  • Baked Lit : 후에 다뤄짐
  • Complex lit, lit, simple lit : 일반적 용도로 다양하게 사용되고, 물리기반의 쉐이더이다.
  • Unlit : 빛을 사용하지 않는 쉐이더이다.

 

Manage materials in a project

  • 머터리얼은 색상, 이미지, 등등의 속성, 메시의 모습을 정의
  • 쉐이더는 머터리얼에서 제공하는 데이터로 게임오브젝트의 모습을 다양하게 보여준다.
  • 각 머터리얼은 특정 쉐이더를 위해 작성되었다. 렌더 파이프라인이 동일하지않아 문제가 발생한다. 이때 magenta 색상을 통해 경고한다.
  • Standard로 표시된 쉐이더는 Built-in Render pipeline 을 위한 쉐이더일 가능성이 높다. URP 용 쉐이더롤 바꿔준다.
  • 머터리얼의 속성마저 다르게 정의된 경우, 쉐이더를 바꾸는것 만으로 문제가 해결되지 않는다. 이 경우, 일일히 재정의 해주어야 한다.

 

  • Window > Rendering > Render Pipeline Converter 에서 드롭박스로 원하는 렌더링 파이프 변환을 선택하고,  Material upgrade를 통해, 파손된 머터리얼(magenta)의 변환을 시도해 볼 수 있다.
  • Edit > Rendering > materials > Convet Selected Built-in materials to URP

 

  • 폴더에서 t:Type으로 뭔하는 유형의 파일을 검색할 수 있다, favorite의 all material 이 t:Material 이다.
  • Search 에서 패키지 내에서 찾을지, 에셋에서 찾을 지 선택할 수 있다.
  • 하나의 머터리얼을 변경하면, 다른 게임오브젝트에도 영향이 간다는 점을 복기하며, 주의한다.

Simulate solid surfaces

https://docs.unity3d.com/Manual/StandardShaderMaterialCharts.html

 

Unity - Manual: Material charts

Material charts Use these charts as reference for realistic settings: Reference Chart for Metallic settings Reference Chart for Specular settings There are also hints on how to make realistic materials in these charts. In essence it is about choosing a wor

docs.unity3d.com

 

 

  • albedo는 확산반사(난반사) 정도를 묘사한다 확산반사는 눈에 보이는 물체의 색상, 물체표면에서 반사되는 색상을 의미한다.. RGB 색상, 채도 광도

base map?

  • 왜 map이라 부르는가?
  • 반사성(Specularity)은 부드러움(Smoothness)과 다르다. 금속처럼 보이게 만드는 표면의 특성을 반사성이라고 한다. 금속의 유색광은 확산반사가 아니라 착색된 정반사이다.

 

  • 반사성(Specularity)은 금속처럼 보이도록 하는 한가지 방법, 금속 모양을 지정하는 데에는 두가지 방법이 잇다.
  • URP/Lit 쉐이더 에서 Specularity 속성을 사용하는 방법과, 또다른 방법으로 Metallic 이 있다.
  • matarial 의 workflow에서 토글 가능하다.

Specularity

  • 반짝이는 금속 : 높은 반사도, 높은 부드러움
  • 반짝이는 비금속 : 낮은 반사도 높은 부드러움
  • 부드러움은 정반사에 초점을 맞추고(?), 맵(?)은 정반사의 양과 색상을 제어합니다.
  • Specular 도 RGB을 사용할 수 있다.

물체에 빛이 가해지면 정 반사광과 확산 반사광이 생긴다. Smoothness 는 정반사관의 크기를 설정하고, Specular는 확산 반사광의 크기를 설정한다(또한 specular도 색상을 갖는다.). 확산 반사를 통해, 물체의 색상이 눈에 들어오는데, 확산 반사가 없다면, 물체의 색상을 볼 수 없다. 정반사광의 크기를 사용해, 빛의 본래 색상이 다시 눈에 들어오는지 아닌지를 설정할 수 있다.

 

Metallic

물리적 빞을 엄격히 따르지는 않는다.

  • 반짝이는 금속 높은 금속성, 높은 부드러움
  • 반짝이는 비금속 낮은 금속성, 높은 부드러움
  • 부드러움은 정반사에 초점을 맞춤
  • 메타볼릭은 Grayscale 만을 갖는다.


Map materials with textures

  • 텍스처는 3D 오브젝트를 감싸는 2D 맵이다.
  • 아이템이 단색으로 이루어있지 않다면, 어쩔 것이냐? 대부분은 물질은 모든 면이 균일하지 않다, 따라서 맵이  등장했다. 
  • Map은 2D 이미지로 매시 전반에 걸쳐서 속성을 정의한다. 이 이미지 파일을 텍스쳐라고 한다.
  • 이미지의 데이터에는 RGB 에 A(alpha) 채널을 가진다. 추가적으로 smoothness, specularity를 위한 채널을 추가될 수 있다.
  • inspector 하단 이미지를 통해, 몇개의 채널이 있는지 확인 할 수 있다.

채널임을 기억하자. 만약 메타볼릭은 1개 채널을 사용하고, 메타볼릭 맵에 3채널이 있는 텍스처를 사용해도, 1개 채널을 이용한다.메타볼릭의 경우 RGB 채널이 있는 텍스쳐를 넣으면 R 채널로 적용한다.

 

  • tiling, offset

 

UV mapping textures

  • 구와 같이 단순한 입체는 텍스처 맵이 개체의 매쉬와 정렬되는 지점은 중요하지 않다.
  • 복잡한 모양의 입체의 경우도 하나의 map으로 되어있고, 따라서 텍스처의 맵을 메시에 정렬하는 것이 중요하다.
  • UV 는 모델링 응용프로그램이 만든 메시에 대해 생성하는 2D 좌표세트이다. XY좌표와 같지만, 구별을 위해 UV라고 한다. 메시를 기준으로 한다.
  • 텍스쳐는 여러개의 채널을 가지고, 금속 혹은 반사의 경우도 별도의 map 을 가질수 있음을 기억해두자.

Create translucent and transparent effects

  •  투명도와 반투명 효과
  • alpha clipping 방법
  • 투명도는 기본 맵의 알파 채널로 제어된다. 값이 낮으면 기본 색상이 덜 눈에 띄고 높으면 더 잘보인다.
  • 머터리얼 Surface를 transparent로 토글한다. 이때 절반만 사라지는데, 이는 Render Face 설정 때문이다. 셰이더가 뷰어를 향하는 메시 표면만 렌더링하기 때문이다. 이를 바꾸어 준다.

 

  • 메시가 있더라도 알파클리핑을 통해 텍스쳐의 일정 부분을 투명하게 만들수 있다.

Add physical texture with bump mapping

  • 텍스쳐는 일반적으로 메시를 변경하지 않고 메시 표면에 텍스처 모양을 추가하는게에 사용된다, 범프 매핑을 통해 양각효과를 추가할 수 있다.
  • 메시에 물리적 질감의 환상, 이러한 프로세스를 bump mapping 이라고 한다.

 

  • high poly mesh는 low poly mesh 보다 많은 컴퓨팅 리소스를 먹는다.
  • 하지만 bump mapping과 함께하면,  폴리곤을 추가할 필요없이 표면을 자세히 나타낼 수 있다.

 

  • 복기하면, 법선은 각 정점이 향하는 방향이 정의되어 있다.normal map은 이러한 정점이 다른 방향을 향하고 있게 할 수 있다.
  • height map은 각 픽셀의 상대적 높이를 나타낸다.
  • 이를통해 큰 컴퓨팅 리소스를 사용하지 않고, 사실적인 디테일을 넣을 수 있다.

 

  • height map은 rgb 텍스쳐를 넣으면 G 채널을 읽는다. 일반적으로 잘 사용되지는 않는다

 

Refine surfaces with more texture maps

  • Occlusion은 오브젝트의 빛이 차단되는 현상이다  주먹쥔 손가락 사이의 그림자가 그 예이다. PBR 에서도 빛은 이상하개 반사 할수 있다(굴곡에서 빛이 흡수되는 것을 표현하지 못한다는 의미인 듯). 이때 occlusion map를 통해 그림자를 추가할 수 있다
  • 미묘하지만, 사실적이고 그림자의 세부적 묘사를 추가해준다.
  • Suface Inputs, Detail Input, UPR/Lit Shader 에 존재하는 Detail Input에서는 suface Input 과 또다른, Normal map를 지정할 수 있다. 두 normal map은 같이 메시에 생호작용하며, 각 각 얼굴 세부 형태 , 피부 상태 를 나타내는 역할을 할 수 있다. detail Input의 mask는 일반 노멀맵과 미세 표면 노말맵에서 지정된 영역을 보호하는 알파 채널 맵이다.

 

  • Emissive 머터리얼은 스스로 빛을 내는 것 처럼 보인다. emission map으로 이러한 표면을 특정하는데 사용할 수 있다.
  • HER 색상 선택기는 검정색이 아닌 역역에 빛나는 색상을 제공한다.

 

Get started with Shader Graph

  • 쉐이더는 스크립트이고, 코드언어룰 알면 조작할 수 있다. 이러한 조작을 쉽게 해주는 Shader Graph tool도 있다.
  • shader Graph 를 통해 특수한 쉐이더를 만들 수 있다.

 

  • assets 에서 ShaderGraphs 폴더에 create new / shade graph / URP / Lit Shader Graph
  • shader graph window에서 alt 혹은 마우스 가운데 클릭 및 드래그로 볼 부분을 이동시킬 수 있다.
  • F, A 키 및 wheel 사용
  • 상단 check out으로 저장
  • 좌측 창은 이 쉐이터에 사용할 머터리얼에 사용자가 사용가능한 속성이 포함된다.
  • 중앙 공간은 노드 그래프를 통해 쉐이더를 만드는 곳이다.
  • 우측 하단에 미리보기화면,
  • 우측 상단에 선택한 노드 현재 설정, 속성, 값 등이 나타난다.
  • 작업 공간에 나타나는 창은 쉐이더 그래프가 최종 쉐이더의 표면을 정의하는 끝지점이다. Vertex, Fragment  쉐이더의 주요 속성을 담고 있다. 필요한 속성를 연결할 최종 노드이다. 마스터 노드

 

 

  • basic shimmer 는 procedural noise map 를 통해 만들어진다. procedural 은 텍스쳐가 이미지나 물리적 요소 외의 수식이나 알고리즘에 의해 생성된다는 의미이다. shader grap는 몇가지 procedural noise map 을 제공한다.

 

 

  • 간단한 노이즈 쉐이더 만들기
  • space바 혹은 우클릭으로 새로운 노드생성, Gradient Noise 노드를 생성
  • Gradient Noise는 정지해 있는데, 이를 움직이는 것처럼 보이도록, offset 속성을 이용한다. 맵의 크기와 위치를 조정하는 tiling and offset 노드를 생성하고 out를 Gradient Noise UV에 연결한다.
  • 이제 offset 값을 변경해주는 무언가가 필요한데, 이에 시간을 이용한다. Time 노드를 생성하여 연결한다.
  • 이제 만든 텍스쳐를 최종 노드(마스터 스택)에 연결한다

 

  • 사용자가 움직이는 쉐이더의 속도를 설정할 수 있도록, 좌측창에서  Float 형의 ScrollSpeed 를 추가하고 드래그 드롭해 중앙 화면에 가져온다.
  • Time 값은 입력단이 없음으로 값을 곱해주는 mutiply를 이용한다.
  • ScrollSpeed 노드를 선택하고 inspector 창에서 디폴드값을 적절히 입력한다(0이면 당장 움직이는 것을 볼 수 없음으로)

 

  • ctrl 를 통해 다중 선택하면 다중 복제도 가능하다.
  • divide를 사용하여 다른 속도로 움직이는 noise를 생성하고 mutiply 통해 더 인상적인 효과도 만들 수 있다.
  • ctrl + g 를 통해 노드를 그룹화 할 수 있다.

 

  • 텍스처의 크기를 조정하는 변수를 추가하고 적용,
  • 대비를 조정하는 변수(Vector2) 를 추가하고 적용, Remap 사용, out min max 입력을 위한 Vector2

 

  • 텍스처의 크기를 조정하는 변수를 추가하고 적용,
  • 대비를 조정하는 변수(Vector2) 를 추가하고 적용, Remap 사용, out min max 입력을 위한 Vector2

 

  • 컬러를 추가하기 위해, Color 변수를 추가하고, muyiply를 통해 만들어논 효과에 적용, TinrColor의 노드의 설정 mode를 HDRfh 변경하고, 색상 선택, HDR(?)  색상 선택기와 동일한 강도 옵션이 존재
  • Emission 맵을 사용해 밝은 영역을 더 밝게 만들 수 있음
  • 인스펙터의 graph setting에서 surface 설정을 Transparent로 변경, 마스터 스택에 Alpha에 회색조 노이즈를 연결, 이를 통해 색상이 있는 부분을 투명하게 만들어 더 반짝이게 한다.

 

  • 새로운 머터리얼을 생성하고 쉐이더를 바꾸어줌, shader graph에 하위에 존재한다.

 

Challenge: Create your still life composition

  • Unity Recorder Package를 통해 이미지 및 영상을 플레이모드에서 저장할 수 있다.

Apply materials and shaders to your guided project

  • 와 이제보니 물효과도 Water shader graph로 만들었다 ㄷㄷ 

Additionnal Job

https://learn.unity.com/project/make-a-flag-move-with-shadergraph

 

Make a Flag Wave with Shadergraph - Unity Learn

In this project, you will learn how to create a shader to make a flag wave utilizing the Time, Sine and UV nodes to give the flag a wave effect.

learn.unity.com

 

2024.05.03 - [Study/Unity learn] - Unity Learn - Make a flag move with shadergraph

 

Unity Learn - Make a flag move with shadergraph

Work Onhttps://learn.unity.com/project/make-a-flag-move-with-shadergraph Make a Flag Wave with Shadergraph - Unity LearnIn this project, you will learn how to create a shader to make a flag wave utilizing the Time, Sine and UV nodes to give the flag a wav

roaring-stretching-thought-wood.tistory.com

 

 

 

Mission_Lighting

:skybox, Bake Light ,Reflection Probe , Light Probe

더보기

Get started with lighting

  • 모양 방향, 크기 영역, 강도

Get started with lighting in Unity

  • window/ Rendering/ Lighting 에서 광원을 관리할 수 있다.
  • 직접광은 방출되어 표면에 한 번 부딪힌 다음 센서에 직접 반사되는 빛
  • 간접광은 직접보지 않을 때, 결국 센서에 반사되는 모든 다른 빛

 

  • 유니티에는 Baked Global illumination 시스템과 Realtime Global illumination 시스템 두가지 전역 조명 시스템이 있다.

 

  • Baked Global illumination 은 표면의 밝기를 미리 계산하고 그 결과를 lightmap이라는 텍스쳐에 저장하는 프로세스이다. Progressive Lightmapper 라는 시스템을 사용한다.
  • Light Probes 빈공간을 통과하는 빛에 대한 데이터를 측정하는 도구
  • Reflection Probes 더 사실적인 반사를 시뮬레이션하는 도구

 

  • Realtime Global illumination, URP는 지원하지 않는 듯 하다.

이 얘기가 URP에서 실시간 조명을 사용할 수 없다는 것이 아님.

  • Enlighten Lightmapper라는 deprecated 라이트 맵퍼가 있다. 
  • Light Probes 좀 더 부가 기능이 있다.

 

  • Baked에 대해 배울 예정이다.

 

  • 실시간 조명은 런타임에 계산한다. 장면에서 움직이는 요소에 빠르게 반응할 수 있다. 복잡해지면 많은 메모리를 사용할 수 있다. 이로인해 성능이 저하 될 수 있다. 
  • Baked lighting은 미리 조명 데이터를 계산하여 런타임 시에 리소스를 절약할 수 있다. 계산을 수행하고 라이트맵이라는 텍스처로 저장하는 프로세스를 베이킹 또는 라이트매핑이라고 한다. 이러한 시스템을  progressive Lightmapper라고 한다. 이 때문에 측정한 방식으로 구성되지 않는 한 사물이 반응하지 않는다.

 

Configure the Directional Light and skybox

  • Directional Light(기본적으로 생성되는 광원)
  • Unity의 하늘 배경은 skybox 라는 특별한 유형의 재질을 사용하여 생성된다. 스카이박스는 각 면에 서로 다른 질감이 있는 큐브이다. 스카이박스를 사용하여 하늘을 렌더링할 때, unity는 기본적으로 장면을 스카이박스 큐브 내부에 배치합니다. 스카이 박스가 렌더링된 뒤 다른 것들이 렌더링되어(덮어씌우면서), 스카이 박스가 하늘을 표현하게 된다. 

문득 이걸 잘 이해시키는 유튜브 영상이 떠오름.

 

출처 https://www.youtube.com/watch?v=CEkQhRz8kxs  게임이 현실적으로 불가능한 한계를 넘게만든 개발자의 천재적인 묘수들, 젤다시간의 오카니나
  • skybox 쉐이더는 두가지 범주가 있다. Textured(텍스처 사용), Procedural(머터리얼의 속성 사용)

아마 이미지 파일을 사용한 경우와 matarial, shader를 사용한 경우를 말하는 듯하다.

 

 

  • material 를 생성하고 shader를 skybox/procedural로 설정한다.
  • 광원 관리창(window/ Rendering/ Lighting)에서 Environment tab의 skybox material에 생성한 머터리얼을 적용한다.
  • material의 설정값을 커스텀 해본다.
  • Tip: 좀 저 사실적인 야간을 만들기 위해, 색상을 조정하고, 대기 두께 값을 약간 줄여본다.

 

 

Add light sources to your scene

  • Point light 공간의 한 지점에서 모든 방향으로, Spot light 한 지점에서 원뿔 모양으로
  • # 색상이 지정된 조명은 구워야 하는 영역 조명.

 

  • 광원을 추가하고, Light 컴포넌트를 본다.
  • Type, Intensity, Range, Indirect Mutiplier 속성을 바꿔가며 확인해본다.
  • Indirect Mutiplier은 광원에서 제공되는 간접광(2번 이상 반사되는 빛)에 영향을 주며, 1미만에서는 반사때 마다 어두워지고, 1 이상에서는 반사 시 더 밝아진다. tip:이는 어둡고 밀폐된 공간을 밝히려는 겨우 유용하다.

 

  • Linear color space 로 설정되있는지 확인해본다. 
  • Color space는 빛이 렌더링 되는 것에 영향을 끼친다. color space는 Gamma(3D templete), Linear(URP templete) 두가지 종류가 있다. 
  • Edit / Project Setting / player / other setting/ Rendering / color space 에서 설정을 바꾸어보고 되돌아보자
  • Lighting 관리창에서, Environment Lighting 의 Source 를 확인해본다. 이것에 해당하는 것이 환경 조명을 제공한다는 것이다.
  • # 조명이 lightmap에 포함되기 위해서는 게임오브젝트를 Static으로 플래그 지정해야한다. 이는 lightmap 데이터가 움직이지 않는 gameobject에 대해서만 계산될 수 있기 때문이다. ???
  • Source 속성을 Gradient로 바꾸어보고 확인한다.

 

Configure shadows in your scene

  • 그림자는 shadows map 에 저장된 된다. 이 텍스처는 모든것을 하나의 텍스쳐로 병합한 다음, 맨 위에 그림자를 인쇄한다.
  •  주어진 render pipeline 자산에서 shadows 설정을 바꾸어보고 확인해본다. Depth Bias와 Normal Bias 를 통해 shadow acne 문제를 해결하는데에 도움을 준다.
  • Cascades Count 속성과 light 컴포넌트의 shadow type의 soft shadows는 모두 리소스를 사용하지만, 그림자 품질을 향상시킨다. high resolution shadow map 보다는 덜 먹는다.

 

  • PostProcessing를 통해, 사진에 필터를 적용하듯 미적 효과를 적용할 수 있다.

 

Bake a lightmap for your scene

  • baked light은 런타임 시 조명의 속성을 변경 할 수 없고, 동적인 요소에 반응하지 않는다. 전체 장면에 대한 UV 좌표 생성이 포함된다.  이것이 lightmap이고 이것을 만드는 과정을 lightmapping 또는  baking 이라고 한다.
  • 이것은 더 효율적이고, 더 현실적이고 매력적인 조명은 구현하는데에 사용될 수도 있다.

 

 

  • light 컴포넌트에서 mode를 통해 baked, real-time, Mixed를 토글 할 수 있다. 
  • Gameobject가 런타임 동안 움직이지 않으면 정적인 것으로 간주된다. 이러한 오브젝트를 static 속성을 사용하여 정적 표시 할 수있다. 그러면 유니티에서 런타임 전에 이에 대한 데이터를 미리 계산할 수 있다. static을 환경(빛이 반사되는)과 광원에 대해서 적용한다..

 

  • bake 하기전에, default progressive CPU lightmapper backend 와 progressive GPU lightmapper 중 선택할 수 있다. 리소스를 CPU 와 Ram / GPU와 VRAM 를 사용하느냐의 차이이다. 컴퓨터의 성능이 받혀준다면, GPU 를 사용하는게 속도가 빠르다.

 

  • lighting 관리 창에서 Environment, light settings asset 에 new 눌러 새로운 setting를 생성하고, lightmapper 에서  lightmapper를 토글한다(GPU 사용여부와 다름없는듯), 이제 generate lighting으로 bake 하면 된다.

일단 static을 플래그를 하지 않으면 bake가 되지 않는 듯한 뉘앙스이긴 했지만, 일단 정상적으로 bake되었다.

맞는지는 모르겠으나, light 컴포넌트를 mode를 바꾸고, 적용하기 위해서는 새로운 lighting setting을 generate 해야된다. 이 과정에서 bake도 진행되는 듯 하다.

 

 

  •  조명을 혼합으로 설정하면 동일한 광원에서 동적그림자와 결합한다 ???. 이는 더 많은 리소스가 필요하지만, 그림자 품질을 향상시킬 수 있다.

 

Improve your lighting with Light Probes

  • light Probe가 어떻게 조명을 사실적으로 만드는 지
  • baked light는 새로 추가된(동적) 오브젝트에 대해서는 그림자를 만들지 못한다. bake는 기본적으로 정적 표면의 스냅샷을 저장하고 입히기 때문에, baked 조명은 bake 할 때의 광원의 역할을 하지, bake 된 이후에는 광원으로써 동작하지 않는다. 
  • light probe를 사용하여, 장면의 빈 공간을 통과하는 빛에 대한 데이터를 측정 할 수 있다. 이를 통해 위 문제를 해결 할 수 있다.
  • light probe는 light probe group으로 구성된다. 그룹의  각 프로브는 다른 프로브 사이의 공간의 빛을 측정한다.

 

  • 계층에서 light / light probe group 를 생성하고, 

 

  • Window / Rendering / Light Explorer 에서 라이트 프로브도볼 수 있다. 프로브 그룹을 적절히 증식시킨 뒤, light setting을 다시 generate 하면, 추가된 오브젝트에 빛 반사가 적용되는 것을 볼 수 있다. (아마 더 촘촘히 배치시키면 더 효과적으로 나타날 듯 하다.)

 

  • Draw mode, dropdown 에서 Contributors/ Receivers 에서 오브젝트의 메시 렌더러가 전역 조명에 영향 주는지 받는지 확인할 수 있다.

 

  • Light 관리 차에서 scene에 있는 여러 요소를 살펴본다.

 

Examine and complete the indoor scene

  • material 의 emission 를 통해 Emissive 머터리얼을 만들고, 긴 막대에 적용하여 광원을 만든다.
  • 이러한 경우, 기본적으로 scene의 정적 형상에만 영향을 미친다. 동적 물체에 대한 영향을 위해서, 라이트 프로브를 사용하고 bake한다.

 

Refine and troubleshoot the indoor scene

  • mesh renderer 컴포넌트에서, lighting/ cast shadows 를 two sided 로 설정하여 메시의 양쪽에서 그림자를 만들어 더욱 사실적으로 보인다.
  • 창유리 같은 유리의 표현을 위해서, bake 전에 cast shadows를 off 하도록 한다. 
  • light 관리 창에서 max bounces 를 4 indirect intensity 를 2~ 2.5 사이 값으로 한다 (실내 조명표현에 유효하다. )

 

 

  • 빛 샘 문제를 해결하기 위해 Direction light의 bias의  depth 과 normal,  near Plane를 적절히 조절한다. 
  • Direction light의 bias는 렌더 파이프라인 설정에 의해서 적용되며, 한 scene의 Direction light의 bias를 커스텀 하여도, 다른 scene에는 적용되지 않는다. 만약 다른 scene에도 적용할 경우 렌더 파이프라인 설정을 바꾸도록 한다.

 

  • 모델의 ligthmap UV 에 문제가 있다면, model의 inspector에서 임시로 UV를 생성 기능을 사용할 수 있다.

 

 

Improve reflections in your scene

  • 유니티에서 reflection mapping은 반사할 수 있는 오브젝트가  동일한 주변을 보거나 수신 할 수 있다고 가정하여 시뮬레이션 한다.
  • 따라서 터널 속 자동차의 창문에 하늘이 반사되는 경우도 생긴다.
  • reflection probe 를 사용하여, 반사가 눈에 띄는 장면의 중요한 지점에서 환경을 샘플링하여 반사 품질이 향상된다.

 

  • reflection probe는 특정 지점에서 시각적 환경과 조명을 큐브맵으로 기록한다.  

대충, 본래 반사에 동일한 주변인 skybox를 사용하는데, reflection probe를 사용하여 반사용 skybox를 만들어 쓴다고 추측됨

 

 

Showcase your work with lighting

  • 삼점 조명, 파란색, 주황색, 백라이트, 주광 가장 강렬한 빛, 그림자를 채우기 위한 보조광, 빛의 테두리 및 깊이감을 만드는 백라이트

 

 

 

 

Mission_Animation

:Animation, animator, keyframe

더보기

Get started with animation

  • 다른 프로그램에서 가져오는 애니메이션과 편집기 자체에서 만드는 애니메이션
  • Window / animation / animation 에서 애니메이션 편집기를 열 수 있다.
  • 일반적으로 매우 복잡한 객체나 심층적인 애니메이션은 Autodest Maya 또는 Blender 와 같은 외부 DCC 애플리케이션에서 생성됩니다.

 

Create your first 3D animations

  • 유니티에서 사용할 수 있는 애니메이션 도구를 알아보자(이해 혹은 연습을 위해)
  • 계층에서 오브젝트를 선택하면, animation 편집기에서 오브젝트의 애니메이션 클립이 나타내고 애니메이션 클립이 없다면 create 를 통해 생성 할 수 있다.
  • 하나의 오브젝트에 여러 aimation clip가 연결 될 수 있다.

 

  • 애니메이션의 특정 포즈는 Keyframe 에 의해 정의된다. 

에디터 내 애니메이션 편집기는 동떨어진 keyframe과 keyframe 사이에 차이가 있다면, 그 사이를 적절히 채워주는 원리인듯 

 

  • 계층에서 ball 오브젝트를 선택하고, 애니메이션 편집기에서 clip를 생성한 뒤, keyframe을 생성한다(scale)
  • 생성된 keyframe 사이 적절한 지점으로 이동한 뒤, 녹화버튼을 누르고 오브젝트를 적절히 변형시킨뒤, 재생을 누른다.

 

  • timebar 바로 우측에 수직 줄임표를 누르고, Set sample rate 를 24로 설정한다.
  • 애니메이션의 프레임 속도를 나타내며, 프레임 속도는 궁극적으로 개인 취향이지만, 프로젝트의 모든 애니메이션은 동일한 속도를 일관되게 사용해야한다. (보통 에셋스토어에서 가져온 애니메이션이 24를 사용한다.)

 

Refine your animation

  • Ball_Bounce clip을 생성하고, 공이 위 아래로 움직이도록 만든다. (position)
  • Curves를 사용하여, 좀 더 중력과 탄성에 의해 움직이는 공처럼 만든다.
  • 각 ketframe를 선택하여 우측 혹은 좌측에 간단한 선 유형을 선택하거나, 회색 접선을 사용해 곡선을 원하는대로 움직일 수 있다.

 

  • Squash 와 stretch는 물체가 충격을 받아 변형되고 돌아오는 것이다.
  • 공이 충격을 받아 변형되는 것을 표현한다(scale 추가)
  • 충돌하는 장면 keyframe에 수축시키고, 처음 keyframe의 scale만 직전, 직후에 복붙하고(충돌 시점에서만 수축하도록) 과정을 위해 충돌 직후는 약간 팽창 시킨다.

 

  • 애니메이션 편집기는 위치 좌표를 저장했기 때문에, 오브젝트의 위치를 옮겨도 만들었건 지점에서 재생된다.
  • 이때문에 빈 오브젝트를 만들어, 공을 하위에 위치시키고, 상위 빈 오브젝트를 움직여 이동시킨다.

 

Conrtrol animation with an Animator

  • 재생지점을 제어해야하는 애니메이션을 위해서, state Machines에 대해 배운다
  • 문의 열기 애니메이션을 위해, 오브젝트의 피벗 위치를 확인한다.
  • animation 편집기에서 Rotate 를 추가하고, 마지막 keyframe의 rotation을 수정하여 문이 열리도록 한다.
  • 에셋에서 해당 애니메이션을 선택하고 inspector에서 loop를 해제한다.
  • door의 애니메이션 컨트롤러(animator)를 선택하고 변수와 상태를 추가하여 문이 열리고 닫히는 것을 표현한다.
  • 애니메이션의 trigger 매개변수는 전환 시 즉시 비활성화 된다. 

지난 과제에서 어느정도 조사한 부분도 있었다. 참신했던 것은, open 애니메이션 속도를 -1 하여 닫히는 애니메이션으로 만들어 낸것.

 

 

  • animator에서 전환에 Has Exit Time를 해제해, 약간의 지연을 줄일 수 있다.
  • Exit 노드로 이동되면, 다시 entry 부터 시작한다. 

단, Exit으로 향하는 전환에 Has Exit Time 이 해제되어 있다면, 전환되지 않으니 주의

 

Import animation

  • 애니메이션 작업은 많은 시간이 걸린다. 다른 리그용으로 제작된 애니메이션을 쉽게 사용할 수 있는것 아니지만, 기본 인간형 형태 를 따르는 경우(아마도, 동일한 리그를 가지는 경우), 애니메이션을 사용할 수 있다.
  • 애니메이션의 import setting를 확인한다.
  • 기본적으로 휴머노이드 애니메이션 시스템과 호환되는 리그라도, animation type이 generic으로 설정된다. generic 리그는 다른 휴머노이드 리그와는 다른, 비표준 골격 구조를 가진 캐릭터로 작업할때 유용하다(휴머노이드 에니메이션의 사용을 방지)
  • 애니메이션이 humanoid rig라면, humanoid 을 선택한다.
  • 주어진 학습 프로젝트의 import한 애니메이션에서, 애니메이션을 확인해보면 세개의 춤동작이 이어져서 나타난다.
  • 이를 분리하기 위해, Animation를 누르고, clips 를 추가한 뒤(총 3개), 이어졌던 춤동작을 프레임 단위로 나누어 클립에 설정하고, 춤동작 이므로 loop 설정과 Bake into pose 옵션을 선택한다.
  • 변경 사항을 apply 한다.

 

  • animator의 Any State는 state machine의 모든 전환을 중단하고 이와 관련된 모든 애니메이션을 호출한다. 

 

Challenge : Bring the scene to life

  • keyframe 애니메이션은 위치, 스케일, 회전 말고도 다양한 요소를 지원한다.
  • script 에서 GetComponent<Animator>(); 로 컴포넌트를 가져오고
  • .Set변수타입 으로 animator의 변수 값을 조정하여, state 전환을 유도할 수 있다.

 

 

https://www.youtube.com/watch?v=_GmpouP1-zo

시청은 일단 보류

 

 

 

Mission_VFX

:Pacrticle System,VFX graph

더보기

Get started with VFX

  • VFX는 환경효과와 게임플레이 효과로 나뉜다. 환경효과는 화재, 비, 안개 폭발과 같은 물리적 사건을 나타낸다. 게임플레이 효과는 상호작용을 강화하거나 관심을 끌기 위한 것(축하효과 등)이다.
  • 안개 효과, 무기를 따라가는 슬래시 트레일

 

  • 파티클 시스템은 기본 컴포넌트 기반 시스템이다. 노드 기반 시스템이다.

 

  • 주어진 불을 보면, 파티클 시스템이 공중에 떠다니는 일련의 단순한 개별 개체일 뿐이다. 불꽃이 여러개의 단순한 텍스처로 구성되어 있다.

 

Play around with a Particle System

  • Paricle System 컴포넌트는 기본적으로 Emission, Shape, Renderer 모듈이 활성되어 있고, 방출되는 입자 수, 방출되는 위치 및 모양을 제어한다.
  • Color over Lifetime, Size over Lifetime 모듈로 수명에 따른 색상과 크기를 활성화 할 수 있다.
  • Noise 모듈을 통해, 시각적으로  무작위로 흔들리도록 할 수 있다. 

 

Create an environmental Particle System

  • 계층구조에서 Effects / Particle System을 선택하고, 위치와 방향을 적절히 바꾼다.
  • Particle System의 기본 모듈을 본다. Start Size를 통해 입자의 크기를 적절히 조절한다.
  • Start speed를 통해 입자의 속도를 조절한다. 그리고 적절한 거리까지 이동하도록, start lifetime을 조정한다.
  • prewarm을 통해, 입자가 천천히 채워지는 것을 스킵할 수 있다.

 

  • Emission 모듈은 파티클 수를 결정한다.
  • Shape 모듈은 방사체의 형상 (입자가 퍼지는 모양) 과 볼륨을 결정한다. emit from : 쉘, 가장자리, 불륨 내
  • Emission 에서 Rate over time으로 시간 당 생성되는 파티클 수를 조절 할 수 있고 기본 모듈에서 Max Particles에서 최대 파티클 수도 적절히 조절해 주어야한다.
  • Renderer 모듈에서 입자의 모양을 설정한다. material를 통해 설정하는데, 해당 material은 Particles/Unlit 를 사용한다.

 

Create a burst particle

  • 파티클 입자가 터지는 듯한 효과를 주기 위해, Eimission의 Rate Over Time 을 0으로 설정하고, Burst 섹션에서 버스트를 추가한다.
  • time에 Probability 확률로 Count 개의 입자를 Cycles 회 Interval 간격으로 
  • 몇몇 설정에서 Random between Two constants 로 입자마다 랜덤한 값을 설정할 수 있다.
  • Texture sheet 머터리얼의 경우 Texture Sheet Animation 에서 텍스쳐의 가로 새로 분리(tiles), start Frame 으로 시작 프레임 설정, Cycles
  • Size over Lifetime에서 시간에 따른 입자크기를 곡선으로 설정할 수 있으며, inspector 하단 미리보기에서 수정 할 수 있다.
  • 사용자와 상호작용 시 재생시키기 위해, 기본모듈에서 Play on Awake를 해제한다.

 

  • 파티클 시스템의 하위 GameObject로 새 파티클 시스템을 생성한다. 그런 다음 상위 파티클 시스템에서 sub-emitter 모듈을 활성화하고 하위 파티클 시스템을 연결한다.

 

Experiment with VFX Graph

  • VFX Graph의 주요 장점 중 하나는 더 많은 파티클을 시뮬레이션 할 수 있다는 것이다. 효과가 전반적인 유용성과 프레임 속도를 방해하지 않도록 최적화된 성능이 중요하다.
  • 노드 기반 편집기이며, 수 백만 갸의 동시 파티클을 처리 할 수 있다. 복잡한 시뮬레이션을 생성 할 수 있다.
  • 하드웨어 요구사항이 엄격하여, 특정 대상 장치에서 성공적으로 실행되지 않는다.

 

  • VFX 그래프는 GPU에서 실행되고, 유니티의 물리계산은 CPU에서 수행되므로, VFX 그래프 입자는 물리와 상호작용할 수 없다.
  • Particle System은 CPU에서 물리계산이 수행되므로, 물리 기반 구성 요소와 상호 작용 할 수 있다.

 

  • VFX Graph 편집기에서 조작해본다. 주어진 효과에서는 4개의 Context Nodes 를 볼 수 있다

shader graph와 유사한 듯?

 

  • Spawn Context은 파티클 생성을 제어합니다
  • Initialize Particle Context는 파티클이 처음 나타나는 위치와 방법을 제어합니다. 입자의 초기 크기, 모양, 속도, 수명, 최대 용량
  • Update Particle Context는 파티클의 생성 시점부터 소멸 시점까지 입자에 대한 변경 사항을 제어한다. 수명에 따른 크기, 색상, 노이즈, 텍스쳐 시트 애니메이션, 이러한 동작을 Update Particle Context에 새로운 Block으로 추가 할 수 있다.
  • Output Particle Quad Context는 각 파티클의 모양을 제어한다. 여기에서 입자의 재질을 할당한다.

 

  • 계층에서 Visual effects/ VFX graph로 새로운 오브젝트를 생성하고 inspector에서 visual Effect 컴포넌트의 Asset Templete에서 VFX graph를 적용하거나 새로 만든다.
  • Block은 정말 다양한 기능이 있다.

 

  • Package manager에서 Visual Effect Graph에서 샘플을 import할 수 있다. 샘플의 VFX를 열어 확인해본다.

Shader graph와 마찬가지로 변수를 추가하고, 연산자 노드를 연결해 새로운 효과를 만들어 낸다. (근데 예시보면 좀 할 수 있는게 미친듯)

 

Additionnal Job

CreativeCore_VFX_2022.3LTS  VFX graph 파헤치기

 

 

Mission_Camera

더보기

Get started with cameras

  • 장면과 상황에 따라 적절한 시점을 취해야 한다. 플레이 중에는 장애물의 높이(점프 가능한지), 넓은 시야를 줄 것인지 등.

Select your camera projection type

  •  Ctrl + Shift + F 로 보고 있는 시점에 정렬할 수 있다.
  • 시야각은 90도가 적절하다

 

Control what your camera sees

  • Clipping plan, Near Far 카메라와의 거리에 따라 렌더링 제한
  • 오브젝트의 Layer를 설정하고, 카메라의 Rendering 섹션에 Culling Mask를 통해 어떤 layer를 카메라에 나타낼지 않할지 설정가능하다.(플레이어와의 상호작용은 가능항 상태)

 

Explore camera views

  • 플레이어가 위치한 곳에 따라 시점 변경

와 스크립트 미쳤는데;;;

 

Explore camera shot types

  • Wide angle : 최대한의 환경을 보여준다. 서술목적
  • Close up :
  • Bird's-eye view : 사용자가 보는 환경의 컨텍스트가 중요하거나, 환경을 탐색하는 관점과 규모가 중요한 상황
  • Worm's-eye view : 불안감을 주는 관점, 경고하는데에 유용

 

 

Mission_Post-processing

postiprcessing

더보기

Get started with post-processing

  • post-processing은 카메라로 캡처한 이미지에 효과를 주는 과정이다.

유니티 메뉴얼도 정독해야 할까 ㄷㄷ;

 

  • camera 의 post processing를 토글하고, 계층에서 volume/ global volume를 생성하고, profile에 post processing를 적용한다
  • 샘플 post processing의 컴포넌트(?)를 activate, deactivate 해보면서 역할을 확인하고 수정해본다.

 

Create your own post-processing

https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/index.html

 

Universal Render Pipeline overview | Universal RP | 17.0.3

Universal Render Pipeline overview The Universal Render Pipeline (URP) is a prebuilt Scriptable Render Pipeline, made by Unity. URP provides artist-friendly workflows that let you quickly and easily create optimized graphics across a range of platforms, fr

docs.unity3d.com

 

  • Bloom은 밝은 빛을 촬영할 때 생기는, 광원 주변의 빛나는 효과
  • Tonemapping, HDR은  LDR에 비해 밝기 값을 1.5 그 이상으로 표시할 수 있다. 이때 극단적인 밝기 값을 가져와, 바랜 색상으로 나타낸다. 이는 Bloom으로 과도하게 밝아진 지점을 좋아보이게 만든다.
  • Color Adjustments : 전체적인 빛 노출, 톤, 대비, 필터 등
  • Lift Gamma Gain : 색상교정기
  • Depth of Field : 피사계 심도
  • Film Grain : 옛날 영화느낌 (노이즈)
  • Vignette : 외부 가장자리 어둡게
  • 그외 Lens Distortion, Motion Blur, Chromatic Aberration 등등

Challenge: Create a local volume

  • 일부 지역에 대해서 Postprocess를 하는 local volume를 사용해본다.

local volume 에 다가갈수록 효과가 강해지도록 하려면, local volume를 작게 만들고, Blend Distance 를 증가시킨다.

제출은 패스

 

 

 

Mission_Audio

:reverb zone

더보기

Get started with audio

  • Wwise Spatial Audio, Audacity, Beepbox 도구
  • mpeg, (mp3), ogg, wav, aiff

 

Create dynamic sound effects

 

  • animation import setting 에서 Animation 섹션에 들어가 Events를 확인한다. 미리보기를 확인하면서, 발이 땅에 닿는 프레임(소리가 나야하는 프레임에)에 Event 추가 버튼(시간바 왼쪽)을 눌러 Function에 명명한다(스크립트에서 사용할 명칭이므로 기억해둔다)

Import Setting은 어떻게 만들어지는 거지???

 

  • 이렇게, animation은 플레이어 캐릭터의 발이 땅에 닿을 때, 이벤트 요청을 보낸다. 이를 수행하기위해, 플레이어 캐릭터(애니메이션 재생 캐릭터)도 Audio Source 컴포넌트를 추가해야한다.
  • 주어진 FootstepManager 컴포넌트를 추가한다.

해당 스크립트는 OnControllerColliderHit 메서드, 플레이어가 위치한 땅의 특성(Grass, Water, Cave)을 업데이트하는 메서드와 PlayStep 각 땅에 따라 연결된 발자국 소리 4개 중 하나를 랜덤하게 재생하는 메서드로 되어있다. 아마, Playstep() 이벤트 발동 시 호출되는 듯 하다. 

Event 설정 시 입력한 Function이 해당 Function을 재생한다는 의미인 것으로 추측.

  •  바닥에 세가지 태그를 설정한다. FootstepManager 를 플레이어에 추가하고 발자국 소리를 연결한다. 

 

Create 3D sound effects

#이전 pathway 내용은 적당히 간추려서

  • 3D Sound Settings의 Spread 값은 플레이어의 회전에 따라 소리가 좌우로 이동하는 효과를 제공한다. 180으로 하면, 이러한 효과가 제거되고, 거리에 따른 볼륨만 제공한다. 180~ 360 까지 설정이 가능한데 동일한 기능을 수행하지만, 오디오 채널이 반전된다.
  • 소리의 좌우 전환은 거슬리지 않고 미묘하게 눈에 띄어야 한다.
  • 3D Sound Settings의 Max Distance는 소리가 나지 않는 시점이 아니라, 소리 감쇠가 중지되는 시점을 나타내는 것이다.
  • 먼거리여도, 감쇠가 종료된 시점에서 계속 들리다가, 더욱 멀어지면 결국에는 페이드 아웃된다.

 

  • 단거리에서 소리가 사라지길 원한다면, 3D Sound Settings의 Volume Rolloff의 설정을 선형으로 변경한다. 이는 Max Distance에서 소리가 0으로 감소한다. 단, 소리가 갑자기 시작된 것처럼 보이므로, 적절한 상황에서만 사용한다.

 

  • 3D Sound Settings의 Volume Rolloff의 custom Rolloff를 통해 새로운 곡선을 만들 수도 있다.

 

  • 상황에 따라 audio listener를 적절한 오브젝트에 설정한다.

 

Add special effects to existing audio

  • reverb zone : 사운드 효과를 위한 구역 설정 (에코 등 구현 가능)
  • Audio / Audio Reverb Zone
  • 설정을 통해 다양한 사운드 효과 가능

 

  • 오디오는 손실될 수 있다. 이때 우선 순위를 통해, 중요한 사운드가 손실되지 않도록 설정할 수 있다.(낮을 수록 중요)

손실은 아예 재생이 안되는 상황을 의미하는 듯? 아닌가? 덮여지는 게 있나?

 

  • Window / Audio / Audio Mixer 를 통해 오디오를 제어할 수 있다. 새로운 믹서를 추가하고, 그 믹서에 그룹을 추가한다. 추가된 그룹을 오브젝트의 Audio Source 컴포넌트에서 output 에 연결할 수 있다.

 

Accessibility considerations for audio

https://80.lv/articles/10-golden-rules-on-subtitles-for-games/

 

10 Golden Rules on Subtitles for Games

In this article, we take a look at the 2019 GDC talk by Ian Hamilton on the best practices for developers to accommodate the growing demand for well-executed subtitles.

80.lv

 

  • Assets에서 적절한 위치(Audio 디렉토리에) 에 ClosedCaption/ CCDatabase 를 생성한다.
  • 해당 CCDatabase를 열고, audio clip를 드래그 앤 드롭한다.
  • 추가된 audio clip를 열고 적절한 자막을 추가한다.

ClosedCaption/ CCDatabase이 스크립트를 통해 만든건가? 미쳤네

대략적인 분석을 하자면,

[CreateAssetMenu(fileName = "CCDatabase", menuName = "ClosedCaption/CCDatabase")] 를 통해 에셋 생성에 추가하고, 오디오 클립 파일과 자막 저장용 클래스(entry)를 맵으로 매칭하고, entry에 자막 시간과 텍스트를 저장할수 있어보이는데, 해당 CCDatabase 스크립트에서는 자막을 반환하는 GetTextEntry메서드만 존재, 아마도 에디터에서 열린 CCDatabase창도 어딘가에 구현되어 있을거 같은데;; 찾았다  CCDatabaseEditor 아마 이거일듯 한데 자세한 분석은 기초 공부 끝나면 해봐야겠다...

 

Additionnal Job

  • creativecore-audio-2022.3LTS  프로젝트 스크립트파일 파헤치기

 

 

Mission_UI

더보기

Get started with user interfaces

  • 사용자 인터페이스 < 사용자 상호작용 디자인 < 사용자 경험 디자인
  • uGui : 게임 내 인터페이스 개발을 위한 안정적인 UI 시스템
  • IMGUI : unity editor 자체에 대한 디버깅 도구와 사용자 정의의 인스텍터를 만드는 데에 사용되는 코드 기반 시스템, 사용자 자향 UI 에는 자주 사용되지 않는다.
  • UI Tookit : Unity 내에서 UI를 개발하기 위한 기본 시스템, 시스템 개발중 

Add a title to your scene

#이전 pathway 내용은 적당히 간추려서

  • ttf 글꼴 파일을 에셋에 추가하고, Window/ TextMeshPro/ Font Asset Creator 에서 font 를 선택하고 Generate Font Atlas

와 standaloneInputModule.cs 이런것도 만들어쓰네

 

Additionnal Job

  • creativecore-ui-2022.3LTS 스크립트파일 파헤치기

 

Manage screen size and anchors

  • 앵커의 날개 하나를 눌러 드래그할 수 있다.
  • 앵커 설정 시, shift 버튼을 통해 pivot 설정도 같이 할 수 있다.
  • 위치, 크기조정 및 회전은 피벗을 기준으로 발생한다.

 

  • 해상도가 낮아질때, UI가 비례적으로 크게보이는데, canvas Scaler와 관련 있다. UI Scale Mode가 고정 픽셀(Constant Pixel Size)로 되어있다. 여기서를 화면 크기에 따라 바뀌도록(Scale With Screen Size) 설정할 수 있다.
  • Constant Physical Size는 장치의 DPI 를 고려하려, 물리적으로 동일한 길이(실제 5cm 10cm)를 가지게 만든다.

 

Create a menu background with images

  • 계층/ UI/ Image 오브젝트를 생성하고, 해당 오브젝트 하위에 텍스트와 버튼을 추가한다.
  • 9-slicig은 비율을 벗어나지 않고 스프라이트 크기를 조정할 수 있다.
  • 텍스쳐 유형이 sprite라면, 에디터에서 Sprite Editor를 사용해서 9-slicing를 적용할 수 있다.

Add basic button functionality

  • 버튼의 색상, Normal 정상 상태, Highlighted 마우스가 올라간 상태, Pressed 눌린 상태, Selected 선택 상태 (#아마도 눌려서 해당 요소가 선택된 상태), Disabled 비활성화 상태, Color Mutiplier 색조 색상 효과
  • On Click()에 넣어줄 별도로 함수를 작성할 필요없이, 기본 게임오브젝트의 SetActive()로 UI 구성

 

Add toggles and sliders

  • 계층에서 UI/ Toggle 생성, 하위에는 이전의 Text 를 가지고 있음으로, Textmeshpro text로 교체
  • 계층에서 UI/ Slider
  • 각 Toggle, Slider의 이벤트함수(#맞나?) 에 음악 오브젝트를 연결하고 enabled, volume

 

Challenge: Make a worldspace UI

  • Canvas 오브젝트의 Render Mode에 따른 UI
  • Screen Space - Overlay 항상 상단.
  • Screen Space - Camera 카메라에서 일정한 거리 유지, 다른 오브젝트가 더 가깝다면, 가려짐
  • World Space UI가 일반 오브젝트와 같이 위치함. 

 

 

 

Mission_Prototyping

더보기

Get Started with prototyping

  • 프로젝트에 착수하기 전에 조금 더 작게 프로토타입을 만들자. 탐색과 반복
  • Rapid prototyping : 요구사항을 기반으로 빠르게 프로토타입을 만드는 작업, 전체 프로덕션에 적용되지 않고 프로덕션 션에 들어갈 때, 다시 시작해야할 수도 있다. 최대한 빠르게 개념 증명을 위한 프로토타입이다.
  • Evolutionary prototyping : 최종 경험이 될 기능적 프로토타입을 만드는 것이 포함된다. 처음부터 장기적인 관점을 최우선으로 구축. 전체 규모에 맞게 시스템을 설계하는 것이 이 프로토타입의 핵심요구사항인 경우가 많다. 

Choose a prototype idea

  • 아이디어를 선택하고, 타겟 고객을 식별해야한다.
  • 대상 사용자의 관심을 끌 수 있는 이유를 명확하게 설명하는 한 문장으로 표현해본다.(목표 설정을 위해, 방향을 잃어버리지 않도록)

Plan and scope your prototype

  • 프로토타입에서 구성할 컨셉 범위 지정 및 우선 순위 지정
  • Paper prototype , 메모로 경험을 구성해본다.
  • 경험을 검토하고, 프로토타입을 위한 상호작용을 정한다.
  • 시각적으로 grey box도 사용해보고, lo-fi 방법도 고려한다. 

Create your greybox prototype

  • greybox, cube 오브젝트와 기본적인 조작으로 구성

Build on your basic prototype

  • ProBuilder 와 같은 툴을 사용하여, 간단하게 유니티 에디터에서 상황을 구성하고 경험 재현

Enhance your prototype with ProBuilder

  • 모델은 생성하지 않고, ProBuilder을 사용해 프로토타입을 구성할 수 있다.
  • ProBuilder는 커스턴 지오메트리를 구축, 편집 및 텍스쳐링하는 데 사용 할수 있는 패키지
  • Tools / ProBuilder / ProBuilder Window
  • shift을 누른 상태에서 선택된(만들어논) shape를 복사해 생성 가능
  • 면 선택하고 shift을 누른상태에서 변형시켜면,면이 추가되면서 변형됨
  • shift를 누른 상태에서는 다중 선택 가능
  • Select Edge Loop 와 Select Edge Ring 을 사용해서 자동으로 선택해주는 것을 잘 이용하자.
  • 면 선택 후 backspace 키를 통해서 면 제거 가능, 구멍을 낼려면 모든 방향에서 제거해야한다.
  • 두 평행 선을 선택 후, Bridge Edges 하여 비어있는 부분을 면으로 채운다.

 

  • 벽에서 평행한 두 선을 선택 후 Insert Edge loop

 

https://docs.unity3d.com/Packages/com.unity.probuilder@6.0/manual/material-tools.html

 

Material Editor window | ProBuilder | 6.0.1

Material Editor window Use the Material Editor to apply Materials to objects or faces. (A) Use the Quick Material section to set up a Material to apply with a button or a shortcut. (B) Use the Material Palette section to designate several Materials to use

docs.unity3d.com

 

Additionnal Job

  • Probuilder 기능 파헤치기

 

Enhance your prototype with Terrain

  • 지형 툴을 이용한 간단한 풍경 생성
  • 계층/ 3D Object /Terrain

Test your prototype

  • 예상대로 작동하는지 확인, 예상치 못한 동작 식별, 평가
  •  메략적인가 유용한가? 도전에 대한 감정? 좌절할 지점과 그 지속기간? 적절한 결과?
  • 가정을 피해라, 적극적으로 테스트해라

 

 

 

 

Creative Core Final Project

2024.05.16 - [Endeavor/Unity Stuff] - Unity Learn - Creative Core Pathway - Final Submission

 

Unity Learn - Creative Core Pathway - Final Submission

Goals - 구상한 아이디어의 프로토타입을 구현IDea  랜덤요소 + 전투 시뮬레이션, 게임이라기보다는 구경하는 느낌의 프로젝트의 프로토타임 버전, 플레이 가능한 게임이라기 보단, 동영상 마냥

roaring-stretching-thought-wood.tistory.com

 

 

https://www.credly.com/badges/4cbecb8a-077b-4525-9360-7c9414fc3e70

 

Unity Creative Core was issued by Unity Technologies to 박기현.

The Unity Creative Core Pathway validates the core skills and competencies for creating immersive worlds in Unity. The Creative Core Pathway covers the essential elements of creative production, including shaders, materials, lighting, animation, VFX, camer

www.credly.com