내려받은 3D 파일이 뷰어에서 열리지 않을 때, 열리긴 했는데 새까맣게 나올 때, 분명 애니메이션이 들어 있다는데 재생 컨트롤이 아예 보이지 않을 때가 있습니다. 이런 증상의 원인은 생각보다 몇 가지로 정해져 있고, 대부분 브라우저 안에서 바로 확인할 수 있습니다. 이 글은 아래에 있는 로컬 3D 모델 뷰어를 기준으로, 증상에서 출발해 원인을 좁히고 해결하는 순서를 정리한 진단 가이드입니다.
이 뷰어는 GLB, GLTF, FBX, OBJ, STL, PLY 여섯 가지 포맷을 열 수 있고, 애니메이션 데이터가 든 파일이면 클립 재생과 배속 조절까지 지원합니다. 프로젝트에 넣기 전에 다운로드한 에셋을 점검하거나 캐릭터 모델, 모션 파일, 제품 모델, 3D 프린팅 파일, 스캔 데이터, 간단한 웹 3D 에셋을 빠르게 확인하는 용도에 맞습니다.
애니메이션까지 재생되는 무료 로컬 3D 모델 뷰어
3D 모델을 브라우저에서 바로 엽니다. 회전·확대·이동으로 살펴보고 애니메이션이 들어 있으면 재생까지 확인할 수 있습니다. 파일은 서버로 올라가지 않고 브라우저 안에서만 처리됩니다.
사용 방법
- 회전: 마우스 왼쪽 버튼 드래그
- 확대·축소: 마우스 휠
- 이동: 마우스 오른쪽 버튼 드래그
- 애니메이션: 재생할 클립을 고르고 Play를 누릅니다
권장 파일 형식
브라우저 미리보기와 애니메이션 재생이 가장 안정적인 형식은 GLB와 GLTF입니다. FBX 애니메이션도 지원하지만, 내보내기 설정·스켈레톤 구조·애니메이션 데이터에 따라 일부 FBX는 제대로 재생되지 않을 수 있습니다.
진단의 출발점: 뷰어가 파서를 고르는 방식
뷰어는 파일 내용을 열어 보고 포맷을 추측하지 않습니다. 확장자만 보고 파서를 결정합니다. .glb와 .gltf는 GLTFLoader, .fbx는 FBXLoader, .obj는 OBJLoader, .stl은 STLLoader, .ply는 PLYLoader가 맡습니다. 확장자는 마지막 점 뒤의 글자를 소문자로 바꿔 읽으므로 Model.GLB처럼 대문자로 저장된 파일도 정상적으로 열립니다.
웹 미리보기에 가장 안정적인 포맷은 GLB와 GLTF입니다. 웹 3D 콘텐츠에 널리 쓰이는 포맷이라 재질, 텍스처, 애니메이션이 대체로 문제없이 표시됩니다. 특히 GLB는 모델, 재질, 텍스처, 애니메이션 데이터를 한 파일에 담기 때문에 빠뜨릴 부속 파일 자체가 없습니다. FBX도 빠른 확인용으로는 충분하지만, 내보내기 방식에 따라 동작이 달라져서 재질이나 텍스처, 애니메이션 데이터를 잃은 채 열리는 경우가 있습니다.
증상 1. 파일이 아예 열리지 않는다
가장 흔한 원인은 확장자입니다. 확장자 없이 저장된 파일은 무언가 그려지기 전에, 파서에 도달하기도 전에 지원하지 않는 포맷으로 거절됩니다. 확장자만 바꿔 파일 이름을 고치는 것도 해결책이 아닙니다. 파서를 고르는 근거가 파일 이름뿐이기 때문입니다.
두 번째 원인은 여러 파일로 쪼개진 내보내기입니다. 외부 .bin 버퍼를 가리키는 .gltf, .mtl을 기대하는 .obj, 텍스처가 같은 폴더에 놓인 캐릭터처럼 상대 경로로 다른 파일을 참조하는 모델은 선택한 파일 하나만 읽으면 참조가 전부 끊깁니다. 이 뷰어에서는 부속 파일을 모델과 함께 선택하면 파일 이름으로 짝을 맞춰 로더에 넘기므로, 여러 파일로 내보낸 결과물도 온전하게 열립니다. 물론 모든 것을 한 파일에 담은 GLB가 가장 손이 덜 갑니다.
로드에 실패하면 화면의 정보 상자에 로더가 내놓은 에러 메시지가 그대로 출력됩니다. 빈 캔버스만 보고 추측하는 것보다 이 메시지가 대개 더 구체적이니, 안 열리면 먼저 여기를 확인하세요.
증상 2. 모델이 검게 보인다
“Background” 버튼이 진단 도구가 됩니다. 이 버튼은 장면 색을 밝은 회색과 거의 검은색 사이에서 바꿀 뿐, 조명은 건드리지 않습니다. 조명은 고정되어 있습니다. 흰색 ambient 라이트 하나와 서로 반대편에서 비추는 directional 라이트 두 개가 파일을 열기 전에 이미 장면에 들어가 있습니다.
그래서 두 배경 모두에서 모델이 검게 나온다면 조명이 어둡거나 빠진 것이 아니라 모델 쪽 문제입니다. 전형적인 원인은 뒤집힌 normals이거나 로더가 해석하지 못한 재질입니다. 저작 도구에서 normals가 바깥을 향하는지 확인하고 재질을 다시 내보내면 됩니다.
증상 3. 재질이나 텍스처가 사라졌다
FBX에서 가장 자주 생기는 증상입니다. 일부 FBX는 텍스처를 외부 경로로 참조하는데, FBX 파일 하나만 선택하면 텍스처 없이 모델만 나타납니다. 텍스처 파일을 함께 선택하거나 GLB로 변환해 보세요. 브라우저 로더가 완전히 지원하지 않는 내보내기 설정을 쓴 FBX도 있습니다. 그래도 형태와 스켈레톤, 애니메이션이 로드되는지 확인하는 빠른 점검용으로는 충분하며, 최종 웹 표시용으로는 GLB나 GLTF가 더 믿을 만합니다.
재질이 하얗게 나오면 텍스처 파일 이름과 대소문자, 그리고 그 포맷이 이미지를 실제로 파일 안에 담는지부터 확인하세요. 브라우저 뷰어는 끊어진 로컬 텍스처 경로를 스스로 복구하지 못합니다.
STL과 PLY가 회색으로 나오는 것은 고장이 아니라 설계입니다. 두 포맷은 재질 없는 순수 지오메트리로 도착하므로 뷰어가 vertex normals를 직접 계산하고 roughness 0.7, metalness 0.1의 회색 표준 재질 하나를 입힙니다. 그래서 모든 STL과 PLY가 여기서는 같은 회색으로 렌더링되고, PLY 안에 저장된 정점 색상도 무시됩니다. 그 재질이 정점 색을 읽도록 설정되어 있지 않기 때문입니다. 프린팅·스캔 파일이라면 오히려 색이 끼어들지 않아 지오메트리와 표면 결함이 더 또렷하게 보입니다.
증상 4. 크기가 이상하거나 모델이 화면 밖에 있다
이 뷰어가 알려줄 수 없는 것 하나가 실제 크기입니다. 파일을 열면 모델은 바운딩 박스 중심이 원점에 오도록 이동한 뒤, 가장 긴 축이 정확히 3유닛이 되도록 다시 스케일됩니다. 밀리미터로 만든 파일이든 미터로 만든 파일이든 마찬가지입니다. 바닥의 참조 그리드는 1유닛 셀로 나뉜 10유닛 정사각형으로 고정이고 모델을 따라 늘어나지 않으므로, 자가 아니라 배경으로 취급해야 합니다. 치수는 저작 도구에서 확인하고, 이 뷰어는 형태와 구조, 움직임을 보는 데 쓰세요.
“Reset View” 버튼은 저장해 둔 카메라를 되돌리는 것이 아니라 모델에서 프레이밍을 다시 계산합니다. 카메라는 스케일 조정된 바운딩 박스 최장변의 2.2배만큼 X축과 Z축으로 물러나고 높이는 그 값의 70%로 올라가며, 궤도 회전의 피벗은 박스 중심에 맞춰져 회전이 빈 공간이 아니라 물체를 중심으로 돕니다. near·far 클리핑 평면도 같은 값에서 계산됩니다. 스케일 조정이 먼저 일어나기 때문에 어떤 모델이든 같은 방식으로 프레이밍되고, 구석까지 확대해 들어간 뒤에도 “Reset View”를 믿고 누를 수 있는 이유가 이것입니다.
모델이 화면 밖으로 사라졌다면 먼저 “Reset View”를 누르고, 그래도 이상하면 소스 씬의 스케일과 원점을 점검하세요. 예방책은 아래 내보내기 체크리스트에 정리했습니다.
증상 5. 애니메이션 패널이 안 보이거나 재생이 안 된다
클립 패널은 로더가 클립을 하나 이상 돌려줄 때만 나타납니다. 패널이 끝내 나타나지 않는다면 파일을 의심하기 전에 포맷부터 확인하세요. OBJ, STL, PLY는 설계상 빈 클립 목록을 넘기므로 파일 안에 무엇이 들었든 패널이 뜰 수 없습니다. 패널을 채울 수 있는 것은 파싱된 glTF에서 클립을 읽는 GLB·GLTF와, 로드된 오브젝트 자체에서 클립을 읽는 FBX뿐입니다.
정보 상자에는 발견된 클립 수가 함께 표시됩니다. GLB인데 애니메이션이 0개로 나온다면 그 파일은 정말로 애니메이션 없이 내보내진 것이고, 살펴봐야 할 곳은 뷰어가 아니라 내보내기 설정입니다. 절차적 모션은 bake하고, 클립마다 고유한 이름과 유효한 시작·끝 프레임이 있는지 확인하세요. 이름 없이 내보낸 클립은 “Animation 1”, “Animation 2” 순서로 나열되는데, 이것 자체가 액션 이름이 떨어져 나간 내보내기를 발견하는 빠른 방법이 됩니다.
FBX 애니메이션이 재생되지 않는다면, 브라우저 로더가 읽지 못하는 구조로 애니메이션 데이터가 담긴 경우입니다. Blender는 많은 FBX를 가져와 GLB나 GLTF로 내보낼 수 있으니, 열리지 않는 FBX는 변환을 시도해 보세요.
재생 컨트롤의 동작 방식
클립이 있으면 첫 번째 클립이 모델이 나타나는 순간 저절로 재생을 시작하고, 끝에서 멈추지 않고 무한히 반복됩니다. 드롭다운에서 다른 클립을 고르면 재생 중이던 동작이 멈추고 새 클립이 즉시 시작되므로 전환 후에 “Play”를 누를 필요가 없습니다. “Pause”는 토글이며 일시정지 중에는 “Resume”으로 바뀌고, “Stop”은 마지막 프레임에 세워 두는 것이 아니라 동작을 완전히 끝내고 처음으로 되돌립니다.
재생 속도는 애니메이션 믹서에 시간 배율로 적용되며 리샘플이 아닙니다. 0.25x는 똑같은 키프레임을 네 배 느리게 밟아 가고, 3x는 세 배 빠르게 지나갈 뿐 보간 대상 자체는 바뀌지 않습니다.
증상 6. 느리거나 버벅인다
대형 파일, 높은 폴리곤 수, 텍스처, 애니메이션 데이터는 로드 시간을 늘립니다. 로드 후 성능을 정하는 것은 GPU와 파서가 만들어야 하는 지오메트리 양이고, 결과는 기기와 브라우저에 따라 달라집니다. 브라우저가 느려지면 더 작은 파일이나 GLB로 변환한 버전을 써 보세요. 폴리곤 수와 텍스처 해상도, 동시에 올리는 에셋 수를 줄이는 것도 방법입니다. 4K·8K급 대형 텍스처는 파일 크기가 주는 인상보다 훨씬 많은 GPU 메모리를 차지합니다.
모바일에서는 레이아웃이 적응합니다. 화면 너비 700픽셀 이하에서 캔버스 높이가 620픽셀에서 420픽셀로 줄고, 컨트롤 버튼 세 개가 한 줄 대신 한 열로 쌓입니다. 렌더러의 픽셀 비율은 2로 제한되어 3x를 보고하는 폰이 논리 픽셀의 아홉 배를 조용히 그리는 일은 없습니다. 다만 지오메트리는 그대로라서 무겁거나 애니메이션이 든 모델은 훨씬 작은 GPU에 같은 작업을 요구합니다. 그런 모델은 데스크톱에서 보는 편이 낫습니다.

