블렌더에선 멀쩡했는데 유니티에선 회색 덩어리: FBX 텍스처·머티리얼 추출
블렌더 모델이 유니티에서 회색 덩어리로 들어왔다면, 머티리얼을 새로 만들기 전에 FBX에 적힌 텍스처 경로 끝에 파일이 있는지부터 확인하세요. 블렌더에서 나무 상자를 만들고 텍스처까지 입혔습니다. 뷰포트에서는 판자 무늬가 선명합니다. 그런데 FBX로 내보내 유니티 Assets 폴더에 넣자 상자가 밋밋한 흰 회색이 됩니다. 머티리얼을 눌러 보면 Albedo 칸은 비어 있고, 텍스처를 끌어다 놓으려 해도 칸이 잠겨 있습니다.
검색하면 대부분 “Path Mode를 Copy로 바꾸고 Embed Textures를 켜라”고 답합니다. 그대로 따라 했는데도 여전히 회색이라는 질문이 꼬리를 뭅니다. Embed까지 켰는데 왜 아직 회색일까요?
이 글은 네 가지를 차례로 봅니다. FBX에 적히는 경로, 유니티가 텍스처를 찾는 곳, Embed 뒤의 Extract Textures, 블렌더 셰이더 노드의 연결입니다. 아래 결과는 Blender 5.0과 Unity 6000.0.62f1(Built-in 렌더 파이프라인)에서 같은 상자 모델을 여러 방식으로 내보내 직접 임포트해 본 것입니다.

유니티로 가는 FBX에는 텍스처 대신 경로가 적혀 있습니다
많은 분이 FBX 안에 텍스처 그림이 함께 저장된다고 생각합니다. 블렌더 기본 설정에서는 그렇지 않습니다. FBX가 들고 가는 것은 텍스처 그림이 아니라, 그 그림이 있던 경로입니다.
기본값(Path Mode: Auto)으로 내보낸 FBX 파일의 내용을 들여다보면, C:\…\src\tex\crate_albedo.png 같은 절대 경로가 문자열로 들어 있습니다. 파일 크기도 22KB 남짓이라, 164KB짜리 텍스처가 들어갈 자리가 없습니다. 블렌더 매뉴얼에 따르면 Auto는 텍스처가 내보내는 폴더 아래에 있으면 상대 경로를, 그 밖에 있으면 절대 경로를 씁니다.
이 경로는 내 PC의 블렌더 작업 폴더를 가리킵니다. 유니티는 Assets 폴더 밖의 파일을 유니티 에셋으로 쓰지 않습니다. 그래서 같은 PC에서 열어도 텍스처가 연결되지 않았습니다. 다른 PC에서 마야 씬을 열면 텍스처가 사라지는 것도 같은 원리입니다. 경로가 어떻게 깨지는지는 마야 씬을 다른 PC에서 열면 텍스처가 안 보일 때에서 자세히 다뤘습니다.
블렌더 FBX 내보내기 창의 Path Mode는 이 경로를 어떤 형태로 적을지 정합니다. 자주 쓰는 네 가지를 테스트한 결과입니다.
| Path Mode | FBX에 담기는 것 | 유니티에서 할 일 |
|---|---|---|
| Auto(기본값) | 내보내는 폴더 밖 텍스처는 절대 경로 | 텍스처 파일을 직접 Assets로 복사 |
| Strip Path | 파일 이름만 | 같은 이름 파일을 Textures 폴더에 넣기 |
| Copy | FBX 옆 이름.fbm 폴더로 텍스처 복사, 상대 경로 | FBX와 .fbm 폴더를 함께 Assets로 |
| Copy + Embed Textures | 텍스처 파일을 FBX 안에 넣음 | Materials 탭에서 Extract Textures |
유니티는 텍스처를 이름으로 다시 찾습니다
경로 끝에 파일이 없으면 유니티는 포기하기 전에 한 번 더 찾습니다. Unity 매뉴얼에 따르면 임포터는 모델이 있는 폴더나 그 상위 폴더에 있는 Textures 하위 폴더에서 같은 이름의 텍스처를 찾습니다. 그래서 텍스처 파일을 FBX 옆 Textures 폴더에 넣으면 대부분 바로 연결됩니다.
테스트에서도 Auto로 내보낸 FBX 옆에 Textures 폴더를 만들고 crate_albedo.png를 넣자, 다시 임포트한 머티리얼에 텍스처가 붙었습니다. Copy로 내보낼 때 생기는 crate.fbm 폴더를 FBX와 함께 옮긴 경우에도 연결됐습니다. 이미 임포트한 FBX라면 Project 창에서 FBX를 오른쪽 클릭해 Reimport를 누르면 다시 찾습니다.
주의할 점이 하나 있습니다. 매뉴얼은 근처에서 못 찾으면 프로젝트 전체를 뒤지는 Search Textures Globally 옵션을 설명하면서, 같은 이름의 텍스처가 여럿이면 어느 것이 연결될지 정해지지 않는다고 경고합니다. 최신 버전에서는 새로 들인 모델에 이 옵션이 꺼져 있습니다. 테스트한 6000.0.62f1에는 이 옵션이 없었고, 다른 폴더에 있던 같은 이름의 텍스처가 그대로 연결됐습니다. texture.png, albedo.png처럼 흔한 이름은 엉뚱한 모델의 텍스처를 끌어올 수 있습니다. 내보내기 전에 텍스처 이름을 모델 이름으로 시작하게 바꿔 두면 안전합니다.
Embed Textures를 켰다면 유니티에서 Extract Textures까지
파일을 따로 챙기기 번거롭다면 텍스처를 FBX 안에 넣는 방법이 있습니다. 블렌더 File > Export > FBX 창에서 Path Mode를 Copy로 바꾸고, 바로 옆 작은 아이콘(Embed Textures)을 켭니다. 테스트에서 FBX 크기는 22KB에서 186KB로 늘었습니다. 텍스처 파일이 통째로 들어간 것입니다.
그런데 이 FBX를 유니티에 넣은 직후에도 머티리얼의 텍스처 칸은 비어 있었습니다. 모델을 선택하고 Inspector의 Materials 탭에서 Extract Textures를 누른 뒤 저장할 폴더(예: Textures)를 고르자, 그 폴더에 PNG가 생기고 머티리얼에 텍스처가 연결됐습니다. Embed는 텍스처를 FBX에 넣어 줄 뿐이고, 유니티 프로젝트의 파일로 꺼내는 일은 Extract Textures가 합니다.

