CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender3.1】STLファイルを活用しよう!【CAD・3Dプリンター】

こんにちは!
今回は、フリーの3DCGソフト「Blender」で、「STLファイル」を通じて他の外部ソフトとデータのやり取りをしたり、編集・修正する方法を紹介します。
「STLファイル」を利用して、3D CADなどの外部ソフトで作ったデータをBlenderに取り込んだり、Blenderで作ったモデルを3Dプリントすることができたりといろんな応用ができるので、ぜひ参考にしてみてください!
STLファイルとは?
まず、「STL」ファイル形式について紹介します。
STLとは「Standard(またはStereolithography) Triangulated Language」の略で、三角形要素の集合で三次元形状を表現するファイルフォーマットです(参考:Wikipediaの記事)。
コチラの図のように、1つの要素(「ファセット」(facet)と呼ぶ)は3つの頂点座標と法線ベクトルで定義されます。

STLファイルをBlenderに読み込むと、こんな風に三角形ポリゴンの集合として表示されます。

なお、STLファイルは頂点座標と面法線ベクトルのみのシンプルな形式で、色やテクスチャなどの情報は含まれません。
そういう点では、テクスチャやリグ情報などをもつFBXファイルなどとは対照的です。
ちなみに、「FBXファイル」のインポート/エクスポート方法についてはコチラの記事を参考にしてみてください。

STLの使用用途
STLはデータの構造が簡単であることから、ラピッドプロトタイピング(製品の試作)用の標準フォーマットとして使われています(参考:Wikipediaの記事)。
そのため、STLを使うことで、Fusion360のような3D CADソフトとのデータのやり取りができるほか、Blenderから出力したSTLを使って3Dプリンターで光造形することもできます。

3D CADや、3Dプリンターを活用することで、面白いことがいろいろとできるようになります!
- 3D CADでモデリングしたパーツをBlenderに取り込んで、ハードサーフェスモデリングに使う
- ブーリアン・面取りなどハードサーフェス的な形状は、BlenderよりもCADの方が簡単にモデリングできます!
- 逆に、Blenderで作ったモデルをCADに取り込んで加工することもできます。
- Blenderで作ったモデルを3Dプリンターで印刷してオリジナルフィギュアを製作する
Blenderを使った「ハードサーフェスモデリング」のやり方については、コチラの記事で紹介しているのであわせて参考にしてみてください!

STLのインポート
STLファイルをBlenderにインポートして表示する方法を紹介します!
今回使用したSTLは、Autodesk社の3D CADソフト「Fusion360」で作成したデータをエクスポートしたものです。
Fusion360は、非商用の個人利用に限りますが、機能限定版を無料で使えます。
UIが分かりやすくて、初心者でもすぐ使えるはずなので、ぜひ試してみてください!
アドオンを有効化しよう
STLファイルをBlenderにインポートするためには、内蔵アドオン「STL format」を有効化する必要があります。
トップバーの「編集」→「プリファレンス」→「アドオン」を選択します。
画面右上の検索バーで「STL」と入力して検索すると、「Import-Export: STL format」というアドオンが表示されるので、チェックを入れて有効化してください。

これで、BlenderにSTLファイルをインポートできるようになりました。
ちなみに、アドオンの有効化・インストールする方法についてはコチラの記事にまとめていますので、参考にしてみてください!
STLをインポートしよう
アドオンを有効化したら、トップバーの「ファイル」→「インポート」を選択します。
「Stl(.stl)」という項目があるはずなので選択して、読み込むSTLファイルを選択するとコチラのように3D形状データが読み込まれます。

シェーディングの設定方法
Blender上で、曲面形状・エッジをきれいに表示する(シェーディング)方法を紹介します。
デフォルトだと「フラットシェード」が設定されているため、STLの3角形ポリゴンがそのまま表示されています。
オブジェクトモードで右クリックして「スムーズシェード」を選択します。
このままだと、エッジの部分が歪んで表示されてしまうので、「オブジェクトデータプロパティ」→「ノーマル」→「自動スムーズ」にチェックを入れます。
すると、コチラのように曲面・エッジがキレイに表示されるはずです。

