도시 샘플

도시 샘플 학습 예시 프로젝트 제작에 사용된 기능을 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

도시 샘플(City Sample) 프로젝트는 디자이너와 개발자들이 새롭게 개선된 다양한 시스템을 어떤 방법으로 결합해야 광범위하고 매력적인 환경을 만들 수 있는지 탐구할 수 있는 놀이터 같은 공간입니다. 이 예시는 매트릭스 어웨이큰스: 언리얼 엔진 5 익스피어리언스(The Matrix Awakens: An Unreal Engine 5 Experience) 테크니컬 데모에 사용된 동일한 에셋과 디자인 기술로 제작되었습니다. 해당 데모는 PlayStation 5와 Xbox Series S|X 하드웨어용으로 출시된 바 있습니다.

언리얼 엔진 5의 새롭게 개선된 기능을 사용하면 매스 AI(Mass AI)와 완전한 다이내믹한 라이팅으로 매우 디테일한 대규모 월드를 빌드할 수 있습니다. 도시는 규칙 프로세서(Rules Processor)를 사용한 절차적 생성을 이용해 설계 및 제작하였으며,

이 샘플 프로젝트에는 다음과 같은 기능이 사용되었습니다.

  • 월드 파티션을 액터당 한 개의 파일(One File Per Actor) 기능과 결합해 레벨 스트리밍 및 에디터 워크플로 효율을 향상합니다.

  • 나나이트를 활용해 고퀄리티의 가상화된 마이크로폴리곤 지오메트리를 사용합니다.

  • 루멘으로 하드웨어 레이 트레이싱을 사용해 다이내믹 글로벌 일루미네이션 및 리플렉션을 생성합니다.

  • 버추얼 섀도 맵 시스템으로 도시에 일관적인 고해상도의 섀도잉을 제공합니다.

  • 매스 AI로 메타휴먼 라이브러리에 기반해 만들어진 군중과 교통의 동작 및 시각화를 관리합니다.

  • 카오스 피직스로 비히클 및 디스트럭션 시스템을 구동합니다.

  • 메타사운드 시스템으로 도시에 어울리는 사운드를 가득 채웁니다.

  • 나이아가라를 파티클 시스템에 사용합니다.

  • 그 외에도 다양한 기능을 사용했습니다!

도시 샘플 프로젝트에 액세스하기

도시 샘플은 에픽게임즈 런처샘플(Samples) 탭이나 언리얼 엔진 마켓플레이스에서 다운로드할 수 있습니다.

권장 시스템 사양

도시 샘플은 그래픽 집약적인 프로젝트로, 안정적인 프레임 레이트로 실행하려면 강력한 비디오 카드와 시스템이 필요합니다. 나나이트(Nanite)와 버추얼 섀도 맵(Virtual Shadow Maps)은 디스크 읽기 쓰기 속도가 빨라야 최상의 성능을 보여주므로 이 프로젝트는 솔리드 스테이트 드라이브(SSD)에 설치하는 것이 좋습니다.

  • DirectX 12를 지원하는 Windows 10

  • 3.4GHz 12 코어 CPU

  • 64GB 시스템 RAM

  • GeForce RTX-2080/AMD Radeon 6000 이상

  • 8GB 이상 VRAM

이 샘플 프로젝트를 구동하려면 시스템에 최신 그래픽 드라이버와 DirectX 12가 설치되어 있어야 합니다. 나나이트와 버추얼 섀도 맵을 사용하려면 DirectX 12가 필요합니다.

낮은 사양의 시스템에서는 뷰포트 스크린 퍼센티지 세팅을 조정하여 레벨 에디터 뷰포트의 해상도를 줄임으로써 더 좋은 성능을 얻을 수 있습니다. 스크린 퍼센티지는 에디터 뷰포트 왼쪽 상단에 있는 뷰포트 옵션(Viewport Options)스크린 퍼센티지(Screen Percentage) 슬라이더를 사용하여 설정할 수 있습니다.

레벨 뷰포트에서 스크린 퍼센티지 설정

도시 샘플 프로젝트 탐색하기

도시 샘플을 열면, 이 샘플 프로젝트 사용 및 권장 시스템 요구사항에 대한 몇 가지 정보를 화면에 보여주는 시작(Startup) 맵이 표시됩니다. 이 프로젝트에는 대도시와 소도시, 두 개의 맵이 포함되어 있습니다. 두 맵 중 하나를 선택하여 콘텐츠 브라우저(Content Browser)의 콘텐츠(Content) > Map 폴더에서 엽니다.

  • 대도시(Big City) (Big_City_LLV) 맵은 매트릭스 어웨이큰스 테크니컬 데모를 위해 제작된 맵과 같은 맵입니다. 이 대도시 맵은 리소스를 많이 사용하며, 권장 사양보다 낮은 시스템에서는 제대로 작동하지 않을 수 있습니다. 맵의 크기는 대략 4제곱킬로미터입니다.

  • 소도시(Small City) (Small_City_LVL) 맵은 대도시와 같은 에셋과 환경설정을 사용하여 생성된 더 작은 도시입니다. 더 소규모 도시로 모든 렌더링과 피직스, 인공 지능, 사운드, 게임플레이 피처를 선보일 수 있도록 고안되었습니다.

도시 샘플은 월드 파티션(World Partition)과 데이터 레이어(Data Layers)를 사용하여 월드를 개발하고 디자인한 모습을 보여줍니다. 언리얼 엔진 4와 달리, 기존에 오브젝트를 로드하는 데 사용하던 서브레벨은 없습니다. 대신, 월드 파티션이 필요에 따라 오브젝트를 로드하고 씬을 별도의 편집할 수 있는 부분으로 나눕니다.

대도시나 소도시 레벨을 로드하면, 에디터 뷰포트 오른쪽에 월드 파티션 창이 고정되어 있고, 단순화된 월드 맵이 표시되어 있을 것입니다.

월드 맵이 있는 월드 파티션 창

월드 파티션 툴에는 씬을 구성하는 오브젝트가 포함된 데이터 레이어 목록을 제공하는 데이터 레이어 아웃라이너(Data Layers Outliner) 가 포함되어 있습니다. 데이터 레이어 아웃라이너는 메인 메뉴의 창(Window) > 월드 파티션(World Partition) > 데이터 레이어 아웃라이너(Data Layers Outliner) 에서 열 수 있습니다.

이 창에서 필요에 따라 데이터 레이어를 비활성화할 수 있습니다. 나열된 레이어 옆에 있는 눈 모양의 비저빌리티(Visibility) 아이콘을 사용하여 데이터 레이어 렌더링을 중지하거나, 체크박스를 사용하여 해당 데이터 레이어를 완전히 비활성화할 수 있습니다.

월드 파티션 데이터 레이어 아웃라이너

데이터 레이어를 선택하면, 창 하단에 프로퍼티가 표시됩니다.

프로퍼티가 표시된 월드 파티션 데이터 레이어 아웃라이너

