반짝이고 움직이는 조명을 만들어보자
언리얼은 조명이 어두워도 오토노출기능때문에 다시 밝아진다 이것부터 만져주자.
베이직 레벨이나 ThirdPersonLevel에는 라이트폴더가 존재한다 DirectionalLight를 클릭하고 디테일에 intensity를 낮춰준다. 아마 잠깐 어두워졌다 다시 밝아질것이다.
같은 조명폴더에 PostProcessVolume이 있을것이다. 이건 영역에 플레이어가 들어가면 후처리를 해주는 기능인데 여기서 AutoExposure를 Manual로하면 끌수 있지만 끄는것 보다는 MinEV100을 -10에서 0이상 정당히 조정하면 어둡게 된다.
상식적으로 집의 전등은 1000lux 야외 태양은 120,000Lux라고 한다. 카메라의 EV100은 다음과 같이 계산된다. 공식을 보면 Exposure는 EV100과 반비례한다
수동 측광 모드
https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/PostProcessEffects/AutomaticExposure/
Manual (수동) 측광 모드는 포스트 프로세스 Camera (카메라) 세팅 중 Shutter Speed (1/t) , ISO (S) , Aperture (N) (셔터 속도 (1/t), ISO (S), 조리개 (N))에 정의된 카메라 노출 값을 사용합니다.
카메라 노출 스케일 계산 공식은 다음과 같습니다.
- Exposure = 1 / (1.2 * 2^EV100)
여기서:
- EV100 = log2( N²/t * 100/S )
여기서 Exposure (노출)은 톤 매퍼와 노출 보정을 적용하기 전 (아래 참고) 씬 표면 휘도(cd/m² 단위 L) 및 픽셀 밝기(B) 사이 관계를 정의합니다.
- B = Exposure * L
이렇게 해도 안 어두워지면 Volume의 사이즈를 크게해서 플레이어가 그 안에 들어가게 해야한다. 퍼포먼스에 부담을 주는것 같지 않다. PostProcess란 말그대로 렌더링이 끝나고 출력전 2D로 색감을 만지는 작업으로 완성도를 높이기 위해 자주사용된다.
Actor를 부모로 BP_Light1을 만들어주자. 스포트라이트를 추가하고 아래를 비추게 회전시켜주고 z높이를 50정도 뛰우고 intensity를 50000정도로 한다
이벤트그래프는 타이머를 만들어 1초간격으로 랜덤하게 색상을 바꾸는 로직이다.
레벨에 배치하고 실험해보고 잘되면 복사해서 배치한다.
이제 움직이는 조명을 만들어 보자
블루프린트를 이름은 BP_MovingLight로 부모를 액터로 한다
블루프린트를 EventBeginPlay는 위와 동일하고 isForward라는 변수와 Timeline과 Lerp를 이용해 이벤트를 2개 만들어준다. 이 블루프린트에서는 이벤트만 마련하고 외부에서 불리우면 RotateForward와 Reverse를 반복한다.
먼저 BP_MovingLight를 하나 레벨에 끌어다 놓고 선택후 레벨의 OpenLevelBlueprint를 열어 우클릭하면 BP_MovingLight의 참조를 얻을수 있다.
무빙라이트를 생성한 참조위치를 얻기 위해서다 다른방법도 많겠지만 라이트를 생성해주기 위해 순환문을 돌리면서 Index를 변수로 승격시켜 뒤에서 사용한다
Index가 홀수 와 짝수 일때 움직임을 반대로 하기위해 Foward, Reverse Event를 번갈아가면 호출해준다.
실행해보면 조명이 움직이기 하지만 바닥만 비춘다 조금더 사실적으로 하기 위해 For의 VolumetricFog를 켜보자
레벨에 배치했던 무빙라이트와 실시간으로 스폰한 무빙라이트와 번지는게 달랐다.?
'레퍼런스 > Light' 카테고리의 다른 글
Disco Mirror Ball Light Unreal (0) | 2024.05.11 |
---|