Categories: 언리얼 엔진

Packed Level Actor가 사라지거나 검게 변할 때 확인할 세 가지

▲ 나나이트, 라이트맵 UV, 섀도 캐싱, 갱신 순서

거대 도시 모듈을 Packed Level Actor로 묶었더니 문제가 생깁니다. 카메라를 조금만 옆으로 돌리면 건물이 통째로 사라지고, 어떤 것은 새까맣게 나옵니다.

증상마다 원인이 다릅니다.

사라지는 것은 경계값, 검게 변하는 것은 라이팅, 뭉개지는 것은 나나이트 폴백 쪽입니다. 증상을 먼저 나눠 두면 손댈 설정이 정해집니다.

사라지는 것은 경계값 계산이 어긋났기 때문입니다

PLA는 여러 메시를 묶으면서 내부에 ISM을 만듭니다. 엔진이 이 묶음의 크기를 잘못 재면, 카메라가 조금만 움직여도 화면 밖이라고 판단해 액터를 제거합니다.

생성된 PLA 블루프린트를 엽니다. 안쪽의 스태틱 메시 컴포넌트를 선택하고 디테일 패널에서 Bounds Scale을 찾습니다. 기본값 1.0을 1.5에서 2.0 사이로 올립니다. 대부분 여기서 돌아옵니다.

월드 파티션을 함께 쓴다면 PLA가 스트리밍 셀보다 커지지 않았는지도 봅니다. 셀보다 작게 모듈화하는 편이 안전합니다.

검게 변하는 것은 라이팅 쪽 문제입니다

루멘을 쓰는데 PLA 안쪽 메시들의 나나이트가 꺼져 있으면 거리 필드가 제대로 생성되지 않습니다. 간접광을 못 받아서 새까맣게 보입니다. 묶기 전 원본 메시들의 나나이트를 켜주세요.

베이크된 라이팅을 쓴다면 원본 메시에 라이트맵 UV가 있는지 확인합니다. 묶은 뒤에는 라이트맵 해상도가 모자라 어둡게 나올 수 있습니다.

둘 다 아니라면 섀도 캐싱을 의심합니다. 콘솔에 r.Shadow.Virtual.Cache 0 을 넣어보고 해결되면 그쪽 설정 문제입니다.

세 가지를 한꺼번에 바꾸지는 않습니다. 나나이트, 라이트맵 UV, 섀도 캐싱 순서로 하나씩 확인합니다. 어디서 돌아오는지 봐야 다음에 같은 증상이 났을 때 바로 잡습니다.

증상이 같다고 원인까지 같지는 않습니다

건물이 사라지면 Bounds Scale부터 올리는 경우가 많습니다. 1.5에서 2.0, 나중에는 5.0까지 갑니다. 일부는 돌아오는데 일부는 그대로입니다.

이때 남아 있는 것들은 대개 월드 원점에서 수십 킬로미터 떨어진 좌표에 있습니다. 부동 소수점 오차이고 Bounds와는 무관합니다. 같은 증상이라도 원인을 나눠 봐야 합니다.

▲ 경계값, 섀도 캐싱, 폴백 오차, 블루프린트 갱신

형태가 무너지는 것은 나나이트 폴백 설정입니다

이해를 돕기 위한 주제 이미지

멀리서 볼 때 건물 형태가 뭉개진다면 Fallback Relative Error 값이 높은 것입니다. 공식 문서도 이 값을 낮추면 원본 메시의 삼각형을 더 쓴다고 설명합니다. 메시 디테일 설정에서 이 값을 0에 가깝게 내리면 디테일이 유지됩니다.

나무처럼 흔들리는 효과가 들어간 메시를 묶었다면 다릅니다. 이때는 나나이트 설정을 봅니다. Preserve Area와 Max World Position Offset을 조정해야 형태가 유지됩니다.

설정을 바꿨으면 블루프린트를 갱신해야 합니다