처음 소도시를 열면, 모든 에셋이 로드되고 준비되어 있을 것입니다. 하지만, 대도시를 열면, 어떤 셀도 로드되지 않습니다. 에디터에서 월드 파티션 창을 사용하여 이러한 셀을 로드해야 합니다. 하나의 셀을 우클릭하거나, 좌클릭하고 드래그하여 여러 개의 셀을 선택한 다음 우클릭합니다. 그런 다음, 선택한 셀 로드(Load Selected Cells) 를 선택합니다.

월드 파티션 창에서 셀을 더블클릭하면 카메라가 맵의 해당 위치로 이동합니다. 이 방식으로 빠르게 맵을 살펴볼 수 있습니다.

도시 샘플 인게임에서 컨트롤

도시 샘플에서는 플레이어가 도시 곳곳을 걷고 주행하고 비행하며 플레이해볼 수 있습니다. 키보드와 마우스를 사용해도 되고 게임패드를 사용해도 됩니다. 아래는 조작 방법입니다.

걷기 컨트롤

항목 이름

컨트롤러

키보드와 마우스

앞으로 이동

왼쪽 조이스틱

W

뒤로 이동

왼쪽 조이스틱

S

왼쪽으로 이동

왼쪽 조이스틱

A

오른쪽으로 이동

왼쪽 조이스틱

D

둘러보기

오른쪽 조이스틱

마우스 이동

메뉴

시작 또는 옵션 버튼

O

비행 모드 활성화

Y

X

질주

오른쪽 범퍼

왼쪽 SHIFT

컨트롤 해제

X

Z

운전 컨트롤

항목 이름

컨트롤러

키보드와 마우스

스로틀

오른쪽 트리거

W

브레이크/후진

왼쪽 트리거

S

좌회전

왼쪽 조이스틱

A

우회전

왼쪽 조이스틱

D

둘러보기

오른쪽 조이스틱

마우스 이동

사이드 브레이크

B

스페이스바

차량 탑승/하차

A

C

메뉴

시작 또는 옵션 메뉴

O

컨트롤 해제

X

Z

비행 컨트롤

항목 이름

컨트롤러

키보드와 마우스

앞으로 이동

왼쪽 조이스틱

W

뒤로 이동

왼쪽 조이스틱

S

왼쪽으로 이동

왼쪽 조이스틱

A

오른쪽으로 이동

왼쪽 조이스틱

D

둘러보기

오른쪽 조이스틱

마우스 이동

고도 높이기(상승)

오른쪽 트리거

E

고도 낮추기(하강)

왼쪽 트리거

Q

가속

오른쪽 범퍼

F

감속

왼쪽 범퍼

R

메뉴

시작 또는 옵션 버튼

O

걷기 모드 활성화

Y

X

컨트롤 해제

X

Z

메뉴 이동 컨트롤

항목 이름

컨트롤러

키보드와 마우스

메뉴 이동

왼쪽 및 오른쪽 범퍼

[ 및 ] (왼쪽 대괄호 및 오른쪽 대괄호)

메뉴 항목 위로 이동

방향키 위

위쪽 화살표

메뉴 항목 아래로 이동

방향키 아래

아래쪽 화살표

설정 조정

방향키 왼쪽 및 방향키 오른쪽

왼쪽 화살표 및 오른쪽 화살표

사진 모드 컨트롤

항목 이름

컨트롤러

키보드와 마우스

앞으로 이동

왼쪽 조이스틱

W

뒤로 이동

왼쪽 조이스틱

S

왼쪽으로 이동

왼쪽 조이스틱

A

오른쪽으로 이동

왼쪽 조이스틱

D

둘러보기

오른쪽 조이스틱

마우스 이동

고도 높이기(상승)

오른쪽 트리거

E

고도 낮추기(하강)

왼쪽 트리거

Q

카메라 리셋

Y

자동 초점(길게 누르기)

A

X

메뉴 닫기

시작 또는 옵션 버튼

O

유저 인터페이스 숨기기

X

Z

도시 샘플 인게임에서 메뉴 옵션

게임 내 메뉴 를 열면, 유저 인터페이스가 화면 오른쪽 하단에 표시됩니다. 여기에는 라이팅과 군중, 교통량을 변경하고 나나이트 같은 기능을 위해 시각화 옵션을 활성화하는 등 여러 옵션이 있습니다. 또한, 노출과 조리개, 뎁스 오브 필드 설정과 같은 일반 카메라 기능이 있는 전용 사진 모드도 포함되어 있습니다.

키보드 왼쪽/오른쪽 대괄호([/]) 또는 컨트롤러를 사용하는 경우 왼쪽/오른쪽 범퍼 를 사용하여 메뉴를 탐색할 수 있습니다. 다음과 같은 게임 내 메뉴를 사용할 수 있습니다.

사진 모드 메뉴

사진 모드(Photo Mode) 메뉴에는 노출과 조리개, 초점을 구성하는 카메라와 포커스 세팅이 포함되어 있습니다.

게임 내 사진 모드 메뉴

메뉴 세팅

설명

카메라

노출 보정(Exposure Compensation)

렌더링된 프레임의 노출을 더 밝게 또는 더 어둡게 조정합니다.

조리개(Aperture)

카메라 렌즈의 개구부 크기를 변경합니다. f값이 낮으면 렌즈의 개구부로 들어오는 빛의 양이 늘어나며, 따라서 초점이 증가하여 뎁스 오브 필드를 생성할 수 있습니다.

초점 길이(Focal Length)

카메라에서 사용되는 시야각을 설정합니다. 초점 길이가 길수록 캡처하는 씬은 적어지지만, 오브젝트는 더 커지고 뎁스 오브 필드는 증가합니다. 초점 길이가 짧을수록 캡처하는 씬은 많아지지만, 발생하는 뎁스 오브 필드의 양은 감소합니다.

카메라

초점 거리(Focus Distance)

렌즈가 이미지에 초점을 맞출 수 있는 가장 짧은 거리를 설정합니다.

월드 세팅 메뉴

월드 세팅(World Settings) 메뉴에는 라이팅과 군중, 교통량, 주차된 차량, 밀도에 영향을 주는 다양한 세팅과 시각화 옵션이 포함되어 있습니다.

게임 내 월드 세팅 메뉴

메뉴 세팅

설명

시뮬레이션(Simulation)

야간 모드(Night Mode)

주간 라이팅과 야간 라이팅 사이를 토글합니다.

태양 회전(Sun Rotation)

태양이 회전하는 각도를 설정합니다.

밀도(Density)

군중(Crowd)

도시 거리를 채우는 군중 밀도를 설정합니다.

교통(Traffic)

도시 거리를 채우는 교통 밀도를 설정합니다.

주차된 자동차(Parked Cars)

도시 거리를 따라 주차된 차량의 밀도를 설정합니다.

시각화(Visualizations)

군중 및 교통(Crowd & Traffic)

주차된 자동차(파란색), 이동 중인 자동차(녹색) 및 군중 속의 개인(흰색)을 대체하는 시각화 모드를 토글합니다.

포스트 프로세싱 필터(Post-processing Filter)

포스트 프로세싱 필터를 토글합니다. 매트릭스 어웨이큰스 테크니컬 데모에서 사용한 것과 비슷합니다.