「スムーズシェード」「自動スムーズ」について、詳しくはコチラの記事で紹介しているので参考にしてみてください。

インポートしたSTLを編集する
BlenderにインポートしたSTLファイルを、修復・分割したり、テクスチャを貼ったりなどアレンジしたりする方法を紹介します!
STLを修復する
STLファイルを読み込んだ際に、先ほど紹介した例のようにきれいに表示される場合もありますが、うまく表示されないことがあります。
そのような場合は、以下の方法で修正してみてください!
重複頂点(メッシュが繋がっていない)
コチラのように頂点が重複頂点になっていてメッシュが繋がっていない場合があります。

モデルは、ホンダのS800ウェブプラモ(配布終了)のDXFファイルをお借りしました。
コチラのように、編集モードで「A」で頂点を全選択したあと、「M」でマージ→「距離で」(基本的にデフォルトの0.0001でOKだが、必要に応じて変更)を選択すると、重複頂点がマージされて、メッシュが繋がります。

「頂点をマージ」する方法について、詳しくはコチラの記事を参考にしてみてください。

面がひっくり返っている(反転)
コチラのように一部メッシュの面がひっくり返っていて、きれいにスムーズシェーディングされない場合があります。

このような場合は、「A」でメッシュを全選択し、ヘッダーの「メッシュ」→「ノーマル」→「面の向きを外側に揃える(そろえる)」を選択すると、面の向きが直ります。

「ノーマル(法線)の向き」をそろえる方法については、コチラの記事にまとめていますので、参考にしてみてください。

メッシュの形状が歪んでいる
また、STLが細長いメッシュで分割されているのが原因で、シェーディング結果が歪んでしまう場合があります。

このような場合は、「リメッシュモディファイアー」を使うことで、メッシュ形状を整えて、シェーディングをきれいに表示することができます。
ただし、リメッシュモディファイアーを使うと、メッシュが多くなりすぎて動作が重くなることがありますので、ボクセルサイズを小さくしすぎないように注意してください。

「リメッシュ」「リメッシュモディファイアー」について、詳しくはコチラの記事で紹介しているので、あわせて参考にしてみてください!

部品ごとに分割・分解する
読み込んだSTLファイルのメッシュを、部品ごとに分割・分解したい場合もあると思います。
やり方を簡単に紹介します!
メッシュが細かい場合は、コチラのように「C」キーで塗りつぶし選択すると速いです。
(「Shift+C」で選択解除、「Esc」キーで選択モード解除)



「メッシュの分離」については、コチラの記事で詳しく紹介していますので、あわせて参考にしてみてください。

テクスチャマッピングする
STLファイルにはテクスチャ情報が含まれていないので、Blender上でテクスチャを貼り付ける(マッピング)必要があります。
テクスチャをマッピングすることで、コチラのようにリアルな模様・汚れ・質感を付けてレンダリングできます。

上の例は「UVマッピング」を使っていますが、簡単にやり方を紹介します。
テクスチャサイズは2048px程度が良いと思います。


Blender標準搭載のアドオン「Node Wrangler」を有効にしておけば、「Ctrl+T」で一気にテクスチャ・テクスチャ座標・マッピングを追加できます。
Node Wranglerの使い方等は、コチラの記事を参考にしてみてください。


コチラのように、切り開いたときに出来るだけ平らになるように、エッジに沿って、突起に向かってシームを入れるのがコツです。

UV展開のやり方については、コチラの記事にまとめていますので、あわせて参考にしてみてください。

シームの入れ方など、UV展開のコツ・困ったときの対処法はコチラの記事で紹介しているので、あわせて参考にしてみてください。

UVが歪んでいる場合は、さらにシームを追加していきます。


UV展開が完了したら、ふたたび「Shading」に切り替えて、マテリアルにテクスチャを貼り付けます。
今回はフリーのテクスチャを配布しているサイト「Textures.com」の、コチラのテクスチャを使用しました。
テクスチャを貼り付ける方法については、コチラの記事で紹介しているので参考にしてみてください。

標準搭載アドオン「Node Wrangler(関連記事)」を使うことで、コチラのように「ベースカラー」「メタリック」「ラフネス」「ノーマルマップ」「ディスプレイスメント」を一気に設定できます。

