UDN
Search public documentation:

ImageBasedReflectionsKR
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 홈 > 언리얼 엔진 3의 DirectX 11 > 이미지 베이스드 리플렉션
UE3 홈 > 머티리얼과 텍스처 > 이미지 베이스드 리플렉션

이미지 베이스드 리플렉션


문서 변경내역: Daniel Wright 작성. 홍성진 번역.

개요


이미지 베이스드 리플렉션(Image Based Reflection, 이미지 기반 반사)은 언리얼 엔진 3의 DirectX 11 렌더링 파이프라인 특징 중 하나로, GDC 2011 사마리아인 데모에서 전체 씬 HDR 리플렉션을 실시간 렌더링하는 데 사용된 기술입니다. 이 기술은 씬을 추정한 버전을 각각의 픽셀마다 반사시키는 식으로 돌아가는데, 기존의 씬 캡처같은 리플렉션 기술보다 훨씬 효율적입니다. 씬을 추정한 버전은 다음 네 가지 주요 컴포넌트로 구성됩니다:

  • ImageReflectionActors (이미지 리플렉션 액터: 텍스처를 입힌 쿼드)
  • bUseImageReflectionSpecular (이미지 리플렉션 스페큘러 사용) 옵션이 켜진 라이트
  • 불투명 표면에서의 거친 스태틱 섀도잉
  • 다이내믹 오브젝트에서의 다이내믹 섀도잉, ImageReflectionShadowPlane (이미지 리플렉션 그림자 평면)에 대해 반사된 것

이 모든 컴포넌트로 구성된 씬은:

Reflections.jpg

이미지 베이스드 리플렉션 켜기


AllowImageReflections(이미지 리플렉션 허용) 및 AllowImageReflectionShadowing(이미지 리플렉션 섀도잉 허용) 둘 다 게임 engine ini 에서 True 로 설정해야 합니다. 그런 다음 반사시키려는 머티리얼에서 bUseImageBasedReflections(이미지 베이스드 리플렉션 사용) 옵션을 켜고, 무언가 반사되도록 ImageReflectionActors(이미지 리플렉션 액터)를 몇 놓습니다.

빈 레벨에서 퀵 스타트

  • 스태틱 메시나 BSP를 몇 추가합니다.
  • 새 머티리얼을 만들고, 값이 1 인 Constant 노드를 Specular 입력에 연결한 다음, bUseImageBasedReflections (이미지 베이스드 리플렉션 사용) 옵션을 켜고, 이 머티리얼을 씬의 메시에 할당합니다.
  • 에디터 라이팅포함 모드인지 확인, 라이트가 없으면 자동으로 라이팅제외 모드로 바뀌므로 리플렉션이 표시되지 않을 것입니다.
  • 액터 클래스 탭에서 ImageReflectionActor (이미지 리플렉션 액터)를 끌어다 놓고자 하는 지오메트리 위에 놓습니다.
  • 리플렉션이 보이도록 카메라를 정렬시킵니다. 디폴트로 ImageReflectionActor (이미지 리플렉션 액터)는 단면이기에 반대 방향으로 돌려줘야 리플렉션이 보일 수 있습니다.

주: ImageReflectionActor (이미지 리플렉션 액터)는 반투명이므로, 디폴트로 꺼져있는 반투명 선택 허용 기능을 켜야 선택할 수 있을 것입니다. 반투명 선택 기능 버튼은 에디터 툴바의 '최대 표시 거리(distance to far clipping plane)' 슬라이더 바로 옆에 있습니다.

기능


이미지 베이스드 리플렉션의 기능은 다음과 같습니다:

  • HDR 리플렉션
  • 평면이나 점에 제한되지 않고, 어떤 평면이든 반사 가능합니다.
  • 표면에 걸친 다양한 광택이 지원됩니다. 젖은 도로처럼 일부에는 물이 고인 미러 리플렉션 효과를, 다른 곳에는 좀 더 번지르르한 반사면 효과를 내는 경우에 좋습니다.
  • 이방성(anisotropic, 역주: CD에 반사되는 모양) 광택 - 반사가 한 방향으로 좀 더 쏠립니다.
  • 다이내믹 컴포넌트 - 스태틱 섀도잉 부분을 제외한 반사 부분 전부를 런타임에 변경 가능합니다.

머티리얼 프로퍼티


이미지 리플렉션에 영향을 주는 머티리얼 프로퍼티는 다음과 같습니다:

  • bUseImageBasedReflections (이미지 베이스드 리플렉션 사용) - 이 머티리얼에 이미지 베이스드 리플렉션을 켜고/끕니다.
  • ImageReflectionNormalDampening (이미지 리플렉션 노멀 완화) - 이미지 리플렉션에 사용되는 노멀을 완화시킵니다. 젖은 표면에 대해 좋은 옵션인데, 바운싱되(튕기)는 디퓨즈 라이팅의 노멀은 더 들쭉날쭉하고, 스페큘러 리플렉션의 노멀은 더 부드러운 경향이 있기 때문입니다. 값이 클 수록 노멀은 (내재된 버텍스 노멀에 좀 더 가깝게) 부드러워지며, 값이 1 이면 전혀 완화되지 않고 제공된 Normal 을 직접 반사에 사용합니다.
  • SpecularColor 스페큘러 컬러 - 리플렉션 공헌도에 대한 스케일입니다.
  • SpecularPower 스페큘러 파워 - 머티리얼 광택을 조절합니다.