나나이트 뷰(Nanite View)

나나이트의 다양한 시각화 모드를 토글합니다.

  • 디폴트(Default) 는 게임 뷰입니다.

  • 프리미티브(Primitives) 는 나나이트가 활성화된 프리미티브 수입니다.

  • 인스턴스(Instances) 는 씬에 있는 스태틱 메시의 각 개별 인스턴스에 다른 색을 적용합니다.

  • 클러스터(Clusters) 는 현재 씬 뷰에 렌더링되는 모든 트라이앵글 그룹을 색으로 표현해서 표시합니다.

  • 트라이앵글(Triangles) 은 씬을 구성하는 나나이트 메시의 모든 트라이앵글을 표시합니다.

  • 머티리얼 ID(Material ID) 는 나나이트 프리미티브의 각 머티리얼에 별도의 색을 적용합니다.

컨트롤러 세팅 메뉴

컨트롤러 세팅(Controller Settings) 메뉴에는 걷기, 운전, 드론 및 사진 모드에 대한 컨트롤러 버튼 매핑이 표시됩니다. 또한, 보기 민감도와 수직 축 반전 등 카메라 컨트롤에 대한 세팅도 포함되어 있습니다.

게임 내 컨트롤러 세팅 메뉴

메뉴 세팅

설명

카메라 컨트롤(Camera Control)

햅틱 피드백(Haptic Feedback)

플레이 중 햅틱 피드백 진동을 토글합니다.

수직 축 반전(Invert Vertical Axis)

이동의 수직 축을 반전합니다.

보기 민감도(Look Sensitivity)

주변을 둘러볼 때 카메라 이동에 적용되는 민감도 스케일을 조정합니다.

이러한 세팅을 변경하면 키보드와 마우스에도 영향을 줍니다.

하이엔드 비주얼

도시 샘플은 언리얼 엔진 5에서 대규모 오픈 월드를 하이엔드 비주얼로 구축할 수 있음을 보여줍니다.

도시 샘플의 하이엔드 비주얼을 위해서는 DirectX 12가 필요합니다. 이 프로젝트의 권장 시스템 사양보다 사양이 낮은 시스템에서는 일부 기능이 제한된 성능으로 작동하거나 전혀 작동하지 않을 수 있습니다.

루멘 글로벌 일루미네이션 및 리플렉션

루멘(Lumen)을 사용하여 도시 전반에 다이내믹 글로벌 일루미네이션 및 리플렉션을 제공합니다. 루멘은 빛이 간접적으로 비치는 영역이 많은 씬에 다이내믹하고 포토리얼한 라이팅을 제공합니다. 루멘은 새로운 기술과 기존 기술을 조합하여 직접광과 지오메트리 변화에 적응하면서 리얼타임 버짓 내에서 고퀄리티의 결과를 만들어냅니다.

루멘은 차세대 콘솔과 하이엔드 PC를 염두에 두고 만들어졌습니다.

루멘 글로벌 일루미네이션 및 리플렉션: 활성화

루멘 글로벌 일루미네이션 및 리플렉션: 비활성화

도시 샘플에서는 스킨을 입힌 메시 등, 더 광범위한 지오메트리 유형을 지원하는 하드웨어 레이 트레이싱(Hardware Ray Tracing)을 사용합니다. 하드웨어 레이 트레이싱은 지오메트리의 실제 트라이앵글과 교차하고 저퀄리티의 표면 캐시 대신 레이 히트에서 라이팅을 평가하는 옵션이 있어 보다 고퀄리티로 확장되기도 합니다.

나나이트를 사용하는 스태틱 메시의 경우, 하드웨어 레이 트레이싱은 스태틱 메시 에디터(Static Mesh Editor)에서 나나이트의 예비 트라이앵글 퍼센트(Fallback Triangle Percent) 를 통해 생성된 예비 메시(Fallback Mesh)에만 작동할 수 있습니다. 스크린 트레이스(Screen Traces)를 사용하여 나나이트에서 렌더링된 전체 트라이앵글 메시와 루멘에서 레이 트레이싱된 예비 메시 간의 불일치를 처리합니다.

루멘은 라이트 소스로서의 이미시브 머티리얼을 포함한 모든 무버블 라이트 소스와 함께 작동합니다. 스카이라이팅은 스카이 섀도잉에 루멘의 파이널 개더(Final Gather)를 사용합니다. 이를 통해 실내 영역이 실외 영역보다 더 어두워지며, 더 많은 빛을 반사하는 밝은 색의 표면을 더욱 돋보이게 만들 수 있습니다. 도시 샘플은 디렉셔널 라이트와 스카이 라이트, 표면의 이미시브 머티리얼로만 라이팅이 적용됩니다.

루멘 글로벌 일루미네이션 및 리플렉션 | 주간 라이팅

루멘 글로벌 일루미네이션 및 리플렉션 | 야간 라이팅

게임 내에서 도시를 탐색하는 동안 메뉴를 사용하여 월드 세팅 에 액세스하여 태양 회전(Sun Rotation) 을 조정할 수 있습니다. 아니면, 에디터에서 작업할 때 키보드 단축키 오른쪽 Ctrl+L 을 누른 다음 마우스를 드래그하여 디렉셔널 라이트를 이동할 수 있습니다.

작동 방식에 대한 자세한 내용은 루멘 글로벌 일루미네이션 및 리플렉션루멘의 기술 세부사항을 참고하세요.

나나이트 가상화된 지오메트리

나나이트 가상화된 지오메트리는 도시 샘플의 모든 스태틱 메시 메시에 사용되며, 기존의 레벨 오브 디테일은 사용하지 않습니다. 나나이트는 픽셀 스케일의 디테일을 렌더링하며 인식할 수 있는 디테일만 지능적으로 작업하는 방식으로 많은 수의 오브젝트를 처리합니다. 버추얼 텍스처링(Virtual Texturing)이 텍스처 디테일을 위해 하는 일을 지오메트리를 상대로 수행합니다.

나나이트의 내부 메시 형식과 렌더링 기술 덕분에, 플레이어가 월드를 통해 이동함에 따라 그 표현이 동적으로 변경되고, 즉석에서 레벨 오브 디테일이 업데이트되며, 화면에 렌더링되지 않는 부분이 컬링됩니다. 플레이어 카메라에 가까이 있는 오브젝트일수록 더 많은 디테일이 적용되고 멀리 있는 오브젝트일수록 더 적은 디테일이 적용되지만, 화면 디테일은 균일하게 유지됩니다.

나나이트의 퀄리티 예시

도시 샘플은 월드 전체에 수만 개의 오브젝트가 배치되어 있고, 이는 수십억 개의 폴리곤으로 구성되어 있습니다. 스태틱 메시에서 나나이트를 활성화하기만 하면 추가 설정을 거의 또는 아예 하지 않고도 영화 수준의 에셋을 실시간으로 사용할 수 있습니다. 심지어 게임에 직접 하이 폴리곤 ZBrush 스컬프트를 드롭할 수도 있습니다.

