언리얼 초보의 레벨 만들기 3 - 레벨 만들면서 알게 된 점, 필요한 팁 (라이팅, 명암순응 - 게임 시작 시 서서히 밝아지는 것, 벽 틈의 빛)
언리얼 초보의 레벨 만들기 1: https://queenut-01.tistory.com/104
언리얼 초보의 레벨 만들기 2: https://queenut-01.tistory.com/105
에 이어서...
8. 라이팅
'언리얼 엔진 측에서 혹시 초보는 게임 못 만들게 하려고 넣은 것이 아닐까' 의심들 정도로 어려운 파트.
에셋? 무료 많다! 없으면 이 대신 잇몸으로 여러 사이트에서 구할 수 있다!
배치? 초보는 느린게 문제지, 시간만 많으면 잘 몰라도 얼마든지 할 수 있다!
그런데 그렇게 다 만든줄 알았더니, 갑자기 라이트에서 턱 막힌다.
실내는 작고 쉬운 줄 알았지... 뚜껑 덮으면 갑자기 라이트들이 이상해질 줄 누가 알았겠나.
아래는 에픽게임즈 언리얼 엔진 공식 홈페이지를 참고했다.
8-1. 포인트 라이트Point Light
: 현실에서의 백열전구가 텅스텐 필라멘트에서 모든 방향으로 빛을 뿜듯 작동하는 라이트. 한 지점에서 모든 방향으로 동등하게(구 모양) 뿜는다.
본래! 공간 내 그 지점에만 뿜어지지만,
리플렉션Reflection/스페큘러 하이라이트 안에서 사용할 반경과 길이를 주면 보다 자연스럽다.
* 포인트라이트의 중요 프로퍼티
(프로퍼티: 컴포넌트 내의 기능/설정 들. Light의 프로퍼티는 Intensity, Light Color... 등이 있다.)
Intensity: 강도. 밝기. 세기.
당연히, 숫자가 커질수록 밝아진다. 기본적으로 설정된 단위는 촛불(candle의 cd)의 밝기이다.
Light Color: 라이트의 색깔.
(제곧내...)
어테뉴에이션 반경Attenuation Rdius: 감쇠 반경. 라이트의 가시 영향력 범위(위에서 말한 구)
Source Radius: 광원 모양의 반경. 직접적으로 밝게 빛나는 부분. 0이라고 빛이 없는 것은 아니지만 크기를 조절할 수 있다.
Soft Source Radius: 부드러운 광원 반경.
가장 큰 연푸른 구가 어테뉴에이션
안쪽 노란 구가 Source Radius.
Soft Source Radius는 겉으로 보이지 않는다. 다만 실제 레벨 빌드 시 느낌이 좀 다름.
Source Length: 광원 모양의 길이. Source Radius의 Z축 길이를 조절할 수 있다.
Temperature: 캘빈 단위의 색온도 값. 흰색(6500)을 기준으로 0으로 갈수록 붉어지고, 숫자가 커질수록 푸르러진다.
어테뉴에이션 반경 전체의 변화는 빌드를 해야 확인할 수 있다.
Use Temperature: Temperature 활성화/비활성화.
Affects World: 월드에 영향을 줄지 안 줄지. 아마도 제작 중 실험용.
(월드 아웃라이너에서 눈을 끄는 것은 월드의 전구모양 표시까지 사라지고, 이것은 빛만 사라진다.)
Cast Shadows: 그림자 드리우기 활성화/비활성화.
인다이렉트 라이팅 강도Indirect Lighting Intensity: 간접광의 강도. 빌드하지 않으면 확인 불가.
Volumetric Scattering: 체적 산란의 강도.
해당 기능을 알기에 앞서, 볼류메트릭 포그Volumetric Fog를 알아야 한다. 볼류메트릭 포그는 빛 전파 관여 매체(물, 안개, 먼지 등)의 밀도와 라이팅을 계산해서 다양한 밀도의 포그를 제공한다. 라이트가 몇 개든 포그에 영향을 줄 수 있다.
가로등 불빛을 보면, 완전한 0일때, 빛은 존재하지만 산란되지 않는다.
Volumetric Scattering이란 이 강도를 말한다. 높을수록 빛이 더 부서지듯 산란된다.
(Light의 화살표 열면 나오는 프로퍼티)
이 부분은 대체로 잘 모르겠다.
Intensity Units: 밝기의 단위.
Use Inverse Squared Falloff: 물리 기반 거리별 역제곱 감쇠 사용 활성화/비활성화. 빛의 중간 감쇠가 사라진다.
비활성화시 필 라이트(빛 근처의 밝은 스팟이 없는 빛)가 되고, 조명의 휘도가 밝기 스케일로 조절된다.
Light Falloff Exponent: UseInverseSquaredFalloff 옵션을 비활성화하면 제어 가능. 자체적으로 감쇠를 조절하고 싶을 때 이용한다. 값이 커질수록 빛의 영향 반경은 작아진다.
Specular Scale: 스페큘러 하이라이트의 배율. 0에서 1의 값을 가진다. 기본값 1 외엔 물리적으로 말이 안되지만, 특수한 필터 효과를 주기위해 사용할 수 있다.
Shadow Resolution Scale: 그림자 맵의 해상도 스케일.
Shadow Bias:
이 라이트로부터 생기는 그림자의 시작 위치를 제어한다. 0인 경우, 그림자는 정확히 물체와 맞닿게 시작되지만 이로 인한 시각적 문제가 발생한다. 값이 커지면 이런 시각적 문제를 제거해주지만 실제 위치해야 하는 곳보다 멀어져 공중에 뜬 느낌을 준다.
Shadow Filter Sharpen: 이 라이트에 대한 섀도 필터링을 얼마나 선명하게 할지.
Contact Shadow Length: 선명한 컨택트 섀도를 위해 레이 트레이싱을 할 스크린 스페이스 길이.
반투명 섀도 드리우기Cast Translucent Shadows: 반투명 오브젝트를 통과하는 다이내믹 섀도 활성화/비활성화.
다이내믹 인다이렉트 라이팅Affect Dynamic Indirect Lighting: 라이트를 Light Propagation Volume 에 주입 활성화/비활성화.
스태틱 섀도 드리우기Cast Static Shadows: 스태틱 액터에 그림자 드리우기 활성화/비활성화.
다이내믹 섀도 드리우기Cast Dynamic Shadows: 다이내믹 액터에 그림자 드리우기 활성화/비활성화.
Affect Translucent Lighting: 반투명 재질에 라이트 영향 활성화/비활성화.
간접 라이팅 채도Indirect Lighting Saturation: 0이면 라이트매스에서 이 라이트를 완전히 탈색시키고, 1이면 변화가 없다.
섀도 익스포넌트Shadow Exponent: 그림자 반그늘 감쇠를 조절. 0.5가 최저고, 8이 최대값이다.
외에 Light Function, Light Profiles이 있지만 이해할 수 없어서 적지 않았다....
8-2. 스포트 라이트Spot Light
: 한 지점에서 원뿔 모양으로 빛을 뿌리는 라이트. 실제 지점에서 빛이 나진 않고, 화살표가 가리키는 방향으로 극장의 조명을 쐬듯 빛이 뿌려진다.
* 스포트라이트의 중요 프로퍼티
(포인트라이트에 이미 설명한 것과 같은 이름, 기능의 프로퍼티는 생략한다.)
어테뉴에이션 반경: 빛의 가시 영향력 범위. 값이 커지면 원뿔의 크기도 커진다.
Inner Cone Angle: 라이트가 최대의 밝기를 내는 범위.
Outer Cone Angle: 빛이 감쇠하는 범위. Inner Cone Angle의 바깥 경계부터 Outer Cone Angle의 안쪽이 해당된다. 스포트 라이트의 전체적인 크기를 결정한다.
Source Radius: 원뿔 광원 외에 포인트라이트처럼 구체의 광원이 더해진다. 빌드를 완료해야 적용된다.
Source Length: 포인트 라이트처럼 Z축으로 스케일이 늘어나긴 하는데 위치의 Z축과 방향이 다르므로 주의.
20220209 업데이트.
8-3. 렉트 라이트Rect Light
: 평평한 면(천장 등)에 붙은 네모난 전등이 빛을 내듯, 액터 기준으로 X축 양수 방향으로만 빛을 내뿜는다. 텔레비전, 모니터 화면, 머리 위 조명, 벽등 등.
단, 이 라이트는 모든 상황(모든 모빌리티)에 실제 에어리어 라이트처럼 작동하지 않는다.
스태틱 혹은 스테이셔너리: 라이트매스는 광원에서 나오는 조명을 계산할 때, 라이트의 너비와 높이를 고려한다. 방출된 빛은 사각 표면 여러 지점에서 샘플링되는데 이 샘플링된 각 라이트는 전체 광도의 일부를 방출하므로, 렉트 라이트는 여러 개의 약한 LED전구를 사각 표면에 나눠 심은 시뮬레이션으로 생각하면 된다.
무버블: 같은 설정의 포인트 라이트/스포트 라이트보다 렌더링 비용이 훨씬 비쌈. 비용을 낮추고 싶다면 Cast Shadows옵션을 비활성화하자.
* 렉트 라이트의 중요 프로퍼티
Source Width: 사각형의 Y축.
Source Height: 사각형의 Z축.
이 두 값을 높이면 Intensity의 값도 높여야 똑같은 밝기로 유지된다.
Barn Door Angle
Barn Door Length
Source Texture: 노란 사각형에 적용할 텍스처 지정. 빛의 색에 영향을 주고, 스페큘러 리플렉션에 보임. 다만 이 라이트가 드리우는 그림자에는 영향이 없다. 가급적 HDR 이미지 사용.
8. 명암순응 - 서서히 밝아지는 것
에디터 모드로 볼 땐 모르는데, 게임을 플레이해보면 어두운 실내에서 빛이 점점 밝아지는 것을 볼 수 있다.
마치 사람이 갑자기 어두운 곳에 들어가서 아무 것도 안 보이다가,
점점 어두운 빛에 눈이 적응하며 실내가 보이게 되는 것(명암순응) 처럼.
퀄리티 높은 자연스러운 게임에는 아주 훌륭한 작용이지만,
지금 만들고 있는 게임같이 작고 소소한 퀄리티를 지향하는 게임에 대해선 별로 어울리지 않다.
게다가 개인적인 생각이지만,
이런 명암순응은 실외맵에서 어두운 곳에 있다가 밖으로 나갈 때나 어울리지, 처음부터 끝까지 실내에 있을 경우엔 굳이 필요가 없을 것 같다.
편집(Edit) → 프로젝트 세팅(Project Setting) → 엔진(Engine) → 랜더링(Randering) → Default Settings → 자동노출(Auto Exposure) 체크 해제.
자동 노출을 없애면 빛의 세기가 약해져 보인다.
때문에 라이트 값을 높여야 한다.
9. 벽 틈에 비치는 빛
일부 모퉁이에 밝으면 안되는 곳인데 밝아지는 곳이 있다.
1. 라이트매스 임포턴트 볼륨 설치하고 라이트 빌드를 하이퀄리티로.
그리고 재빌드.
이상한 빛들이 사라졌다.
다만 이게 라이트매스를 설치해서 그런건지,
하이 퀄리티로 빌드해서 그런건지 잘 모르겠다.
일단 이후에 프리뷰 퀄리티로 빌드했을 때에도 빛샘은 없어졌다.
20220209 업데이트.
2. 벽 자체를 두껍게 만들고, 벽과 바닥 등을 조금 겹치게 쌓자.
벽을 일부 겹치게 쌓고,
벽과 바닥 또한 겹치게 만들면
빛샘은 확실히 줄어든다.
즉, 처음부터 잘 만들자~
3. 또한 만약 실외에 디렉셔널 라이트Directional Light가 설치되어 있다면 차라리 스카이 라이트Sky Light로 바꾸자. 스카이 라이트가 실내에 훨씬 덜 영향을 준다.