블렌더 모델을 유니티로 옮기면 100배 크거나 작을 때: FBX 단위·Scale Factor
블렌더에서 키 1.8 m로 만든 캐릭터를 FBX 파일로 유니티에 넣었더니 Inspector의 Scale에 100이 찍혀 있습니다. 이상해서 1로 고치면 캐릭터가 개미만큼 줄어듭니다. 이 100은 어디서 왔고, 어디로 보내야 사라질까요?
먼저 방향만 말하면, 크기 보정은 오브젝트 Scale이 아니라 FBX 파일 단위에 맡겨야 합니다. 세 가지를 순서대로 봅니다. 크기가 정말 틀렸는지, 100이 어디서 왔는지, 블렌더 내보내기에서 그 100을 어디로 옮기는지입니다. 회전값 -90과 회색 머티리얼은 원인이 달라 이 글에서는 짧게만 짚습니다.
1. 유니티에서 먼저 볼 것: 크기가 틀렸나, Scale 숫자가 이상한가
눈대중으로는 판단이 어렵습니다. 유니티에서 GameObject > 3D Object > Cube로 큐브를 하나 만들어 모델 옆에 두세요. 기본 큐브는 한 변이 1 unit이고, 유니티는 1 unit을 1 m로 다룹니다. 1 m 기준 큐브 옆에 세워 보면 크기 문제인지 숫자 문제인지가 갈립니다.
| 기준 큐브 옆 모습 | Inspector Scale | 뜻 | 볼 곳 |
|---|---|---|---|
| 크기가 맞음 | 100 | 블렌더 FBX 기본값이 단위 보정을 Scale에 실음 | 2·3절 |
| 100분의 1로 작음 | 1 (직접 지움) | 위 경우에서 100을 지운 것 | Scale을 100으로 되돌리고 3절 |
| 100배 크거나 작음 | 1 | 원본 크기나 임포트 설정 문제 | 4절 |
가장 흔한 경우는 첫째 줄입니다. 크기는 맞는데 숫자만 100입니다. 블렌더도 1 unit이 1 m이고 유니티도 1 unit이 1 m인데, 단위가 같은 두 프로그램 사이에서 왜 100이 생길까요?
2. 블렌더 FBX 기본값은 100을 오브젝트 Scale에 싣습니다
범인은 두 프로그램 사이를 오가는 FBX 파일입니다. Blender 5.0에서 2 m 큐브를 만들고 FBX 내보내기 기본값으로 저장한 뒤, 파일 안을 읽어 보면 이렇게 적혀 있습니다.
파일 단위(UnitScaleFactor) 1.0 → 센티미터
메시 버텍스 범위 2 × 2 × 2
오브젝트 Lcl Scaling 100, 100, 100
오브젝트 Lcl Rotation X -90
파일 단위가 센티미터라서 버텍스 숫자 2는 파일 안에서 2 cm입니다. 블렌더는 이걸 2 m로 맞추려고 오브젝트 스케일에 100을 곱해 둡니다. 내보내기 창의 Apply Scalings 기본값인 All Local의 설명도 같습니다. 단위 스케일을 각 오브젝트 트랜스폼에 적용하고, FBX 파일의 스케일은 1.0으로 둔다는 뜻입니다. 단위 보정 100이 모양이 아니라 오브젝트 Scale에 실리는 셈입니다.
유니티는 이 파일을 읽으면서 Model 탭의 Convert Units로 파일 단위를 유니티 단위로 바꿉니다. 센티미터 파일이니 메시는 0.01배가 되어 0.02 m가 됩니다. 파일에 적힌 오브젝트 Scale 100은 그대로 Inspector에 남습니다. 둘을 곱하면 다시 2 m입니다. 유니티 포럼의 실측 글도 유니티의 File Scale은 파일 단위값을 100으로 나눈 값이고, 오브젝트 Scale은 파일 값을 따른다고 정리합니다. 크기는 맞는데 숫자가 100인 이유가 이것입니다.

이제 Scale을 1로 지웠을 때 일도 설명됩니다. 0.01배가 된 메시만 남아 모델이 100분의 1로 줄어듭니다. Scale 100은 버그가 아니라 크기를 떠받치는 숫자입니다. 유니티에서 지우면 크기도 같이 사라집니다.