나나이트에서 제공하는 시각화 모드 중 하나를 사용하여 나나이트가 씬을 어떻게 렌더링하는지 확인해보세요. 나나이트 시각화(Nanite Visualization) 롤아웃 메뉴 아래 있는 뷰 모드(View Modes) 를 사용하여 시각화 목록에서 시각화 모드를 선택할 수 있습니다.

나나이트 시각화 모드

나나이트의 개요(Overview) 시각화 모드입니다.

자체 프로젝트에서의 나나이트 사용법과 구성법에 대한 자세한 내용은 나나이트 가상화된 지오메트리 문서를 참고하세요.

템포럴 슈퍼 해상도

수천에서 수백만 개의 인스턴스와 총 수십억 개의 폴리곤이 있는 대규모 오픈 월드에 필요한 지오메트릭의 디테일과 충실도 때문에, 차세대 콘솔 및 하이엔드 PC용으로 개발되는 게임에서 요구되는 것들이 많아졌습니다. 이러한 수준의 충실도를 달성하기 위해 게임에서 네이티브 4K 해상도로 프레임을 렌더링하는 등, 상당한 퍼포먼스 버짓이 소모될 수 있습니다.

템포럴 슈퍼 해상도(Temporal Super Resolution, TSR)는 디테일이 빽빽하게 채워진 대규모 월드의 충실도 요구를 충족하기 위해 만들어진 안티 에일리어싱 방법입니다. TSR은 더 낮은 입력 해상도를 받아 4K 해상도에 가까운 퀄리티로 렌더링된 프레임을 출력함으로써 플랫폼에 구애받지 않는 템포럴 업스케일링 알고리즘을 사용합니다. 즉, 네이티브 4K 렌더링 없이 퍼포먼스를 높이면서도 더 낮은 해상도 렌더링으로 4K에 필적하는 퀄리티를 달성할 수 있다는 뜻입니다.

아래에 캡처된 비교 예시에서는 네이티브 4K로 렌더링된 프레임과 1080p로 렌더링되어 4K로 업스케일링된 프레임 간 퀄리티 및 퍼포먼스 차이를 확인할 수 있습니다. 템포럴 슈퍼 해상도를 사용하면 도시 샘플의 이 샷에서 네이티브 4K 해상도에 가까운 이미지 퀄리티를 달성하면서도 GPU의 프레임 시간을 거의 절반으로 단축할 수 있습니다.

네이티브 4K 해상도로 렌더링된 4K 프레임 | 프레임 시간: 57.50ms

1080p 해상도로 렌더링된 4K 프레임(r.ScreenPercentage=50) | 프레임 시간: 33.37ms

비교 슬라이더의 각 이미지를 우클릭하고 전체 해상도로 저장하여 퀄리티 유사성을 검사할 수 있습니다.

버추얼 섀도 맵

버추얼 섀도 맵(Virtual Shadow Maps, VSM)은 언리얼 엔진 5의 새로운 섀도 매핑 메서드로, 나나이트와 루멘, 월드 파티션 기능을 사용하는 동적으로 라이팅이 적용된 대규모 오픈 월드와 영화 수준 에셋에 작동하는 일관된 고해상도 섀도잉을 제공하기 위해 사용됩니다.

기존 다이내믹 섀도잉 기법은 소규모 또는 중간 규모의 월드로 제한되는 경우가 많고 디자이너와 아티스트가 퍼포먼스를 위해 퀄리티를 희생해야 했습니다. 반면 버추얼 섀도 맵은 가장 필요한 곳의 퀄리티를 자동으로 높여 주는 단일 통합 섀도잉 방법을 제공합니다. 이제 사실적이고 부드러운 반그림자 및 컨택트 하드닝을 통해 먼 거리에 있는 작은 오브젝트 및 큰 오브젝트에 일관된 퀄리티의 섀도를 적용할 수 있습니다.

아래의 도시 풍경 조망 비교에서, 캐스케이드 섀도 맵 대비 버추얼 섀도의 품질과 일관성의 차이를 확인할 수 있습니다. 버추얼 섀도 맵을 사용하면 큰 디테일부터 작은 디테일에 이르기까지 도시 전체에 일관된 방식으로 섀도가 적용됩니다. 옥상의 장비와 첨탑 같은 건물의 작은 부분은 미세한 디테일로 캡처되며, 멀리 땅 위에 있는 자동차와 좀 더 큰 물체에도 섀도가 있습니다.

캐스케이드 섀도 맵과 비교해보면 씬의 어디에 그러한 디테일이 있어야 하는지 알 수 있습니다. 캐스케이드 섀도 맵은 넓은 지역에 걸쳐 고퀄리티 디테일을 적용하기에는 상당한 퍼포먼스 비용이 발생하므로 적합하지 않습니다. 멀리 있는 섀도가 선명하지 않고 지면 위의 섀도가 드리워지면 개별 오브젝트가 아니라 모든 오브젝트를 셰이딩하는 것처럼 보일 수 있습니다.

버추얼 섀도 맵

캐스케이드 섀도 맵

자체 프로젝트에서의 버추얼 섀도 맵 사용법 및 구성법에 대해 자세히 알아보려면 버추얼 섀도 맵 문서를 참고하세요.

포스트 프로세싱 로컬 노출

로컬 노출(Local Exposure) 은 아티스트가 제어하는 파라미터 내에서 노출에 맞춰 로컬 조정을 자동으로 적용하여 기존 글로벌 노출 시스템 위에 하이라이트 및 섀도 디테일을 모두 유지하는 기술로, 언리얼 엔진 5용으로 새로 개발되었습니다. 다이내믹 라이팅으로 다이내믹 범위가 넓어져 프로젝트에서 단일 글로벌 노출 조정만으로는 과도한 하이라이트 및 완전히 어두운 섀도를 피하기 어려운 씬이 있는 경우는 드문 일이 아닙니다.

라이팅을 동적으로 변경할 수 있는 도시 샘플 같은 동적으로 시간대가 변하는 게임에서, 씬의 렌더링된 이미지 일부에서 노출이 부족하거나 과도한 일이 쉽게 발생할 수 있습니다. 아래의 씬 예시를 보면, 태양이 비치는 영역은 매우 밝고, 로컬 노출 조정(Local Exposure)을 사용하지 않는 다리 아래 영역은 매우 어둡습니다. 로컬 노출을 사용하면 플레이어가 마음대로 환경을 살펴볼 수 있는 도시 샘플에서와 같이, 씬별로 신중하게 라이팅을 제작하기 불가능할 경우 보다 일관된 결과를 얻을 수 있습니다.

로컬 노출을 사용한 포스트 프로세싱

노출만 사용한 포스트 프로세싱

절차적으로 생성되고 채워진 도시

도시 샘플 프로젝트의 도시는 SideFX의 Houdini 소프트웨어를 광범위하게 사용하여 절차적 생성으로 설계하고 제작하여, 도시 섬의 모양부터 도로와 고속도로, 건물, 인도, 도로 시설물 등의 모든 부분에 이르기까지, 도시의 모든 측면을 빌드합니다. 도시의 '생성'은 커스텀 툴과 사용자가 제공한 입력을 사용하여 Houdini 안에서만 발생합니다.

