Meta SAM3D 인테리어 시스템 개발 기록 (5) — SAM3D로 3D 방 만들기 도전!?

2026. 6. 7. 23:13·프로젝트

📌 이번 글에서 다룬 것

가구 복원은 어느 정도 잡혔으니까 이제 방을 3D로 만들 차례였다. 근데 이게 진짜 오래 걸렸고 결국 포기했다. 그 과정을 솔직하게 기록한다.


🤔 왜 SAM3D로 방을 만들려 했냐

 

SAM3D를 방 전체에 적용해보면 어떨까 생각했다. 가구를 3D로 만드는 모델이니까 방도 하나의 객체로 보고 넣으면 실제 방 구조를 반영한 3D가 나오지 않을까 하는 기대였다. 

그리고 아무도 시도한 사람이 없었다. SAM3D는 단일 객체용으로 설계된 거라 실내 씬에 적용한 사례 자체가 없었다. 하지만 시도해서 어떤 결과를 내는 지 궁금했고, 논문 기여가 될 수도 있겠다 싶었다.

SAM3D로 만들어본 방

 


🔨 뭘 시도했냐

1단계: 그냥 넣어봤다

빈방 이미지를 SAM3D에 통째로 넣었다. 마스크는 방 내부 전체 영역으로 잡았다.

결과는 예상대로 울퉁불퉁했다. 벽이 평평하지 않고, 바닥이 생기지 않고, 형태가 완전 뒤틀렸다.

근데 희망적인 건 벽 3개의 윤곽은 어느 정도 나왔다는 거였다. 완전 실패는 아니었다.

2단계: 후처리로 뭔가 해보려 했다

결과가 울퉁불퉁하면 후처리로 평평하게 만들면 되지 않을까 생각했다.

trimesh 후처리 적용:

# degenerate face 제거
face_mask = mesh_tri.area_faces > 1e-8
mesh_tri.update_faces(face_mask)

# 구멍 메우기
trimesh.repair.fill_holes(mesh_tri)

# Laplacian smoothing
trimesh.smoothing.filter_laplacian(mesh_tri, iterations=1, lamb=0.2)

 
_flatten_room_mesh 적용: 벽/바닥 vertex를 각 평면 방향으로 snap하는 함수를 만들었다. 바닥 근처 vertex는 y_min 쪽으로, 뒷벽 근처는 z_min 쪽으로 당기는 방식이다.

def _flatten_room_mesh(vertices_np, snap_strength=0.9, snap_zone=0.28):
    # 각 vertex를 가장 가까운 면(바닥/뒷벽/좌벽/우벽) 방향으로 snap
    d_floor = (v[:, 1] - y_min) / dy
    d_back  = (v[:, 2] - z_min) / dz
    d_left  = (v[:, 0] - x_min) / dx
    d_right = (x_max - v[:, 0]) / dx
    # snap_zone 안에 있는 vertex만 해당 면 쪽으로 당김
    ...

이렇게 하니까 확실히 벽이 더 평평해졌다. 근데 여전히 문제가 많았다.

3단계: 천장/앞벽 제거, 바닥 강제 추가

SAM3D 결과에서 천장이 생성되면 안으로 들어갔을 때 막혀 보이고, 앞벽이 생기면 내부가 안 보인다. 그래서 face center 기준으로 천장과 앞벽을 잘라냈다.
바닥은 아예 안 만들어지는 경우가 많았다. 그래서 바닥 커버리지를 체크해서 부족하면 강제로 평면을 추가했다.

# 바닥 커버리지 체크
floor_verts = vertices_np[y_arr <= (y_min + 0.15 * dy)]
coverage = (fx * fz) / (bx * bz + 1e-6)

if coverage < 0.4:  # 40% 미만이면 바닥 없는 거로 판단
    # 바닥 평면 강제 추가
    floor_verts = np.array([
        [x_min, y_min, z_min], [x_max, y_min, z_min],
        [x_max, y_min, z_max], [x_min, y_min, z_max],
    ])

4단계: 색상 입히기

SAM3D vertex color를 그대로 쓰면 창문, 문 색깔이 벽에 번져서 이상하게 나왔다. 그래서 빈방 이미지에서 직접 벽색/바닥색을 추출해서 단색으로 입혔다.

입력한 방 실험 사진

↓

SAM3D로 만든 방

😭 근데 결국 안 됐다

후처리를 아무리 해도 근본적인 문제가 해결이 안 됐다.
SAM3D 학습 데이터: 볼록한 단일 객체 (소파, 의자 등)
우리 입력: 오목한 실내 공간 (방 전체)

