VRM은 VTuber 프로그램, 가상 회의 도구, 브라우저 기반 3D 앱이 공통으로 읽는 아바타 포맷입니다. 그런데 정작 캐릭터 모델은 대부분 FBX로 배포됩니다. 특히 Mixamo에서 리깅을 거친 파일이라면 예외가 없습니다. 두 포맷 사이를 오가려면 지금까지는 Unity에 UniVRM을 얹거나 Blender에 VRM 애드온을 설치하는 것이 보통이었습니다.
이 무료 FBX to VRM 변환기는 같은 작업을 브라우저 안에서 끝냅니다. 리깅된 FBX 파일을 선택하고, 휴머노이드 본 매핑을 확인하고, .vrm 파일을 내려받으면 됩니다. 출력은 현행 VRM 사양인 VRMC_vrm 1.0 확장을 사용하며, 내보내는 모든 파일은 다운로드가 시작되기 전에 사양 검증을 거칩니다. 다른 프로그램에 넣어 보기 전에 결과물이 유효한지 먼저 알 수 있다는 뜻입니다.
이 글은 레퍼런스로 쓰도록 구성했습니다. 앞쪽에는 본 매핑·T포즈·스케일 규칙을 항목별로 정리했고, 뒤쪽에는 증상별로 찾아보는 문제 해결 사전을 두었습니다.
FBX를 VRM으로 변환
리깅된 FBX 캐릭터를 브라우저에서 바로 VRM 1.0 아바타로 바꿉니다. 휴머노이드 본은 자동으로 찾아 연결하고, 파일은 어디로도 올라가지 않습니다 — 전부 이 기기 안에서 처리됩니다.
가장 잘 되는 조건: Mixamo 리그 FBX(바이너리 FBX 2013 이상). 결과물은
.vrm 파일이며 규격은 VRMC_vrm 1.0 확장을 따릅니다.
FBX는 대개 텍스처를 별도 이미지 파일로 참조합니다. .fbx와 함께 선택하거나 폴더 내용을 통째로 끌어다 놓으면 적용해서 .vrm에 같이 씁니다. FBX 안에 이미 박혀 있는 텍스처는 알아서 처리합니다.
모델을 연 뒤에는 4단계에 재질이 전부 나열되고, 텍스처가 비어 있는 재질에 이미지를 붙일 수 있습니다. .fbx를 다시 읽지 않고 언제든 이미지를 추가할 수 있습니다.
파란 화살표가 VRM의 정면 방향(+Z)입니다.
목차
- 변환이 실제로 하는 일
- 변환 절차 요약
- 규칙 1 — 휴머노이드 본 매핑
- 규칙 2 — T포즈
- 규칙 3 — 스케일과 정면 방향
- 텍스처와 재질
- 메타데이터와 라이선스 설정
- 이 도구가 만들지 않는 것
- 문제 해결 사전
- 처리 방식과 성능
- 자주 묻는 질문