그 결과(거대한 포인트 클라우드)는 Houdini에서 익스포트되어 언리얼 엔진 5로 임포트됩니다. 이때, 이 프로젝트를 위해 개발된 언리얼 엔진 툴인 규칙 프로세서(Rule Processor) 가 포인트 클라우드를 수천 개의 인스턴스로 변환합니다.

에픽게임즈에서 매트릭스 어웨이큰스 개발 시, 그 프로젝트는 매우 디테일하고 거대한 오픈 월드 도시가 될 것으로 알려졌습니다. 이 프로젝트는 언리얼 엔진 5의 많은 새 기능을 사용하며 개발 시 다양한 부서가 콘텐츠를 제작할 것이며 모두 동시에 작업할 수 있어야 했습니다. 환경 팀은 상대적으로 소규모인데 프로젝트에서 목표로 한 디테일 양은 많았으니 이는 두 가지를 의미했습니다. 바로 나나이트를 사용하여 일반적인 폴리곤 버짓 제한을 해결하고, 월드 전체에 걸쳐 수천 번 인스턴스화할 수 있는 모듈형 에셋이 필요할 것이라는 점이었습니다.

Houdini는 도시 모양, 도로망, 고속도로망 연결, 건물 배치 생성과 같은 눈에 띄는 모든 작업을 처리하는 데 사용되며, 언리얼 엔진 5에서 최종 도시를 절차적 방식으로 생성하는 데 사용할 수 있는 수많은 메타데이터를 제공합니다. Houdini에서 이러한 툴을 사용하여 디자이너는 짧은 기간에 다양한 도시를 무한하게 생성할 수 있었습니다.

생성된 도시 데이터에는 교통 및 군중 시뮬레이션을 구동하는 인공 지능 시스템 등, 언리얼 엔진 5의 다른 툴에서 사용할 수 있는 온갖 종류의 메타데이터가 포함되어 있습니다. 건물은 볼륨으로부터 구성됩니다. 건물 생성기는 형상 문법 언어(shape grammar language)를 사용하여 건물 볼륨의 스타일을 정합니다. 건물 스타일마다 다른 규칙 세트가 있습니다. 또한, 주어진 볼륨은 건물 하단의 스타일과 나머지 상단 부분의 스타일, 이렇게 두 가지 스타일로 나뉠 수 있습니다.

도시 샘플 프로젝트에는 Houdini와 Houdini 엔진을 사용하여 나만의 도시를 절차적 방식으로 생성하는 데 필요한 소스 파일이 포함되어 있습니다. Houdini와 함께 엔진에서 도시 건물 생성기(City Building Generator) 에셋을 사용하려면 SideFX에서 라이선스를 받아야 합니다. Houdini 소스 파일은 CitySample 루트 폴더에 있으며, 파일 이름은 CitySample_HoudiniFiles.zip 입니다.

도시 샘플은 다음 버전을 사용하여 개발되었습니다.

  • Houdini: 18.5.532

  • Houdini 엔진: 3.5.2

도로와 고속도로망이 있는 도시를 이러한 파일을 사용하여 생성하는 방법을 조만간 가이드 드릴 예정입니다.

Houdini에서는 하향식 노드 그래프를 사용합니다. 각 노드는 언리얼 엔진의 머티리얼 그래프처럼 입력에 대한 작업을 실행하고 다른 노드에 전달할 결과를 출력하는 프로그램입니다. 메인 도시는 다음 구조에 따라 단계적으로 빌드됩니다.

  1. 도시 레이아웃(City Layout)

  2. 도로(Roads)

  3. 고속도로(Freeway)

  4. 부지 및 보도(Lots and Sidewalks)

  5. 교통, 건물 및 지상(Traffic, Buildings and Ground)

  6. 도로 시설물, 데칼 및 오디오(Street Furniture, Decals and Audio)

각 부분들은 종속성 순서, 즉 고속도로가 도로망에 종속되는 등의 방식으로 빌드되며, 건물 배치를 위해서는 고속도로 위에 건물이 배치되지 않도록 고속도로가 먼저 빌드되어야 합니다.

도시를 빌드하고 월드를 구성하는 절차적 방식으로 생성된 모든 인스턴스를 지원하기 위해, 나나이트를 최대한 많이 사용해야 했습니다. 그러기 위해서는 인스턴스를 사용하기 위해 메가 메시를 빌드할 수 있어야 했습니다. 도시의 각 건물은 수백 개의 인스턴스로 구성되며, 시설물, 데칼, 심지어 쓰레기까지 거리의 모든 소품은 나나이트를 사용합니다. 도시에는 아주 적은 커스텀 지오메트리가 사용되므로 프로젝트의 메모리 사용량이 정해진 버짓 이하로 유지됩니다.

그렇지만, 어느 정도의 커스텀 지오메트리 사용은 피할 수 없었습니다. 콜리전과 고속도로 지면, 도로 데칼, 직사각형이 아닌 건물의 커스텀 옥상에 커스텀 메시가 사용됩니다.

협업으로 대규모 월드 구성하기

언리얼 엔진 5를 사용하면 프로젝트 내에서 협업으로 에셋과 씬을 관리하고 편집하는 일이 더 쉬워집니다.

액터당 한 개의 파일(One File Per Actor)

도시 샘플의 전체 월드에서는 UE5의 액터당 한 개의 파일(One File Per Actor, OFPA) 시스템을 사용합니다. 이 시스템은 단일 맵 파일에 데이터를 작성하지 않고 레벨 내에 배치된 액터의 고유 인스턴스마다 별도의 파일을 작성합니다.

레벨 에디터에서 작업하는 개발자의 입장에서는, 워크플로가 전혀 달라지지 않습니다. 여전히 단일 맵 파일을 열어 변경을 수행해 레벨을 편집할 수 있습니다. 그렇지만, 버전 관리 시스템을 사용하여 협업하는 경우, 이제 기본 시스템이 각 액터를 별도의 파일로서 추적합니다. 즉, 디자이너와 아티스트는 변경 사항을 커밋할 때 충돌 없이 같은 레벨의 다른 오브젝트와 레이어를 편집할 수 있습니다.

프로젝트에서 이 기능을 설정하고 사용하는 방법에 대한 자세한 내용은 액터당 한 개의 파일을 참고하세요.

월드 파티션

대규모 오픈 월드를 염두에 두고 게임을 개발하려면 맵을 지나가는 데 맞춰 로드되고 언로드될 수 있는 수많은 작은 섹션으로 맵을 나누어야 합니다. 수 킬로미터의 지역을 한 번에 로드하고 그 지역을 오브젝트로 채우는 것이 항상 가능한 것은 아닙니다. 예전의 개발 툴에서는 개발자가 직접 레벨을 서브레벨로 나누고 이를 스트리밍할 때 신중하게 관리해야 했습니다. 서로의 컨텍스트에서 월드의 섹션을 보는 것이 어려울 때가 많았습니다.