진단에 쓰는 화면 요소들
기본 조작은 마우스입니다. 파일 선택 버튼으로 모델을 열고, 왼쪽 드래그로 회전, 휠로 확대·축소, 오른쪽 드래그로 화면 이동을 합니다. 궤도 회전에는 감쇠가 걸려 있어 마우스를 놓은 뒤에도 시점이 잠깐 미끄러지듯 움직입니다.
로드가 성공할 때마다 정보 상자에 리포트가 기록됩니다. 파일 크기, 오브젝트와 메시 수, 정점과 삼각형 합계, 발견된 애니메이션 클립 수입니다. 이 숫자는 로드된 씬 그래프를 직접 순회해 집계하고, 삼각형은 인덱스 버퍼가 있으면 거기서, 없으면 정점 위치 수에서 세기 때문에 파일 헤더에 적힌 숫자가 아니라 GPU가 실제로 그리게 될 양에 가까운 추정치입니다.
“Wireframe” 모드는 로드된 오브젝트 안의 모든 메시를 돌며 재질의 wireframe 플래그를 뒤집습니다. 재질을 하나가 아니라 배열로 가진 메시도 포함되므로, 멀티 재질 모델의 일부만 셰이딩된 채 남는 일이 없습니다. 이 설정은 파일 사이에도 유지됩니다. 켜 둔 채 다음 모델을 열면 로드 과정에서 모드가 다시 적용되어 처음부터 wireframe으로 나타납니다.
파일을 새로 선택하면 이전 모델은 항상 정리됩니다. 장면에서 제거되고, 지오메트리와 재질이 재질에 붙은 모든 텍스처와 함께 해제되며, 이전 blob URL도 회수됩니다. 내보내기 결과물 열 개를 연달아 비교해도 GPU 메모리가 쌓이지 않는 대신, 두 모델을 화면에 나란히 두고 비교할 방법은 없습니다.
내보내기 체크리스트: 문제를 미리 막는 법
파일이 멀쩡해도 브라우저에서는 느리게 열리거나 검게 나오거나 애니메이션을 잃을 수 있습니다. 가장 믿을 만한 작업 흐름은 컴팩트한 GLB를 만들어 로컬에서 테스트하고, 원본 소스 파일은 나중의 편집을 위해 따로 보관하는 것입니다.
- 변환 적용: 내보내기 전에 스케일과 회전을 freeze하거나 적용해서 모델이 아주 작게, 거대하게, 또는 옆으로 누워 도착하지 않게 합니다.
- 예측 가능한 단위: glTF 파이프라인에서는 미터가 흔한 선택입니다. 물체가 사라지면 카메라의 near·far 범위를 확인하세요.
- 텍스처 패킹: GLB에 embed하거나, 상대 경로를 바꾸지 않은 채 모델 옆에 둡니다.
- 텍스처 크기 절제: 지나치게 큰 텍스처는 GPU 메모리를 그만큼 더 씁니다.
- 애니메이션은 의도적으로: 절차적 모션은 bake하고, 클립 이름과 시작·끝 프레임이 유효한지 확인합니다.
전달용 포맷은 대개 GLB/glTF가 최선입니다. 런타임에서 효율적으로 쓰이도록 설계됐고 재질, 텍스처, 스킨, 애니메이션까지 담을 수 있습니다. FBX는 교환 포맷으로는 유용하지만 내보내기 도구마다 결과가 달라 애니메이션과 재질에 테스트가 더 필요합니다. OBJ는 단순하고 널리 지원되지만 스켈레탈 애니메이션이 없고, STL은 프린팅을 위한 표면 지오메트리에 집중해 재질도 애니메이션도 담지 않는 것이 보통입니다.
three.js 공식 문서에는 glTF, FBX, OBJ, PLY, STL 각각의 로더와 클립 재생을 담당하는 AnimationMixer가 문서화되어 있습니다. 다만 로더가 있다는 것이 저작 도구의 모든 기능이 그대로 옮겨진다는 뜻은 아닙니다.
로컬 처리와 다음 단계
선택한 파일은 object URL로 바뀌어 페이지 안에서 three.js가 직접 파싱합니다. 뷰어가 만드는 네트워크 요청은 페이지를 처음 열 때 CDN에서 three.js와 로더 모듈(버전 0.160.0)을 받아오는 것이 전부라서, 그 뒤에는 인터넷 연결이 끊겨도 다음 파일을 계속 열 수 있습니다.
확인하려는 에셋이 VRM 캐릭터라면 웹캠 아바타 모션 캡처 가이드로 이어가면 되고, 확인한 모델을 가볍게 녹화해 공유하려면 로컬 GIF·영상 변환기를 쓰면 됩니다. 이런 브라우저 안 작업 방식의 한계 전반은 브라우저 AI와 로컬 처리 플레이북에 정리해 두었습니다.
자주 묻는 질문
이 3D 모델 뷰어는 무료인가요?
네. 브라우저에서 무료로 사용할 수 있는 로컬 3D 모델 뷰어입니다.
제 3D 파일이 서버에 업로드되나요?
아니요. 선택한 파일은 브라우저 안에서만 처리되고 서버로 업로드되지 않습니다.
어떤 포맷이 가장 잘 열리나요?
가장 안정적인 브라우저 미리보기를 원한다면 GLB를 권합니다. GLTF도 좋은 선택입니다.
FBX 파일도 열 수 있나요?
네. 빠른 미리보기 용도로 지원합니다. 다만 내보내기 설정에 따라 일부 FBX는 재질, 텍스처, 애니메이션이 제대로 표시되지 않을 수 있습니다.
애니메이션 재생이 되나요?
네. 파일에 애니메이션 데이터가 들어 있으면 재생됩니다. GLB, GLTF, 그리고 일부 FBX 파일이 재생 가능한 애니메이션을 담을 수 있습니다.
FBX 애니메이션이 재생되지 않는 이유는 무엇인가요?
일부 FBX 파일은 브라우저 로더가 제대로 읽지 못하는 구조로 애니메이션 데이터를 담고 있습니다. 이 경우 Blender에서 파일을 열어 GLB로 내보낸 뒤 다시 시도해 보세요.
3D 프린팅 파일 확인에도 쓸 수 있나요?
네. STL과 PLY 파일을 미리 볼 수 있습니다. 다만 시각적 확인 전용이며, 프린팅용 지오메트리를 수리하거나 검증하지는 않습니다.
모바일에서도 작동하나요?
네. 화면 너비 700픽셀 이하에서는 캔버스가 620픽셀에서 420픽셀 높이로 줄고 버튼이 한 열로 쌓이며, 렌더러 픽셀 비율은 2로 제한됩니다. 다만 지오메트리 부담은 그대로라서 무거운 모델은 데스크톱이 낫습니다.
모델이 느리게 열리는 이유는 무엇인가요?
대형 모델, 높은 폴리곤 수, 텍스처, 애니메이션 데이터는 로드에 시간이 걸립니다. 성능은 기기와 브라우저에 따라 달라집니다.