방 하나를 열 가지 3D 로

아이폰 라이다 스캔 한 번으로 만들 수 있는 3D 를 전부 만들어 나란히 비교했다 (2026-10-14)

EN
무엇을 했나: 라이다가 있는 아이폰에서 무료 앱 Modelar 로 방 하나(가로 약 3.5 m × 세로 3.65 m, 천장 2.34 m)를 약 11분 걸어 다니며 스캔했다. 앱이 내보낸 압축본 하나(544 MB)를 arcAI 서버로 옮겨, 그 안의 데이터를 조합해 처음 해 보는 만큼 할 수 있는 방법을 모두 돌렸다 (조사로 찾은 조합 실험 포함 열 가지).

처음부터 끝까지

flowchart LR
  A["아이폰 + Modelar 앱
방을 걸으며 약 11분 스캔"] --> B["압축본 1개 544 MB
윈도우 D: → arcAI 서버"] B --> C["형식 해독
Cloud.log · Mesh.scn · 카메라 json"] C --> M1["① 앱 메시
그대로 꺼냄"] C --> M2["② 라이다 점
채움 점 제거"] C --> P["카메라 위치 568장
아이폰 표기 → RS·COLMAP 표기"] P --> M3["③ RealityScan
위치 고정 → 메시 → 라이다 색"] P --> M4["④ 가우시안
gsplat 3만 단계"] M2 --> M4 M2 --> M5["⑤ 가우시안 + 라이다 깊이
+ 카메라 위치 보정"] P --> M5 M2 --> M6["⑥ 라이다 메시
Open3D Poisson"] P --> M7["⑦ WebODM(ODM)
아이폰 위치 → 가짜 GPS"] P --> M8["⑧ 2D 가우시안
면에 붙는 가우시안"] M2 --> M8 C --> M9["⑨ VGGT (AI)
깊이는 AI · 위치는 아이폰 · 크기는 라이다"] P --> M9 M2 --> M9 M9 --> M10["⑩ 가우시안 + VGGT 시작점
+ 깊이 학습 + 위치 보정"] M1 & M2 & M3 & M4 & M5 & M6 & M7 & M8 & M9 & M10 --> W["웹용 압축
GLB · PLY · splat"] W --> X["Cloudflare Pages
이 페이지"] classDef app fill:#fef3c7,stroke:#f59e0b,stroke-width:3px,color:#78350f classDef lidar fill:#d1fae5,stroke:#10b981,stroke-width:3px,color:#064e3b classDef rs fill:#dbeafe,stroke:#3b82f6,stroke-width:3px,color:#1e3a8a classDef gs fill:#fce7f3,stroke:#ec4899,stroke-width:3px,color:#831843 classDef gsd fill:#ede9fe,stroke:#8b5cf6,stroke-width:3px,color:#4c1d95 classDef lmesh fill:#ccfbf1,stroke:#14b8a6,stroke-width:3px,color:#134e4a classDef odm fill:#fee2e2,stroke:#ef4444,stroke-width:3px,color:#7f1d1d classDef gs2d fill:#e0f2fe,stroke:#0ea5e9,stroke-width:3px,color:#0c4a6e classDef vggt fill:#ecfccb,stroke:#84cc16,stroke-width:3px,color:#365314 classDef gsf fill:#fae8ff,stroke:#d946ef,stroke-width:3px,color:#701a75 class M1 app class M2 lidar class M3 rs class M4 gs class M5 gsd class M6 lmesh class M7 odm class M8 gs2d class M9 vggt class M10 gsf

3D 로 비교하기

탭을 누르면 그 방법의 3D 를 불러온다. 마우스 끌기로 돌리기, 휠로 확대, 오른쪽 끌기로 이동. 휴대폰은 두 손가락. 가우시안(④⑤⑧)은 실제로 찍은 자리에서 볼 때 가장 사진 같아서 '촬영 시점' 에서 시작한다.

방법별 자세히

① 앱 메시

어떻게 만들었나: Modelar 앱이 촬영하면서 바로 만든 메시를 그대로 꺼냈다. 앱 파일 Mesh.scn 은 Apple SceneKit 형식이라 다른 프로그램이 못 읽어서, 구조를 직접 풀어 94조각을 하나로 합쳤다 (read_modelar_mesh.py).

장점
  • 추가 처리 0분. 앱 화면에서 보던 것 그대로
  • 파일이 가장 작다 (1.2 MB)
  • 방 크기·벽 위치 같은 큰 형태는 맞다
단점
  • 삼각형 5.8만 개라 매우 거칠다. 5 cm 격자로 만든 메시
  • 색이 꼭짓점에만 있어 물건 모양이 뭉개진다
  • 앱 밖으로 꺼내는 공식 방법이 없어 직접 해독했다

이 3D 에서 볼 것

숫자: 33,363 vertices / 58,319 triangles

② 라이다 점

어떻게 만들었나: 앱이 저장한 라이다 점 파일 Cloud.log 을 해독했다. 공식 문서가 없어 바이트를 직접 보고 블록 구조를 찾았고, 블록 점 수의 합이 앱 기록(21,029,180)과 정확히 같은지로 검증했다. 그중 8,896,675개(42.3%)는 빈 자리를 채운 (0,0,0) 이라 뺐다. 웹에는 1,300,000개만 무작위로 올렸다.

장점
  • 센서가 직접 잰 거리라 크기가 처음부터 실제 m
  • 이 페이지의 모든 결과가 이 점과 같은 좌표에 있다 (RS 메시와 중앙 1.5 cm 차이)
  • 치수 재기·도면에 가장 믿을 만한 원천
단점
  • 점이라 가까이 가면 사이가 비어 보인다
  • 라이다 거리 한계(앱 설정 5 m)와 해상도 때문에 작은 물건 경계가 흐리다
  • 유리·거울·검은 면에서 점이 빠지거나 튄다

이 3D 에서 볼 것

숫자: 12,132,505 points (web 1,300,000, 19.5 MB)

③ RealityScan 메시

어떻게 만들었나: 사진 568장을 RealityScan 2.2 리눅스판(arcAI)에 넣었다. 사진만으로는 65장만 한 덩어리로 맞아서, 아이폰 카메라 위치를 RS 사전정보 파일(XMP)로 바꿔 붙이고 '고정'으로 줬다. 이때 아이폰 회전 표기(열 우선, 카메라→세계, ARKit 축)를 RS 가 맞춘 65장과 비교해 확정했다 (회전 차이 중앙 1.68°). 그 뒤 메시(Normal) → 150만 삼각형으로 줄이기. 색은 RS 내보내기가 흰색만 내서, 정점마다 가장 가까운 라이다 점 4개의 색을 입혔다 (97.7% 정점).

장점
  • 가장 촘촘한 표면. 물건 모서리와 작은 물건 모양이 살아난다
  • 메시라 치수·면적 계산과 다른 프로그램 연동이 쉽다
  • 라이다와 같은 좌표, 중앙 1.5 cm 차이
단점
  • 흰 벽·바닥처럼 무늬가 없는 곳은 사진측량이 약해 울퉁불퉁하거나 빈다
  • 리눅스 명령줄에서 텍스처 이미지 저장이 실패했고(Feature not implemented) 정점 색도 흰색만 나와, 라이다 색을 빌려 입혔다. 그래서 글씨·무늬가 흐리다
  • 아이폰 위치를 고정했으므로 위치 오차가 그대로 남는다

이 3D 에서 볼 것

숫자: 568/568 aligned · reprojection 1.03 px · align 60 s · mesh 192 s · colour 74 s · 1,499,250 triangles · web 6.35 MB

④ 가우시안

어떻게 만들었나: 가우시안 스플래팅: 장면을 수백만 개의 작은 반투명 색 얼룩으로 표현하고, 사진과 똑같이 보이도록 얼룩을 학습한다. 아이폰 카메라 위치를 그대로 쓰고(사진 정렬 생략), 라이다 점 388,339개(2 cm 격자)에서 시작했다. 엔진 gsplat 1.5.3 은 이 그래픽카드용 설치판이 없어 CUDA 13 으로 직접 빌드했다. 3만 단계, 사진 8장 중 1장은 학습에서 빼 품질 평가에 썼다. 웹에는 기본 색만 남긴 .splat 으로 줄였다.

장점
  • 사진처럼 보인다. 반짝임·반투명·얇은 물건(케이블)까지 표현
  • 진짜로 방 안을 걸어 다니듯 볼 수 있다
  • 흰 벽처럼 사진측량이 약한 곳도 매끈하게 보인다
단점
  • 면이 아니라 얼룩이라 치수·도면에는 쓰기 어렵다
  • 찍은 방향에서 벗어나면 흐릿한 얼룩이 보인다
  • 아이폰 위치 오차가 그대로 흐림이 된다
  • 학습에 그래픽카드와 수십 분이 든다

이 3D 에서 볼 것

숫자: PSNR 15.43 · SSIM 0.76 · 2,723,832 gaussians · 35 min · web 48.0 MB

⑤ 가우시안 + 라이다 깊이

어떻게 만들었나: ④ 와 같은 데이터에 두 가지를 더했다. (1) 사진마다 보이는 라이다 점을 연결해 두고 학습 때 '그 점까지의 거리'를 맞추게 했다 (깊이 학습). (2) 아이폰 카메라 위치도 학습 중에 조금씩 고치게 했다 (위치 보정). 연구에서 아이폰 라이다 실내에 쓰는 DN-Splatter 와 같은 생각이다. 같은 3만 단계, 같은 평가 사진.

장점
  • 벽·바닥이 라이다 위치에 붙어 떠다니는 얼룩이 줄어야 한다
  • 카메라 위치 보정으로 흐림이 줄어야 한다
  • ④ 와 숫자로 비교할 수 있다 (같은 평가 사진)
단점
  • 여전히 얼룩이라 치수용은 아니다
  • 라이다가 틀린 곳(유리·검은 면)에서는 잘못된 거리에 끌려간다
  • 설정이 하나 늘어난 만큼 학습이 조금 느리다

이 3D 에서 볼 것

숫자: PSNR 18.33 · SSIM 0.8 · 3,385,261 gaussians · 55 min · web 48.0 MB

⑥ 라이다 메시

어떻게 만들었나: ② 라이다 점을 1 cm 격자로 줄인 뒤(173만 점), 점마다 면 방향을 추정해 가장 가까운 아이폰 카메라 쪽으로 맞추고, Open3D 의 Poisson 방식으로 매끈한 면을 씌웠다. 점이 드문 곳에 생기는 가짜 면(밀도 하위 3%)은 지우고 100만 삼각형으로 줄였다. 색은 라이다 점 색.

장점
  • 사진측량 없이 라이다만으로 면이 생긴다. 흰 벽도 곧고 매끈하다
  • 치수가 라이다 그대로라 도면·면적에 바로 쓸 수 있다 (면적 합 94.7 m²)
  • 계산이 빠르다 (CPU 2.7분)
단점
  • Poisson 은 구멍을 메우려고 면을 부풀리는 성질이 있어, 문밖·가구 뒤에 없는 면이 생길 수 있다
  • 작은 물건(케이블·펜)은 라이다 해상도 밖이라 뭉개진다
  • 색이 점 색이라 사진보다 흐리다

이 3D 에서 볼 것

숫자: 1,000,000 triangles · 2.7 min (CPU) · web 4.5 MB

⑦ WebODM

어떻게 만들었나: WebODM 의 처리 엔진(ODM 3.8.3, arcAI 에 이미 있는 것)으로 같은 사진 568장을 처리했다. ODM 은 카메라 위치를 GPS 로만 받아서, 아이폰 위치를 임의 원점(위도 1°, 경도 1°, 실제 위치와 무관) 둘레의 GPS 값으로 바꿔 사진 사본에 넣고 'GPS 를 믿어라(--force-gps, 5 cm)' 로 돌렸다. 실내라 정사영상은 생략.

장점
  • 무료 오픈소스, 명령 하나로 메시·텍스처까지
  • 텍스처를 사진에서 직접 입힌다 (RS 리눅스가 못 한 부분)
  • 동두천 드론 때와 같은 엔진이라 비교가 쉽다
단점
  • CPU 로만 돌아 느리다
  • 실내·흰 벽은 RS 와 같은 사진측량 한계
  • 아이폰 위치를 GPS 로 우회해 넣는 꼼수가 필요하다

이 3D 에서 볼 것

숫자: 568장 중 304장 정렬 · 텍스처 메시 81만 삼각형(149 조각) · 라이다까지 중앙 2.2 cm (90% 8.6 cm) · 60 min · web 12.5 MB

⑧ 2D 가우시안

어떻게 만들었나: 2D 가우시안(2DGS): 얼룩을 납작한 원판으로 만들어 면에 붙게 학습한다. gsplat 의 2DGS 학습기로 ④ 와 같은 데이터·단계(3만)로 돌렸다.

장점
  • 면에 붙어서 ④ 보다 형태가 또렷하다 (연구 결과)
  • 흰 벽·바닥에서 떠다니는 얼룩이 줄어든다
단점
  • 사진 같은 느낌은 ④ 보다 약간 떨어질 수 있다
  • 웹 뷰어가 2DGS 전용이 아니라 일반 가우시안으로 근사해 보여 준다

이 3D 에서 볼 것

숫자: PSNR 18.06 · SSIM 0.79 · 66 min · web 48.0 MB

⑨ VGGT (AI)

어떻게 만들었나: VGGT(Meta, 2025): 사진 여러 장을 넣으면 AI 가 카메라 위치와 깊이를 한 번에 추정한다. 그래픽카드(16 GB)에 한 번에 16장 정도만 들어가 두 가지로 해 봤다. (가) 묶음 방식: 겹치는 16장 묶음 22개를 돌려, AI 가 추정한 카메라 위치를 아이폰 위치에 맞춰 이었다. 아이폰과 15 cm·15° 넘게 다른 묶음 6개는 실패라 뺐다. (나) 채움 방식 (이 탭): AI 의 카메라 추정은 쓰지 않고 깊이는 VGGT, 위치는 아이폰, 크기는 라이다로 사진마다 놓았다. 사진마다 라이다 점을 투영해 VGGT 깊이와 비율을 재고, 비율이 사진 안에서 15% 넘게 흔들리는 사진은 버렸다 (524장 중 343장 사용). 이 생각은 조사한 MapAnything·Prompt Depth Anything 처럼 '사진 + 아는 위치 + 라이다' 를 함께 쓰는 방식이다.

장점
  • 사진 해상도라 라이다보다 물건이 또렷하다
  • 빠르다: 방 전체 5분 14초 (묶음 하나 약 10초)
  • 깊이 자체는 센서 없이 사진만으로 나온다. 라이다 없는 폰·카메라에도 쓸 수 있다
단점
  • 혼자서는 크기(m)를 모르고 묶음끼리 잇지 못한다. 이번에는 아이폰 위치와 라이다가 그 역할을 했다
  • 한 번에 넣을 수 있는 사진 수가 그래픽카드 메모리에 묶인다
  • 사진 35%(181장)는 라이다와 모양이 안 맞아 버렸다. AI 위치 추정은 묶음 27% 가 실패, 흩어 뽑으면 아예 실패 (99 cm, 127°)

이 3D 에서 볼 것

숫자: 채움 방식: 524장 중 343장 · 라이다 표면 84.7% 덮음 · 라이다까지 중앙 1.1 cm (90% 4.2 cm) · 5분 14초 / 묶음 방식: 60.0% · 3.6 cm (90% 19.0 cm)

⑩ 가우시안 + VGGT

어떻게 만들었나: 조사(VGGT-X: '가우시안은 시작점이 좋아야 한다')에서 나온 실험. ⑤ 와 같은 학습(깊이 학습 + 카메라 위치 보정, 3만 단계)인데, 시작점과 깊이 기준을 라이다 점 대신 ⑨ VGGT 채움 점(사진 해상도, 라이다로 크기 맞춤, 1 cm 격자 105만 점)으로 바꿨다. 바뀐 것은 이 하나뿐이라 ⑤ 와 숫자로 바로 비교된다.

장점
  • 시작점이 촘촘하고 사진 해상도라 작은 물건이 일찍 자리를 잡는다
  • VGGT 의 또렷함과 가우시안의 사진 같은 표현을 합친다
단점
  • VGGT 가 버린 사진(35%) 자리는 시작점이 성기다
  • 학습 시간은 ⑤ 와 비슷하다

이 3D 에서 볼 것

숫자: PSNR 17.82 · SSIM 0.79 · 58 min · web 48.0 MB

한눈에 비교

방법추가 처리 시간겉모습치수·도면웹 크기
① 앱 메시0거침대략1.2 MB
② 라이다 점해독만점, 가까이 비어 보임가장 믿을 만함19.5 MB
③ RealityScan6분형태 좋음, 색 흐림좋음 (메시)6.35 MB
④ 가우시안35분사진 같음어려움48.0 MB
⑤ 가우시안 + 깊이55분사진 같음어려움48.0 MB
⑥ 라이다 메시2.7분매끈, 색 흐림좋음 (라이다 치수)4.5 MB
⑦ WebODM60분텍스처 있음좋음 (메시)12.5 MB
⑧ 2D 가우시안66분사진 같음, 면 또렷어려움48.0 MB
⑨ VGGT (AI)5.2분또렷한 점라이다로 크기 맞춤 (중앙 1.1 cm)22.5 MB
⑩ 가우시안 + VGGT58분사진 같음어려움48.0 MB

해 보다 막힌 것 (그대로 남긴다)

다음에 할 것