STLメッシュの穴をオンラインで埋める
3Dメッシュのギャップや開いた境界を閉じて、水密で印刷やシミュレーションに対応できる状態にします。
メッシュの穴とは?
メッシュの穴とは、3Dモデルの表面にある開口部のことです。三角形のシェルが欠けている領域で、境界エッジ(2つではなく1つの三角形にのみ属するエッジ)が残されています。これらの境界は欠落領域の周りに閉じたループを形成し、布に開いた穴の縁のようなものです。
メッシュが水密であるためには — つまり開口部なく完全に体積を包み込むためには — すべてのエッジが正確に2つの面で共有されている必要があります。たった1つの境界エッジでもメッシュに穴があることを意味し、そのモデルは3Dプリント用に確実にスライスすることも、閉じた体積を必要とするシミュレーションに使用することもできません。
メッシュに穴ができる理由
メッシュの穴は多くの原因から発生します。原因を理解することで、自動修復が適切かどうか、またはソースに戻る必要があるかを判断できます。
部分的なエクスポート
CADやモデリングソフトウェアからエクスポートする際、選択エラーやエクスポート設定により、モデルの一部のみがファイルに書き込まれることがあります。オブジェクトの底面が欠けていたり、内部の特徴が不完全だったりする場合があります。これはアセンブリをパーツごとにエクスポートする場合に特に多く見られます。
ブーリアン演算の失敗
ブーリアン演算(和集合、差集合、交差)はメッシュベースのツールでは不安定なことで知られています。2つの表面がほぼ一致している場合やかろうじて接触している場合、ブーリアンアルゴリズムが結果を正しく閉じることができず、交差の継ぎ目にギャップが残ることがあります。
3Dスキャンアーティファクト
3Dスキャナーは点群をキャプチャし、それがメッシュに再構成されます。スキャナーが見ることができなかった領域 — 遮蔽された領域、暗い表面、反射材料 — ではデータが欠落します。再構成アルゴリズムは情報がない場所に穴を残します。
メッシュ編集ミス
クリーンアップ中に面を削除したり、モデルの部品を分離したり、再接続せずにエッジカットを行ったりすると、穴が生じることがあります。複雑な編集セッションでは、小さな穴は見落としやすいです。
ファイルの破損
切り詰められたまたは破損したSTLファイルは、ファイルの末尾に面データが欠けている場合があり、大きな開いた境界を持つ部分的なメッシュになります。
穴埋めの仕組み
JustFixSTLは、メッシュの穴を検出して埋めるために複数段階のプロセスを使用します:
境界ループの検出
アルゴリズムはすべての境界エッジ(隣接する面が1つしかないエッジ)を特定し、それらを閉じたループにトレースします。各ループは1つの穴の縁を表します。境界エッジが閉じたループを形成しない場合は、まず解決すべきより深刻なトポロジー上の問題があることを示しています。
ループ分析
各境界ループの頂点数、面積、形状が分析されます。小さな穴(少ない頂点)は簡単に埋められます。より大きく複雑な穴は、重複または退化した面の作成を避けるために、より慎重な三角分割が必要です。
ファン三角分割
各境界ループに対して、アルゴリズムは開口部を閉じるための新しい三角形を生成します。単純な穴は中心点からのファン三角分割またはイヤークリッピング法で埋められます。新しい面は周囲の表面法線に合わせて方向付けられます。
法線の整合性チェック
埋めた後、新しい面の法線がメッシュの残りの部分と整合していることが確認されます。方向が間違った充填面は、穴が引き起こすのと同じレンダリングやスライスの問題を再発させます。
穴を自動的に埋められる場合
自動穴埋めは以下の状況で最も効果的です:
- 小さな穴 — 周囲のジオメトリが充填のための明確なコンテキストを提供する、いくつかの欠けた面。
- 平面または準平面の穴 — 平らな表面に置くように設計されたオブジェクトの欠けた底面のような、平らな開口部。
- 明確に定義された境界 — 境界ループが頂点間の適切な角度を持つきれいな閉じたパスを形成している。
- スキャンアーティファクト — 欠落領域が比較的平坦または緩やかに湾曲している3Dスキャンデータの小さなギャップ。
自動充填が理想的でない場合
自動穴埋めが技術的には正しいが幾何学的に不満足な結果を生む場合があります:
- 非常に大きな穴 — モデルの大部分が欠けている場合、充填は期待される曲率に従うのではなく、ギャップを横切って平坦になります。メッシュは水密になりますが、充填された領域は正しく見えない場合があります。
- 複雑な曲面 — 湾曲した領域の穴を横切る平坦なファン三角分割は、目に見えるファセットパッチを作成します。これは印刷には問題ありません(表面は閉じています)が、視覚的に目立つ場合があります。
- 意図的な開口部 — 花瓶、チューブ、ハウジングなど、意図的な開口部を持つモデルもあります。これらを埋めると設計意図に反します。穴を埋めたくない場合は、ソースモデルに戻る必要があるかもしれません。
- 非多様体の境界 — 境界エッジが非多様体ジオメトリの一部である場合、穴埋めだけでは機能しません。非多様体の問題をまず解決する必要があります。JustFixSTLは穴埋め前に非多様体の修復を行うことでこれに対処します。
穴と他のメッシュ欠陥の違い
穴と類似して見える可能性のある他のメッシュ問題を区別することは重要です:
- 非多様体エッジは穴ではありません — 3つ以上の面で共有されるエッジです。異なる症状を引き起こし、異なる修復戦略が必要です。非多様体STLファイルの修復を参照してください。
- 反転した法線は、3Dビューアでメッシュに穴があるように見せることがあります(バックフェースカリングにより誤った向きの面が非表示になる)が、実際には面は存在しています。反転した法線の修復を参照してください。
- 自己交差は穴を作りませんが、類似したスライスエラーを引き起こす可能性があります。メッシュは閉じていますが、表面が自身を通過しています。