
실제 사물을 CAD 모델로 변환하기
요약
실제 사물을 사진측량(Photogrammetry) 및 AI 기술을 활용해 3D 메쉬로 변환하고 CAD 워크플로우에 통합하는 방법을 탐구합니다. Meshroom과 같은 도구를 사용하여 물리적 객체를 디지털 모델로 재구성하는 실용적인 과정을 다룹니다.
핵심 포인트
- 사진측량 기술을 통한 2D 이미지의 3D 메쉬 변환 가능성 확인
- Meshroom 오픈 소스 도구를 활용한 3D 재구성 워크플로우 테스트
- 재구성된 모델을 CAD로 가져와 간섭 확인 및 레이아웃 설계에 활용
- 기존 CAD 데이터가 없는 물리적 객체를 디지털화하는 효율적 방법 제시
물리적 사물을 CAD 워크플로우로 가져오기 위해 사진측량 (Photogrammetry) 및 AI 기반 3D 생성을 테스트합니다.
CAD에서 무언가를 설계할 때, 단순한 브래킷 (bracket)이라도 주변의 기계, 장치 또는 장비의 3D 모델이 이미 있다면 항상 더 쉽습니다.
3D 모델이 있으면 새로운 부품이 어떻게 보이는지, 다른 것과 간섭 (interfere)이 발생하는지, 그리고 전체 시스템에 어떻게 맞는지 빠르게 확인할 수 있습니다. 또한 문서화 작업도 훨씬 쉬워집니다. CAD 스크린샷 한 장이 긴 문단보다 아이디어를 훨씬 더 잘 설명해 줍니다.
하지만 현실 세계에서는 기존 기계나 장비에 대한 깔끔한 CAD 데이터를 가지고 있지 않은 경우가 많습니다.
물론 제조사에서 CAD 모델을 제공한다면 그것이 이상적입니다. 하지만 그렇지 않다면 직접 모델을 만들어야 합니다. 솔직히 말해서, 처음부터 3D CAD 모델을 구축하는 것은 고통스러운 일입니다. 절대적으로 필요한 경우가 아니라면 저는 미루게 되는 종류의 작업입니다.
하지만 최근에는 3D 재구성 (3D reconstruction) 도구들이 훨씬 더 실용적으로 변했습니다. 이제 비디오, 여러 장의 사진, 또는 단 한 장의 이미지로부터 사물을 재구성하여 메쉬 (mesh)로 변환하고, 이를 CAD로 가져올 수 있습니다.
그래서 저는 다음과 같은 실용적인 워크플로우를 테스트해보고 싶었습니다:
실제 사물을 가져와서 3D 메쉬로 재구성한 뒤, 레이아웃 확인 및 간섭 확인을 위해 CAD 내부에서 사용할 수 있을까?
이번에는 작은 네트워크 카메라를 테스트 대상으로 사용했습니다.
이것은 흔한 산업용 스타일의 네트워크 카메라입니다. 흰색 금속 하우징 (housing), 한쪽의 카메라 유닛, 그리고 LAN과 같은 케이블이 연결되는 후면 박스로 구성되어 있습니다. 작고 빠르게 테스트하기 쉬워서 이 모델을 선택했습니다.
Meshroom을 이용한 사진측량 (Photogrammetry)
가능한 방법은 많지만, 저는 고전적이고 매우 잘 알려진 도구인 Meshroom으로 시작했습니다.
Meshroom은 AliceVision을 기반으로 하는 오픈 소스 사진측량 (Photogrammetry) 도구입니다. 간단히 말해, 사진측량 (Photogrammetry)은 여러 장의 2D 이미지로부터 3D 모델을 재구성하려고 시도하는 기술입니다.
대략적인 개념은 다음과 같습니다:
- 각 이미지에서 특징점 (feature points) 검출
- 여러 이미지에 걸쳐 동일한 점들을 매칭
- 카메라 위치 추정
- 희소 포인트 클라우드 (sparse point cloud) 생성
- 밀집 포인트 클라우드 (dense point cloud) 생성
- 메쉬 (mesh) 생성
- 텍스처 (texture) 적용
따라서 물체를 수동으로 모델링하는 대신, 다양한 각도에서 촬영한 많은 사진으로부터 소프트웨어가 3D 형상을 추정하도록 합니다.
이번 테스트를 위해 스마트폰으로 약 30초 동안 영상을 촬영했습니다. 그런 다음 FFmpeg을 사용하여 프레임을 추출했습니다:
ffmpeg -i input.mp4 \
-vf "fps=2" \
frames/frame_%05d.jpg
제대로 된 사진측량 (photogrammetry) 워크플로우라면, 프로세싱을 하기 전에 흐릿한 이미지를 제거하는 것이 더 좋습니다. 훨씬 더 좋은 방법은 영상을 녹화하는 대신, 다양한 각도에서 고품질의 정지 영상을 하나씩 촬영하는 것입니다.
하지만 이 첫 번째 테스트에서는 빠른 영상 캡처만으로 어디까지 진행할 수 있는지 확인하고 싶었습니다.
그 다음 Meshroom을 열고, Photogrammetry 파이프라인을 선택한 뒤 이미지를 불러왔습니다.

