728x90
이 글은 유튜브 - Brackeys : Unity의 조명 영상을 보고 정리한 글입니다.

 

 

목차.

  1. Illumination : Direct와 InDirect의 차이
  2. Light 설정
  3. Light Baking
  4. Light Mapping
  5. Post Processing 설정
  6. 결과

 

Illumination : Direct와 InDirect의 차이

 

Direct Illumination

 

 

광원에서 나온 빛이 한번 반사되어 우리 눈에 도달하는 것을 직접조명(Direct Illumination)이라고 합니다.

Direct Illumination은 주로 주변 물체에서 직접적으로 빛을 받는 부분을 나타냅니다.

이것은 광원에서 나오는 빛이 표면에 닿아 반사되거나 스스로 발광하는 경우를 포함합니다.

 

 

Direct-Illumination
Direct Illumination 원리

 

아래 사진은 직접조명만 우리 눈에 들어왔을 때의 장면입니다.

 

Direct-라이트만-눈에-들어오는-모습
Direct라이트만 눈에 들어오는 모습

 

InDirect Illumination

광원에서 나온 빛이 여러 표면에서 반사되어 우리 눈에 들어오는 것을 간접조명(InDirect Illumination)이라고 합니다.

InDirect Illumination은 물체 간에 발생하는 간접적인 빛의 상호작용을 나타냅니다.

이것은 물체가 주변 물체에 빛을 반사하거나 스스로 발광한 후 다른 물체에 영향을 미치는 경우를 포함합니다.

InDirect Illumination은 주로 글로벌 일루미네이션 기술로 구현됩니다.

 

InDirect-Illumination의-원리
InDirect Illumination의 원리

 

아래 사진은 간접조명이 우리 눈에 들어왔을 때의 장면입니다.

 

InDirect-Illumination의-모습
InDirect Illumination의 모습

 

확실히 더 자연스러운 모습을 보여줍니다.

 

Light 설정

 

유니티에서 Directional Light, Point Light 등 빛을 표현할 방법은 다양합니다.

 

하지만 실내의 빛을 표현할 때는 Directional Light는 조금 부자연스러울 수 있습니다.

실내에는 창문이 없다면 태양의 빛이 들어오지 안기 때문입니다.

 

실내의 빛 표현은 

광원과 Global Illumination(글로벌 일루미네이션)을 적절하게 사용해서 자연스럽게 표현이 가능합니다.

 

빈 Scene에서 앞, 뒤를 제외하고 Plane을 배치해 큐브 모양으로 맵을 만들어줍니다.

 

Cube-모양으로-맵-구성
큐브 모양으로 맵을 구성

 

Emission을 사용해서 빛을 표현할 것이기 때문에 Directional Light는 삭제해 줍니다.

 

그러면 이제 오브젝트가 빛의 영향을 받지 않은 상태가 됩니다.

 

화면이 어두워서 불편하다면 상단에 lighting use 토글버튼(전등 모양)을 눌러 라이트 미사용을 하면 됩니다.

 

벽 양쪽에 작은 Plane을 생성하고 벽에 잘 배치해 줍니다.

벽과 정확하게 붙어있다면 Plane의 표면에 벽이 튀어나오기 때문에 조금은 띄어줍니다.

 

양쪽에-Plane을-배치
벽 양쪽에 Plane을 배치

 

이제 새로운 Material을 생성해 줍니다.

 

Emission 체크 박스를 눌러 사용을 해주고

 

Global Illumination : Realtime

Emission Map - Instensity : 1.5

로 설정해 주었습니다.

 

Emission-설정
Emission 설정

 

아직 이대로는 빛이 반사되지 않는데 그 이유는 오브젝트들이 Static으로 되어있지 않기 때문입니다.

 

모든 오브젝트들을 Static으로 변경해 준다면 빛이 잘 반사되는 것을 볼 수 있습니다.

분명 아까 Lighting 미사용으로 해주었는데 빛이 반사되는 것을 보니 다른 라이트와는 다른 성격을 가지고 있다는 것을 유추해 볼 수 있었습니다.

 

다시 빛 사용을 눌러주겠습니다.

 

이제 반대편에도 똑같이 Plane을 만들어주고 파란색으로 emission을 만들어주면

 

Emission-이-적용된-모습
Emission이 적용된 모습

 