이미지 리플렉션 액터


ImageReflectionActors(이미지 리플렉션 액터) 는 이미지 베이스드 리플렉션에 있어서 반사되는 씬의 가장 기본 요소입니다. 이는 약간의 프로퍼티로 텍스처를 입힌 쿼드를 정의합니다:

  • bEnabled 켜짐 - 리플렉션을 켤지 말지 입니다. 마티네 toggle 트랙을 통해 제어 가능합니다.
  • bTwoSided 양면 - 리플렉션을 양면에서 볼 수 있을지 여부입니다.
  • ReflectionColor 리플렉션 컬러 - RGB 는 ReflectionTexture (리플렉션 텍스처) 값을, A 는 밝기를 조절합니다. 마티네 LinearColor 트랙을 통해 제어 가능합니다.
  • ReflectionTexture 리플렉션 텍스처 - 리플렉션에서 이 쿼드에 적용할 텍스처입니다.

월드에서 한 번에 켤 수 있는 ImageReflectionActor (이미지 리플렉션 액터) 수는 최대 85 개 입니다. 이보다 많은 경우 일부는 렌더되지 않습니다. 켜진 ImageReflectionActor (이미지 리플렉션 액터)가 많을 수록, 이미지 리플렉션 렌더 비용도 늘어납니다. ImageReflectionActor (이미지 리플렉션 액터)가 화면 밖에 있어도 마찬가지입니다 (액터 자체는 몰라도 반사면은 보일 수도 있기 때문입니다).

리플렉션 텍스처 제한

ReflectionTexture (리플렉션 텍스처) 프로퍼티에는 약간의 제한이 있는데, D3D 11 텍스처 배열과 함께 사용되기 때문입니다. 그 제한은:

  • 크기는 1024 * 1024
  • 포맷은 DXT5
  • 텍스처 그룹은 TEXTUREGROUP_ImageBasedReflection (텍스처 그룹_이미지 베이스드 리플렉션). 이 텍스처 그룹에는 확대해도 각져 보이지 않도록 밉맵을 흐리게 하는 특수 밉 생성 세팅이 있습니다.

ReflectionTexture (리플렉션 텍스처)의 RGB 는 카드가 얼마나 빛을 내뿜는지(emissive)를, Alpha 는 얼마나 불투명한지를 나타냅니다.

왼쪽의 ImageReflectionActor (이미지 리플렉션 액터) 하나는 반사지점과의 거리에 따른 광택을 나타냅니다. 오른쪽의 리플렉션은 이방성으로, 세로 방향으로 조금 더 늘어집니다.

6NoAniso.jpg 6Aniso.jpg

다음 씬은 어느 표면이든 이미지 리플렉션을 받을 수 있음을 나타냅니다. 꼭 바닥면이진 않아도 됩니다. 광택은 머티리얼의 Specular Power(스페큘러 파워)와 리플렉터까지의 거리에도 영향을 받는데, 그때문에 벽보다 바닥의 반사 광택이 더합니다.

AnySurface.jpg

이미지 리플렉션 씬 캡처

ImageReflectionSceneCapture (이미지 리플렉션 씬 캡처)는 본질적으로 씬의 일부를 텍스처로 캡처해 넣는 ImageReflectionActor (이미지 리플렉션 액터)일 뿐입니다. 사용자가 수동으로 리플렉션 텍스처를 지정해 줄 필요가 없는 것입니다. 전체 빌딩 파사드나 이미시브 텍스처가 없는 것에 리플렉션 셋업하기에는 정말 좋습니다. 씬 캡처는 라이팅 빌드 도중 자동으로 업데이트되며, 라이팅을 빌드하지 않고도 우클릭하고 Update 를 선택하여 강제로 업데이트시킬 수도 있습니다.

Properties 프로퍼티

  • DepthRange 뎁스 범위 - 텍스처에 캡처할 월드 공간 뎁스 범위를 조절합니다. 선택되면 현재 범위 크기를 나타내는 와이어프레임 박스가 표시됩니다.
  • ColorRange 색 범위 - HDR 소스 값을 LDR 생성 텍스처 속으로 패킹해 넣는 데 사용됩니다. 디폴트 값은 4 로, 캡처된 텍스처에 표현 가능한 최대 색 값이 4 라는 뜻입니다.

레벨의 ImageReflectionSceneCapture (이미지 리플렉션 씬 캡처) 하나로 그 뒤의 빌딩 파사드를 캡처하는 장면을 나타냅니다. 와이어프레임 박스는 캡처될 뎁스 범위를 가리킵니다.