이미지를 불러온 후, 이미지 갤러리 (Image Gallery)에 나타났습니다. 그래프 에디터 (Graph Editor) 또한 사진측량 (photogrammetry) 파이프라인을 자동으로 생성했습니다.
작지만 중요한 참고 사항이 있습니다: 만약 그래프 에디터 (Graph Editor)에 아무것도 나타나지 않는다면, 파이프라인이 준비되지 않은 것입니다. 그런 경우 재구성 (reconstruction)이 올바르게 실행되지 않습니다.
그 후, 상단의 Start 버튼을 클릭하자 Meshroom이 전체 3D 재구성 (reconstruction) 프로세스를 자동으로 시작했습니다.
프로세스가 완료되자, 결과물이 오른쪽의 3D Viewer에 나타났습니다. 재구성된 물체와 추정된 카메라 위치를 모두 확인할 수 있었습니다.
그런 다음 결과물을 OBJ 파일로 내보내어(export) Blender에서 열어 형태를 확인했습니다.
결과는 대략적인 메쉬 (mesh)로 사용하기에는 괜찮았지만, 솔직히 카메라의 형태는 그리 좋지 않았습니다. 책상과 같은 불필요한 부분들이 포함되어 있었고, 주요 물체의 표면은 거칠고 노이즈 (noise)가 많았습니다.
물론 Blender에서 불필요한 부분들을 삭제할 수는 있습니다. 하지만 카메라 자체의 모델로 사용하기에는 품질이 다소 부족했습니다.
RealityScan을 이용한 사진 측량 (Photogrammetry)
다음으로, Epic Games의 RealityScan을 시도해 보았습니다.
많은 분이 스마트폰 앱 버전을 알고 계시겠지만, 데스크톱/Linux 워크플로 (workflow)도 존재하기에 그 부분도 테스트해 보았습니다.
전체적인 워크플로는 Meshroom과 유사합니다. 여러 이미지를 불러오고, 정렬(align)한 뒤, 3D 모델을 생성하는 방식입니다.
하지만 작업 흐름은 약간 다릅니다.
Meshroom에서는 Start를 누르면 특징 추출 (feature extraction)부터 메싱 (meshing)까지 전체 파이프라인 (pipeline)이 자동으로 실행됩니다.
RealityScan에서는 먼저 Align Images를 실행했습니다. 이 단계에서는 특징 추출 (feature extraction), 이미지 매칭 (image matching), 카메라 추정 (camera estimation), 그리고 포인트 클라우드 (point cloud) 생성이 수행됩니다.
정렬(alignment)이 합리적으로 보인다는 것을 확인한 후, Calculate Model을 실행하여 3D 메쉬를 생성했습니다.
결과 역시 제가 기대했던 만큼 깨끗하지 않았습니다.
하지만 이는 RealityScan이 약하다는 것을 의미하지 않습니다. RealityScan은 매우 강력한 사진측량(photogrammetry) 도구입니다. 문제는 아마도 제 입력 데이터였을 것입니다.
제가 생각하기에 주요 문제점들은 다음과 같습니다:
- 손으로 들고 찍은 비디오에서 정지 이미지를 추출했기 때문에, 일부 프레임이 흐릿하거나 움직임으로 인해 블러(motion-blurred)했습니다.
- 대상 물체가 대부분 흰색이었기 때문에, 쉽게 감지할 수 있는 시각적 특징(visual features)이 많지 않았습니다.
- 충분한 각도를 신중하게 포착하지 못했습니다. 그저 휴대폰으로 물체 주변을 빠르게 움직였을 뿐입니다.
- 책상과 배경도 함께 촬영되었는데, 이로 인해 재구성이 더 어려워졌습니다.
만약 제가 이러한 점들을 개선한다면, Meshroom과 RealityScan 모두 훨씬 더 나은 모델을 만들 수 있을 것이라고 생각합니다.
그럼에도 불구하고, 이렇게 작고, 흰색이며, 매끄러운 산업용 물체의 경우 사진측량으로는 쉽게 울퉁불퉁한 메쉬를 생성할 수 있습니다. 전체적인 형태가 재구성되더라도, 표면이 CAD 스타일의 시각화(visualization)에 충분히 깨끗하지 않을 수 있습니다.
그래서 저는 다른 접근 방식을 시도하기로 결정했습니다: AI 기반 단일 이미지 3D 생성입니다.
Hunyuan3D-2.1
제가 테스트한 첫 번째 AI 기반 도구는 Tencent의 Hunyuan3D-2.1이었습니다.
Hunyuan3D-2.1은 이미지를 통해 3D 에셋을 생성할 수 있습니다. 이는 기계 CAD(mechanical CAD)보다는 게임, 디지털 콘텐츠, 그리고 3D 에셋에 더 일반적으로 사용되는 것으로 보입니다.
GitHub 저장소에 이미 설명되어 있으므로 여기서는 전체 설정 과정을 생략하겠습니다. 하지만 모델의 크기가 상당히 크기 때문에 어느 정도 성능이 좋은 컴퓨터가 필요합니다.
제 환경은 다음과 같았습니다:
OS: Ubuntu 22.04
RAM: 64 GB
GPU: NVIDIA RTX 4090
저에게 가장 쉬운 방법은 공식 Gradio 앱을 실행하는 것이었습니다:
python3 gradio_app.py --model_path tencent/Hunyuan3D-2.1 --subfolder hunyuan3d-dit-v
그 다음 카메라의 단일 이미지를 업로드했습니다.
결과는 제 로컬 머신에서 빠르게 생성되었습니다.
사진 측량 (photogrammetry) 결과와 비교했을 때, 표면이 훨씬 더 매끄러웠습니다. 전체적인 형태 또한 제가 예상했던 것과 유사했습니다.
단 하나의 이미지만 사용했다는 점에서 이는 매우 인상적이었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기