Extract Textures 버튼이 회색으로 눌리지 않는다면 FBX 안에 꺼낼 텍스처가 없다는 뜻입니다. 매뉴얼도 추출할 하위 에셋이 없으면 버튼이 비활성화된다고 설명합니다. Path Mode가 Copy인지, Embed 아이콘이 켜졌는지 확인하고 다시 내보내세요. 둘 다 맞는데도 회색이라면 다음 단계가 원인일 수 있습니다.
블렌더 노드를 거친 텍스처는 FBX에 실리지 않습니다
Extract Textures까지 눌렀는데도 일부 머티리얼만 회색으로 남을 때가 있습니다. 이때는 블렌더 Shading 탭의 노드를 봐야 합니다.
FBX의 재질은 Base Color, Roughness, Normal 같은 정해진 칸에 텍스처를 하나씩 꽂는 단순한 구조입니다. 블렌더 매뉴얼도 블렌더는 노드 기반 셰이딩을 쓰고 FBX는 고정된 형식이라, 내보낼 때 둘 사이를 변환한다고 적고 있습니다. 블렌더 5.0의 FBX 내보내기 코드는 Material Output에 연결된 Principled BSDF를 찾고, 그 입력에 Image Texture 노드가 바로 꽂혀 있을 때만 텍스처로 인식합니다. 노멀맵은 Normal Map 노드를 한 번 거친 연결까지 읽습니다.
테스트에서 한 상자는 Image Texture를 Base Color에 바로 연결했고, 다른 상자는 사이에 Hue/Saturation/Value 노드를 하나 끼웠습니다. 블렌더 렌더에서는 두 상자가 거의 같아 보입니다. 하지만 임베드와 Extract Textures를 거친 뒤에도 노드를 끼운 쪽은 텍스처 없이 회색으로 남았습니다. 사이에 노드가 하나라도 있으면 FBX에는 텍스처 연결 자체가 기록되지 않습니다.

