Game Engine IIWeek 05 · Period 02 Handout

Unreal Engine 5 / Fab Assets and Level Instances

5주차 2교시 — Fab 에셋과 레벨 인스턴스

Fab에서 자연환경 에셋을 가져오고, 나나이트와 레벨 인스턴스로 재사용 가능한 배치 단위를 만드는 자료입니다.

WEEK 05 PERIOD 02 UE5 ASSETS

5주차 2교시 — Fab 에셋과 레벨 인스턴스 (학생용)

관련 문서

관계 문서
강의 계획서 강의계획서: Game Engine II
강의 아웃라인 5주차 아웃라인: 환경 라이팅과 에셋 배치
1교시 핸드아웃 5주차 1교시: 환경 라이팅 시스템

학습 목표
  1. Fab에서 3D 에셋을 대량으로 다운로드하고 프로젝트에 정리할 수 있다
  2. Nanite의 역할과 적용 조건을 이해할 수 있다
  3. Packed Level Actor로 반복 배치용 에셋 묶음을 만들고 재사용할 수 있다

1. Fab에서 3D 에셋 대량 다운로드

Fab 브라우저에서 검색

Fab은 Epic Games의 통합 마켓플레이스입니다. UE 에디터 안에서 바로 에셋을 검색하고 프로젝트에 추가할 수 있습니다.

1. Content Browser 상단 [Fab] 버튼 클릭
 → Epic Games 계정 로그인 필요

2. 검색바에 "Nordic forest" 입력
3. 좌측 필터: PRODUCT TYPES > [3D Models] 선택

Fab 브라우저에서는 검색어와 필터에 따라 결과가 달라질 수 있습니다. 수업에서는 Nordic forest3D Models 필터를 기준으로 진행합니다.

검색 결과에 다양한 3D 에셋이 나타납니다:

  • Nordic Forest Cluster Rock Small / Medium / Large
  • Nordic Forest Ledge Rock Large
  • Nordic Forest Ground Patch Root
  • Mossy Rocks, Mossy Mound, Mossy Stump 등

에셋 다운로드

1. 원하는 에셋 클릭 → 상세 페이지
2. 품질: [Medium quality] 선택
 High는 용량이 크고 다운로드가 시간이 오래 걸릴 수 있습니다

3. [Add to Project] 클릭
4. 뒤로 가기(←) → 다음 에셋도 같은 방식으로 (총 10개 정도)

상세 페이지에서 품질을 선택한 뒤 Add to Project로 현재 프로젝트에 추가합니다.

추천 에셋 목록:

에셋 이름 용도
Nordic Forest Ledge Rock Large 레벨 인스턴스 메인
Nordic Forest Cluster Rock Small 디테일 추가
Nordic Forest Cluster Rock Large 레벨 인스턴스 메인
Nordic Forest Ground Patch Root 바닥 디테일
Mossy Rocks 변형 조합용
Mossy Mound 변형 조합용
Mossy Stump 포인트 장식
Nordic Forest Rock Small 빈 공간 채우기

Content Browser 필터링 팁

Static Mesh만 보고 싶을 때

Content Browser 상단 깔때기 아이콘(필터) 클릭 → [Static Mesh] 체크 → 텍스처, 머테리얼 인스턴스가 숨겨지고 메쉬만 표시됩니다.

Static Mesh 필터를 켜면 메쉬만 남기고 머테리얼/텍스처를 숨길 수 있어 배치할 에셋을 찾기 쉬워집니다.


2. 나나이트(Nanite)

나나이트는 수백만 폴리곤의 메쉬를 자동으로 LOD 관리해주는 시스템입니다.

항목 설명
나나이트란 수백만 폴리곤의 메쉬를 자동으로 LOD 관리해주는 시스템
LOD와의 관계 나나이트가 활성화되면 LOD를 자동 관리합니다. 수동 설정이 불필요합니다
Nanite와 폴리지 이번 실습에서는 바위 같은 Static Mesh 중심으로 확인합니다. 폴리지 나나이트는 프로젝트와 버전에 따라 지원 상태를 확인해야 합니다

