Categories: 언리얼 엔진

메타휴먼 헤어가 지글거릴 때, 그룸 노이즈를 잡는 콘솔 명령어 순서

▲ 슈퍼샘플링, 밀도, 픽셀당 샘플, 웜업, RBF 보간

클로즈업 컷을 렌더링하면 머리카락이 프레임마다 자글거립니다. 얼굴은 멀쩡한데 헤어만 끓는 것처럼 보입니다. 이 현상은 그룸(Groom) 스트랜드의 딥 섀도 샘플이 모자랄 때 나옵니다.

출력 해상도를 올린다고 해결되지 않습니다. 딥 섀도 샘플과 스트랜드 가시성 샘플을 지정하는 헤어 전용 콘솔 변수를 손봐야 합니다.

그룸 노이즈는 해상도가 아니라 딥 섀도 샘플 수의 문제입니다

메타휴먼의 머리카락은 폴리곤 면이 아니라 수만 가닥의 스트랜드로 계산됩니다. 언리얼의 그룸 시스템은 가닥 단위로 렌더링과 시뮬레이션을 처리합니다. 가닥마다 자기 그림자를 만드는데, 이 연산을 담당하는 것이 딥 섀도(Deep Shadow)입니다. 샘플이 부족하면 가닥 사이 그림자가 프레임마다 다르게 찍힙니다.

그게 눈에는 지글거림으로 보입니다. 그래서 손댈 곳은 안티에일리어싱이 아니라 헤어 전용 변수입니다.

콘솔 명령어 세 줄을 위에서부터 차례로 넣습니다

한꺼번에 넣지 말고 한 줄씩 넣으면서 결과를 봅니다.

첫 줄은 r.HairStrands.DeepShadow.SuperSampling 1 입니다. 기본값은 0이고, 시네마틱이면 켜는 쪽이 맞습니다. 사실상 켜고 끄는 스위치입니다.

둘째 줄은 r.HairStrands.DeepShadow.DensityScale 입니다. 기본값 1.0에서 2.0으로 올려봅니다. 클로즈업 컷이면 4.0까지 갑니다. 8.0을 넘기면 화면은 그대로인데 렌더 시간만 늘어납니다.

셋째 줄은 r.HairStrands.Visibility.ComputeRaster.MaxSamplePerPixel 입니다. 게임 기본값은 8이고, 시네마틱 표준은 16으로 보면 됩니다. 화면을 머리가 가득 채우는 익스트림 클로즈업만 32로 올립니다.

값을 한꺼번에 최대로 올리면 렌더 시간만 늘어납니다

세 변수를 동시에 최대로 올리는 경우가 많습니다. DensityScale 8.0에 MaxSamplePerPixel 64를 함께 넣는 식입니다. 과거 권장값이 64였던 탓입니다.

이렇게 하면 한 컷 렌더에 밤을 새우게 됩니다. 그런데 화면은 16으로 넣었을 때와 눈으로 구분되지 않습니다.

한 줄씩 올리면서 확인하고 컷별로 다르게 주는 편이 낫습니다. 풀샷은 2.0, 클로즈업만 4.0입니다.

▲ 슈퍼샘플링 1, 밀도 2.0, 클로즈업 4.0, 샘플 16

첫 프레임에서만 헤어가 튄다면 웜업 수를 먼저 봅니다

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

영상 전체는 깨끗한데 맨 앞 한두 프레임만 머리가 폭발하듯 튀는 경우가 있습니다. 이건 노이즈가 아니라 준비 부족입니다. 무비 렌더 큐의 안티에일리어싱 항목을 엽니다. 렌더링 웜업 수와 엔진 웜업 수를 128로 올립니다.

그래도 남으면 256까지 갑니다. 도시처럼 무거운 씬일수록 웜업을 길게 잡아야 합니다.

LOD가 바뀌면서 헤어가 통째로 바뀔 때는 RBF 보간을 끕니다

카메라가 다가갈 때 머리 모양이 한 번에 달라진다면 노이즈와는 다른 문제입니다. 헤어 그룸 에셋을 더블클릭해 RBF 보간 항목을 모두 Disable로 바꿉니다. 모델 자체가 튀는 문제라면 r.ForceLOD 0 으로 전체 LOD를 고정하는 방법도 있습니다. 메타휴먼의 헤어가 LOD 단계마다 스트랜드·카드·메시로 바뀌는 구조는 공식 문서에 정리되어 있습니다. 다만 이 명령은 씬 전체에 걸리므로 메모리 여유를 보고 쓰는 편이 낫습니다.

버전별 기본값 차이는 저도 전부 확인하지 못했습니다

MaxSamplePerPixel의 기본값은 언리얼 버전마다 다르게 적혀 있습니다. 8이라는 문서도 있고 다른 값을 말하는 글도 있습니다. 쓰고 계신 버전의 콘솔에서 변수 이름만 쳐서 현재 값을 직접 확인하시는 편이 정확합니다. 저도 5.6 기준으로만 실측했습니다.

▲ 해상도가 아니라 헤어 전용 변수에서 갈립니다

자주 묻는 질문

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

Q1. 뷰포트에서는 괜찮은데 렌더 결과물만 지글거립니다.

뷰포트는 임시 화면이라 노이즈를 덮어줍니다. 위 세 줄은 무비 렌더 큐의 콘솔 변수 항목에 넣어야 최종 출력에 반영됩니다.

Q2. 이 명령어들이 게임 빌드에도 영향을 주나요?

DefaultEngine.ini에 적으면 프로젝트 전체에 적용됩니다. 시네마틱만 쓸 값이라면 무비 렌더 큐 세팅 안에만 넣는 쪽이 안전합니다.

Q3. 헤어 말고 피부에도 얼룩이 생깁니다.

피부 노이즈는 루멘 쪽 문제인 경우가 많습니다. r.Lumen.ScreenProbeGather.ScreenTraces 0 을 먼저 시험해 보세요.

공식 문서

Hair Rendering and Simulation in Unreal Engine · Controlling MetaHuman Levels of Detail (LODs)

링크 확인일 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