Meshdiff: STL, 3MF, および OBJ ファイル用のクライアントサイド 3D メッシュ比較ツール

Meshdiff はブラウザ上での視覚的な 3D メッシュの差分表示を可能にします

Meshdiff は、3D モデルの 2 つのバージョンを視覚的に比較するために設計されたクライアントサイドのユーティリティです。STL、3MF、または OBJ 形式の 2 つのファイルをアップロードすると、追加された素材が緑色、削除された素材が赤色でハイライトされる、ボクセルベースの差分マップを生成します。このツールは、体積の差分メトリクスを提供し、比較を精細化するために 0.05mm から 1mm の間で調整可能な許容範囲を提供します。

技術アーキテクチャと実装

Meshdiff は、すべての計算をユーザーのブラウザ内でローカルに実行することにより、プライバシーとパフォーマンスに重点を置いて構築されています。

クライアントサイド処理

データのプライバシーを確保し、サーバーへのアップロードを防ぐために、Meshdiff は Web Worker を使用して差分処理の重い作業を処理します。技術スタックは以下の通りです:

  • React と TypeScript: アプリケーションのフレームワークと型安全性のために使用されます。
  • React Three Fiber: ブラウザでの 3D レンダリングに使用されます。
  • Custom Voxel Diff Engine: 実世界の STL ファイルによく見られる、非多様体(non-manifold)なジオメトリである「triangle soup」を処理するために開発された独自のエンジンです。

ボクセルベースの比較 vs. CSG

Manifold や CGAL のような、正しく機能するためにクリーンで水密な(watertight)トポロジーを必要とする Constructive Solid Geometry (CSG) ライブラリに依存するツールとは異なり、Meshdiff はボクセルベースのアプローチを使用します。これにより、トポロジーのエラーや隙間が含まれていることが多い実世界のメッシュを処理する際に、ツールが堅牢性を維持できることが保証されます。

コミュニティのフィードバックと機能リクエスト

Hacker News のユーザーやコミュニティメンバーは、ツールの使いやすさと統合に関するいくつかの潜在的な機能強化を特定しました:

ビューポートの同期

複数のユーザーから「ロックされたビュー」または「同期されたトランスフォーム」機能のリクエストがありました。これにより、ユーザーが 1 つのビューポートを回転させたりパンしたりすると、他のビューポートも一斉に回転し、モデルの異なるバージョン間での特定の角度からの比較が容易になります。

統合と自動化

プロフェッショナルなワークフローにおいてツールをより有用にするための、CI/CD 統合の提案がありました:

  • GitHub PR Triggers: GitHub Pull Requests のトリガーとして Meshdiff を統合し、、ブランチ間の 3D ファイルの変更を自動的にプレビューできるようにします。
  • CLI Tool: 後で調査するために差分を自動生成するためのコマンドラインインターフェース (CLI) の開発。

バグ報告とエッジケース

一部のユーザーは、現在のバージョンにおける特定の技術的な制限について指摘しました:

  • Multi-group OBJ files: 現在、マルチグループ OBJ ファイルは無視され、最初のグループのみがレンダリングされると報告されました。
  • Duplicate File Warning: 混乱を避けるため、同じファイルを 2 回アップロードした際に警告を表示する機能の追加が提案されました。

"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

Sources