UDN
Search public documentation:

LightEnvironmentsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 빛과 그림자 > 라이트 인바이언먼트 (Light Environment)
UE3 홈 > 레벨 디자이너 / 라이팅 아티스트 > 라이트 인바이언먼트 (Light Environment)

라이트 인바이언먼트 (Light Environment)


문서 변경내역: Daniel Wright 작성. Andrew Scheidecker? 업데이트. 홍성진 번역.

개요


라이트 인바이언먼트(Light Environment, 이하 LE)를 사용하면, 스태틱 라이트 효과를 추정하여 다이내믹 라이팅을 자동화된 방식으로 제어할 수 있습니다. 모듈레이트 섀도우(modulated shadow, 변조 그림자)와 함께 LE 는 기어즈 오브 워나 언리얼 토너먼트 3 의 모든 캐릭터와 비히클, 대부분의 다이내믹 오브젝트에 사용되었습니다.

LE 가 필요한 이유


LE 가 없다면 레벨 디자이너는 스태틱 전용 라이트와 다이내믹 오브젝트에 영향을 끼치는 라이트, 이렇게 최소 두 세트의 라이트를 관리해야 합니다. 이 둘을 합치는 것은 거의 불가능한데, 다이내믹 오브젝트에 영향을 끼치는 라이트가 너무 많으면 퍼포먼스에 악영향을 끼치기 때문이며, 다이내믹 오브젝트에 스태틱 라이트만 사용하는 것도 다이내믹 오브젝트의 라이팅을 그르칠 뿐만 아니라 라이팅 시스템의 유연성을 갉아먹기 때문입니다.

LE 작동방식


LE 는 LE 를 갖고있는 오브젝트에 영향을 끼치는 스태틱/다이내믹 라이트를 그러모은 다음, 그에 대한 라이트를 고정된 렌더링 비용으로 재현합니다. 캐릭터에 영향을 끼치는 모든 라이트를 스페리컬 하모닉(Spherical Harmonic, SH) 라이트와 디렉셔널 라이트로 추정합니다.

LE 는 라이트에서 캐릭터의 바운드 내 한 점까지 선 검사를 해서, 그늘져버려 캐릭터에 영향을 끼치지 않게 된 라이트를 컬링해(가려)냅니다. 디폴트로 딱 하나의 광선만 사용합니다만, 일부라도 보이는지 검사하려면 DynamicLightEnvironmentComponent (다이내믹 LE 컴포넌트)의 NumVolumeVisibilitySamples (볼륨 비저빌리티 샘플 수)를 사용해 광선 검사를 여러번 하도록 하면 됩니다.

각 라이트에 대해 LE 는 캐릭터에 영향을 끼치는지 알아보고, 그 빛을 낮은 순서의 SH 기저(basis)로 비춥(project)니다. 그렇게 비춘 빛의 세기와 색은 유지되나, LE 를 가진 오브젝트 상의 입사각이 블러링됩(흐려집)니다. SH 기저가 고정된 세트의 SH 계수(coefficient)로 무한한 라이트를 표현해내기 위해서는, 블러링에서 정보가 손실되는 것은 어쩔 수 없습니다.

LE 가 관련된 모든 라이트를 SH 기저 속으로 비추고 나면, 그 직사광에서 튕겨나온(bounced) 빛, 이 서브젝트에 영향을 끼칠 내용을 추정합니다. 그 추정이란 단순히 직사광의 일부를 잡아다가 채도를 높이고 들어온 각대로 반사한 다음 직사광에 더해 빛의 총량을 구하는 것입니다. 튕겨나온 빛 추정 방식은 DynamicLightEnvironment (다이내믹 LE)의 멤버 BouncedLightingIntensity (튕긴 빛 세기)와 BouncedLightingDesaturation (튕긴 빛 채도감소)로 조절합니다.

디렉셔널 라이트는 도미넌트 라이트 각도에서 오는 빛을 종합하는 데 사용되는데, 도미넌트 라이팅 각도란 LE 를 가진 오브젝트 위에 입사된 빛을 SH 에 비춘 곳 중에서 휘도가 가장 높은(, 즉 도미넌트(dominant, 우세)한) 곳의 각도를 말합니다.

SH 라이트는 디렉셔널 라이트가 미치지 않는 빛을 전부 합성하는 데 사용됩니다. SH 기저의 각 블러링은 컴포짓(composite, 합성) 라이팅을 나타내는 데 사용되므로, SH 라이트는 고주파 윤택반사(specular reflection)를 정확하게 재현해 낼 수 없습니다. 그래서 SH 라이트에서의 윤택 반사는 최적화의 일환으로 완전 무시됩니다.

LE 는 옵션을 통해 자신에게 영향을 끼치는 라이트 중 bCastCompositeShadow=True 인(컴포짓 섀도우를 드리우는) 라이트 부분집합을 합성하여 만든 단일 모듈레이트 섀도우를 드리우게 할 수도 있습니다. LE 의 SH 라이트는 LE 의 모듈레이트 섀도우 영향을 받지는 않지만, LE 의 디렉셔널 라이트는 영향을 받습니다.

세팅


Light

각 라이트에 사용할 수 있는 관련 세팅은 이렇습니다:

LightSettings.jpg

bCastCompositeShadow

한 라이트의 그림자 방향에 영향을 끼치려면 bCastCompositeShadow=True (컴포짓 섀도우 드리우기=참)이어야 합니다. 모든 라이트에 이 옵션의 디폴트는 참이지만, 에픽 changelist 208753 이전의 경우 포인트/스포트 라이트의 디폴트는 거짓이었습니다. 거짓으로 설정된 라이트의 경우 LE 의 컴포짓 라이팅에는 영향을 끼치지만 그 컴포짓 섀도우에는 영향을 끼치지 않습니다.