월드 파티션 시스템이 이 문제를 해결해주며, 레벨의 오브젝트를 그리드 위치에 따라 자동으로 셀로 분할하므로 프로세스가 간단해집니다. 셀이 셀 내 콘텐츠를 관리하고 오브젝트가 추가되고 제거됨에 따라 조정하므로 직접 에셋을 관리하지 않아도 됩니다. 게임플레이 중에, 월드 파티션은 플레이어가 월드를 이동함에 따라 자동으로 셀을 로드하고 언로드합니다.

대도시 레벨에 일부 셀이 로드된 월드 파티션

월드 파티션을 사용하여 대도시의 일부가 로드된 레벨 에디터입니다.

오픈 월드 프로젝트에서 이 시스템을 설정하고 사용하는 방법에 대한 자세한 내용은 월드 파티션을 참고하세요.

데이터 레이어

월드 파티션 시스템이 레벨을 마음대로 로드하고 언로드할 수 있는 셀로 나누는 시스템이라면, 데이터 레이어(Data Layers) 는 필요에 따라 로드하고 언로드할 수 있는 레이어로 오브젝트를 구성하는 데 사용되는 월드 파티션 내의 시스템입니다. 데이터 레이어는 관리를 위해 콘텐츠의 수동 큐레이션 작업이 많이 필요했던 언리얼 엔진 4의 이전 레이어 시스템을 대체합니다.

도시 샘플에서는 데이터 레이어를 프로시저럴 오브젝트와 옥상 소품, 고속도로 등, 월드에 있는 다양한 오브젝트 세트로 구성하여 사용합니다. 데이터 레이어 아웃라이너에는 씬에 있는 오브젝트가 포함된 모든 레이어 목록이 들어 있습니다. 거기에서 이러한 레이어를 사용하여 오브젝트의 비저빌리티를 추가하거나 제거하거나 설정할 수 있습니다.

월드 파티션 주간 레이어 아웃라이너 창

씬에서 레이어를 설정하고 사용하여 오브젝트를 구성하는 방법에 대한 자세한 내용은 월드 파티션 - 데이터 레이어를 참조하세요.

실제 시스템 시뮬레이션

메타휴먼

도시 샘플은 액세서리 및 메타휴먼의 서브셋에서 조정된 수천 개의 고유한 디지털 휴먼 캐릭터로 채워져 있습니다. 메타휴먼(MetaHuman) 캐릭터는 메타휴먼 크리에이터(MetaHuman Creator)를 사용하여 생성됩니다. 메타휴먼 크리에이터를 사용하면 일관된 퀄리티의 다양하고 고유하며 포토리얼한 캐릭터를 많이 생성할 수 있습니다.

플레이 불가능 메타휴먼 캐릭터

도시 샘플과 매트릭스 어웨이큰스에서 사용된 메타휴먼 캐릭터 군중

메타휴먼 크리에이터를 사용하면 영화 수준의 캐릭터를 디자인하고 개발하여 플레이 가능 캐릭터와 플레이 불가능 캐릭터(NPC)로 사용할 수 있습니다. 예를 들어, 아래 이미지에서 배경 NPC의 퀄리티가 플레이 가능 영웅 캐릭터 IO의 퀄리티와 일관된 것을 확인할 수 있습니다.

메타휴먼 영웅 및 플레이 불가능 캐릭터(NPC)

(왼쪽에서 오른쪽으로) 도시 샘플 플레이 가능 영웅 캐릭터 IO, 남성 캐릭터, 여성 캐릭터

메타휴먼 캐릭터는 완전히 리깅되고 애니메이팅 준비가 된 상태로 제공됩니다. 또한, 자체 레벨 오브 디테일이 포함되어 퀄리티와 퍼포먼스가 균형을 이루고 있으므로, 애니메이팅된 영화 수준의 캐릭터로 도시를 채울 수 있습니다.

메타휴먼 군중 시뮬레이션

많은 고퀄리티 고유 캐릭터가 도시의 거리를 가로지르는 모습

게임 내에서 드론 모드를 사용하면, 수백 명의 군중 캐릭터를 볼 수 있습니다. 가장 가까운 캐릭터는 완전히 리깅되고 애니메이팅된 메타휴먼 캐릭터이며, 더 멀리 있는 캐릭터는 메타휴먼에서 커스텀으로 생성되었으며 버텍스 애니메이팅된 스태틱 메시입니다.

메타휴먼 도시 거리

매스 AI 군중 시스템(Mass AI Crowd System)을 사용하여 메타휴먼 캐릭터로 채운 도시 샘플의 보도

지금 메타휴먼 크리에이터를 사용하여 직접 영화 수준의 디지털 휴먼 제작을 시작해보세요. 메타휴먼 크리에이터와, 언리얼 엔진 5 프로젝트에서 메타휴먼 크리에이터를 사용하는 방법에 대한 자세한 내용은 메타휴먼 문서를 참고하세요.

인공 지능 시스템

언리얼 엔진 5의 인공 지능(Artificial Intelligence) 기능은 도시와 주변 월드에 생명을 불어넣습니다. 이러한 기능 중 다수가 엔진에 새로 도입되었으며, 현재는 실험단계라고 할 수 있습니다. 도시 샘플을 자세히 살펴보고 이 프로젝트에서 인공 지능이 작동하는 방식을 알아볼 수 있습니다.

언리얼 엔진 5용으로 개발되고 도시 샘플에서 사용된 이러한 기능에 대한 자세한 정보는 인공 지능 문서를 참고하세요.

매스 엔티티

매스 엔티티(MassEntity) 는 씬에 있는 수천 개의 AI 에이전트 시뮬레이션을 포함하나, AI 도메인에만 국한되지 않는, 퍼포먼스가 중요한 곳에 사용할 수 있는 데이터 지향 계산을 위한 프레임워크를 제공합니다. 또한, 월드 내부 엔티티의 지속성도 보장합니다. 이 시스템은 도시 샘플의 교통 및 군중 시스템 모두에 사용됩니다.

매스 스포너(Mass Spawner) 는 매스 엔티티를 월드에 가져오기 위한 엔트리 포인트입니다. 매스 스포너는 스폰되는 엔티티 유형과 스폰 위치, 두 가지를 결정합니다. 도시 샘플에서는 군중과 교차로, 교통, 주차된 차량에 하나씩, 여러 개의 스포너를 사용합니다.

레벨에 배치된 매스 스포너 액터 중 하나를 선택하면, 디테일(Details) 패널에 해당 엔티티 사용 방식에 대한 정보가 포함됩니다. 엔티티 유형(Entity Type) (1)은 스폰되는 엔티티 유형을 지정하고, 스폰 데이터 생성기(Spawn Data Generators) (2)는 월드에서 엔티티가 스폰될 위치를 지정합니다.

매스 군중 스포너 블루프린트

매스 스포너가 스폰해야 하는 엔티티를 지정할 때는, 매스 엔티티 정의(Mass Entity Definition) 라는 새 에셋 유형을 만들어야 합니다. 이를 통해 비주얼과 레벨 오브 디테일, 행동과 같은 스폰되는 엔티티의 특성(Traits)을 결정합니다.