ちなみに、UV展開の作業を楽にしてくれる無料のアドオン「TexTools」もありますので、コチラの記事を参考にぜひ使ってみてください。

また、今回紹介した「UVマッピング」以外にも、「オブジェクトマッピング」など他のマッピング方法が便利な場合もあります。
詳しくはコチラの記事にまとめていますので参考にしてみてください。

インポートしたSTLが表示されない場合
STLファイルをインポートしても「見えない・表示されない」場合は、以下の原因が考えられます。
- インポートしたSTLファイルの座標が、(0,0,0)から遠く離れたところにある
- インポートしたSTLファイルのスケールが大きすぎ/小さすぎて見えない
STLファイルをインポートしたら、まずはアウトライナーを見てインポートしたオブジェクトがあることを確認しましょう。

次に、「オブジェクトプロパティ」の「トランスフォーム」→「位置」を確認して、遠く離れた位置にあるようであれば[X=0,Y=0,Z=0]に設定するとコチラのように表示されるようになります。

また、「/」(スラッシュ)を押しても表示されないようであれば、オブジェクトのスケールが大きすぎてビュー範囲から外れている可能性があります。
その場合は「N」キーでサイドメニューを表示し、「ビュー」→「終了」を非常に大きな数字に設定するとコチラのように表示されるようになります。
オブジェクトが大きすぎ/小さすぎの場合は、「S」キーで拡縮することでスケールを調節できます。

BlenderからSTLをエクスポート/出力する
BlenderからSTLファイルを出力する方法を紹介します。
また、3Dプリンターでの利用を前提に、モデルのサイズ(スケール)を直したり、マクロを使ってモデルのエラーを修正する方法についても紹介していきます!
STLのエクスポート方法
STLをエクスポートするには、先ほど「STLのインポート」で紹介したのと同様に、内蔵アドオン「STL format」を有効化する必要があります。

アドオンを有効化すると、トップバーの「ファイル」→「エクスポート」→「Stl(.stl)」からSTLファイルをエクスポートできるようになります。

コチラのようなエクスポート用の設定画面が開きます。

設定メニューの内容はコチラになります。
- Ascii:チェックをONにすると、プレーンテキスト形式で出力します。
(チェックOFFの場合はバイナリ形式) - バッチモード:「オフ」の場合はすべてを1つのファイル、「オブジェクト」に設定するとオブジェクト毎に個別のファイルに出力します。
- 内容:「選択物のみ」にチェックを入れると、選択されたオブジェクトのみエクスポートします。
- トランスフォーム
- スケール:各頂点の座標値に倍率をかけます。
- シーンの単位:現在のシーンに適用している「単位の倍率」を、出力データに適用します。
「単位の倍率」は、「シーンプロパティ」→「単位」→「単位の倍率」で設定できます。 - 「前方」「上」:出力する座標系の向きを設定します。
出力先のソフトの座標系によって、「Yが上」などに設定する必要があります。
- ジオメトリ:チェックをONにすることで、「モディファイアーを適用」した状態でエクスポートされます。
Blender上の単位はデフォルトでは「メートル」なので、出力先のソフトの単位系に合わせて、コチラの表のように「スケール」または「シーンの単位」を設定する必要があります。
Blender単位系 | 出力先ソフトの単位系 | スケール or シーンの単位 |
メートル | メートル | x 1 |
メートル | センチメートル | x 100 |
メートル | ミリメートル | x 1000 |
メートル | インチ | x 39.37 (=1000÷25.4) |
Blender上の単位を変更する
上に書いたとおりBlenderのデフォルトの単位系はメートルで、3Dプリンターで扱うセンチやミリとは単位が異なるため、サイズ感が把握しにくい場合があります。
出力先ソフトと単位系を統一するために、Blenderの単位系をセンチやミリなどに変更することもできます。
単位系をミリに変更するには、コチラのように「シーンプロパティ」→「単位(Units)」の「単位系(Unit System)」「単位の倍率(Unit Scale)」「長さ(Length)」を変更します。
- 単位系(Unit System):メートル法(Metric)
- 単位の倍率(Unit System):0.001
- 長さ(Length):ミリメーター(Millimeters)
出典:DTPやってみる!~ (75) 【Blender 2.9】 TIPS : mm単位でオブジェクトを編集する。
https://www.dogrow.net/dtp/blog75/
グリッドを1mm単位で表示するには、ヘッダーの「ビューポートオーバーレイ」→「ガイド」→「スケール」を「0.001」に設定します。
出典:DTPやってみる!~ (75) 【Blender 2.9】 TIPS : mm単位でオブジェクトを編集する。
https://www.dogrow.net/dtp/blog75/
単位系を「センチ」に変更する場合は、「単位の倍率」「スケール」を0.01、「長さ」を「Centimeters」に変更することで設定できます。
詳しい方法についてはコチラの記事で紹介されていますので、あわせて参考にしてみてください。
ちなみに、上で紹介した単位系の設定をスタートアップシーンに反映するには、「ファイル→デフォルト→スタートアップファイルを保存」を選択をする必要があります。

