본문 바로가기

[Unreal 5] 라이트 종류 알아보기 (포인트 라이트, 스포트 라이트, 렉트 라이트, 디렉셔널 라이트, 스카이 라이트)

Kwonriver 2023. 1. 6.
728x90

 

언리얼5에는 5가지 기본 라이트가 존재한다.

포인트 라이트, 스포트 라이트, 렉트 라이트, 디렉셔널 라이트, 스카이 라이트가 그것인데 하나씩 알아보자.

 

언리얼 포인트 라이트


우선 언리얼에서 제공하는 라이트에 대해 알아보기 전에 라이트와 관련하여 몇 가지 알아야할 용어가 있다.

  • 스페큘러(Specular) : 어떠한 물체 표면에 맺히는 라이트의 강조된(하이라이트) 부분을 말한다.
  • 강도(Intensity) : 빛의 세기, 높을수록 밝아진다.
    • 디렉셔널 라이트는 빛의 조도를 나타내는 럭스(Lux)단위를 사용하며 1럭스는 1 제곱미터 당 1루멘이 비출 때의 조도를 의미한다. 
    • 포인트, 스포트, 렉트 라이트는 빛의 광도를 나타내는 칸델라(cd)단위를 사용하며 1칸델라는 1스테라디안 당 나오는 빛의 세기를 의미한다.
  • 감쇠 반경(Attenuation Radius) : 빛이 점점 감쇠하는 반경을 말한다. 빛은 감쇠 반경의 끝까지 나아가지만 광원에서 멀어질수록 빛이 세기가 급격히 감소한다(거리의 제곱에 반비례)
  • 직접광(Direct Light) : 어디에도 부딪치지 않은 광원에서 바로 뿜어져 사물에 부딪히는 빛 
  • 간접광(Indirect Light) : 직접광에 부딪친 빛이 반사된 뒤 사물에 부딪히는 빛

스페큘러 지점


[포인트 라이트(Point Light)]

특정한 위치에서 모든 방향으로 동일한 수준의 빛을 뿜어내는 라이트를 말한다. 현실에서의 백열 전구과 동일한 기능을 한다. 모든 방향에 동일한 빛을 내뿜는 이유는 언리얼 퍼포먼스 상의 이유라고 한다. 스태틱 메시 등의 에셋에 붙이지 않는다면 공간의 한 점에서 빛만 뿜어져나오기 때문에 어색하게 보일 수 있다. 그러나 리플렉션, 스페큘러 하이라이트 안에서 사용할 반경과 길이를 변경해 보다 자연스러운 라이팅 구현이 가능하다.

 

  • 스태틱 : 게임 내에서 라이트를 변경하지 않는 것을 의미한다. 라이팅을 미리 구울 수 있어(베이크) 렌더링 시 가장 빠른 속도를 자랑한다. 다만 게임 진행 시 해당 라이트를 이동시킬 수 없기 때문에 배경 등 좁은 영역으로만 사용할 수 있다.
  • 스테이셔너리 : 스태틱 지오메트리에서의 반사광과 그림자가 라이트매스로 굽고(베이크) 다른 모든 것들은 실시간으로 렌더링한다. 게임 진행 중에 라이트의 색상과 강도 등을 변경할 수 있지만 이동과 관련된 것은 불가능하다.
  • 무버블 : 완전한 동적 라이트로 다이내믹 섀도우(실시간 그림자)를 구현할 수 있다. 라이트를 들고 다니거나 하는 등의 모든 행동이 가능하지만 렌더링 속도가 느리다는 단점이 있다.


[스포트 라이트(Spot Light)]