매스 엔티티 정의(Mass Entity Definition) 에셋 유형을 매스 스포너에서 사용하여 스폰해야 할 엔티티를 지정합니다. 이 데이터 에셋은 스폰되는 엔티티의 행동과 비주얼, 레벨 오브 디테일과 같은 특성 을 결정합니다.

매스 엔티티 정의 에셋

엔티티의 스폰 위치를 정할 때, Houdini의 프로시저럴 데이터를 통해 제공된 존 그래프(ZoneGraph)를 따른 분포(다음 섹션 참조)를 사용하여 존 그래프를 따라 군중 및 교통 시스템에 사용할 스폰 포인트를 생성합니다.

군중 및 교통 엔티티 스폰에 사용되는 생성 데이터

도시에서 군중 및 교통 엔티티 스폰 위치 선택을 위해 사용되는 생성 데이터

스포너를 사용하는 주차된 차량의 경우, 프로시저럴 데이터로부터 도시의 거리를 따라 위치의 포인트 클라우드를 생성합니다.

스폰된 주차 차량에 사용되는 포인트 클라우드 위치

스폰된 주차 차량에 사용되는, 도시의 거리를 따라 생성된 포인트 클라우드 위치

매스 스포너는 월드의 엔티티에 대한 많은 배포 가능성을 지원합니다. 아래의 예시는 월드 전반에 걸쳐 스폰된 교통 및 군중 시스템을 시각화한 것입니다. 녹색은 주행 중인 차량을, 파란색은 주차된 차량을, 하얀색은 군중을 나타냅니다.

군중 및 교통 시스템을 위한 매스 스포너

이 기능에 대한 자세한 내용은 언리얼 엔진 5 문서의 매스 엔티티를 참조하세요.

존 그래프

존 그래프(ZoneGraph) 는 포인트별 통로 구조를 따르는 AI용 경량 디자인 중심 플로입니다. 여기에는 AI 행동에 활용될 수 있는 의미를 가진 정적 및 동적 태그를 저장할 수 있습니다.

존 그래프

액터 배치(Place Actors) 패널에서 월드에 존 셰이프(Zone Shape) 컴포넌트를 추가할 수 있습니다. 대도시 레벨의 월드 아웃라이너에서 존 셰이프 폴더를 찾아보면 존 셰이프 사용 방식을 확인할 수 있습니다.

스테이트 트리

스테이트 트리(StateTree) 는 의사결정 트리 구조로 표시되는 직관적인 유저 인터페이스를 갖춘 새로운 일반 스테이트 머신입니다. 이 스테이트 트리가 군중의 행동을 결정합니다. 이러한 스테이트 트리 에셋은 군중의 매스 엔티티 정의 데이터 에셋에 바로 연결되어 있습니다.

스테이트 트리 예시

군중의 매스 엔티티 정의 데이터 에셋에서 이러한 지정된 스테이트 트리 에셋을 찾을 수 있습니다. 교통 시스템은 StateTree 행동으로 실행되지 않습니다. 예를 들어, Content/AI 폴더의 CrowdStateTree 라는 데이터 에셋을 확인해보세요.

이 기능에 대해 자세히 알아보려면 언리얼 엔진 5 문서의 스테이트 트리를 참고하세요.

스마트 오브젝트

스마트 오브젝트(Smart Objects) AI 에이전트와 플레이어가 상호작용할 수 있는 레벨에 배치된 액터의 컬렉션입니다. 이 시스템은 환경설정이 가능하며, 씬에 전례 없는 수준의 상호작용성을 더해줍니다.

스마트 오브젝트는 개발된 도시에는 포함되어 제공되지 않았지만, 샘플 프로젝트에 포함된 MassCrowd 테스트 맵에서 직접 살펴볼 수 있습니다.

이 기능에 대해 자세히 알아보려면 언리얼 엔진 5 문서의 스마트 오브젝트를 참고하세요.

카오스 비히클

도시 샘플의 차량은 카오스 비히클 시스템(Chaos Vehicles System) 에 의해 구동됩니다. 이 피직스 기반 시스템을 사용하면 아케이드 레이서나 더 사실적인 핸들링을 제공하는 게임플레이 등, 다양한 스타일의 게임플레이에 맞춰 차량을 설정하고 구성할 수 있습니다.

카오스 비히클 피직스

또한, 도시 샘플에서는 각자 자체의 핸들링을 위한 피직스 환경설정이 있는 다양한 사륜 차량을 운전할 수도 있습니다.

다양한 차량

또한 카오스 비히클 시스템은 컨트롤 릭(Control Rig)을 사용하여 각 차량을 고유하게 변형할 수 있는 강력한 디포메이션 시스템도 지원합니다.

카오스 비히클 피직스

언리얼 엔진 5에서 차량을 설정하고 사용하는 방법에 대한 자세한 내용은 카오스 비히클을 참고하세요.

차량 핸들링 튜닝

각 차량 블루프린트에는 엔진 토크와 트랜스미션, 기어링, 질량, 무게 중심 등, 차량의 물리적 속성과 기계적 속성을 정의하는 비히클 무브먼트 컴포넌트(Vehicle Movement Component) 가 포함되어 있습니다. 비히클 무브먼트 컴포넌트에는 앞바퀴와 뒷바퀴를 위한 데이터 전용 휠 블루프린트(Wheel Blueprints) 배열도 있습니다. 휠 블루프린트는 타이어 마찰과 서스펜션, 브레이킹 토크 등, 차량의 다양한 핸들링 및 브레이킹 속성을 제어합니다.

각 차량의 차량 데이터 블루프린트는 Content/Vehicles/[차량 이름] 폴더에 있습니다. 예를 들면, Content/Vehicle/vehCar_vehicle02 와 같은 형식의 폴더입니다.

주행 가능한 차량 블루프린트는 BP_vehCar_vehicle02_Sandbox 처럼 이름이 "_Sandbox" 로 끝납니다. 이러한 차량은 레벨에 드롭되며 주행 가능합니다.

다이내믹 비히클 디포메이션

도시 샘플의 차량은 카오스 비히클 시스템과 함께 컨트롤 릭을 사용하여 각 차량에 고유한 디포메이션을 적용합니다. 즉, 각 충돌이 차량의 주행 역학을 사용하여 역동적으로 이루어집니다. 충돌은 차체 주변에 배치된 몇 개의 피직스 바디를 사용하여 감지되며, 컨스트레인트 가소성은 지정된 한계치를 넘은 후 피직스 컨스트레인트에 영구적 변형 기능을 제공합니다.

차량 컨트롤 릭에는 단일 축을 따라 고정되는 무버블 컨스트레인트가 포함되어 있습니다. 그 축을 따라 컨스트레인트가 이동하면 차체의 일부가 변형됩니다. 도시 샘플에서는 단일 컨트롤 릭을 모든 주행 가능 차량에 사용하여 다이내믹 디포메이션을 적용합니다. 디포메이션 이름은 CR_Frame_Destructible 이며 콘텐츠 브라우저의 Content/Vehicle/Animation 폴더에 있습니다.

