후디니 FBX 내보내기 크기가 100배 다를 때: 단위 변환표
후디니에서 1m로 만든 모델을 FBX로 내보냈는데, 다른 프로그램에서는 1cm로 보이거나 반대로 100m까지 커질 수 있습니다. 후디니 단위를 1 unit = 1m로 생각하고 작업했는데 왜 크기가 100배씩 달라질까요? 원인은 모델의 좌표뿐 아니라 FBX에 기록된 단위 정보와 받는 프로그램의 변환 설정이 서로 영향을 주기 때문입니다.
같은 FBX라도 가져오는 프로그램이 단위 정보를 어떻게 해석하느냐에 따라 최종 크기가 달라집니다. 여기에 별도의 Scale을 적용하면 이미 처리된 단위 변환이 다시 적용될 수 있습니다.
Houdini 19.5.435에서 1m 박스를 FBX로 내보낸 실측 결과를 먼저 확인합니다. 이후 Blender, Maya, Unreal Engine, Unity의 단위 처리 방식을 구분하고, 100배 보정을 어디에 적용해야 하는지 살펴봅니다.
1. 후디니 단위는 1m 기준 박스로 먼저 확인합니다
Houdini 19.5의 기본 단위 관례는 1 unit = 1m입니다. 모델의 크기가 1 unit라면 작업상 1m 길이로 취급하는 방식입니다.
반면 Maya와 Unreal Engine은 기본 길이 단위가 cm입니다. Unity는 게임 월드에서 1 unit를 1m로 사용하는 것을 기대합니다.
따라서 Houdini에서 만든 1 unit 길이를 다른 프로그램에 그대로 숫자 1로 전달한다고 해서 언제나 1m가 되는 것은 아닙니다.
예를 들어 1m는 100cm입니다. Houdini의 길이 1을 cm 기준 프로그램에서 아무 변환 없이 1cm로 해석한다면 실제 크기는 의도한 값의 1/100이 됩니다.
반대로 이미 1m로 올바르게 변환된 모델에 다시 Scale 100을 적용하면 100m가 됩니다.
이 차이를 확인할 때는 복잡한 모델보다 기준 박스를 사용하는 편이 명확합니다.
기준 모델을 만드는 방법은 다음과 같습니다.
Houdini의 Geometry 네트워크에서 Box SOP를 만들고 Size를 (1, 1, 1)로 설정하세요. 중심은 (0, 0, 0)으로 두세요.
Houdini 19.5의 기본 단위 관례에 따르면 이 박스는 각 변의 길이가 1m인 모델입니다. 중심이 원점이므로 각 축의 좌표 범위는 -0.5부터 +0.5까지입니다.
이 박스를 FBX로 내보낸 뒤 받는 프로그램에서 실제 바운딩 박스를 측정하면 단위 변환이 적용된 결과를 확인할 수 있습니다.
여기서 바운딩 박스는 모델을 감싸는 상자의 크기를 뜻합니다. 화면에서 커 보이는지보다 각 축의 길이가 얼마인지 확인하는 데 적합합니다.
또한 Houdini의 Unit Length와 FBX 출력 설정을 구분해야 합니다.
Houdini 19.5에서는 Edit > Preferences > Hip File Options에서 단위 관련 설정을 확인합니다. Houdini 22 문서에서는 경로가 Edit > Preferences > General > Units로 안내됩니다.
Unit Length는 Houdini 씬의 길이 단위를 확인하는 설정입니다. Houdini 22에서 ROP FBX Output의 Convert Units는 FBX 탭에 있으며, Houdini 씬 단위를 FBX의 기본 단위인 cm로 변환합니다.
따라서 단위 문제가 발생했다고 두 설정을 동시에 바꾸지 마세요. 먼저 씬에서 1 unit가 어떤 길이를 의미하는지 확인하고, 그다음 FBX 출력 변환을 확인하세요.
2. ROP FBX Output의 Convert Units는 실측에서 100배 차이를 만들었습니다
Houdini 19.5 공식 문서에 따르면 ROP FBX Output의 Convert Units는 Houdini 씬 단위를 FBX의 cm 단위로 변환하는 옵션입니다.
이 설정의 영향을 확인하기 위해 Houdini 19.5.435에서 동일한 박스를 두 번 내보냈습니다.
실험에는 Windows 환경의 hython을 사용했습니다. Box SOP의 Size는 (1, 1, 1), 중심은 (0, 0, 0)으로 고정했습니다.
ROP FBX Output의 Convert Units만 Off와 On으로 바꾸고 각각 ASCII FBX 파일을 생성했습니다.
두 파일은 Blender 5.0.0에서 새 FBX importer인 bpy.ops.wm.fbx_import로 가져왔습니다. Import의 global_scale은 1.0, Blender Scene Unit Scale도 1.0으로 유지했습니다.
이후 가져온 모델의 월드 좌표 기준 바운딩 박스를 계산했습니다.
| 실험 항목 | Convert Units Off | Convert Units On |
|---|---|---|
| Houdini 버전 | 19.5.435 | 19.5.435 |
| Box SOP Size | (1, 1, 1) | (1, 1, 1) |
| FBX 형식 | ASCII FBX | ASCII FBX |
| Blender 버전 | 5.0.0 | 5.0.0 |
| FBX importer | bpy.ops.wm.fbx_import | bpy.ops.wm.fbx_import |
| global_scale | 1.0 | 1.0 |
| Scene Unit Scale | 1.0 | 1.0 |
| FBX raw 정점 좌표 | -0.5 ~ +0.5 | -0.5 ~ +0.5 |
| OriginalUnitScaleFactor | 1 | 100 |
| Blender 월드 바운딩 박스 | 0.01m × 0.01m × 0.01m | 1.0m × 1.0m × 1.0m |
| 원래 1m 대비 최종 크기 | 1/100 | 1배 |
이 실험에서는 Convert Units를 켰을 때 의도한 1m 크기가 유지됐습니다. 반대로 Off로 출력한 파일은 Blender에서 0.01m 크기로 가져와졌습니다.
두 결과의 길이 차이는 정확히 100배입니다.
다만 이 결과는 Houdini 19.5.435에서 만든 ASCII FBX를 Blender 5.0.0의 새 importer로 가져온 경우에 한정됩니다.
Blender의 레거시 FBX importer는 해당 ASCII FBX 파일을 거부하는 오류가 발생했으므로, 같은 조건의 크기 측정 결과가 없습니다.
따라서 모든 Blender 버전이나 다른 FBX importer에서 반드시 같은 크기가 나온다고 단정할 수는 없습니다.

