실사 렌더링

UE4 에 포함된 Realistic Rendering, 실사 렌더링에 대한 개요입니다.

Windows
MacOS
Linux

RealisticRenderingHeader.png

이 예제는 언리얼 엔진 4 의 실사 렌더링 가능성을 선보여 줍니다. 목표는 VRay 나 Mental Ray 같은 CG 렌더링 엔진으로 만든 것처럼 건축 렌더링에서의 외양과 느낌을 내는 작은 씬을 하나 만드는 것이었습니다. 그러나 이번 경우에서의 일차적인 조건은, 모든 애셋을 게임에서 쓸 수 있도록 해야 했기에, 하이 폴리 모델링은 사용할 수 없었습니다. 씬의 모든 것은 실제 게임을 제작하는 데 사용할 수 있는 방식으로 만들어야 했습니다.

이 씬에서 활용한 엔진 기능은 다음과 같습니다:

  • 물리 기반 머티리얼

  • 라이트매스를 통해 미리 계산된 산란광

  • (광도 측정식 라이트인) IES 프로파일을 사용한 스테이셔네리 라이트

  • 포스트 프로세싱

  • 리플렉션

배경의 스케일도 염두에 두는 것이 중요한데, 라이트매스나 포스트 프로세싱 안에서의 세팅에 영향을 끼치기 때문입니다. 이 씬은 언리얼 유닛과 센티미터를 1:1 비율로 하여 디자인되었습니다.

사용가능 맵

이 예제에는 세 개의 맵이 포함되어 있습니다.

이미지

이름

설명

RealisticRenderingHeader.png

Room.umap

태양빛이 창문을 통해 흘러들어오는 표준적인 낮의 방 구성입니다. 각각의 그림틀 위에 놓인 라이트도 있습니다. 맵을 플레이하면 카메라가 자동으로 날아다니며 레벨을 보여줍니다. 이 예제의 기본 맵입니다.

RoomNight.png

RoomNight.umap

Room 맵과 같은 씬입니다만, 이 경우 태양광이 없어서 실내 조명 기구가 일차적인 라이팅을 담당합니다. 맵을 플레이하면 카메라가 자동으로 날아다니며 레벨을 보여줍니다.

RoomNightNoLights.png

RoomNightNoLights.umap

이 구성은 실내 조명 기구 스위치를 끈 상태입니다. 구석에 램프 하나만 깜빡이고 있으며, 창문에서 약간의 배경 조명이 들어오고 있습니다. 맵을 플레이하면 플래시 라이트를 들고서 레벨을 날아다닐 수 있습니다.

라이팅

이 맵들 중 각각의 전체적인 외양에서 특히나 중요한 것은 라이팅으로, 여기서 현실적인 느낌이 대부분 판가름난다고 볼 수 있습니다. 여기서는 이 예제에 포함된 레벨 셋 모두에 대한 일차적인 라이팅 컨셉을 분석해 보았습니다.

머티리얼

언리얼 엔진 4 는 물리 기반 머티리얼 시스템 을 활용합니다. 즉 다소 이해하기 힘든 "디퓨즈"(확산), "스페큘러 파워"(반사력) 같은 머티리얼 프로퍼티를 "베이스 컬러"(바탕색), "러프니스"(거칠기) 처럼 물리적 속성을 더욱 잘 설명해 주는 프로퍼티로 대체시켰습니다. 이들 프로퍼티 다수는 0 에서 1 사이 수치를 기반으로 하며, 터무니없는 실수를 요하지 않습니다. Pixar RenderMan 같은 패키지에서 사용되는 머티리얼 시스템과 비슷합니다. 기본적인 머티리얼의 물리적 속성을 나타내는 주요 프로퍼티 넷은 아래와 같습니다. 이들을 여러가지 방식으로 서로 합치면 사실상 현실의 물리적 표면 중 어떠한 것도 만들어 낼 수 있습니다.

프로퍼티 이름

샘플

설명

Base Color

드래그로 미리보기

이름에서 알 수 있듯이, 오브젝트의 바탕색입니다. 기존 머티리얼 시스템에서의 Diffuse 와 비슷합니다. 컬러는 물론 텍스처도 받을 수 있습니다.

Metallic

드래그로 미리보기

오브젝트 표면의 "메탈" 속성을 조절합니다. 다른 말로 하자면, 주변의 배경이 반사된 모습이 오브젝트 자체의 바탕색을 얼마나 잡아먹도록 할 것인가 입니다.

Specular

드래그로 미리보기

오브젝트에 보이는 스페큘러 리플렉션(거울반사) 양을 조절합니다. 물리적 해설 용어로는 표면 위로 광택이나 윤기 층을 추가하여, Metallic 값이 높을 때처럼 바탕색을 잡아먹지는 않으면서 표면에 배경이 반사된 모습을 입힐 수 있도록 하는 것입니다.

Roughness

드래그로 미리보기

러프니스란 스페큘러 리플렉션(거울반사)의 확산 정도를 조절합니다. 표면을 "마이크로패시팅", 수많은 미세면으로 나누는 효과를 적용하는 것입니다. 거울같은 크롬면과 솔질을 한 알루미늄면의 반사 차이를 생각해 보시면 됩니다.