Blender UIの「スタートアップシーンのカスタマイズ」については、コチラの記事で紹介していますので、あわせて参考にしてみてください。
ソリッド化する方法
3Dプリンターの仕様によっては、メッシュに厚みを持たせてソリッド化する必要があるそうです。
「ソリッド化モディファイアー」を使用することで、コチラのようにメッシュに厚みを持たせることができます。
元のメッシュ
元画像:code-440 ~ Blenderのモデルを3Dプリンター向けに修正する
ソリッド化モディファイアー追加後
https://code440.github.io/blender-model-to-3dprinter.html
「ソリッド化モディファイアー」について、詳しくはコチラの記事を参考にしてみてください。

3Dプリント用アドオンを紹介!
Blender標準搭載アドオンの「3D-Print Toolbox」を使うことで、簡単に3Dプリンター用のデータのチェックおよび修正ができます。
トップバーの「編集」→「プリファレンス」→「アドオン」から、「Mesh: 3D-Print Toolbox」を有効化します。

アドオンを有効化した後、「N」キーでサイドメニューを表示し、「3Dプリント」のタブを選択すると設定メニューが表示されます。
モデルのチェック
「分析」→「チェック」から「全チェック」を選択すると、穴が開いていないか、面が交差していないかなどのチェック結果が表示されます。

モデルのクリーンアップ
「クリーンアップ」→「多様体化」を選択すると、モデルの穴をふさいだり、面の向きを統一、重複頂点をまとめるといった修正をしてくれます。
ただし、すべてのエラーが解消されるとは限らないので、その場合は手作業で「辺ループをブリッジ(関連記事)」したりなどの修正が必要です。

「3D-Print Toolbox」の使用方法について、詳しい説明はコチラの記事を参考にしてみてください。

まとめ
「STLファイル」を通じて他の外部ソフトとデータのやり取りをしたり、編集・修正する方法を色々と紹介してみました。
STLファイルをBlender上で扱うことに慣れておけば、3D CAD・3Dプリンターとうまく連携できるようになるので、ぜひコチラの記事をしていただければと思います。
最後に、今回のまとめです。
- STLファイルとは?:三角形要素の集合で三次元形状を表現するファイルフォーマット
- STLの使用用途:3DCADソフト・3Dプリンターとデータをやり取りできる
- STLのインポート
- アドオンを有効化しよう:内蔵アドオン「STL format」
- STLをインポートしよう
- シェーディングの設定方法:スムーズシェード&自動スムーズ
- インポートしたSTLを編集する
- STLを修復する:重複頂点・ノーマル・リメッシュ
- 部品ごとに分割・分解する:「P」で分離して「F」で面を張る
- テクスチャマッピングする:UVマッピングなど
- インポートしたSTLが表示されない場合:トランスフォーム座標・スケールを確認
- BlenderからSTLをエクスポート/出力する
- STLのエクスポート方法:内蔵アドオン「STL format」
- Blender上の単位を変更する:シーンプロパティ&ビューポートオーバーレイ
- ソリッド化する方法:ソリッド化モディファイアー
- 3Dプリント用アドオンを紹介!:内蔵アドオン「3D-Print Toolbox」