LOD(Level of Detail)란, 카메라에서 멀리 있는 오브젝트의 폴리곤 수를 줄여서 성능을 아끼는 기술입니다. 나나이트는 이를 엔진이 자동으로 처리합니다. 고폴리곤 메쉬를 가져와도 성능 부담을 줄일 수 있습니다.

나나이트 활성화 확인

1. Content Browser에서 바위 Static Mesh 더블클릭
 → 메쉬 에디터가 열립니다

2. Details 패널에서 [Nanite Settings] 섹션 찾기
3. [Enabled] 체크박스 확인
 → 체크가 안 되어 있으면 클릭해서 활성화

4. [Apply Changes] 클릭
nanite settings editor
Nanite 활성화와 자동 LOD 개념도 — Static Mesh Editor > Nanite Settings > Enabled
Medium 품질 에셋 주의

Medium으로 받으면 나나이트가 꺼져 있을 수 있습니다. 직접 확인하고 필요하면 켜주세요.


3. 에셋 배치와 정리 워크플로우

에셋 정렬 — 뷰포트에 나열

1. Content Browser에서 Static Mesh 필터를 건 상태로 에셋 전체 선택 (Ctrl+A)
2. 뷰포트의 바닥 위에 드래그 앤 드롭
3. 각 에셋을 이동(W)해서 적당한 간격으로 일렬 나열
 → 어떤 모양인지 한눈에 확인할 수 있도록 정렬합니다

Outliner 폴더링 — Museums

1. Outliner 상단 (+) 또는 우클릭 → [Create Folder]
2. 폴더 이름: "Museums"
3. 배치한 에셋들을 모두 선택 → Museums 폴더로 드래그
Museums 폴더의 용도

에셋 확인 및 참조용 전시 공간입니다. 실제 레벨에 사용되는 액터와 구분하기 위해 별도 폴더로 관리합니다.

Actor Hidden In Game 설정

Museums 에셋은 게임 플레이 시 보이지 않아야 합니다.

1. Museums 폴더 안의 에셋 전체 선택
2. Details 검색창에 "hidden in game" 입력
3. [Actor Hidden In Game] 체크
 → 에디터에서는 보이지만 게임 플레이(Play) 시에는 렌더링되지 않습니다

Details 패널 검색창에 hidden in game을 입력하면 해당 체크박스를 빠르게 찾을 수 있습니다.

게임 뷰로 확인하기

뷰포트에서 G키를 누르면 게임 뷰로 전환됩니다. Hidden In Game이 체크된 에셋들이 사라지면 정상입니다. 다시 G키를 누르면 에디터 뷰로 돌아옵니다.

확인 질문

G키를 눌렀을 때 Museums 에셋이 보이면? → Hidden In Game 체크가 안 된 것입니다.


4. 레벨 인스턴스 — 배치의 재사용

레벨 인스턴스란?

레벨 인스턴스는 여러 에셋의 배치를 하나의 “패키지”로 묶어서 재사용하는 기능입니다. 원본을 수정하면 모든 복사본에 동시 반영됩니다.

항목 설명
정의 여러 에셋의 배치를 하나의 “패키지”로 묶어서 재사용
비유 머테리얼 인스턴스와 비슷 — 원본을 기반으로 복제 사용
핵심 장점 원본을 수정하면 모든 복사본에 동시 반영
레벨 인스턴스 vs 블루프린트

레벨 인스턴스는 배치를 재사용하는 것이고, 블루프린트는 로직을 넣는 것입니다.

level instance workflow
레벨 인스턴스 워크플로우: 배치 → 선택 → 패키징 → 저장 → 재사용

레벨 인스턴스 만들기 — 단계별

1단계: 메쉬 선택

Outliner 또는 뷰포트에서 배치한 에셋들을 선택합니다
→ Museums 폴더 안의 에셋이 아닙니다!
→ 뷰포트에 직접 배치한 에셋들을 Ctrl+클릭으로 다중 선택

2단계: Create Packed Level Actor