SceneCapture.jpg

인바이언먼트 텍스처


WorldInfo 에는 레벨 위 무한히 먼 데서 오는 리플렉션을 지정할 수 있는 프로퍼티가 약간 있습니다. 먼 곳에서 오는 듯한 배경 반사를 추가하고, 섀도잉 메서드에 따른 디테일을 드러내기(bring out)에 좋습니다.

  • ImageReflectionEnvironmentTexture 이미지 리플렉션 환경 텍스처 - 이미지 리플렉션용 파노라마식 환경 텍스처입니다. 텍스처는 맨밑(v=0)에 수평선이 오도록, 맨위(v=1)를 따라 월드 공간으로 곧게 서도록 놓아야 합니다. 그리고서 텍스처의 U 방향은 Z 월드 축을 중심으로 회전하도록 대응됩니다.
  • ImageReflectionEnvironmentColor 이미지 리플렉션 환경 색 - 환경 텍스처에 조작해 줄 색으로, 알파는 밝기를 조절합니다.
  • ImageReflectionEnvironmentRotation 이미지 리플렉션 환경 회전 - 환경 텍스처를 Z 축 중심으로 회전시킬 각도로, 도 단위입니다.

예제 환경 텍스처입니다.

EnvironmentTexture.jpg

라이트 리플렉션


라이트에 bUseImageReflectionSpecular (이미지 리플렉션 스페큘러 사용) 프로퍼티가 새로 생겼습니다. 켜면 그 라이트가 다음과 같은 식으로 반사됩니다:

  • 보통 비오는 밤에 볼 수 있는 길게 늘어지는 하이라이트
  • 라이트 영향 반경에 제한되지 않는 하이라이트
  • 에너지 보존 스페큘러 (번지르르한 부분에는 반사가 더 어두워지고, 거울같은 부분에는 반사가 더 밝아짐)

월드에 한 번에 bUseImageReflectionSpecular (이미지 리플렉션 스페큘러 사용) 옵션을 켤 수 있는 라이트는 최대 85 개 입니다. 이보다 많으면 그 중 일부는 렌더되지 않습니다. 라이트에는 ReflectionSpecularBrightness (리플렉션 스페큘러 밝기)라는 프로퍼티도 있는데, 이 라이트 반사의 밝기를 조절할 수 있는 옵션입니다.

모든 가로등에 bUseImageReflectionSpecular (이미지 리플렉션 스페큘러 사용) 옵션을 켜 둔 씬입니다. 원거리의 라이트의 반사는 어둡지만 보이기는 하고 있는 점에 주목해 보십시오. 하이라이트는 길의 스페큘러 파워에 영향받으며, 머티리얼이 더욱 반질반질해 질 수록 (에너지를 보존하여) 어두워집니다.

Streaky.jpg

스태틱 섀도잉


리플렉션의 섀도잉은 빛 샘(light leaking)을 방지하기 위해 필요합니다. 리플렉션의 섀도잉을 위한 최우선 방법은 씬의 불투명, 정적 표면에서 미리계산하는 방법으로, 이는 라이팅 빌드 도중 라이트매스가 생성되는 것입니다. 이런 그림자를 사용하려면 WorldInfo 의 bEnableImageReflectionShadowing (이미지 리플렉션 섀도잉 켜기) 옵션을 켜 주고, 섀도잉할 영역에 Lightmass Importance Volume 을 설정했나 확인한 다음, 라이팅을 빌드합니다. 컴포넌트에서 bCastStaticShadow (스태틱 섀도우 드리우기) 옵션을 꺼 주면 리플렉션 섀도잉에서 개별 오브젝트를 제외시킬 수 있습니다.

스태틱 섀도잉 작동법을 간단히 나타내는 씬입니다. 그림자 반그늘(penumbra, 빛과 그림자가 만나는 부분) 크기는 리플렉션 지점과의 거리와 머티리얼의 스페큘러 파워(glossiness)에 따라 다릅니다.

StaticShadowing.jpg

다이내믹 섀도잉


이동가능 액터 유형 (InterpActor, SkeletalMeshActor 등)은 스태틱 섀도잉 메서드에 포함되지 않아 땅 위에 떠 보이게 됩니다. 리플렉션이 지원되는 유일한 다이내믹 섀도잉은 평면 반사(planar reflection)를 통하는 것인데, 이는 ImageReflectionShadowPlane (이미지 리플렉션 섀도우 플레인) 액터를 놓고 정렬시켜 지정할 수 있습니다. 바닥에 평면을 놓을 때 이 방법이 흔히 사용됩니다.

왼쪽은 다이내믹 오브젝트 섀도잉이 없는 씬입니다. 오른쪽은 ImageReflectionShadowPlane (이미지 리플렉션 섀도우 플레인)을 길에 맞춰 놓으니 오브젝트가 땅에 붙어있는 모습입니다.

3Unshadowed.jpg 3Shadowed2.jpg