Meshdiff: STL, 3MF, 및 OBJ 파일을 위한 클라이언트 측 3D 메쉬 비교 도구
Meshdiff는 브라우저에서 시각적인 3D 메쉬 차이 비교를 가능하게 합니다
Meshdiff는 3D 모델의 두 버전을 시각적으로 비교하기 위해 설계된 클라이언트 측 유틸리티입니다. 사용자는 STL, 3MF 또는 OBJ 형식의 파일을 두 개 업로드할 수 있으며, 추가된 재질은 녹색으로, 제거된 재질은 빨간색으로 강조 표시되는 복셀(voxel) 기반의 차이 지도를 생성합니다. 이 도구는 부피 변화량(volume delta) 지표를 제공하며, 비교를 정교화하기 위해 0.05mm에서 1mm 사이의 조정 가능한 허용 오차 범위를 제공합니다.
기술 아키텍처 및 구현
Meshdiff는 모든 계산을 사용자의 브라우저에서 로컬로 실행함으로써 개인정보 보호와 성능에 중점을 두고 구축되었습니다.
클라이언트 측 처리
데이터 프라이버시를 보장하고 서버 측 업로드를 방지하기 위해, Meshdiff는 차이 비교 프로세스의 무거운 작업을 처리하기 위해 Web Worker를 활용합니다. 기술 스택은 다음과 같습니다:
- React and TypeScript: 애플리케이션 프레임워크 및 타입 안정성을 위해 사용됩니다.
- React Three Fiber: 브라우저에서의 3D 렌더링을 위해 사용됩니다.
- Custom Voxel Diff Engine: 실제 STL 파일에서 흔히 발견되는 비매니폴드(non-manifold) 기하학 구조인 "triangle soup"를 처리하기 위해 개발된 독자적인 엔진입니다.
복셀 기반 비교 vs. CSG
Manifold 또는 CGAL과 같은 Constructive Solid Geometry (CSG) 라이브러리에 의존하는 도구들은 올바르게 작동하기 위해 깨끗하고 수밀성(watertight)이 있는 토폴로지가 필요하지만, Meshdiff는 복셀 기반 접근 방식을 사용합니다. 이는 토폴로지 오류나 틈이 자주 포함된 실제 메쉬를 처리할 때 도구가 견고하게 유지되도록 보장합니다.
커뮤니티 피드백 및 기능 요청
Hacker News의 사용자 및 커뮤니티 구성원들은 도구의 사용성 및 통합을 위한 몇 가지 잠재적인 개선 사항을 식별했습니다:
뷰포트 동기화
여러 사용자가 "locked view" 또는 "synchronized transform" 기능을 요청했습니다. 이 기능은 사용자가 한 뷰포트를 회전하거나 팬(pan)할 때 다른 뷰포트들도 함께 회전하도록 하여, 모델의 서로 다른 버전 간의 특정 각도를 더 쉽게 비교할 수 있게 해줍니다.
통합 및 자동화
전문적인 워크플로우를 위해 도구를 더 유용하게 만들기 위한 CI/CD 통합 제안이 제안되었습니다:
- GitHub PR Triggers: GitHub Pull Requests에서 Meshdiff를 트리거로 통합하여 브랜치 간 3D 파일 변경 사항을 자동으로 미리보기 할 수 있도록 합니다.
- CLI Tool: 나중에 검토할 수 있도록 차이 비교 결과(diffs)를 자동 생성하기 위한 명령줄 인터페이스(CLI) 개발.
버그 보고 및 예외 케이스
일부 사용자는 현재 버전의 기술적 한계점을 언급했습니다:
- Multi-group OBJ files: 멀티 그룹 OBJ 파일은 현재 무시되며, 첫 번째 그룹만 렌더링된다고 보고되었습니다.
- Duplicate File Warning: 혼란을 피하기 위해 동일한 파일을 두 번 업로드했을 때 경고를 추가할 것을 사용자들이 제안했습니다.
"I built Meshdiff because clients keep sending me part_v3_FINAL.stl and I have no quick way to see what changed. Drop two STL/3MF/OBJ files – voxel diff renders in your browser."
– @projscope