1. 선택한 메쉬들 위에서 마우스 오른쪽 버튼(RMB) 클릭
2. [Level] 항목 → 서브메뉴 펼침
3. [Create Packed Level Actor] 클릭

선택한 메쉬 위에서 우클릭한 뒤 Level > Create Packed Level Actor를 선택합니다.

Create Level Instance가 아닙니다!

메뉴에 Create Level Instance도 있지만, Packed Level Actor를 선택하세요.

항목 Create Level Instance Create Packed Level Actor
생성물 레벨 파일만 생성 레벨 파일 + 블루프린트 생성
수정 방법 뷰포트에서 Edit 모드 직접 수정 블루프린트 에디터에서 수정 + Compile
장점 가볍고 단순 나중에 로직 추가 가능

3단계: Pivot 설정

New Packed Level Actor 다이얼로그:
→ [Pivot Type] 드롭다운에서 [Center Min Z] 선택
 (피벗이 바닥 중앙에 위치하여 배치 시 편리)
→ 확인 버튼 클릭

Pivot Type은 배치할 때 기준점이 되므로, 이번 실습에서는 바닥 중앙인 Center Min Z를 사용합니다.

4단계: 레벨 저장

Save Level As 다이얼로그:
→ [Content] > [Lectures] > [5Weeks] 폴더 선택
→ 파일 이름: LV_Sample_01 (LV = Level 접두사)
→ [Save]

5단계: 블루프린트(Packed Level Actor) 저장

Save Asset As 다이얼로그:
→ 같은 5Weeks 폴더에 저장
→ 파일 이름: BPP_LV_Sample_01 (BPP = Blueprint Packed 접두사)
→ [Save]
저장 다이얼로그가 2번 나타납니다

첫 번째는 레벨(LV_), 두 번째는 블루프린트(BPP_)입니다.

6단계: 확인

Content Browser의 5Weeks 폴더를 확인합니다:

에셋 타입 설명
BPP_LV_Sample_01 Blueprint Class 레벨 인스턴스 블루프린트 (이것을 뷰포트에 배치)
LV_Sample_01 Level 에셋 배치 정보가 담긴 레벨

Hidden In Game 문제 해결

Content Browser에서 BPP를 뷰포트에 배치했는데 게임 뷰(G키)에서 안 보이는 경우가 있습니다. Museums에서 Hidden In Game을 체크한 에셋으로 레벨 인스턴스를 만들었기 때문입니다.

블루프린트 에디터에서 Hidden In Game 해제하기
1. Content Browser에서 BPP_LV_Sample_01 더블클릭
→ 블루프린트 에디터가 열립니다

2. 왼쪽 [Components] 패널에서 컴포넌트 전체 선택 (Ctrl+A)
3. Details 검색창에 "hidden in game" 입력
4. [Hidden In Game] 체크 해제
5. 상단 [Compile] 버튼 클릭! (초록색 체크 아이콘)
6. [Save] 클릭

Compile 버튼은 블루프린트 에디터 상단 툴바에 있습니다. 초록색 체크 아이콘으로 표시됩니다.

Compile 클릭

블루프린트에서 설정을 바꾼 뒤에는 Compile을 눌러 변경사항을 적용합니다.


레벨 인스턴스 수정

1. 뷰포트에서 레벨 인스턴스 선택
2. Details 패널 > [Level Instance] 섹션 > [Edit] 클릭
3. Level Instance Edit 모드 진입
 → 내부 오브젝트를 자유롭게 이동/삭제/추가 가능

4. 수정 완료 → 하단 [Save] 클릭
원본 수정 = 전체 반영
수정 방법 영향 범위
Edit 모드에서 수정 같은 BPP를 참조하는 모든 인스턴스에 반영
개별 인스턴스 이동/회전/스케일 해당 인스턴스 영향

변형(Variation) 만들기

에셋 조합을 바꿔서 다른 느낌의 변형을 만들 수 있습니다.

1. Museums에서 다른 에셋 조합을 골라 뷰포트에 배치
2. 선택 → RMB → Level → Create Packed Level Actor
3. 저장: LV_Var01, BPP_LV_Var01
4. BPP 더블클릭 → Hidden In Game 해제 → Compile