스팟라이트라고도 불리는 스포트라이트는 특정 위치에서 원뿔 모양으로 빛을 내뿜는다. 2개의 원뿔을 사용하여 라이트를 표현하는데 각각 Inner Cone Angle과 Outer Cone Angle이라고 부른다. Inner Cone Angle 내부에서는 라이트의 최대 밝기로 표현된다. Inner Cone Angle의 경계에서부터 Outer Cone Angle까지 감쇠가 일어나면서 스포트 라이트 조명이 은은하게 변해간다. 현실에서 무대의 특정 위치를 비추는 스팟 조명이나 손전등과 같다. Inner Cone Angle은 Outer Cone Angle보다 클 수 없으며 둘이 같은 경우 감쇠가 전혀 없는 조명이 된다.(아래 사진)

 

  • 스태틱 : 게임 내에서 라이트를 변경하지 않는 것을 의미한다. 라이팅을 미리 구울 수 있어(베이크) 렌더링 시 가장 빠른 속도를 자랑한다. 다만 게임 진행 시 해당 라이트를 이동시킬 수 없기 때문에 배경 등 좁은 영역으로만 사용할 수 있다.
  • 스테이셔너리 : 스태틱 지오메트리에서의 반사광과 그림자가 라이트매스로 굽고(베이크) 다른 모든 것들은 실시간으로 렌더링한다. 게임 진행 중에 라이트의 색상과 강도 등을 변경할 수 있지만 이동과 관련된 것은 불가능하다.
  • 무버블 : 완전한 동적 라이트로 다이내믹 섀도우(실시간 그림자)를 구현할 수 있다. 라이트를 들고 다니거나 하는 등의 모든 행동이 가능하지만 렌더링 속도가 느리다는 단점이 있다.

Inner와 Outer의 값이 같은 경우(좌), Inner가 Outer보다 작은 경우(우)


[렉트 라이트(Rect Light)]

너비(width)와 높이(height)로 정의된 직사각형의 평면 모양으로 빛을 뿜어내는 조명이다. 현실에서 TV, 모니터 등 네모 모양의 조명에 모두 사용할 수 있다. 구(Sphere)형 감쇠가 존재하며 기본적으로 X축 방향으로만 빛을 뿜어낸다. 

 

  • 스태틱 : 게임 내에서 라이트를 변경하지 않는 것을 의미한다. 라이팅을 미리 구울 수 있어(베이크) 렌더링 시 가장 빠른 속도를 자랑한다. 다만 게임 진행 시 해당 라이트를 이동시킬 수 없기 때문에 배경 등 좁은 영역으로만 사용할 수 있다.
  • 스테이셔너리 : 라이팅 빌드 시 간접광만 굽는(베이크) 방식이다. 다른 모든 것들은 실시간으로 렌더링한다. 게임 진행 중에 라이트의 색상과 강도 등을 변경할 수 있지만 이동과 관련된 것은 불가능하다.
  • 무버블 : 완전히 동적으로 렌더링하는 방식이다. 라이트를 들고 다니거나 하는 등의 모든 행동이 가능하지만 렌더링 속도가 느리다는 단점이 있다.


[디렉셔널 라이트(Directional Light)]

태양빛과 같이 아주 먼 거리에서 오는 빛을 표현한 라이트이다. 언리얼 문서에서는 광원이 무한히 먼 곳에 있다는 표현을 사용하였다. 디렉셔널 라이트에 의해 발생한 그림자는 모두 평행하다. 무한히 먼 곳의 광원을 표현한 라이트이기 때문에 어떤 좌표에 위치시켜도 동일한 효과를 얻으며 회전을 통해 빛의 방향을 변경할 수 있다.

 

  • 스태틱 : 게임 내에서 라이트를 변경하지 않는 것을 의미한다. 라이팅을 미리 구울 수 있어(베이크) 렌더링 시 가장 빠른 속도를 자랑한다. 다만 게임 진행 시 해당 라이트를 이동시킬 수 없기 때문에 배경 등 좁은 영역으로만 사용할 수 있다.
  • 스테이셔너리 : 스태틱 지오메트리에서의 반사광과 그림자가 라이트매스로 굽고(베이크) 다른 모든 것들은 실시간으로 렌더링한다. 게임 진행 중에 라이트의 색상과 강도 등을 변경할 수 있지만 이동과 관련된 것은 불가능하다.
  • 무버블 : 완전한 동적 라이트로 다이내믹 섀도우(실시간 그림자)를 구현할 수 있다. 라이트를 들고 다니거나 하는 등의 모든 행동이 가능하지만 렌더링 속도가 느리다는 단점이 있다.