또한 bCastCompositeShadow (컴포짓 섀도우 드리우기)는 라이트-매핑되지 않은 라이트가 모듈레이트 섀도우에 영향받을지를 조절하는데, bCastCompositeShadow=False (컴포짓 섀도우 드리우기=거짓)인 다이내믹 라이트는 어느 라이트의 모듈레이트 섀도우도 받지 않습니다. bCastCompositeShadow (컴포짓 섀도우 드리우기) 옵션은 라이트-매핑된 라이트에는 무시되는데, 라이트가 컴포짓 라이트-맵의 일부로 렌더되며, 모든 라이트-매핑된 라이트는 모듈레이트 섀도우에 영향을 받기 때문입니다.

CompositeDynamic 채널

모든 라이트는 디폴트로 CompositeDynamic (컴포짓 다이내믹) 채널에 있으나, 컴포짓 LE 를 사용하지 않는 프리미티브가 있다면 Dynamic (다이내믹) 라이팅 채널에 라이트를 계속 두어야 합니다. 참고로 CompositeDynamic 채널은 최적화의 일환으로써 Dynamic 라이팅 채널과는 별도의 플랙입니다. 대다수의 라이트는 전형적으로 CompositeDynamic 이긴 하지만 Dynamic 은 아니며, Dynamic 라이팅 채널에 있는 라이트는 씬에 프리미티브가 다시 붙을 때마다 연관성(relevance) 검사를 해 줘야 합니다.

프리미티브의 LightEnvironment

LightEnvironment 에서 사용할 수 있는 세팅 중, SkeletalMeshActors 등에 설정할 수 있는 것이 있습니다.

LightEnvironment_Properties.gif

DynamicLightEnvironmentComponent

  • AmbientGlow - 레벨 라이팅에 추가로 더할 배경색입니다.
  • AmbientShadowColor - 앰비언트 섀도우(배경 그림자) 색입니다.
  • AmbientShadowSourceDirection - 앰비언트 섀도우 소스의 방향입니다.
  • bCastShadows - LE 가 그림자를 드리울지 입니다.
  • bDynamic - LE 를 동적으로 업데이트시킬지 입니다.
  • bFreeze - LE 상태를 얼릴지 입니다. (새 빌드에서는 더이상 이 프로퍼티를 수정할 수 없습니다.)
  • BouncedLightingIntensity - 시뮬레이션으로 튕겨지는 빛의 세기로, 입사되는 직사광의 일부입니다.
  • BouncedLightingDesaturation - 시뮬레이션으로 튕겨지는 빛과 혼합시킬 채도감소치입니다. 전형적으로는 음수 값을 사용하여 튕겨지는 빛의 채도를 올립니다.
  • bSynthesizeDirectionalLight - LE 에서 도미넌트 라이트를 종합하는 데 디렉셔널 라이트를 사용할 것인지 입니다.
  • bSynthesizeSHLight - 디렉셔널 라이트 종합에 제외된 모든 라이트를 종합하는 데 스페리컬 하모닉 라이트를 사용할지 입니다. 거짓이면 스카이 라이트가 대신 사용됩니다.
  • InvisibleUpdateTime - 보이지 않는 액터에 대한 LE 업데이트 주기로, 초 단위입니다.
  • LightDesaturation - 레벨 라이팅 채도를 백분율로 얼마나 감소시킬지인데, 컬러 라이팅 상태에서 같은 팀 캐릭터의 색을 도드라져 보이게 하는데 좋습니다.
  • LightDistance - 오너의 원점에서부터 라이트를 만들 거리로, 반경 단위입니다.
  • LightShadowMode - 라이트에 적용할 섀도잉 종류입니다.
  • MinTimeBetweenFullUpdates - LE 풀 업데이트 최소 간격입니다.
  • ModShadowFadeoutExponent - 모듈레이트 섀도우 페이드아웃 곡선 제어 지수입니다.
  • ModShadowFadeoutTime - 그림자를 드리우던 것이 보이지 않게 된 이후 모듈레이트 섀도우가 완전히 페이드아웃 되기까지 걸리는 시간입니다.
  • NumVolumeVisibilitySamples - 프리미티브의 바운딩 볼륨 안에서 사용할 비저빌리티 샘플 수입니다.
  • ShadowDistance - 오너의 원점 너머로 그림자를 드리울 거리로, 반경 단위입니다.
  • ShadowFilterQuality - LE 에 사용할 섀도우 버퍼 필터링 품질입니다.

LightEnvironmentComponent

  • bEnabled - LE 컴포넌트를 켭니다. LE 컴포넌트가 켜지면, DynamicLightEnvironment (다이내믹 LE)는 Dynamic 라이팅 채널에 있는 프리미티브를 마치 CompositeDynamic 라이팅 채널에 있는 것으로 간주합니다. 여기서 Dynamic 채널은 고유한 것으로 간주되며, 다른 어느 채널도 DynamicLightEnvironmentComponent (다이내믹 LE 컴포넌트)에 의해 재해석되지 않습니다.

한계


LightEnvironmentComponent.bEnabled 를 켜고 나면 그림자가 아래를 향하는 현상

LE 를 갖고 있는 오브젝트에 영향을 끼치는 것 중 bCastCompositeShadows=True 인(컴포짓 섀도우를 드리우는) 라이트가 없으면, 그 오브젝트의 그림자는 바로 아래( 또는 LE 의 AmbientShadowDirection (배경 그림자 방향) 프로퍼티에 지정된) 방향을 향하게 됩니다.