모든 차량에 하나의 컨트롤 릭이 사용되므로, 프리뷰 메시(Preview Mesh) 할당 슬롯을 사용하여 다양한 주행 가능 차량을 바꿔가며 디포메이션을 프리뷰해야 합니다.

디포메이션 컨트롤 릭이 있는 다양한 차량

다양한 주행 가능 차량의 디포메이션 컨트롤 릭

프로시저럴 오디오 및 메타사운드

자유롭게 비주얼과 게임 메커니즘을 적용하고 오픈 월드를 빌드할 수 있게 해주는 그 모든 툴에 더해, 언리얼 엔진 5에서는 메타사운드(MetaSounds) 를 사용하여 게임의 오디오도 더 잘 제어할 수 있습니다.

메타사운드를 통해 오디오 디자이너는 완벽한 기능을 갖춘 디지털 시그널 프로세싱(Digital Signal Processing, DSP) 그래프를 사용할 수 있으며, 미리 디자인된 사운드를 재생하든 실시간으로 합성하든, 사운드 변조와 이벤트를 샘플 수준으로 정확하게 제어할 수 있으며, 이 모든 것이 코드와 블루프린트 모두의 게임 데이터에 반응하는 강력한 인터페이스에 의해 구동됩니다.

메타사운드는 디자이너가 메타사운드 그래프를 정의하고 재사용할 수 있게 해주는 프리셋(Preset)컴포지션(Composition) 시스템 등의 프로덕션 효율성 툴을 제공합니다. 또한, 워크플로를 간소화할 수 있는 커스터마이징된 강력한 메타사운드 노드 라이브러리도 빌드할 수 있게 해주는 동시에, 팀 전체에서 메타사운드에 액세스할 수 있습니다.

개발된 메타사운드 시스템에 더해, 도시 샘플에는 절차적으로 생성된 월드에 사운드로 생명을 불어넣기 위한 실험단계의 디자인과 툴, 시스템도 포함되어 있습니다.

이 시스템에 대해 자세히 알아보려면 언리얼 엔진 5 문서의 메타사운드를 참조하세요.

차량 오디오

주행 가능 차량

도시 샘플의 주행 가능 차량은 모토 신디(MotoSynth) 라는 실험단계의 툴을 활용합니다. 모토 신디는 차량의 가속과 감속 기록을 사용하여 실시간으로 가속 및 감속 이동을 세분화해서 재합성하는 세분화 기반 엔진 시뮬레이션 툴입니다. 또한, 주행 가능 차량은 공회전과 드리프트 노이즈, 최대 RPM 사운드 등, 다양한 엔진 장식 사운드에도 메타사운드를 사용합니다.

stereo-mixer-graph.png

moto-synth.png

차량 사운드용 스테레오 믹서

모토 신디 컨트롤

NPC 차량

플레이 불가능 캐릭터(NPC) 차량은 완전히 메타사운드에 의해 구동됩니다. 여기에는 시드 난수화를 중심으로 하는 프로시저럴 오디오 생성 기능이 활용됩니다. 기존의 피치 블렌딩된 엔진 루프, 합성되고 필터링된 노이즈, 합성된 서브톤을 절차적 방식으로 랜덤화하여 혼합한 사운드가 NPC 차량의 속도에 따라 동적으로 변조됩니다.

플레이 불가능 캐릭터(NPC) 차량 메타사운드 그래프

음악 재설계

메타사운드는 디자이너가 기존 사운드와 음악 머티리얼을 킷배싱하고 재사용할 수 있게 해주는 강력한 디자인 환경입니다. 도시 샘플에서는 데모용으로 제작한 원곡 스템을 재사용하는 두 가지 리믹스 베리에이션을 사용하여 클럽 음악을 연상시키는 야간 모드 베리언트 등 완전히 새로운 음악의 베리에이션을 만듭니다.

메타사운드 그래프

도시 사운드스케이프 및 프로시저럴 오디오 생성

월드 오디오 데이터 시스템 및 Houdini로 작업하기

월드 오디오 데이터(World Audio Data) 시스템은 프로시저럴 데이터 프로퍼게이션 및 디자인 작업에 중점을 둔 실험단계의 툴 및 기능 세트입니다. 여기에는 Houdini 포인트 클라우드 메타데이터를 변환하고 사운드스케이프 컬러 포인트 공간 해시맵(Soundscape ColorPoint Spatial Hashmap) 으로 구운 다음, 캐시된 해시맵 데이터를 16제곱킬로미터의 대도시에 흩어져 있는 월드 파티션과 스트리밍하도록 설계된 개별 액터에 배포하는 커스텀 프로세서 규칙(Processor Rule) 이 포함되어 있습니다.

이러한 월드 오디오 데이터 액터에는 ColorPoint 캐시가 포함되며, 월드 파티션 스트리밍을 활용하여 메모리 점유율을 낮게 유지합니다.

월드 오디오 데이터 시스템

사운드스케이프 디자인

도시 주변의 앰비언트 사운드 대부분은 실험단계의 스테이트 기반 프로시저럴 앰비언트 사운드 시스템인 사운드스케이프(Soundscape) 에 의해 제어됩니다. 사운드스케이프를 통해 디자이너는 ColorPoint 메타데이터 기반 조건부 스포닝 행동을 포함하여 리스너(Listener) 주변 사운드의 스폰 행동을 정의할 수 있습니다. 도시 샘플에서 스폰되는 대부분의 사운드는 월드 오디오 데이터 시스템을 통해 동적으로 캐시되고 로드되는 ColorPoint 데이터에 의존합니다. 이를 통해 디자이너는 고속도로 주변의 앰비언트 고속도로 사운드, 큰 거리의 앰비언트 교통 소음과 같은, 공간 메타데이터를 기반으로 스폰될 수 있는 사운드 유형을 지정할 수 있습니다.

ColorPoint 데이터 외에도, 사운드스케이프는 매스 AI 프로세서를 통해 사운드스케이프에 공급되는 다이내믹 ColorPoint 데이터도 수신하여 Idle 상태의 메타휴먼과 NPC 차량의 위치를 추적합니다. 이러한 위치는 앰비언트 경적과 메타휴먼 외침 및 기타 발성에 사용됩니다. 사운드스케이프는 생생한 도시 사운드를 만드는 데 중요한 역할을 합니다.

soundscape-ambient-sounds.png soundscape-ambient-sounds-1.png

자신만의 절차적 도시 생성 가이드

도시 샘플 프로젝트는 Houdini와 언리얼 엔진 5로 나만의 도시를 절차적 방식으로 생성하는 데 필요한 모든 소스 파일을 제공합니다.

첫 번째 가이드에서는 자체적인 도로망, 고속도로 시스템, 도심 등 나만의 도시를 만드는 데 사용되는 프로시저럴 데이터를 Houdini를 통해 설정하고 생성합니다. 두 번째 가이드에서는 Houdini에서 익스포트한 데이터를 사용하여 언리얼 엔진 툴과 기능을 통해 도시를 채우고 제작합니다.