변환이 실제로 하는 일
VRM 파일은 glTF 바이너리에 아바타를 설명하는 확장 블록을 얹은 것입니다. 어느 노드가 머리이고 어느 노드들이 팔다리인지, 누가 만들었고 다른 사람은 무엇을 해도 되는지가 그 블록에 들어갑니다. 그래서 FBX를 VRM으로 바꾸는 일은 세 가지 작업으로 나뉩니다.
- FBX의 메시·스켈레톤·재질·스킨 가중치 읽기.
- 스켈레톤의 어느 본이 각 VRM 휴머노이드 본에 해당하는지 결정하기.
VRMC_vrm확장과 올바른 메타데이터를 갖춘 glTF 바이너리 쓰기.
도구는 세 가지를 모두 처리합니다. 본 매핑은 본 이름에서 자동으로 감지되며, 감지된 모든 본이 수정 가능한 목록으로 표시되므로 잘못 짝지어진 항목은 내보내기 전에 직접 고칠 수 있습니다.
변환 절차 요약
- 리깅된 FBX 파일을 선택하거나 미리보기 영역에 끌어다 놓습니다.
- 미리보기를 확인합니다. 바닥의 파란 화살표가 +Z, 즉 VRM 아바타가 바라봐야 하는 방향입니다.
- 목표 키를 지정합니다. FBX는 보통 센티미터 단위로 만들어져 캐릭터가 백 배쯤 크게 들어오는 일이 흔합니다.
- 본 매핑을 검토합니다. 필수 본은 매핑되면 체크, 비어 있으면 엑스 표시가 붙습니다.
- 모델이 갖고 오지 못한 텍스처를 연결합니다. 재질마다 속한 메시가 함께 표시되고, 선택한 이미지는 이름으로 자동 매칭되며, 남은 것은 직접 지정합니다.
- 아바타 이름, 제작자, 라이선스 허용 범위를 입력합니다.
- “변환하고 .vrm 내려받기”를 누릅니다. 파일이 검증을 거친 뒤
.vrm으로 다운로드됩니다.
도구 아래의 변환 로그에는 감지된 리그 종류, 적용된 회전, 사용된 스케일 배율, 전체 검증 결과까지 내려진 모든 결정이 기록됩니다. 나중에 다른 프로그램에서 뭔가 이상해 보일 때, 이유는 대개 이 로그에 이미 적혀 있습니다.
규칙 1 — 휴머노이드 본 매핑
VRM은 본의 이름에는 관심이 없습니다. 어느 노드가 왼쪽 아래팔인지가 파일 안에 명시되어 있는지를 봅니다. 그래야 전혀 다른 아바타용으로 만들어진 모션 캡처 데이터, 애니메이션, 리타기팅 시스템이 내 아바타에서도 그대로 작동합니다. 이 매핑이 변환 전체에서 가장 중요한 부분입니다.
필수 본 15개와 선택 본
VRM 사양이 요구하는 필수 본은 15개입니다. 엉덩이(hips), 척추(spine), 머리(head), 양쪽의 위팔·아래팔·손, 그리고 양쪽의 허벅지·정강이·발입니다. 목, 가슴, 어깨, 발가락과 30개의 손가락 본은 선택 항목이라 리그에 존재하면 함께 내보내집니다. 필수 본 15개가 모두 채워져야 “변환하고 .vrm 내려받기” 버튼이 활성화됩니다.
Mixamo 리그 — 전자동
Mixamo는 리깅된 FBX 캐릭터의 가장 흔한 출처이고, 스켈레톤이 mixamorig:Hips, mixamorig:LeftArm, mixamorig:LeftForeArm처럼 고정된 이름 규칙을 따릅니다. 변환기는 이 규칙을 바로 인식해 손가락 관절을 포함한 52개 휴머노이드 본 전부를 수작업 없이 매핑합니다.
이 용도로 Mixamo에서 내려받을 때는 애니메이션 대신 “T-pose” 옵션을 고르고 “FBX Binary”를 선택하는 것이 좋습니다. 애니메이션이 붙은 캐릭터도 변환은 되지만 레스트 포즈가 깨끗한 T포즈가 아닐 수 있고, VRM은 T포즈를 전제로 합니다.
일반 리그 — 이름 분석기
Blender 내보내기, VRoid의 FBX 내보내기, 3ds Max Biped 스켈레톤, upperarm_l 같은 Unreal식 이름 등 다른 출처의 리그는 범용 이름 분석기가 처리합니다. 이름을 카멜케이스·밑줄·구분자 기준으로 쪼개고, 각 본이 좌우 어느 쪽에 속하는지 판별한 뒤, 모든 후보를 휴머노이드 슬롯별로 점수화해 배정합니다.
관절 이름 리그 — LeftHip이 허벅지인 경우
이름만으로는 부족할 때가 있습니다. 일부 리그는 그 아래에 매달린 팔다리가 아니라 관절 자체에 이름을 붙이기 때문입니다. 이런 스켈레톤에서는 LeftHip이 허벅지, LeftKnee가 정강이, LeftCollar가 쇄골, LeftShoulder가 위팔입니다. 마지막 것은 같은 단어가 Mixamo 리그에서 뜻하는 것과 정반대입니다. 이름이 애매하면 변환기는 뼈대 구조 자체로 돌아갑니다. 어떤 슬롯의 위아래 관절이 이미 확정되어 있다면, 그 사이에 낀 본은 빠져 있는 바로 그 본일 수밖에 없습니다. Hip이라 불리는 허벅지가 그래도 허벅지 슬롯에 정확히 들어가는 이유가 이것입니다. 그래도 확정하지 못한 본은 비워 두고, 사용자가 직접 지정하게 합니다.
자주 나오는 매핑 실수 두 가지
첫째는 위팔과 아래팔의 혼동입니다. 많은 리그가 위팔을 그냥 “Arm”이라고만 부르기 때문입니다. 둘째는 손가락 본을 손 슬롯에 넣는 실수입니다. 손가락 본은 LeftHandIndex1처럼 이름에 “Hand”가 들어가는 일이 많습니다. 이 도구의 매처는 두 경우를 모두 명시적으로 걸러냅니다.
VTuber 앱에서 아바타의 팔꿈치가 꺾여 있거나 손목이 반대로 굽는다면, 본 목록을 열어 팔 관련 네 슬롯부터 확인하는 것이 빠릅니다. 고쳐서 다시 내보내는 데는 몇 초면 충분합니다.
규칙 2 — T포즈
VRM은 아바타의 레스트 포즈를 T포즈로 정의합니다. 팔은 옆으로 곧게 뻗고, 손바닥은 아래를 향하고, 다리는 모은 자세입니다. 애플리케이션들이 이 전제에 기대기 때문에 한 아바타용으로 만든 애니메이션이 다른 아바타에서도 같은 결과를 냅니다.
그런데 FBX 캐릭터는 팔이 45도쯤 내려간 A포즈로 배포되는 경우가 많습니다. “T포즈로 강제”를 켜면 어깨에서 손까지 잇는 선이 수평이 되도록 양쪽 위팔을 회전시킨 뒤 그 상태를 레스트 포즈로 내보냅니다. 메시가 스켈레톤을 따라가므로 눈속임이 아니라 실제 T포즈가 됩니다.
팔이 이미 수평이라면 이 옵션은 아무 일도 하지 않고, 그 사실을 로그에 남깁니다.
규칙 3 — 스케일과 정면 방향
스케일 — VRM은 미터 단위
VRM은 미터 단위로 동작합니다. 전형적인 Mixamo 캐릭터는 키가 180 유닛쯤 되는데, FBX가 센티미터 기준으로 만들어졌기 때문입니다. 그대로 두면 어느 VRM 앱에서든 아바타가 백 배 가까이 커집니다. “크기 정규화”을 켠 채 현실적인 키를 지정하면 — 성인 캐릭터라면 1.6~1.8미터 — 모델이 그 크기로 조정되고 발이 바닥에 놓입니다.
정면 — +Z를 보고, 왼손은 +X 쪽
방향도 크기만큼 중요합니다. VRM 아바타는 +Z를 바라봐야 하고, 캐릭터의 왼손이 +X 쪽에 있어야 합니다. 변환기는 발목과 발가락의 위치를 비교해 캐릭터가 어느 쪽을 보고 있는지 계산합니다. 발가락은 언제나 앞을 향하기 때문입니다. 그런 다음 모델을 규칙에 맞게 회전시킵니다. 리그에 발가락 본이 없으면 자동 감지를 건너뛰므로, 미리보기의 파란 화살표를 보면서 드롭다운에서 회전을 직접 고르면 됩니다.
텍스처와 재질
FBX 안에는 텍스처가 없습니다
FBX 파일에는 텍스처가 들어 있지 않습니다. 들어 있는 것은 그 파일을 내보낸 컴퓨터에서의 경로, 대개 다른 컴퓨터에서는 아무 의미가 없는 Windows 절대 경로뿐입니다. 이미지 파일을 .fbx와 함께 선택하면 파일 이름으로 매칭되어 재질에 적용되고 .vrm 안에 기록됩니다. PNG, JPEG, WebP, BMP, GIF, TGA를 모두 받습니다. TGA는 따로 짚어둘 만합니다. Substance Painter나 3ds Max에서 구운 캐릭터 맵은 대개 .tga인데, 브라우저는 원래 이 포맷을 스스로 디코딩하지 못합니다.
아무것도 참조하지 않는 재질
더 까다로운 경우는 재질이 아무 텍스처도 참조하지 않는 파일입니다. FBX는 내보내기 시점에 재질에 실제로 연결되어 있던 텍스처만 기록하므로, Substance Painter에서 맵을 구웠지만 장면에는 연결하지 않은 캐릭터는 완전히 맨몸으로 도착하고, 이미지 파일을 아무리 선택해도 저절로 붙지 않습니다. “재질과 텍스처” 단계가 이럴 때를 위해 있습니다. 모든 재질이 자기가 속한 메시와 함께 나열되고, 베이스 컬러·노멀·러프니스·메탈릭·이미시브·불투명도 슬롯마다 선택해 둔 이미지 가운데 아무것이나 지정할 수 있습니다. 재질이나 메시와 이름에 겹치는 단어가 있는 파일은 먼저 자동으로 짝지어지는데, subs_Body_BaseColor.tga와 Body라는 재질을 짝짓는 일은 어렵지 않으니 보통은 이것으로 대부분이 해결됩니다. 남는 것만 직접 지정하면 됩니다.
이미지는 나중에 추가해도 됩니다
모델을 연 뒤에도 같은 단계에서 언제든 이미지를 추가할 수 있고, 이때 .fbx를 다시 읽지 않으므로 이미 지정해 둔 내용은 흐트러지지 않습니다. 캐릭터 맵은 몸, 옷, 머리카락처럼 여러 폴더에 흩어져 있는 것이 보통이라 한 번의 파일 대화상자로 전부 고르기가 번거로운데, 이 동작 방식이 그 수고를 덜어줍니다. 열려 있는 모델의 미리보기에 이미지를 끌어다 놓아도 같은 방식으로 추가됩니다.
내보낼 때 일어나는 두 가지 변환
glTF는 FBX와 저장 방식이 달라 내보내는 길에 두 가지 변환이 일어납니다. glTF에는 불투명도 전용 텍스처가 없으므로 불투명도 맵은 베이스 컬러의 알파 채널에 합성됩니다. 이때 머리카락 카드처럼 거의 전부 불투명하거나 투명한 마스크는 블렌드가 아니라 컷아웃으로 처리되는데, 머리카락 가닥끼리 앞뒤가 뒤엉켜 보이는 정렬 문제를 막는 것이 바로 이 처리입니다. 메탈릭과 러프니스는 포맷이 요구하는 대로 한 장의 이미지에 초록 채널과 파랑 채널로 합쳐집니다.
시작 전에 확인할 것
모델 옆 폴더에 맵이 있다는 것이 모델이 그 맵을 쓴다는 증거는 아닙니다. 3D 프로그램에서 재질에 할당된 적 없는 이미지라면 FBX에는 참조가 전혀 기록되지 않고, 파일을 몇 개 선택하든 캐릭터는 맨몸으로 도착합니다. 재질 목록이 이 상태를 그대로 보여줍니다. 채워진 슬롯이 하나도 없는 재질은 내보내기 시점에 아무것도 붙어 있지 않았다는 뜻이며, 해결은 이 도구가 아니라 원본 장면에서 해야 합니다.
메타데이터와 라이선스 설정
FBX나 GLB와 달리 VRM 파일은 라이선스 조건을 파일 안에 담습니다. 애플리케이션이 이 조건을 읽고, 사용자가 하려는 일이 허용 범위 밖이면 아바타 로딩을 거부할 수 있습니다. 이 항목들은 장식이 아니라 사양의 일부이므로 정직하게 채우는 것이 맞습니다.
- 사용 허가 범위 — 제작자 본인만, 명시적으로 허가받은 사람, 또는 모두.
- 상업적 이용 — 개인 비영리, 개인 영리, 기업 이용.
- 수정 — 타인의 모델 수정 허용 여부, 수정본 재배포 허용 여부.
- 크레딧 표기 — 아바타 사용 시 제작자 표기 의무 여부.
- 콘텐츠 플래그 — 폭력적, 성적, 정치·종교적, 반사회적 사용.
직접 만들지 않은 모델을 변환한다면 원래 라이선스가 그대로 적용됩니다. 파일 포맷을 바꾼다고 없던 권리가 생기지는 않으며, 메타데이터에는 실제로 부여받은 조건을 적어야 합니다.
이 도구가 만들지 않는 것
이 변환기는 지오메트리, 재질, 스키닝, 완전한 휴머노이드 정의를 갖춘 구조적으로 유효한 VRM 1.0 아바타를 만듭니다. 다만 몇 가지 VRM 기능은 FBX에서 끌어낼 수 없습니다. 그 정보가 애초에 파일에 없기 때문입니다.
- 표정(블렌드셰이프) — 빈 세트로 내보내집니다. FBX의 블렌드셰이프 이름은 VRM 표정 프리셋에 안정적으로 대응되지 않아, 립싱크와 표정은 이후에 따로 만들어야 합니다.
- 스프링본 — 머리카락과 옷에 쓰이는 물리는 생성되지 않습니다. FBX에는 대응하는 데이터가 없습니다.
- MToon 재질 — 적용되지 않습니다. 재질은 모든 VRM 앱이 렌더링할 수 있는 표준 glTF PBR로 변환되며, MToon 특유의 평면적인 애니메이션풍 셰이딩은 별도로 설정해야 합니다.
- 시선(look-at) — 눈 범위를 세밀하게 조정한 값이 아니라 기본 본 기반 값으로 설정됩니다.
- VRM 0.x — 생성되지 않습니다. 출력은 VRM 1.0이며, 현행 소프트웨어 대부분이 읽지만 일부 오래된 도구는 아직 0.x를 요구합니다.
정리하면, 이 도구의 몫은 올바르게 리깅되어 실제로 동작하는 아바타까지입니다. 표정까지 갖춘 VTuber 모델로 다듬는 일은 여전히 UniVRM이나 Blender VRM 애드온의 영역이지만, 변환 문제와 씨름하는 대신 유효한 파일에서 출발할 수 있습니다.