[스카이 라이트(Sky Light)]

레벨(맵)의 먼 부분을 캡처하여 그 부분을 라이트로 적용하는 라이트이다. 조명의 소스가 될 환경이 없는 경우 아무런 조명도 발생되지 않으며 스카이 스피어(Sky Sphere)와 같은 객체가 필요하다. 스카이 라이트에 사용되는 소스는 Scene 또는 CubeMap에서 캡쳐할 수 있다. 

 

  • 스태틱 : 레벨에 존재하는 모든 스태틱 오브젝트에 대한 라이팅을 미리 구워놓는다. 라이트 프로퍼티에 수정을 하여도 라이트 빌드를 하기 전까지는 변경사항을 볼 수 없다. 라이트를 빌드할 때 자동으로 캡쳐되므로 라이트 빌드를 수행해야지 캡쳐한다. 
  • 스테이셔너리 : 일부 직접광과 관련된 부분을 동적으로 변경할 수 있으며 간접광과 그림자는 라이트매스에서 구워 사용한다. 라이트 배치 후 1회 이상 라이트 빌드를 해야 그림자가 정상적으로 표현된다. 로드할 때 1번 캡쳐하거나 Recapture Sky 함수를 호출하면 업데이트 된다. 디테일 패널에서 클릭해 호출하거나 블루프린트에서 호출할 수 있다. 다만 씬 다이내믹 리캡처 기능이 지원되지 않기 때문에 동적으로 호출 시 버벅임이 발생합니다. 
  • 무버블 : 어떠한 연산도 미리 하지 않으며 모든 라이팅 연산을 동적으로 계산한다.  로드할 때 1번 캡쳐하거나 Recapture Sky 함수를 호출하면 업데이트 된다. 디테일 패널에서 클릭해 호출하거나 블루프린트에서 호출할 수 있다. 다만 씬 다이내믹 리캡처 기능이 지원되지 않기 때문에 동적으로 호출 시 버벅임이 발생합니다.

설치해도 아무 조명이 없음

 

그럼 어떻게 사용해야할까. 콘텐츠 브라우저 오른쪽에 세팅을 누르면 [엔진 콘텐츠 표시]를 체크한다.

엔진 컨텐츠에서 sky를 검색하면 하나의 BP_Sky_Sphere가 있다.

 

이를 레벨에 배치하면 SkySphere가 생기는데 조명은 없고 그저 먼 거리에 노을만 있다. 스카이 라이트를 레벨에 배치하면 비로소 조명이 발생한다. 스카이 라이트가 먼 거리에 있는 배경(SkySphere)을 캡쳐하여 조명으로 사용하고 있다.

 

스카이 라이트 적용 전(좌), 적용 후(우)

큐브맵을 이용해서 캡쳐할 수도 있다. SkySphere를 제거해보자. 그 다음 위와 동일한 위치에 SunsetAmbientCubemap 이라는 텍스처 큐브가 있는데 이를 스카이 스피어의 라이트 부분에 연결한다. Source Type은 SLS Specified Cubemap으로 변경한다.

 

그럼 스카이스피어가 없음에도 스카이 라이트에 의한 조명을 만들 수 있다.


 

 

라이트 각각의 프로퍼티 설명은 아래 공식 문서에서 확인할 수 있다.

 

라이트 유형

언리얼 엔진 4 에서 사용가능한 라이트 유형입니다.

docs.unrealengine.com

 

스카이라이트에 대한 자세한 설명은 아래 블로그에서 확인할 수 있다.

 

[ PBR 이란 무엇인가 ] 11. UE4 GI : Sky Light

주의 : 잘못된 내용이 있을 수 있으므로 이상하면 참고자료를 참조하세요. [ PBR 이란 무엇인가 ] 11. UE4 GI : Sky Light UE4 IBL 의 종류 일단 이미지 소스를 광원으로 사용한다면 그것은 IBL 이라 할 수

lifeisforu.tistory.com

 

728x90

'[Unreal5] > 기능' 카테고리의 다른 글

[Unreal5] 언리얼 블루프린트 VS C++ 각각의 장점!  (0) 2022.12.20