레벨 인스턴스 배치:

Content Browser에서 BPP 에셋을 뷰포트에 드래그하면 바로 배치됩니다
→ 회전(E)/스케일(R)을 바꿔가며 다양하게 배치
→ Ctrl+D로 복제 가능
→ 같은 BPP를 여러 개 배치하되, 회전/스케일을 다르게 하면 자연스러운 환경 완성
확인 질문

레벨 인스턴스를 수정하고 꼭 눌러야 하는 버튼은? → Compile. 안 누르면 변경사항이 적용되지 않습니다.


5. 콜리전 — 보이는 것과 부딪히는 것

콜리전은 캐릭터와 오브젝트가 실제로 부딪히는 물리 경계입니다. 눈에 보이는 메쉬와 콜리전은 서로 다를 수 있습니다. 콜리전이 없거나 잘못 설정되어 있으면 캐릭터가 바위를 뚫고 지나가거나, 반대로 보이지 않는 벽에 막힐 수 있습니다.

simple vs complex collision
Simple Collision과 Complex Collision 비교 — 빠른 대략 경계 vs 정밀하지만 무거운 per-poly 경계

콜리전 확인

1. Content Browser에서 바위 Static Mesh를 더블클릭합니다
2. Static Mesh Editor 상단 메뉴에서 Show > Complex Collision을 켭니다
3. 초록색 와이어프레임이 보이면 콜리전이 있는 상태입니다

콜리전 다시 만들기

1. Static Mesh Editor 상단 메뉴에서 Collision > Remove Collision을 선택합니다
2. Collision > Auto Convex Collision을 선택합니다
3. 기본값으로 Apply를 누릅니다
4. Details > Collision > Collision Presets가 BlockAll인지 확인합니다
Auto Convex Collision

Hull Count를 올리면 콜리전이 더 세밀해지지만 계산 비용도 늘어납니다. 이번 실습에서는 기본값이나 낮은 값으로 충분합니다.

플레이 테스트

  1. 레벨에 바위를 배치합니다
  2. Play(Alt+P)를 실행합니다
  3. 캐릭터가 바위를 뚫고 지나가지 않는지 확인합니다
  4. 문제가 있으면 해당 Static Mesh의 콜리전과 Collision Presets를 다시 확인합니다

핵심 요약

2교시 핵심 3가지
  1. Fab 에셋 + Museums 워크플로우: 에셋 다운로드 → 뷰포트 나열 → Outliner 폴더링 → Hidden In Game으로 관리
  2. 나나이트: 고폴리곤 메쉬의 성능 부담을 줄이고 LOD를 자동 관리. Static Mesh Editor > Nanite Settings > Enabled로 활성화
  3. 레벨 인스턴스: 배치를 패키지로 묶어 재사용. 수정하면 모든 인스턴스에 반영. 블루프린트 수정 후 Compile 클릭
  4. 콜리전: 보이는 메쉬와 물리 경계를 구분하고, Static Mesh Editor에서 확인/재생성합니다
핵심 키워드 정리:

→ Fab: Content Browser 상단 [Fab] 버튼 → 검색 → Add to Project
→ 나나이트: Static Mesh Editor > Nanite Settings > Enabled
→ 레벨 인스턴스: RMB > Level > Create Packed Level Actor
→ 이름 규약: LV_ (레벨), BPP_ (블루프린트)
→ Pivot: Center Min Z
→ Compile 클릭
→ 콜리전: Static Mesh Editor > Show > Complex Collision / Collision > Auto Convex Collision

3교시 예고

3교시에는 1교시 라이팅 + 2교시 에셋 배치를 합쳐서 자연환경 씬을 직접 만듭니다.

3교시 실습 순서:

1. 1·2교시 내용을 통합하여 자연환경 씬 직접 제작
2. 레벨 인스턴스 변형 추가 제작
3. 콜리전 직접 실험 — Remove → 뚫림 확인 → Auto Convex 재생성