STLファイルの反転した法線を修復
裏返しの面を自動検出し、法線の向きを修正して、メッシュが正しくレンダリング・印刷されるようにします。
面法線とは?
STLメッシュの各三角形には面法線があります。これは三角形の表面に垂直なベクトルで、どちら側が「外側」かを示します。面法線は2つの重要な目的を果たします:
- レンダリング — 3Dビューアは法線を使って照明を決定します。法線が反転した面は間違った側から照らされ、黒く見えたり不可視になったりします。
- スライシング — スライサーは法線を使ってモデルの内側と外側を判定します。反転した法線はスライサーにオブジェクトの領域を反転させる原因になります。
法線が反転する理由
ミラーリングとスケーリング
オブジェクトを平面でミラーすると、すべての面の頂点順序が逆転します。ソフトウェアが自動的に法線を補正しない場合、モデル全体が裏返しになります。負のスケーリングも同じ効果を持ちます。
ソフトウェア間のインポート
異なるCADおよびモデリングツールは頂点順序に異なる規約を使用します。あるプログラムからエクスポートして別のプログラムにインポートすると、不整合が生じる可能性があります。
手動メッシュ編集
メッシュを手動で修正する際 — 面の押し出し、ジオメトリの削除と再構築 — 不整合な頂点順序の面を誤って作成しやすくなります。
反転した法線の見分け方: モデルが部分的に透明に見える、照明されるべき場所に暗いパッチがある、または3Dビューアで「裏返し」に見える場合、反転した法線が最も可能性の高い原因です。
JustFixSTLが法線の向きを検出・修復する方法
1
整合性パス
シード面から始めて、アルゴリズムは共有エッジを通じて伝播し、隣接する面が互換性のある巻き順序を持つことを確認します。
2
符号付き体積による方向付け
法線を整合させた後、ツールはメッシュの符号付き体積を計算します。法線が外向きなら体積は正、内向きなら負です。負の場合、メッシュ全体が裏返しなので、すべての面をまとめて反転させます。
3
コンポーネントごとの処理
メッシュに複数の切断されたコンポーネントがある場合、符号付き体積テストは各コンポーネントに独立して適用されます。
反転した法線の一般的な症状
- 3Dビューアの黒いパッチ — 間違った側から照らされた面。
- モデルが中空または裏返しに見える — 外側を通して内部面が見える。
- スライサーが反転した充填を表示 — 充填がモデル境界の外側に表示される。
- 特定領域の壁の欠落 — スライサーが反転した面を裏側として解釈する。
- ゲームエンジンのレンダリングアーティファクト — Unity、Unrealなどでの照明・影エラー。