해결법은 두 가지입니다. 색 보정이 꼭 필요하지 않다면 Image Texture를 Principled BSDF에 바로 연결합니다. Mix, ColorRamp, 절차적 텍스처처럼 노드로 만든 결과가 필요하다면 블렌더의 Bake로 이미지 한 장에 구운 뒤, 그 이미지를 바로 연결해 내보냅니다. 노드로만 텍스처를 쓰는 모델은 FBX에 넣을 이미지 자체가 없어서 Extract Textures 버튼이 회색으로 남을 수도 있습니다.
흰 상자와 회색 상자가 알려 주는 원인
첫 그림의 유니티 쪽 상자를 다시 보세요. 오른쪽 상자가 왼쪽보다 조금 더 하얗습니다. 오른쪽은 Image Texture를 직결한 상자, 왼쪽은 노드를 끼운 상자입니다. 이 밝기 차이가 원인을 가르는 단서입니다.
기본 임포트 설정(Import via MaterialDescription)에서 유니티는 diffuse 텍스처가 지정된 머티리얼의 색을 무시합니다. 그래서 경로는 적혀 있었지만 파일을 못 찾은 머티리얼은 색이 순백(1.0)으로 들어옵니다. 반대로 노드 때문에 텍스처 연결이 아예 없던 머티리얼은 블렌더 Base Color 기본값(0.8)에서 온 회색을 받습니다. 테스트 프로젝트는 Gamma 색 공간이라 0.8(RGB 204)로 들어왔고, Linear 색 공간 프로젝트에서는 유니티가 이 값을 감마로 바꿔 약 0.91(RGB 231)로 넣습니다.
머티리얼의 Albedo 옆 색상 칸을 눌러 보면 바로 구분됩니다. 순백이면 파일 찾기 문제, 그보다 어두운 회색이면 블렌더 노드 문제입니다. 블렌더에서 Base Color 값을 바꿔 둔 머티리얼이라면 그 색이 들어오니, 블렌더에 설정한 값과 비교하세요. 다만 이 구분은 Built-in 렌더 파이프라인 기준입니다. URP의 임포트 코드는 텍스처 파일을 못 찾으면 Base Color 값을 대신 넣으므로, URP 프로젝트에서는 두 경우가 똑같이 회색으로 보일 수 있습니다.
이제 처음 질문에 답할 수 있습니다.
Embed까지 켰는데 회색이라면, 텍스처를 아직 꺼내지 않았거나 블렌더 노드 때문에 애초에 FBX에 실리지 않은 것입니다.
유니티에서 머티리얼을 꺼내 텍스처 다시 연결하기
블렌더로 돌아가 다시 내보내기 어렵다면 유니티에서 직접 연결해도 됩니다. 다만 FBX에서 들어온 머티리얼은 FBX의 하위 에셋이라 Inspector에서 칸이 잠겨 있습니다. 먼저 꺼내야 합니다.
- Project 창에서 FBX를 선택하고 Inspector의 Materials 탭을 엽니다.
- Location이 Use Embedded Materials인지 보고 Extract Materials를 누릅니다. 저장 폴더는 FBX 옆 Materials 폴더로 정합니다.
- 꺼낸 .mat 파일을 선택하고 Albedo(URP Lit에서는 Base Map) 칸에 텍스처를 끌어다 놓습니다.
- 노멀맵은 텍스처를 선택해 Texture Type을 Normal map으로 바꾼 뒤 Normal Map 칸에 넣습니다.
- 블렌더 Roughness 맵은 그대로 꽂을 칸이 없습니다. URP Lit의 Smoothness는 Metallic Map이나 Base Map의 알파 채널에서 읽으므로, 값을 뒤집어(1 − Roughness) 그 알파에 넣어야 합니다.
꺼낸 머티리얼은 FBX를 다시 임포트해도 덮어써지지 않습니다. 매뉴얼에 따르면 원본에서 머티리얼을 다시 받으려면 Materials 탭의 Remapped Materials 목록에서 연결을 지워야 합니다. 블렌더에서 머티리얼을 고쳐 다시 내보낼 계획이라면 이 점을 기억하세요.
텍스처를 연결했는데 노멀맵이 이상하게 울퉁불퉁하다면 색 공간 설정을 의심하세요. 원리는 Normal Map을 sRGB로 불러오면 망가지는 이유에서 설명했습니다. 모델이 회색이 아니라 분홍색이라면 텍스처가 아니라 셰이더와 렌더 파이프라인 쪽 문제입니다. 유니티에서 크기가 100배로 들어오는 문제는 블렌더 FBX의 Scale Factor에서 다뤘고, FBX의 크기와 축이 어긋나는 문제는 블렌더 모델을 마야로 옮길 때의 단위·축 설정과 같은 FBX 설정에서 출발합니다.
증상별로 먼저 볼 곳
| 유니티에서 보이는 것 | 원인 | 할 일 |
|---|---|---|
| 텍스처 칸이 비고 색은 순백 | FBX의 경로 끝에 파일이 없음 | 텍스처를 FBX 옆 Textures 폴더로 복사하고 Reimport |
| Extract Textures 버튼이 눌림 | 텍스처가 FBX 안에 들어 있음 | Extract Textures로 꺼내기 |
| Extract Textures 버튼이 회색 | FBX에 넣은 텍스처가 없음 | Path Mode Copy + Embed로 다시 내보내기 |
| 텍스처 칸이 비고 색은 회색(0.8~0.91) | 노드를 거쳐 연결이 안 실림 | Image Texture 직결 또는 Bake |
| 엉뚱한 텍스처가 붙음 | 같은 이름 파일을 다른 폴더에서 찾음 | 텍스처 이름을 모델마다 다르게 |
| 머티리얼 칸이 잠겨 편집 불가 | FBX 안의 머티리얼(읽기 전용) | Extract Materials |
한 줄 정리
FBX는 텍스처가 아니라 경로를 옮깁니다. 유니티에서 회색 덩어리가 보이면 머티리얼을 새로 만들기 전에, 그 경로 끝에 파일이 있는지부터 보세요.
vfx 잡학지식



댓글 0
첫 댓글을 남겨보세요.