デザイナーやエンジニアにとって、3Dプリントの準備として3Dモデルを調整、修復、最終化する時にソフトウェアが必要となることがよくあります。幸いなことに、手動プログラミングでメッシュを作成する時代はとっくに終わりました。
最近では、自動と手動の両方でSTLファイルの修復が行える様々なツールがあります。ほとんどの場合は自動修復機能だけで十分で、穴や分離したシェルなどの小さな欠陥は修復が可能です。ただし、モデルに重大な欠陥がある場合には別途ソフトウェアが必要になります。
本ガイドでは、STLファイルの修復手順を説明しながら、モデルを完全に修復して3Dプリント用に準備できるSTL修復ソフトウェアやツールを5つご紹介します。
FormlabsのPreFormなど、高度な造形準備ソフトウェアには自動修復機能が搭載されています。PreFormは無料でダウンロードできます。今すぐお試しください。
正しい3Dプリント方式の選定方法は?
ニーズに適した3Dプリント方式選びでお困りですか?本動画ガイドでは、FDM、SLA、SLSの3方式の比較を行います。購入前の検討材料として、是非お役立てください。
STLファイルに修復が必要な理由
3Dデザイナーは通常、精巧なサーフェシング手法を用いてモデルを作成します。曲線やスプラインで定義された、数学的に「完璧な」ジオメトリを作るのです。3Dプリント用のデータの場合、サーフェスはメッシュ形式に変換され、三角形のフェース(面)やポイント(頂点)の集合体であるジオメトリを表現します。
メッシュ変換とは、例えるなら表面が完全になめらかな鏡を一度粉々に割り、すべての破片を接着剤で貼り合わせて元の形に戻すようなものです。この過程で失敗するとエッジ(辺)や穴、パーツの浮き、余分な三角形が多数重なり合った部分など、多数の欠陥があるモデルが出来上がってしまいます。うまく処理をすれば、穴のない、元の形状と区別がつかない完璧な多様体モデルを作成して3Dプリントできます。
STLファイルの修復方法
一般的なSTLファイルの修復手順は以下の通りです。
-
自動修復:STL修復ソフトウェアのウィザードで、穴や分離したシェル、交差など、主な欠陥の修復を試みます。
-
シェルの分離: メッシュとは、三角形が結合してできた集合体です。複数のサーフェスを連続結合することが理想で、古いサーフェスは削除する必要があります。
-
穴埋め、ブリッジング:包括的な機能を提供するSTL修復ソフトウェアの場合、平面、接線、罫線、自由形状など、さまざまな方法で穴を埋めることができます。
-
重複や交差の修正:この修正を行うには通常、対象範囲でメッシュの再計算が必要になります。
-
面の重複、頂点の重複、法線の反転、細く尖った三角形などをフィルタリングします。
-
開いたエッジや残りの穴をステッチング(縫合)します。
-
三角形を手で削除・作成するなど、手動修復を行います。
-
再メッシュで三角形の数を最適化します。
-
完成したファイルを指定のメッシュ形式へエクスポートします。
最もよく使用されていて、ストレージ容量にも優しいファイル形式はSTL(StereoLiThography)で、本記事の記載内容もこの形式を前提としています。ファイルサイズをさらに小さくするために、.STLファイルはバイナリ形式で保存することをお勧めします。Meshmixerのチュートリアル記事でも説明したように、他にもAMF、Collada、OBJ、PLYなど、使用する材料や色、レンダリング、3Dスキャン、3Dプリントに必要な情報の保存に適した様々なファイル形式があります。
注:FreeCAD、SketchUp、3D Studio Max、Rhinocerosなどのソフトウェア、Willit 3D Print、MakePrintable、3DPrinterOS、SculptGL、Shapewaysなどのオンラインサービスではメッシュ修復機能が提供されています。Formlabsのプリンタをご使用のお客様は、造形準備ソフトウェアのPreFormにAutodesk Netfabbの自動修復機能とパッキング機能が搭載されているため、ファイルをインポートするだけで3Dモデルを準備することができます。通常はこれだけで完全なモデルを準備できるため、より高度な機能が必要な場合以外は別途ソフトウェアは不要です。
STLファイル修復ソフトウェアの比較
機能 | 効率性 | UI | 万能性 | 再メッシュ機能 | 自動修復機能 | 主な機能 | 対象ユーザー | コスト | |
---|---|---|---|---|---|---|---|---|---|
Meshmixer | ★★★★ | ★★★ | ★★★★ | ★★★★ | ★★★★★ | ★★★★ | UI、再メッシュ、自動修復 | 3D Artists | 無料 |
Netfabb | ★★★ | ★★★ | ★★★ | ★★★★ | ★★★ | ★★★ | インフィルサポート | エンジニア | 無料(教育目的) |
Magics | ★★★ | ★★★ | ★★★ | ★★★★★ | ★★★★ | ★★★ | 手動修復 | エンジニア | 有料 |
Blender | ★★★★ | ★★ | ★★ | ★★★ | ★★★★ | ★ | CGアーティスト | 無料 | |
Meshlab | ★★ | ★ | ★ | ★★★★ | ★★★★★ | ★ | 3Dスキャン | 無料 |
当社が調べた中では、STL修復ソフトウェアとして最も優秀なのはMeshmixerでした。インターフェースも使いやすく、メッシュの複雑な欠陥の修復に必要な機能がすべて搭載されています。今後の機能追加にも期待できること、そして無料で使用できることから、Meshmixerがダントツの1位となりました。また、MeshmixerはSTLファイルの編集、セクション全体の再スカルプト、3Dモデルの最適化とファイナライズにも便利なソフトウェアです。詳しくは、Meshmixerチュートリアル:3Dプリント用STLファイル編集に役立つ15のヒントもご覧ください。
AutodeskのNetfabbは、高度な3Dプリント準備機能を備えたエンジニア向けの製品です。
MagicsはSTLファイル修復機能が豊富に搭載されたプロ向けのSTL編集ソフトウェアですが、自動修復後に手作業での修復が必要になるケースが多いため、3位にランクインしました。
Blenderは3Dモデル作成用のソフトウェアで、インターフェースは複雑なものの、メッシュを適切に修復するために必要な機能がほとんど提供されています。
Meshlabは絶対にインストールしておくべき軽量のメッシュ編集ソフトウェアです。ファイル修復機能や使いやすさでは他のソフトウェアに劣るものの、高度な再メッシュスクリプトが使用できます。
高度なSTL修復ソフトウェアのチュートリアル
以下のセクションでは、5つのSTL修復ソフトウェアを実際に検証していきます。この検証では、穴や隙間、交差、浮動三角形など、重大な欠陥がある複雑なコートフックの3Dモデルの修復を行います。フックの部分をシリンダー部分と結合し、最終的に1つの水密メッシュにする必要があります。
ここでは優れたSTL修復ソフトウェアを5つピックアップし、修復プロセスをステップごとにご紹介します。
目次
- Meshmixer
- Meshlab
- Magics
- Blender
- Netfabb
3Dスキャンと3Dプリントをリバースエンジニアリングに活用
本技術資料では、リバースエンジニアリング、修復、デジタルデンティストリー、複製など、業界を問わずさまざまな用途で3Dスキャンと3Dプリントを効果的に活用する方法をご紹介します。
Meshmixer
Meshmixerは万能で使いやすいメッシュ編集ソフトウェアです。三角メッシュを最適化するだけでなく、断面全体を再スカルプトしたり、モデルを最適化したり、便利な機能を追加したりすることも可能です。
Meshmixerにコートフックのファイルをインポートし、Analysis(解析)→Inspector(検証)を実行すると、メッシュの欠陥が全て表示されます。Shaders(シェーダー)でX線モードを選択するとさらに見やすくなります。Hole Fill Mode(穴埋めモード)を選択してから、球体(ハンドル)をクリックして欠陥を1つずつ修正するか、Auto Repair All(すべて自動修正)を実行します。大抵の場合はこれでほとんどの欠陥が修復できます。
他にも、削除したいエリアを選択後、ポップアップメニューでEdit(編集) → Erase and Fill(消去と充填(F))を実行する方法もあります。タイプをSmooth MVCに設定すると、なめらかな仕上がりになります。Edit(編集) → Make Solid(ソリッドの作成)またはEdit(編集) → Replace and Fill(置き換えて充填)でも密閉型のメッシュを作成できます。他にも、RobustSmooth スカルプトブラシを使って修復したエリアをスムーズになじませることができます。
モデルに分離シェルがある場合は、Edit(編集) → Separate Shells(シェルの分離)からObject Browser(オブジェクトブラウザ(Ctrl + Shift + O))を開きます。そのまま1度にシェルを2つずつ選択してBoolean Union(ブール演算で結合)をクリックします。Precise(精緻)またはMax Quality(最大品質モード)では2つのオブジェクトが交わる結合曲線を維持できますが、Fast Approximate(高速概算)の方がはるかに速く品質も十分です。
ブール演算が失敗した場合、オブジェクトが赤色に変わります。その場合、Search Depth(深度の検索)パラメータを高く設定し、Target Edge Scale(ターゲットエッジの高さ)を下げて成功の確率を上げます。Use Intersection Curves(結合曲線の使用)を確認することでも品質を高められます。うまくいかない場合は、Edit(編集) → Transform(トランスフォーム)でシェルの1つを100分の数ミリ程度動かすとうまくいきます。
Auto Repair All(すべて自動修正)では浮いている部分を取り除き、境界ループを全て修復することができます。この例では、支柱の1つにできてしまったギャップを手動で結合します。こういう場合にはBridge(ブリッジ)ツールが役に立ちます。ブリッジツールは直線型のオブジェクトに向いていますが、今回は円形ループの間に空いたギャップを埋めたいので、セクションごとに結合していきます。Edit(編集) → Select(選択)をクリックし、結合したい三角形同士をハイライトします。次にポップアップメニューからEdit(編集) → Bridge(ブリッジ(Ctrl + B))を実行し、Refine(リファイン)を高く設定して結合部分をなめらかにします。ギャップの周辺の数箇所でBridge(ブリッジ)コマンドを繰り返し、Inspector(検証)で残りの穴を埋めていきます。欠陥を防ぐには、修復の前にEdit(編集) → Remesh(再メッシュ)を実行し、心配な部分で三角形分割を行って三角形の数を増やし、均質化しておくと良いでしょう。
Meshlab
Meshlabは3Dスキャンデータのメッシュ操作に特化したソフトウェアで、多数の三角形分割機能や高度な修復アルゴリズムが搭載されています。なかでも、目標とする面の数に合わせて三角形分割するFilters → Remeshing, Simplification and Construction → Simplification(Quadratic Edge Collapse Decimation)が便利です。Planar Simplificationにチェックを入れると、平面部分の品質が上がります。他にも、Filters → CleaningとRepairing → Merge Close Verticesで三角形の数を減らすことができます。
浮いているパーツを検出するには、プロジェクトウィンドウでパーツを右クリックし、Split in Connected Componentsを選択します。分離したシェルは個別に削除するか、Union演算子を使用したCSG Operationで結合し直すことができます。
Meshlabでは基本的なメッシュ修復作業も可能です。例えば、Filters → Cleaning and repairing → Select Self Intersecting Faces → Applyを実行すると交差している三角形がすべて設定され、Deleteで削除できます。Filters → Cleaning and repairing → Remove Duplicated FacesとRemove Duplicated Vertexの削除はいつでも役に立つ機能です。次に、Filters → Remeshing, Simplification and Construction → Close Holesで穴を埋めていきます。Filters → Quality Measure and Computationsの下のCompute Geometric Measuresを実行すると、メッシュが水密かどうかを確認できます。メッシュが水密でない場合、Render → Show Non Manif Edges and Show Non Manif Verticesで修正が必要な部分を確認します。
ギャップを埋めるには、ツールバーのSelect Faces in a Rectangular Regionで三角形のグループを削除します。Altキーを押すと裏面になっている箇所は選択から外すことができ、Shift + Ctrl + Dで選択を解除できます。三角形を個別に選択するにはツールバーのZ-Paintingで赤いブラシアイコンをクリックします。左クリックで三角形を選択、右クリックで選択範囲を消去、deleteで三角形の削除ができます。Meshlabには三角形作成機能がないため、Filters → Remeshing, Simplification and Construction → Surface Reconstruction: VCGの下のサーフェス生成機能を使います。Voxel Sideを十分低く、Geodesic WeightingとVolume Laplacian Iterationsを十分な高さで設定すると、なめらかな多様体メッシュになります。この方法は通常、Filters → Remeshing, Simplification and Construction → Screened Poisson Surface Reconstructionよりも推奨されます。他にも、Alpha Complexを生成してからAlpha Shapeを生成する方法があります。再メッシュについては、Filters → Remeshing, Simplification and Construction → Uniform Mesh Resamplingでボクセライザーが使用できます。
注:重要な操作を行った後は必ずメッシュを保存してください。Meshlabには元に戻す機能がないため、変更を元に戻したい場合は1つ前のメッシュを再インポートする必要があります。
Magics
Materialise Magicsは、肉厚解析、空洞化、再メッシュ、スムージング、ブール演算処理、切断、穴埋め、エッジ修正、複雑な三角形の欠陥の修正など、様々な操作を手動で行うことができるプロ仕様の3Dプリントデータ作成ツールです。
欠陥の修復には通常、赤い十字アイコンの下のFix Wizard(修正ウィザード)を使用します。Go to Advised Step(推奨手順)をクリックすると、診断画面で修復すべき欠陥をチェックできます。大型のメッシュの場合、
Overlapping(重複)三角と交差三角のチェックは外し、先に主要な欠陥を修復します。Update(更新)をクリックし、もう一度Go to Advised Step(推奨手順)からAutomatic Fixing(自動修正)を実行します。これでほとんどの欠陥を修正できます。修正ウィザードでエッジや重複三角が修正されない場合には、Fix Wizard(修正ウィザード)のStitching(ステッチング)の下にあるStitch(ステッチ)機能なら十分な交差設定ができて便利です。重複三角が残っている場合は、修正ウィザードをもう一度実行するか、修正ウィザードメニューの重複セクションから重複の検出を選択します。これで重複三角が全て選択された状態になり、選択範囲を削除でまとめて削除することができます。また、交差三角についても三角形 → 交差の検出で同じ操作を行うことができます。残りのギャップを結合しても修復が完了しない場合、作成ボタンをクリックすると手動でギャップを埋めることができるようになります。メインメニューの
選択タブでメッシュセクションを手動で選択することもできます。フローティングセクションは、ノイズシェルセクションで削除できます。非平面に大きな穴が開いている場合は、修正ウィザードの穴埋めから自動形状オプションを使って手動で穴埋めをすると、なめらかな仕上がりになります。Ruled(罫線)オプションでは穴の方向を指定することができます。この例では、手動でブリッジング用の三角形をいくつか作成した後に、罫線オプションを使って花の雄しべに開いてしまった円筒形のギャップを埋めています。Fix Wizard(修正ウィザード)ではシェルを結合できないことがあります。これを修正するには、メイン画面のParts Pages(パーツページ) → Part List(パーツリスト)でパーツを右クリックし、Shells to Parts(シェルからパーツへ)を選択します。これで別々のメッシュが作成されるので、Tools(ツール) → Boolean(ブール演算(Ctrl + B))機能にチェックを入れると結合できるようになります。
Blender
Blenderは、3Dモデル作成、リギング、レンダリング、アニメーションなど、無料で様々なメッシュ作成機能が使用できるオープンソースのソフトウェアです。画面下部のツールバーのMesh(メッシュ)メニューからEdit Mode(編集モード)を選択すると、様々なSTL修復機能が利用できます。アドオンのCellBlenderを追加すると、Mesh Analysis(メッシュ解析)でモデルが多様体かどうかを確認できます。修復対象とするメッシュまたはセクションが選択されていることを確認したら、修復スクリプトを開始します。
Mesh(メッシュ) → Normals(ノーマル) → Recalculate Outside(面の向きを外側に揃える(Ctrl + N))で、法線が反転している三角形の向きを修正できます。修正結果は上部の情報ペインで確認でき、四角形が作成されてしまった場合にはMesh(メッシュ) → Faces(面) → Triangulate Faces(面を三角化(Ctrl + T))で三角形に変換できます。 Mesh(メッシュ) → Degenerate(削除) → Dissolve(溶解)では、面積のない辺と面を削除できます。Mesh(メッシュ) → Vertices(頂点) → Remove Doubles(重複頂点を削除)で重複した頂点を取り除き、辺を結合します。
Blenderで最も簡単に穴埋めをする方法は、まずSelect(選択) → Select Boundry Loop(境界ループを選択)または、Select(選択) → Select All by Trait(特徴で全選択) → Non Manifold(非多様体(Shift + Ctrl + Alt + M))で非多様体の辺を全て選択します。その後、Mesh(メッシュ) → Faces(面) → Make Edge/Face(辺・面を作成(F))、またはMesh(メッシュ) → Faces(面) → Fill(充填(Alt + F))で穴埋めをします。個々の三角形を作成したい場合は、辺または頂点を右クリックし、2つ目の辺をShift + 右クリックした後にFキーを押すことで作成が可能です。編集中に、ツールバーの3つのアイコンをクリックしてVertex Select(頂点選択)、Face Select(面選択)、Edge Select(辺選択)モードを切り替えると便利です。特定の領域を選択するには、Select(選択) → Circle Select(円選択(C))でブラシ選択と同じような操作が可能です。ブラシサイズはマウスホイールか数値のプラス/マイナスボタンで変更できます。選択を解除したい場合はShiftキーを押しながら解除したい箇所をクリックします。Mesh(メッシュ) → Faces(面) → Beauty Faces(面を最適化(Shift + Alt + F))で選択範囲の品質を向上させることができます。個々の境界ループはAlt + 右クリックで選択できます。開いた状態の境界ループを2つ選択し、Mesh(メッシュ) → Edges(辺) → Bridge Edge Loops(辺ループのブリッジ)を実行するとなめらかに結合できます。
Mesh(メッシュ) → Vertices(頂点) → Separate(分離) → By loos parts(構造的に分離したパーツ)を実行すると、プロジェクトブラウザでシェルごとに1つのオブジェクトが作成されます。これにより、不要なメッシュオブジェクトを削除することができます。分離したシェルはBoolean Modifier(ブーリアンモディファイア)で結合できます。うまくいかない場合はRemesh Modifier(リメッシュモディファイア)でオクツリー深度を8程度にするか、満足のいく仕上がりになるまでこの値を増やします。特定の部分に厚みを加えるには、Sculpt Mode(スカルプトモード)に変更し、下部メニューのBrush(ブラシ) → Sculpt Tool(スカルプトツール)からインフレートブラシを選択します。
Netfabb
Autodesk Netfabbは高度な3Dプリントファイル作成ツールで、この自動修復機能はFormlabsのPreFormなどの造形準備ソフトウェアにも組み込まれています。Standard版、Premium版、Ultimate版があり、教育目的の場合はStandardとPremium版が無料で利用できます。
Netfabbには、空洞化、カスタムのサポート生成、軽量パーツの開発に役立つLattice Assistant(ラティスアシスタント)とLattice Commander(ラティスコマンダー)など、高度なメッシュ編集機能が搭載されています。Ultimate版では、FEA Analysis(FEA解析)で荷重に基づいてパーツを構造的に最適化できるOptimization Utility(最適化ユーティリティ)が利用できます。
File(ファイル) → Import CAD File as Mesh(CADファイルをメッシュとしてインポート)では、さまざまなファイル形式からメッシュモデルをインポートできるだけでなく、Catia、Siemens NX、SolidWorks、SolidEdge、Rhinoceros、ProE、SketchupのネイティブファイルやSTEP、IGES、SAT、Parasolid XTファイルにも対応しています。メッシュをインポートするには、File(ファイル) → Add Part(パーツを追加)をクリックし、ダイアログでExtended Repair(自動メッシュ修復)にチェックを入れます。これにより、ほとんどの欠陥が修復されて3Dプリント可能なファイルになります。
修復ジョブを開始する前に、パーツを解析しておくと便利です。タスクバーのAnalysis(解析)アイコン、またはParts(パーツ) → Analysis(解析) → New Analysis(新しい解析) → Add Parts(パーツの追加)でパーツを右クリックし、肉厚を素早くチェックすることができます。パーツを右クリックし、Analyse(解析) → New Measurement(新規測定)を選択するか、タスクバーの定規アイコンで特定箇所の線形、半径、角度、肉厚を測定することができます。
タスクバーで赤色の修復アイコンをクリックし、Part Repair(パーツ修復)セクションを開きます。インポート時に自動修復スクリプトでうまく修復できた場合、Status(ステータス)タブのMesh is Closed(水密メッシュ)とMesh is Oriented(メッシュの方向づけ)にそれぞれ緑色のチェックがつきます。交差三角がある場合は、Actions(アクション)タブでファイルをさらに最適化することができます。Self Intersections(自己交差)でDetect(検出)を選択し、デフォルトの穴埋めを行うTrivial(トリビアル)、Stitch Triangles(三角形のステッチ)、Remove Double Triangles(重複三角の削除)、Remove Degenerate Faces(縮退した面を削除)、Split Off(分離)のいずれかを選択し、交差箇所をRemove(削除)します。Wrap Part Surface(パーツのサーフェスを覆う)はボクセル化処理と同様、外側を多様体だけで覆います。また、Shells(シェル)タブでノイズシェルが存在しないことを確認します。
ギャップを埋めたい場合、Netfabbでは穴埋め処理になるのでさらに手作業での修復が必要になります。メインツールバーでSelect Surfaces(サーフェスを選択)アイコンをクリックし、穴全体を選択してDelete(削除)を実行します。または、Brush Selection(ブラシ選択)ツールを使用することもできます。Ctrl + マウスホイールまたはプラス/マイナスボタンでブラシのサイズと選択範囲を変更できます。三角形を選択した状態でRemove Selected Triangles(選択した三角形を削除)アイコンをクリックして三角形を削除し、Add Triangles(三角形を追加)で不足分やブリッジング用の三角形を手動で追加します。Repair(修復) → Close all Holes(全て穴埋め)でメッシュの修復が完了です。最後に、Mesh Edit(メッシュの編集) → Remesh(再メッシュ)コマンドでTarget Edge Length(ターゲットエッジの長さ)の値に基づいてモデルを再計算し、メッシュをさらに精巧化することができます。Maintain Edge(エッジを維持する)オプションにチェックを入れると、シャープなエッジ周りの完全性が最適化されます。
工業品質の3Dプリントを始めましょう
あなたの考えたデザインを現実にするツールをお探しですか?高精度なSLA光造形方式およびSLS(粉末焼結積層造形)方式方式の3Dプリンタなら、高速かつコスト効率よく、滑らかな表面品質と高度なディテールを同時に実現するモデルを造形できます。
3Dプリンタの詳細は以下でご確認ください。また、FormlabsのSLA方式3Dプリンタでプリントした無償サンプルパーツをリクエストして、その品質を直接ご確認ください。