문제 해결 사전
증상에서 바로 찾아보도록 정리했습니다. 대부분의 답은 도구 아래 변환 로그에도 기록되어 있습니다.
“변환하고 .vrm 내려받기” 버튼이 계속 비활성화되어 있습니다
필수 본 가운데 하나 이상이 비어 있다는 뜻입니다. 상태 표시줄이 어느 본이 빠졌는지 정확히 나열하니, 본 목록에서 직접 지정하면 됩니다.
미리보기에 아무것도 나오지 않습니다
FBX에 메시가 없거나 스켈레톤만 들어 있을 수 있습니다. 파싱이 끝나면 로그에 메시 수와 본 수가 보고됩니다.
파일이 아예 열리지 않습니다
FBX에는 바이너리와 ASCII 두 종류가 있는데, ASCII 쪽은 텍스처 링크를 로더가 항상 해석할 수는 없는 형태로 저장합니다. 바이너리로 다시 내보내면 됩니다. 3ds Max나 Maya라면 Export → FBX → Advanced Options → FBX File Format → Type: Binary 순서이고, 다른 설정은 그대로 두면 됩니다. 어느 종류를 읽었는지는 로그에 표시됩니다.
아바타가 뒤를 보고 있습니다
정면 자동 감지에는 발가락 본이 필요합니다. 없다면 “180° 회전”를 직접 선택하고, 파란 화살표와 방향이 맞는지 확인하면 됩니다.
캐릭터가 녹아내렸습니다 — 팔다리가 몸을 가로지르고 팔이 얼굴에 접혀 있습니다
일부 내보내기는 스켈레톤을 납작하게 만들어 버립니다. 모든 본이 부모 위치에 정확히 겹쳐 앉고, 스키닝이 메시 전체를 원점 쪽으로 끌어당기는 상태입니다. 다행히 레스트 포즈가 사라진 것은 아닙니다. 스킨의 바인드 행렬이 여전히 그 포즈를 담고 있기 때문입니다. 변환기는 이 상태를 감지해 바인드 행렬로부터 스켈레톤을 다시 세우고, 몇 개의 본을 복원했는지 로그에 적습니다. 이 줄이 보인다면 파일 자체에는 문제가 없고, 원인이 된 내보내기 설정이 문제일 뿐입니다. 다음부터는 스켈레톤을 바인드 포즈 상태로 내보내면 겪지 않습니다.
.vrm 파일이 지나치게 큽니다
텍스처는 무압축으로 기록되므로 4K 맵이 열몇 장이면 캐릭터가 100 MB를 넘고, VTuber 소프트웨어에서 로딩이 느려지거나 아예 거부될 수 있습니다. “재질과 텍스처” 아래의 텍스처 크기 제한이 기록되는 이미지를 축소합니다. 2048픽셀이 무난한 기본값이고, 보통 거리에서 보는 캐릭터라면 1024픽셀도 대개 구분되지 않습니다.
모델에 텍스처가 없습니다
FBX는 대개 텍스처를 별도 이미지 파일로 가리키고, 그 경로는 내보낸 컴퓨터의 절대 경로라 내 컴퓨터에서는 의미가 없습니다. 위의 텍스처와 재질 섹션대로 이미지 파일을 .fbx와 함께 선택하면 이름으로 매칭됩니다. 어떤 참조가 매칭되었고 무엇이 아직 비어 있는지는 로그가 알려줍니다. 바이너리 FBX 안에 이미 내장된 텍스처는 추가 파일이 필요 없습니다.
FBX가 참조는 하지만 어떤 파일로도 채울 수 없는 것 — 내보내기가 허공에 남긴 텍스처 슬롯 — 은 변환을 멈추게 두지 않고 버려지며, 로그에 하나씩 이름이 기록됩니다.
재질이 애초에 아무것도 참조하지 않는 경우는 별개의 문제이고, 실제 캐릭터 내보내기의 다수가 부딪히는 쪽도 이쪽입니다. 위의 텍스처와 재질 섹션이 그 경우를 다룹니다.
파싱 자체가 실패합니다
아주 오래된 ASCII FBX나 FBX 6.x는 지원되지 않습니다. FBX Binary 2013 이상으로 다시 내보내면 됩니다.
처리 방식과 성능
선택한 FBX 파일은 서버로 올라가지 않습니다. 브라우저의 파일 API로 읽혀 메모리에서 파싱된 뒤 다운로드 파일로 다시 쓰일 뿐이고, 변환 대기열이나 모델 사본이 어딘가에 남지도 않습니다.
같은 이유로 변환 속도는 사용자 기기의 성능에 달려 있습니다. 아주 큰 FBX는 파싱에 시간이 걸리고, 휴대폰에서는 메모리가 바닥날 수도 있습니다. 대략 50 MB를 넘는 캐릭터라면 데스크톱 브라우저를 권합니다.
자주 묻는 질문
이 FBX to VRM 변환기는 무료인가요?
예. 가입도 워터마크도 없고, 브라우저가 감당할 수 있는 한 파일 크기 제한도 없습니다.
Mixamo 캐릭터도 변환되나요?
예. Mixamo 리그는 자동으로 인식되고, 손가락을 포함한 52개 휴머노이드 본이 수작업 없이 매핑됩니다.
어떤 VRM 버전으로 출력되나요?
VRMC_vrm 확장을 사용하는 VRM 1.0입니다. VRM 0.x는 생성되지 않습니다.
변환한 아바타가 VTuber 소프트웨어에서 작동하나요?
휴머노이드 리그, 메시, 재질은 작동합니다. 표정, 립싱크, 머리카락 물리는 FBX에서 넘어오지 않으므로 이후에 추가해야 합니다.
A포즈 캐릭터도 변환할 수 있나요?
예. “T포즈로 강제” 옵션을 켜면 어깨에서 손까지가 수평이 되도록 위팔을 회전시켜 T포즈 레스트 포즈로 내보냅니다.
VRM을 다시 FBX로 되돌릴 수 있나요?
이 도구로는 안 됩니다. 변환은 FBX에서 VRM으로 한 방향만 지원합니다.
함께 쓰는 브라우저 도구
- 무료 로컬 3D 모델 뷰어 — 변환 전에 FBX를 점검하고, 완성된 VRM을 열어 확인할 수 있습니다.
- 웹캠만으로 3D 아바타 움직이기 — 방금 만든 VRM을 불러와 얼굴·몸 트래킹으로 움직일 수 있습니다.
- 브라우저에서 도는 AI 만들기 — 설치 없는 브라우저 도구들이 어떻게 만들어지는지 다룹니다.