원본 메시 설정을 고쳐도 이미 만들어진 PLA에는 반영되지 않습니다. PLA 블루프린트에서 마우스 오른쪽 버튼을 누릅니다. 메뉴에서 Update Packed Level Blueprint를 실행합니다. 이 단계를 빼먹고 왜 안 바뀌냐고 한참 헤매는 경우가 많습니다.

갱신 전에는 원본 메시와 PLA 안쪽 메시가 서로 다른 상태로 남아 있습니다. 설정을 바꿨는데 화면이 그대로라면 이 단계를 지나쳤는지 먼저 확인합니다.

어느 거리에서 사라지는지 확인하는 방법

뷰포트에서 FreezeRendering 명령어를 넣으면 화면이 그 순간 상태로 고정됩니다. 그 상태로 카메라를 옮겨보면 어느 액터가 제거되었는지 눈으로 보입니다. 원인을 좁힐 때 유용합니다.

참고로 여기 적은 수치는 제 프로젝트 기준입니다. 씬 규모와 엔진 버전에 따라 다를 수 있는 부분은 저도 매번 다시 맞춥니다.

▲ 같은 증상이라도 먼 좌표는 원인이 다릅니다

자주 묻는 질문

이해를 돕기 위한 주제 이미지

Q1. Bounds Scale을 크게 올리면 성능에 문제가 되나요?

컬링이 덜 걸리므로 화면에 안 보이는 것도 계산합니다. 필요한 만큼만 올리는 편이 낫습니다.

Q2. PLA 대신 그냥 배치하면 안 되나요?

가능하지만 액터 수가 많아지면 아웃라이너와 로딩이 무거워집니다. 모듈 단위로 묶는 이유가 그것입니다.

Q3. 나나이트를 켜면 무조건 해결되나요?

불투명 메시라면 대체로 그렇습니다. 유리나 반투명은 나나이트가 적용되지 않아 다른 방법을 찾아야 합니다.

공식 문서

Level Instancing in Unreal Engine · Nanite Virtualized Geometry in Unreal Engine

링크 확인일 2026-09-14.

발행 · 빅픽처

unrealtechlog

Recent Posts

언리얼엔진 프레임이 떨어질 때 stat unit 부터 켜는 이유, Game·Draw·GPU 숫자 읽는 법 (UE 5.8 기준)

씬이 무거워져서 프레임이 30 아래로 떨어지면 대부분 먼저 그래픽 옵션부터 낮춰 봅니다. 그림자 품질을 내리고,…

1주 ago

언리얼엔진 HighResShot, 화면보다 큰 스크린샷을 원하는 크기로 뽑는 명령어 정리 (UE 5.8 기준)

포트폴리오 이미지나 기획서에 넣을 컷을 뷰포트에서 캡처하면 모니터 해상도 이상으로는 커지지 않습니다. 1920×1080 모니터에서 작업하면…

1주 ago

무비 렌더 큐 샘플 수, 스페이셜과 템포럴 중 어디를 올릴지 정하는 법

이해를 돕기 위한 주제 이미지▲ 스페이셜은 위치를, 템포럴은 셔터 시간을 나눈다 무비 렌더 큐로 뽑았는데…

4주 ago

노출 고정과 포토메트릭 조명 단위 — 밝기가 출렁이지 않는 씬 만들기

라이트 강도를 바꿨는데 화면 밝기가 예상과 다르거나, 카메라 방향에 따라 화면이 서서히 밝아진다면 자동 노출을…

1개월 ago

개인 작업용 렌더 워크스테이션, 돈을 어디에 쓸지

장비를 새로 맞출 때 예산은 정해져 있습니다. 문제는 어디에 몰아줄지죠. 커뮤니티 글을 보면 다들 다른…

1개월 ago

외주 견적에서 자주 빠지는 항목들

견적을 잘못 내면 작업 내내 손해라는 감각이 따라다닙니다. 금액을 낮게 불러서가 아니라, 들어갈 일을 빠뜨려서…

1개월 ago