사진과 같이 나름 이쁘게 나옵니다.

현재 씬에 빛 영향을 받는 오브젝트가 얼마 없기 때문에 별 문제는 없지만

Realtime은 기본적으로 성능 부분에서 적지 않은 부하가 있습니다.

 

Realtime은 실시간으로 Global Illumination이 적용되기 때문에 실감 나는 빛의 변화를 체감할 수 있지만 
움직이지 않는 정적인 사물에는 딱히 실시간으로 적용될 필요가 없습니다.

 

Light Baking

 

이럴 사용되는 것이 Light Baking입니다.

 

라이트 베이킹(Light Baking)은 실시간 라이팅(Real-Time Lighting) 대신에 미리 계산된 정적 라이팅(Static Lighting)을 사용하여 게임 환경을 렌더링 하는 기술입니다.

게임 성능을 향상시키고 시각적 품질을 향상시킬 수 있으며, 주로 3D 환경에서 최적화를 위해 많이 사용됩니다.

 

빛에 영향을 받는 오브젝트들이 Static으로 되어있다면, 라이트 베이킹을 할 때
오브젝트의 텍스쳐가 새롭게 생성됩니다.

 

그렇게 생성된 텍스쳐는 라이트가 없더라도 라이트가 적용된 것 같은 상태를 유지를 합니다.

 

광원을-없애도-바닥과-벽이-빛나는-모습
광원이 없어도 바닥과 벽이 빛나는 모습

 

간단하게 말하자면 빛에 영향받던 상태로 베이킹이 되어 텍스쳐의 색이 그대로 변경되었다고 보면 됩니다.

 

이제 Global Illumiation이 Realtime일 필요가 없으니,

아까 만든 Material들의 Global Illumination을 Baked로 변경해 줍니다.

 

Lighting 창의 하단에서 Generate Lighting을 눌러 라이트 베이킹을 해줍니다.

만약 Lighting 창이 보이지 않는다면 상단에서 Window -> Rendering-> Light를 눌러주면 됩니다.

 

그리고 해당 씬에서는 다른 빛에 영향을 받으면 안 되기 때문에 Skybox Material은 None으로,

Ambient Color는 Black으로 해주었습니다.

 

Lighting-Environment-설정
Lighting Environment 설정

 

Light Mapping

 

Scene의 Light Mapping Settings를 보면 많은 항목들이 있는 것을 볼 수 있습니다.

 

프로그레시브 라이트매퍼 - Unity 매뉴얼 (unity3d.com)

 

프로그레시브 라이트매퍼 - Unity 매뉴얼

프로그레시브 라이트매퍼는 고속 경로 추적 기반 라이트매퍼 시스템으로, Unity 에디터의 프로그레시브 업데이트를 통해 베이크된 라이트맵과 라이트 프로브를 제공합니다. 이 라이트매퍼 시스

docs.unity3d.com

 

위 유니티 문서에 보면 설명이 잘 되어있습니다.

 

이 설정을 통해서 라이트 맵 품질 향상, 베이크 시간 조절 등 다양하게 조절이 가능해집니다.

지금 단계에서는 딱히 쓸 필요는 없어 보입니다.

 

Post Processing 설정

 

지금도 나름 괜찮게 나왔지만 양쪽 Plane이 조금 밋밋해 보이는 것 같습니다.

 

Emission-부자연스러움
Emission이 조금 부자연스러움

 

Post Processing을 사용하기 위해 

Main Camera에서 Camera 컴포넌트에 있는 Post Processing를 체크를 해줍니다.

 

hierarchy -> Volume -> Global Volume을 하나 만들어줍니다.(2021.3 URP 환경에서 작업하였습니다)

 

그렇게 생성된 Global Volume Add Override를 눌러 Bloom을 추가했고,

설정은 기호대로 하시면 됩니다.

 

 Intensity -0.9

Scatter - 0.52

Tint - white

Clamp - 65472

로 설정했습니다.

 

결과

 

아래는 최종적으로 완성된 모습입니다.

 

Global-Volume이-적용된-모습
Global Volume이 적용된 모습

 

지금까지 Emission과 Global Illumination을 사용해서 연출을 해봤고,

Light Baking을 통해서 최적화도 진행하였습니다.

마지막으로 Post Processing을 통해서 완성도를 높이는 작업을 했습니다.

728x90

+ Recent posts