리그가 있는 모델은 한 군데가 더 걸립니다. 메시에 아마추어를 붙여 기본값으로 내보내 보면 메시와 아마추어 오브젝트 둘 다 Scale 100으로 적힙니다. 루트가 100배인 채로 애니메이션을 다루게 되니, 리그 모델일수록 내보낼 때 정리하는 편이 낫습니다. 그러면 블렌더 어디를 바꿔야 할까요?
3. 블렌더 FBX 내보내기에서 100을 파일 단위로 옮기기
고칠 곳은 유니티가 아니라 블렌더의 File > Export > FBX (.fbx) 창입니다. Apply Scalings 한 칸만 바꾸면 100이 오브젝트에서 파일 단위로 옮겨갑니다. 옵션 이름은 Blender 5.0 기준입니다.
- 오브젝트 값 정리: 오브젝트를 선택하고 Ctrl+A > Scale(또는 All Transforms)을 실행합니다. N 패널의 Scale이 1이고 Dimensions가 실제 크기, 사람이면 1.8 m 안팎인지 봅니다.
- 단위 확인: Scene Properties > Units가 Metric, Unit Scale 1.0, Length Meters인지 봅니다. 남에게 받은 .blend 파일이면 여기부터 봅니다.
- FBX 내보내기: Transform 항목에서 Scale 1.00, Apply Unit 켜짐을 그대로 두고 Apply Scalings를 All Local에서 FBX Units Scale로 바꿉니다.
- 유니티에서 덮어쓰기: Assets 폴더의 FBX 파일을 같은 이름의 새 파일로 덮어쓰면 다시 임포트됩니다. 씬에서 Scale을 직접 고쳐 둔 오브젝트는 그 값이 남을 수 있으니, Project 창에서 모델을 새로 끌어다 놓고 봅니다.
- 확인: Inspector Scale이 1이고, 기준 큐브 옆 키가 블렌더 Dimensions와 같으면 성공입니다.
같은 2 m 큐브를 FBX Units Scale로 내보내면 파일 단위가 미터(UnitScaleFactor 100)로 적히고 오브젝트 Scale 값은 사라집니다. 버텍스 숫자 2가 이제 2 m라는 뜻입니다. 유니티는 단위를 바꿀 필요가 없으니 Scale 1로 읽습니다. 아마추어를 붙인 모델도 메시와 아마추어 둘 다 Scale 값이 사라졌습니다. 단위 정보가 파일 단위 한 곳에만 남기 때문입니다.
검색해 보면 Apply Transform을 켜라는 답도 많습니다. 실제로 켜고 내보내면 100배와 축 변환이 버텍스에 직접 구워져 오브젝트 Scale과 회전값이 모두 사라집니다. 다만 블렌더는 이 옵션을 실험적이라고 표시하고, 아마추어와 애니메이션에서는 깨질 수 있다고 경고합니다. 믹사모에서 받은 캐릭터처럼 리그와 애니메이션이 있는 모델은 Apply Transform 대신 FBX Units Scale로 옮깁니다. 정적 소품이나 배경이라면 Apply Transform도 쓸 만합니다.
| 블렌더 내보내기 설정 | FBX 파일에 적힌 것 (Blender 5.0) | 유니티 Inspector |
|---|---|---|
| 기본값 (All Local) | 단위 cm, 오브젝트 Scale 100, 회전 X -90 | Scale 100, 크기는 맞음 |
| Apply Scalings: FBX Units Scale | 단위 m, Scale 값 없음, 회전 X -90 | Scale 1, 회전값은 남음 |
| Apply Transform 켬 | 버텍스에 크기·축을 구움, Scale·회전 값 없음 | Scale 1, 회전 0 (리그 모델엔 비권장) |
표에서 보듯 FBX Units Scale만으로는 회전 X -90이 남습니다. 블렌더는 Z가 위, 유니티는 Y가 위라서 생기는 축 방향 차이이고, 크기와는 따로 맞출 문제입니다. 여기까지 정리하면 답은 한 문장입니다.
Scale 100은 유니티에서 지울 숫자가 아니라, 블렌더 FBX 내보내기에서 파일 단위로 옮길 숫자입니다.
4. 유니티 Scale이 1인데도 100배 크거나 작다면
3절대로 내보냈는데도 기준 큐브 옆 크기가 틀리면, 이번에는 숫자가 아니라 원본이나 임포트 설정 문제입니다. 블렌더 Dimensions, 유니티 Model 탭 순서로 봅니다.
- 블렌더 원본 크기: N 패널 Dimensions가 180 m처럼 적혀 있다면 블렌더에서 이미 100배 큰 모델입니다. 센티미터 숫자를 미터 씬에 그대로 옮겨 오면 이렇게 됩니다. 블렌더에서 실제 크기로 줄이고 Ctrl+A로 적용합니다.
- Convert Units: Project 창에서 FBX 파일을 선택하고 Inspector의 Model 탭을 엽니다. Convert Units가 꺼져 있으면 파일 단위 변환을 건너뛰어 크기가 100배 어긋날 수 있습니다. 켜 두는 것이 기본입니다.
- Scale Factor: 같은 Model 탭의 Scale Factor는 기본 1입니다. 누가 0.01이나 100을 넣어 두었다면 1로 돌립니다. Unity 매뉴얼은 이 값을 원본 파일의 크기가 프로젝트에 맞지 않을 때 파일 전체에 거는 보정이라고 설명합니다. 원본을 다시 내보낼 수 없을 때만 씁니다.
마야 모델은 사정이 조금 다릅니다. 마야는 기본 단위가 센티미터이고, FBX 파일에도 센티미터로 적습니다. Convert Units가 켜져 있으면 유니티가 0.01배로 바꿔 Scale 1, 실제 크기로 읽습니다. 마야 모델이 100배 커졌다면 Convert Units부터 봅니다. 블렌더와 마야 사이의 단위 차이는 블렌더3D 모델을 마야로 옮길 때 100배 작아지는 이유에서 따로 다뤘습니다.
5. 크기를 맞춘 뒤 확인할 것
크기가 맞아야 물리도 예상대로 움직입니다. Unity 매뉴얼은 물리 시스템이 게임 안의 1 m를 1 unit으로 본다고 적습니다. 100분의 1 크기 캐릭터에 Rigidbody를 붙이면 떨어지는 모습과 충돌이 실제 크기 기준과 다르게 보입니다. 물리를 붙이기 전에 기준 큐브 비교를 한 번 더 합니다. 크기가 결과를 바꾸는 원리는 씬 스케일이 시뮬레이션 결과를 바꾸는 이유에 정리했습니다.
모양과 크기는 맞는데 회색 덩어리로 보인다면 FBX 텍스처와 머티리얼 연결 문제입니다. Apply Scalings를 바꿔도 재질은 돌아오지 않습니다. 크기 설정과는 따로 봐야 합니다.
결국 하나로 말하면 이것입니다. 크기 보정은 오브젝트 Scale이 아니라 FBX 파일 단위에 맡깁니다.
참고 자료
vfx 잡학지식


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