SAM3D의 shape prior가 볼록한 물체로 학습돼 있다. 방은 반대로 안쪽이 열린 오목한 공간이다. 그러니까 SAM3D 입장에서 방을 볼록한 덩어리로 만들려고 하는 거고, 그게 울퉁불퉁하고 뒤틀린 결과로 나오는 거다.

후처리로 평면 snap을 아무리 해도 근본적으로 잘못 생성된 메쉬를 완전히 고칠 수는 없었다. 후처리를 해도 3D 메쉬가 랜덤으로 나와 결과가 잘 나올때도 있고 정말 이상하게 나올때도 있었다.

  • trimesh 후처리 ✅ (어느 정도 개선)
  • flatten snap ✅ (벽 평평하게)
  • 천장/앞벽 제거 ⚠️ (너무 많이 자르면 벽도 같이 잘림)
  • 바닥 강제 추가 ✅ (없을 때만)
  • 색상 단색 적용 ✅

이렇게 시도를 해봤다. 그래도 결과물이 인테리어 시뮬레이션으로 쓰기엔 너무 불안정했다.


🔄 Three.js 절차적 방으로 전환

결국 SAM3D 방을 포기하고 Three.js 박스 방으로 돌아왔다. 근데 기존 박스 방에서 개선한 것들이 있다.

  1. 텍스처 적용 — 단순 단색이 아니라 빈방 이미지에서 벽/바닥 텍스처를 추출해서 그대로 입혔다. 바닥에는 나무 판자 텍스처도 오버레이했다.
  2. 색상 추출 방식 개선 — 이미지 상단 40~60% 영역을 벽색으로, 하단 15% 중앙 80% 영역을 바닥색으로 추출했다.
  3. 천장 흰색 고정 — 대부분 방 천장이 흰색이라 그냥 고정했다.

결과적으로 SAM3D 방보다 훨씬 안정적이고 보기에도 자연스러웠다.


💭 근데 이게 논문에서는 기여가 되지 않을까?

SAM3D로 방을 만들려고 삽질한 게 아깝지 않은 이유가 있다.
"단일 객체용 모델을 실내 씬에 적용하면 어떤 문제가 생기는지"를 실험으로 규명했다는 게 학술적으로 의미가 있다. 아무도 이걸 시도한 사람이 없었으니까.
논문에는 이렇게 썼다.
"SAM3D를 실내 공간 전체에 적용하는 탐색적 실험을 수행하였다. 객체용 shape prior가 오목한 실내 공간에 적용될 때 발생하는 메쉬 품질 저하 문제를 분석하고 완화시킬 수 있는 방법을 제안하였다. 이는 향후 실내 특화 3D 복원 모델 연구의 방향을 제시한다."
 
실패도 논문이 된다. 오히려 "시도해봤더니 이런 한계가 있더라"는 게 더 정직하고 신뢰감 있는 연구다.


다음 글에서는 UV 텍스처 베이킹 vs 버텍스 컬러 비교 실험, 그리고 사용자 평가 20명 + 논문 제출 후기를 정리할 예정이다.

'프로젝트' 카테고리의 다른 글

Meta SAM3D 인테리어 시스템 개발 기록 (6) — UV 텍스처 베이킹 vs 버텍스 컬러, 사용자 평가, 논문 제출  (0) 2026.06.14
Meta SAM3D 인테리어 시스템 개발 기록 (4) — SAM3D 가구 복원 최적화  (0) 2026.06.07
Meta SAM3D 인테리어 시스템 개발 기록 (3)  (0) 2026.05.06
Meta SAM3D 인테리어 시스템 개발 기록 (2)  (0) 2026.04.26
Meta SAM3D 인테리어 시스템 개발 기록 (1)  (0) 2026.04.22
'프로젝트' 카테고리의 다른 글
  • Meta SAM3D 인테리어 시스템 개발 기록 (6) — UV 텍스처 베이킹 vs 버텍스 컬러, 사용자 평가, 논문 제출
  • Meta SAM3D 인테리어 시스템 개발 기록 (4) — SAM3D 가구 복원 최적화
  • Meta SAM3D 인테리어 시스템 개발 기록 (3)
  • Meta SAM3D 인테리어 시스템 개발 기록 (2)
angrimilog
angrimilog
개발 흔적 남기기
  • angrimilog
    angrimi의 개발 기록지
    angrimilog
  • 전체
    오늘
    어제
    • 분류 전체보기 (7)
      • 프로젝트 (7)
      • Troubleshooting (0)
      • TIL (Today I Learned) (0)
      • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    3D모델링
    sam2
    MoGe
    SAM3D
    인테리어
    가구
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
angrimilog
Meta SAM3D 인테리어 시스템 개발 기록 (5) — SAM3D로 3D 방 만들기 도전!?
상단으로

티스토리툴바