UE4 의 물리 기반 머티리얼 시스템 관련 기술적 심도 깊은 정보에 대해서는 물리 기반 머티리얼 문서를 참고해 주시기 바랍니다.

커피 테이블 머티리얼

데모에 사용된 대부분의 머티리얼은 개념적 수준에서 꽤나 단순합니다. 커피 테이블에 쓰인 머티리얼의 기본 개념이 씬의 여러 오브젝트에 재사용되고 있으니, 거기에 초점을 맞춰 보겠습니다.

CoffeeTable.png

커피 테이블 머티리얼은 두 가지 유용한 기법을 활용합니다. 먼저 마스크 텍스처의 RGB 채널을 사용하여 오브젝트 위의 어디에 메탈, 플라스틱, 나무 가 놓여 있는지 알아냅니다.

CoffeeTableMaskTex.png

  1. R 채널 - 나무

  2. G 채널 - 메탈

  3. B 채널 - 플라스틱

  4. RGB - 네 채널 모두 합친 결과

머티리얼 에디터에서 본 이 머티리얼 (M_CoffeeTable_Mat_Inst) 레이아웃은 이렇습니다.

클릭하면 원래 크기로 볼 수 있습니다 (매우 큽니다).

이 머티리얼은 고도로 파라미터화 되어있습니다. 즉 인스턴싱을 통해 조정할 수 있도록 되어있습니다. 사실 이게 바로 이 머티리얼에서 사용된 두 번째 중요한 기법입니다. 머티리얼의 기본 세팅은 구성해 두었으나, 미세조정을 통해 외양을 결정짓지는 않았습니다. 그 대신 머티리얼 인스턴스를 만든 다음 인스턴스 파라미터를 사용하여 조절하였습니다. 이 방법이 수시로 수정한 다음 적용하는 것보다 훨씬 빠르며, 이를 통해 머티리얼 제작 시간이 정말 많이 절약됩니다.

CoffeeTableMat_Properties.png

리플렉션

이 데모는 특정 오브젝트 표시를 위해 리플렉션을 적극적으로 사용하고 있습니다. 언리얼 엔진 4 에서의 리플렉션 처리는 다양한 방식으로 이루어집니다.

  • 스크린 스페이스 리플렉션 - 스크린 스페이스 리플렉션은 UE4 엔진에 탑재되어 기본으로 보이는 기능입니다. 거의 평행 상태의 면에서 일차적으로 보이는 것이지요. 전체적인 느낌의 씬 리플렉션에는 '리플렉션 인바이런먼트'와 '리플렉션 캡처'를 함께 사용합니다.

  • 리플렉션 인바이런먼트와 리플렉션 캡처 - 언리얼 엔진 4 에서는 리플렉션 캡처를 사용하여 현실적인 리플렉션을 만들어 냅니다. 리플렉션 캡처는, 레벨에 액터를 전략적으로 놓아 배경에 대한 구체 또는 큐브 모양 캡처를 만드는 것입니다. 그런 다음 이것을 반경 내 반사성을 띤 오브젝트 위에 투영시키는 것입니다. 이 이미지에서는 리플렉션 캡처 액터를 놓아 여러 오브젝트에 정확한 리플렉션을 내고 있는 것을 볼 수 있습니다.

    ReflectionCaptures.png

카페트 오브젝트

CarpetObject.png

이 예제에서 특별히 다뤄볼 것은, 방 가운데 바닥에 놓인 카페트 오브젝트 입니다. 이 애셋은 두꺼운 섬유 양탄자 외양과 느낌을 흉내내도록 디자인되었습니다. 여기서는 이 애셋을 어떻게 만들었는지, 일반적인 관점에서 분석해 보도록 하겠습니다.

모델

효과를 내는 데 있어 중심적인 부분 중 하나는 바로 양탄자 오브젝트에 대한 모델입니다. 이 모델은 바깥 모서리를 둥글게 정리한 네 개의 평면 모양을 각각의 위에다 쌓아 놓은 것입니다. 이렇게 쌓아 둔 모양에 머티리얼이 함께하여 마치 볼류메트릭 형태와 같은 착각을 일으켜 섬유와 같은 효과를 내고 있습니다. 다음 도표는 모델의 교차 부분을 나타내는 것으로, 약간 폭발시켜 각 레이어를 나타낸 것입니다.

CarpetModelDiagram.png

CarpetModel.png

머티리얼

카페트 머티리얼은 Bump Offset 을 활용하여 네 단계별로 곱하고 더하고 있습니다. 이 네 단계에 네 개의 겹친 지오메트리 조각을 곱해, 이펙트를 총 16 "레이어"로 내고 있습니다. Bump Offset 은 실제 음수 방향으로 실행되어, 섬유 표면 안쪽으로 함몰되는 느낌을 냅니다. 이 머티리얼은 고도로 파라미터화 되어있어 커스터마이징 가능합니다.

CarpetMaterial.png

카페트에 관련된 머티리얼은 다음과 같습니다:

  • M_Carpet_Mat

  • M_Carpet_Mat_Inst

태그

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