3. FBX 단위 metadata와 정점 좌표는 별도로 확인해야 합니다
실측에서 가장 주목할 부분은 FBX 파일 안의 정점 좌표입니다.
Convert Units Off와 On으로 만든 파일은 raw 정점 좌표가 모두 -0.5에서 +0.5까지였습니다.
정점 좌표의 숫자만 비교하면 두 파일이 같은 크기로 보입니다. 하지만 Blender에서 가져온 결과는 100배 달랐습니다.
차이는 FBX에 기록된 단위 metadata에서도 확인됐습니다.
Off 파일의 OriginalUnitScaleFactor는 1이었고, On 파일은 100이었습니다.
이 실험은 FBX의 geometry 좌표 숫자만으로 최종 크기를 판단하면 안 된다는 점을 보여 줍니다. 가져오는 프로그램이 파일의 단위 정보를 해석하고 변환하는 과정까지 확인해야 합니다.
여기서 중요한 구분이 있습니다.
단위 변환은 좌표 숫자와 그 숫자가 의미하는 실제 길이를 연결하는 작업입니다. 반면 추가 Scale은 단위 해석 후에도 모델 전체에 별도의 크기 배율을 적용할 수 있습니다.
예를 들어 어떤 가져오기 과정에서 길이 1이 이미 1m로 해석됐다면, 이후 Scale 100을 추가하는 것은 단위를 맞추는 작업이 아니라 모델을 100배 키우는 작업이 됩니다.
반대로 가져온 모델이 실제로 0.01m라면, 길이를 100배 늘렸을 때 1m가 됩니다. 두 경우에 똑같이 100이라는 숫자를 사용하더라도 결과는 다릅니다.
따라서 크기가 맞지 않을 때는 FBX 파일의 단위 metadata, importer의 자동 단위 변환 여부, 별도 Scale 적용 여부를 구분해서 확인하세요.
그리고 출력 설정을 변경한 파일은 다시 가져와서 바운딩 박스를 측정하세요. metadata 숫자가 원하는 값으로 보인다는 이유만으로 최종 크기가 맞았다고 판단하지 마세요.
4. Blender·Maya·Unreal·Unity의 단위 변환을 구분합니다
받는 프로그램마다 FBX 단위를 처리하는 방식이 다릅니다. 아래 내용은 각 프로그램의 공식 문서에 설명된 동작입니다. 앞에서 제시한 Houdini와 Blender 간 실측 결과와는 구분해야 합니다.
기준은 Houdini의 1m 박스입니다. 아래 표는 ROP FBX Output의 Convert Units와 수신 프로그램의 단위 metadata 변환을 각각 한 번 적용하는 조합을 비교합니다. Import Scale은 추가로 1.0이라고 가정합니다.
| 받는 프로그램 | Houdini Convert Units 켬 | Houdini Convert Units 끔 | 수신 쪽에서 볼 설정 | 근거 |
|---|---|---|---|---|
| Maya, cm | 100cm 예상 | 1cm 예상 | FBX Import Units의 Automatic을 확인하고 추가 Scale을 중복 적용하지 않습니다. | 공식 문서 기준 계산. Maya 실측 아님. |
| Blender, m | 1m | 0.01m | Blender 5.0 새 FBX importer의 Global Scale은 1.0으로 둡니다. | Houdini 19.5.435 → Blender 5.0.0 실측. |
| Unreal Engine, cm | 100cm 예상 | 1cm 예상 | Convert Scene Unit과 Import Uniform Scale은 별도입니다. 둘 중 한 경로만으로 목표 100cm를 맞춥니다. | 공식 문서와 단위 계산 기준. Unreal 실측 아님. |
| Unity, m | 1 Unity unit 예상 | 0.01 Unity unit 예상 | Model Importer의 Convert Units를 확인하고, Scale Factor는 필요한 추가 보정에만 씁니다. | 공식 문서와 단위 계산 기준. Unity 실측 아님. |
표의 Maya·Unreal·Unity 값은 FBX 단위 metadata를 수신 프로그램이 변환한다고 가정한 예상값입니다. 세 프로그램에서 FBX를 직접 가져와 확인한 결과가 아닙니다. Unreal Engine용 SideFX 안내는 Import Uniform Scale 100도 권장합니다. UE의 Convert Scene Unit이 이미 단위 변환을 처리한 경우에는 그 100을 더 곱하지 마세요. 목표 치수는 1m 박스가 100cm 또는 1 Unity unit인지 실제로 측정해 확인하세요.
Maya는 기본 Working Units가 cm입니다.
Autodesk FBX Importer의 Automatic Units는 파일의 단위를 호스트 애플리케이션의 단위로 변환하는 기능입니다.
파일 단위와 호스트 단위가 같으면 Scale Factor는 1입니다.
따라서 Maya로 가져올 때는 파일에 기록된 단위와 Maya의 Working Units를 먼저 비교하세요. Automatic Units가 이미 필요한 변환을 처리했다면 추가 100배 보정은 필요하지 않습니다.
다만 이번 실험에서는 Maya로 FBX를 직접 가져와 측정하지 않았습니다. 특정 파일이 Maya에서 몇 cm로 표시될지는 실제 가져오기 결과로 확인해야 합니다.
Blender는 Scene Unit Scale과 FBX 가져오기 배율을 구분해야 합니다.
Scene Unit Scale은 Blender 내부 단위 값과 UI에서 표시하는 값 사이의 변환에 관여합니다. Scene Unit Scale만 변경한다고 물리 시뮬레이션 자체가 변하는 것은 아닙니다.
따라서 크기 문제가 발생했을 때 Scene Unit Scale을 먼저 변경하는 대신, 가져온 모델의 실제 월드 바운딩 박스를 측정하세요.
Blender에서 FBX를 내보내는 경우에는 별도의 설정이 있습니다. Blender FBX exporter의 Apply Unit은 Blender의 단위 설정을 반영하며, Apply Scalings는 custom scale과 unit scale을 FBX에 어떻게 표현할지 정합니다.
Apply Scalings에는 All Local, FBX Units Scale, FBX Custom Scale, FBX All 방식이 있습니다.
이 설정들은 Blender가 FBX를 보내는 단계의 옵션입니다. Houdini에서 만든 FBX를 Blender로 가져오는 문제와 혼동하지 마세요.
어떤 Apply Scalings 방식이 항상 정답이라고 볼 수도 없습니다. 보내는 파일의 단위 정보와 받는 프로그램의 변환 방식을 함께 확인해야 합니다.
Unreal Engine의 기본 길이 단위는 cm입니다.
Unreal Engine의 FBX Import에는 Convert Scene Unit과 Import Uniform Scale이 있습니다.
Convert Scene Unit은 파일의 단위를 Unreal Engine의 cm 단위로 변환하는 옵션입니다. Import Uniform Scale은 가져오는 모델에 별도의 균등 배율을 적용하는 옵션입니다.
SideFX의 Houdini와 Unreal Engine 연동 안내에서는 Houdini 1 unit = 1m, Unreal Engine 1 unit = 1cm의 차이를 맞추기 위해 Import Uniform Scale 100을 안내합니다.
하지만 이 값은 필요한 100배 변환이 아직 적용되지 않은 경우의 보정으로 이해해야 합니다.
파일의 단위 변환이 이미 적용돼 의도한 크기로 들어왔다면 Import Uniform Scale에 다시 100을 넣지 마세요.
특히 Convert Scene Unit과 Import Uniform Scale은 서로 다른 단계입니다. 둘 중 어느 설정이 실제로 필요한지는 가져온 모델의 크기로 판정해야 합니다.
이번 실험에서는 동일한 FBX를 Unreal Engine으로 직접 가져와 측정하지 않았습니다. 위 설명은 Epic Games와 SideFX 공식 문서에 근거하며, 특정 설정 조합의 최종 크기를 실측값으로 제시하는 것은 아닙니다.
Unity는 월드에서 1 unit를 1m로 사용하는 것을 기대합니다.
Unity의 Model Import Settings에는 Convert Units와 Scale Factor가 있습니다.
Convert Units는 FBX 파일의 모델 단위 스케일을 Unity 단위로 변환합니다. Scale Factor는 모델 전체에 전역 배율을 적용합니다.
따라서 Convert Units가 의도한 크기를 이미 만들었다면 Scale Factor에서 같은 보정을 반복하지 않아야 합니다.
Unity 역시 이번 실험에서 직접 가져오기 크기를 측정하지 않았습니다. Houdini의 특정 FBX가 Unity에서 어떤 배율로 나타날지는 실제 Import 결과로 확인해야 합니다.
5. 크기 100배 차이는 단위 변환표로 계산합니다
후디니 단위와 다른 프로그램의 단위를 비교할 때는 먼저 길이 자체를 같은 단위로 환산해야 합니다.
아래 표는 단위 사이의 수학적 관계입니다. 특정 FBX importer의 동작을 나타내는 실측표가 아닙니다.
| 기준 길이 | m 기준 | cm 기준 | 판단 |
|---|---|---|---|
| 1cm | 0.01m | 1cm | 1m의 1/100 |
| 10cm | 0.1m | 10cm | 1m의 1/10 |
| 1m | 1m | 100cm | 기준 크기 |
| 10m | 10m | 1,000cm | 1m의 10배 |
| 100m | 100m | 10,000cm | 1m의 100배 |
1m와 100cm는 같은 길이입니다. 숫자가 100배 다르더라도 사용하는 단위까지 함께 바뀌었다면 모델의 실제 크기는 변하지 않은 것입니다.
반면 1m와 100m는 실제 길이가 100배 다릅니다.
이 차이가 FBX 문제를 해결하는 핵심입니다.
단위의 숫자를 100배 바꾸는 것과 모델의 실제 길이를 100배 키우는 것은 다릅니다.
앞에서 측정한 Houdini와 Blender 결과를 기준으로 추가 Scale을 적용한다고 가정하면 다음과 같이 계산할 수 있습니다.
| 기준 크기 | 추가 길이 배율 | 계산상 최종 크기 | 의미 |
|---|---|---|---|
| 0.01m | ×100 | 1m | 작게 들어온 결과를 보정 |
| 1m | ×1 | 1m | 정상 크기 유지 |
| 1m | ×100 | 100m | 이미 맞는 크기를 과도하게 확대 |
| 100m | ×0.01 | 1m | 과도하게 확대된 결과를 축소 |
이 표의 추가 배율 계산은 수학적 예상입니다. 네 가지 조합을 모두 FBX importer에서 직접 측정한 결과는 아닙니다.
중요한 것은 Scale 100 자체가 옳거나 틀린 값이 아니라는 점입니다.
원래 1m인 모델이 현재 0.01m로 들어왔다면 100배 보정이 필요할 수 있습니다. 그러나 이미 1m로 들어온 모델이라면 같은 보정이 오류를 만듭니다.
추가로 100배 보정을 적용하기 전에 현재 실제 크기와 목표 크기의 비율을 계산하세요.
필요한 길이 배율은 목표 길이를 현재 길이로 나눈 값입니다.
현재 길이가 0.01m이고 목표가 1m라면 1 ÷ 0.01 = 100입니다. 현재 길이가 100m이고 목표가 1m라면 1 ÷ 100 = 0.01입니다.
이 계산은 현재 크기와 목표 크기를 같은 길이 단위로 표현했을 때 적용할 수 있습니다.
따라서 숫자 100을 외워서 모든 FBX에 적용하기보다 실제 바운딩 박스를 기준으로 배율을 결정하는 편이 안전합니다.
6. 설정 조합을 확인하고 실제 바운딩 박스로 최종 판정합니다
이제 보내는 쪽과 받는 쪽의 설정을 조합해 예상 크기를 확인할 수 있습니다.
아래 도구에서는 Houdini 기준 단위, ROP FBX Output의 Convert Units 여부, 받는 프로그램의 단위 변환 여부와 추가 Scale을 선택하는 방식으로 예상 배율을 비교합니다.
실측으로 검증된 Blender 조합과 공식 문서에 근거한 다른 프로그램의 예상 동작은 구분해서 판단해야 합니다.
FBX 단위 변환표 체험
보내는 프로그램과 받는 프로그램의 단위 설정을 고르면 예상 크기와 필요한 추가 배율을 계산합니다. 1m 기준 모델부터 확인하세요.
계산은 선택한 단위 metadata와 Scale 값만 반영합니다. Blender의 Apply Scalings는 스케일을 FBX 안 어디에 기록할지 정하며, 바운딩 박스로 최종 크기를 확인하세요. 마지막에는 받는 프로그램에서 바운딩 박스를 재세요.
도구에서 예상 크기를 계산했더라도 마지막에는 실제 가져오기 결과를 확인해야 합니다. FBX importer가 metadata를 처리하는 방식에 따라 단순한 좌표 배율 계산과 최종 결과가 달라질 수 있기 때문입니다.
문제가 발생하면 다음 순서로 원인을 좁혀야 합니다.
첫째, Houdini에서 Box SOP Size를 (1, 1, 1)로 설정하고 기준 박스의 크기를 확인하세요. 복잡한 모델을 사용하면 원본 크기와 단위 변환 문제를 구분하기 어렵습니다.
둘째, Houdini Unit Length를 확인하세요. 작업 중인 씬에서 1 unit를 어떤 길이로 취급하는지 먼저 정리하세요.
셋째, ROP FBX Output의 Convert Units 설정을 확인하세요. Houdini 19.5와 Houdini 22의 일반 Filmbox FBX ROP 문서에서는 이 옵션의 이름과 설명이 유지됩니다.
단, KineFX의 ROP FBX Character Output은 구분해야 합니다. Houdini 19.5에서 설명되는 Convert Units 체크박스 대신 Houdini 22 문서에서는 Output Unit의 Centimeters/Meters 선택과 Convert to Specified Unit System을 설명합니다.
일반 FBX 출력 설정과 캐릭터 출력 설정의 메뉴가 같다고 가정하지 마세요.
넷째, 내보낸 FBX의 단위 metadata를 확인하세요. OriginalUnitScaleFactor 같은 값과 raw 정점 좌표를 구분해서 확인해야 합니다.
다섯째, 받는 프로그램의 자동 단위 변환을 확인하세요. Maya의 Automatic Units, Unreal Engine의 Convert Scene Unit, Unity의 Convert Units는 단위 해석과 연결되는 설정입니다.
여섯째, 별도의 Scale이 적용됐는지 확인하세요. Unreal Engine의 Import Uniform Scale이나 Unity의 Scale Factor처럼 단위 변환과 별도로 동작하는 배율을 점검해야 합니다.
마지막으로 가져온 모델의 실제 바운딩 박스를 확인하세요. 기준 박스가 의도한 1m로 들어왔다면 추가 100배 보정은 하지 마세요.
이때 단위 변환과 축 방향 변환도 분리해서 판단해야 합니다.
좌표축의 방향이나 모델의 회전 상태가 달라지는 문제는 m와 cm 사이의 길이 단위 변환과 같은 문제가 아닙니다.
예를 들어 모델이 눕거나 축 방향이 바뀌었다는 이유만으로 Scale 100을 적용해서는 안 됩니다. 방향을 맞추는 작업과 크기를 맞추는 작업을 별도로 확인하세요.
회전된 모델은 월드 축에 정렬된 바운딩 박스의 각 축 길이가 원래 치수와 다르게 나타날 수도 있습니다. 따라서 기준 박스의 방향과 측정 기준을 일정하게 유지하고 비교하세요.
씬 전체의 길이 단위가 시뮬레이션 작업에 어떤 의미를 갖는지는 별도의 문제입니다. 시뮬레이션과 씬 스케일의 관계가 필요하다면 후디니 씬 스케일과 시뮬레이션 단위를 함께 확인하세요.
FBX를 주고받는 과정에서는 한 프로그램의 기본 단위만 외우는 것으로 충분하지 않습니다. 보내는 단계의 단위 변환, FBX metadata, 받는 단계의 자동 변환, 추가 Scale을 순서대로 확인해야 합니다.
특히 Houdini에서 1m로 만든 박스가 Blender 실측에서 Convert Units Off일 때 0.01m, On일 때 1m로 나타났다는 사실은 출력 설정과 가져오기 결과를 함께 비교해야 하는 이유를 보여 줍니다.
한 줄 정리: 후디니 FBX가 100배 크거나 작다면 1m 기준 박스로 출력 단위와 FBX metadata, 수신 측 자동 변환을 확인하고, 부족한 배율만 한 번 보정하세요.
참고 자료
vfx 잡학지식

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