fc2ブログ

MeshmixerでSTLファイルを分割する

Autodesk社のMeshmixerを使って、ネットからダウンロードしたSTLファイルを分割してみます。
STLファイルを編集できるツールであればどれを使ってもいいのでしょうが、Meshmixerにはモデルを分割するのに便利な機能があるので、これを使ってみました。少なくともFusion 360やBlenderを使うよりは楽です。
なお、このアプリは無料の上にとても便利ですが、よく落ちるのと、「元に戻す」操作でデータが壊れることがあるので、こまめな保存が必須です。

今回分割したのは、thingiverseの「Daniel 's swimming suit girl」(http://www.thingiverse.com/thing:980315)です。このデータはオリジナルのモデルを出力しやすいように分割してあるようですが、私の環境では上手く造形できませんでした。

そこで、私の3Dプリンタで造形できそうもないリボンを除去した後、改めてさらに細かくモデルを分割してみました。

インストール
[1] Autodesk社のMeshmixerのWebページにアクセスします。
MeshmixerのWebページ
MeshmixerのWebページ
http://www.123dapp.com/meshmixer
[2] 「Free download」をクリックすると、インストーラをダウンロードできる場所に移動するので、対応するOS用のインストーラをダウンロードします。ここでは、Mac OS X版をインストールします。

[3] 「pkgファイル」がダウンロードされるので、ダブルクリックしてインストーラを起動してMeshmixerをインストールします。

STLファイルのインポート
[1] Meshmixerを起動します。初回起動時には、EULA(エンドユーザー使用許諾契約)への同意を求められるので、自己責任で同意するかどうか決めます。(同意しなければ、アプリは使えません)
Meshmixerの画面
Meshmixerの画面
[2] 「ファイル」→「インポート」メニューを選択して、編集したいSTLファイルをインポートします。(または、画面上の「インポート」ボタンをクリックします)
今回は、「Daniel 's swimming suit girl」(http://www.thingiverse.com/thing:980315)に含まれている、「ori_fixed.stl」を編集しました。
「ファイル」→「インポート」メニューを選択して、STLファイルをインポート
「ファイル」→「インポート」メニューを選択して、STLファイルをインポート
[3] インポートしたモデルが表示されます。今回は、何やらものすごくズレた場所にインポートされたようですが、操作に影響はないので、このまま作業を進めました。
インポートされたモデル
インポートされたモデル
画面の表示は、
  • 拡大縮小:ホイールボタンの回転
  • 視点の移動:ホイールボタンのドラッグ
  • 視点の回転:右ボタンのドラッグ
で操作できます。

不要部分の除去(リボンの除去)
編集対象の美少女フィギュア風モデルには、3カ所にリボンの造形がありますが、私の3Dプリンタでは十分な精度で造形できないため、除去することにしました。
いろいろな方法がありそうですが、ここでは、
  • リボンとそれ以外の場所を区別できるように表面をグループ化
  • リボンの造形部分の表面を選択
  • 選択した表面を削除
  • 表面にいた穴を修復
  • 表面の修正
という手順で行なってみます。

(1)表面のグループ化
モデルの一部を削除したり分割するには、該当部分の表面を選択します。
そのため、モデルの表面を、適切な大きさのグループ(フェース グループ)に分割しておくと、簡単に選択できて便利です。

[1] 「編集」アイコンをクリックし、「フェース グループを生成」メニューを選択します。
「編集」→「フェース グループを生成」メニューを選択
「編集」→「フェース グループを生成」メニューを選択
[2] 「フェース グループ」ダイアログが開くので、表面が適切なグループに分割されるように、パラメータを設定します。
表面を適切にグループ化できる設定で、「適用」ボタンをクリック
表面を適切にグループ化できる設定で、「適用」ボタンをクリック
「Mode」では、分割方法を次の2つから選びます。
  • Edge Angle:エッジの角度を基準に分割
  • Normal Angle:表面の法線の角度を基準に分割
グループは、以下の値を基準に生成されます。
  • 角度のしきい値:この値以上に角度が変化する部分をグループの境界と見なす
  • Size Thresh:グループの面積の最小値
これらの値を変更すると、表面のグループがリアルタイムで変化します。値は、数値の部分をクリックすることで直接入力することもできます。

[3] 「フェース グループ」ダイアログの「適用」ボタンをクリックして、フェイス グループを確定します。

(2)表面の選択
削除や分割したい部分の表面を選択します。

[1] 「選択」アイコンをクリックすると、モデル表面を選択できる状態になります。
「選択」アイコンをクリックして、選択モードに移行
「選択」アイコンをクリックして、選択モードに移行
[2] 選択したいフェース グループをマウスの左ボタンでダブルクリックして選択します。
ダブルクリックで、リボンの4つのフェース グループを選択
ダブルクリックで、リボンの4つのフェース グループを選択
画面を拡大や回転して、該当するフェイス グループを選択していきます。
表面の一部が選択されている状態になると、左上に「編集...」「変換...」「変形...」「修正...」メニューが表示されます。

[3] フェイス グループの選択で済めばベストですが、グループ単位での選択が難しい部分や、選択しすぎた部分があるでしょう。画面を拡大や回転しならが、それらを手動で追加選択したり、選択解除します。

操作は、モデルの表面上でマウスの左ボタンをドラッグして行ないます。
  • 選択:左ボタンをドラッグ
  • 選択解除:SHIFTキーを押しながら左ボタンをドラッグ
(モデルの表面以外の部分からドラッグ操作を開始すると、別の選択方法になるので、注意)
一度に選択(選択解除)する領域は、「選択」ダイアログの「サイズ」で調整します。

必ずしも表面を完璧な選択状態にする必要はなく、多少の漏れや選択しすぎなどがあっても後で修正できます。

(3)表面を削除
選択したリボン部分を完全に取り去りたいので、選択した表面を削除します。

[1] 「編集...」→「破棄」メニューを選択します。
「編集...」→「破棄」メニューを選択
「編集...」→「破棄」メニューを選択
[2] 表面の選択部分が削除されます。
削除した部分に穴が開いている
削除した部分に穴が開いている
この操作は、文字通り、選択部分の削除だけが行なわれます。削除部分に穴が開き、選択から漏れた片面しかない不思議な物体が空中に浮いたりしているのが分かります。

(4)表面の修復
モデルの表面に穴が開いていると、3Dプリンタで造形できません。
穴が開いた表面を修復します。

[1] 「解析」アイコンの「検証」メニューを選択します。
「解析」アイコンの「検証」メニューを選択
「解析」アイコンの「検証」メニューを選択
画面上に、修復の必要がある部分が表示されます。

[2] 修復方法を選択して、「すべて自動修復」ボタンをクリックします。
修復方法を選択して、「すべて自動修復」ボタンをクリック
修復方法を選択して、「すべて自動修復」ボタンをクリック
修復方法は「Hole Fill Mode」で選択します。
「小さなしきい値」は、修復されるときの影響の大きさを指定します。

修復方法は、「最小限の埋め」「フラットな埋め」「スムーズな埋め」の3種類ありますが、「小さなしきい値」を値を含めて、実際にどのような結果になるかは、試して確認するしかないようです。

[3] 表面に開いた穴が埋まり、空中のゴミが削除されました。
穴が埋まり、表面が修復された
穴が埋まり、表面が修復された
3カ所のリボンをすべて、同じ手順で削除していきます。

(5)表面の修正
「自動修復」で、完璧に修正されれば問題ないのですが、表面に大きな凸凹など、望ましくない形状が生成されることがあります。これをMeshmixerのスカルプト機能で修正します。スカルプト機能は、粘土のようにオブジェクトを造形できる機能です。

以下は、修正前のリボンを除去した跡です。
修正前のリボンを除去した跡
修正前のリボンを除去した跡
スパイクのような細かな突起や大きな凹みがあるので、これを修正してみます。

[1] 「スカルプト」アイコンをクリックし、いちばん上のスイッチを「ボリューム」側に入れます。

[2] 「ブラシ機能」を使って、表面形状を作っていきます。
変形させたい場所でマウスの左ボタンを押すと、選択しているブラシの機能に従って、表面が変形します。同じ場所で長く押しているほど、ブラシ機能が強く作用します。
「ブラシ機能」を使って、表面を修正する
「ブラシ機能」を使って、表面を修正する
ブラシは、
  • 凸部分を平らにするとき:フラット化
  • 凹部分を持ち上げるとき:膨張、描画
などを使うとやりやすいようです。

[3] 表面が望みの形状になるまで、フラット化と膨張・描画を繰り返します。
フラット化と膨張・描画を繰り返し、凹凸を修正した
フラット化と膨張・描画を繰り返し、凹凸を修正した
以上で、モデルの不要部分(リボン)を除去できました。

モデルの分割(手足、頭部、胴体の分割)
このままの形状を、私の3Dプリンタで造形するのは困難なので、造形しやすい形状に分割します。
今回は、右手、左手、右足、左足、頭部、髪の房、胴体(上)、胴体(下)の8つに分割しました。

基本的な手順は、リボンの除去と同じで、
  • 分割したい表面を選択
  • 編集→分離で、選択部分を別オブジェクトに分割
  • 表面に空いた穴を塞ぐ
となり、「破棄」ではなく「分離」する点が異なります。

表面の選択は、表面のグループ化(フェース グループ)や手作業でもいいのですが、モデルを分割する切り口は平面にしておいたほうが、組み立て時に便利だと思います。

ここで編集している「Daniel 's swimming suit girl」(http://www.thingiverse.com/thing:980315)のデータでは、モデルの水着と肌の境など、エッジ部分で分割しています。分割面は複雑な曲面になっています。確かにエッジ部分で分割すれば、正確に造形できれば、分割線が表面に出ないでしょう。

しかし、ホビー用の3Dプリンタでは、面を正確に出力するのは困難です。積層は0.2mmとか0.1mm間隔で、ノズルは0.4mmとか0.3mmの太さがあり、移動精度もよくて0.1mmくらいです。結局、出来上がる造形物は0.5mm程度の精度しかないので、分割したパーツを組み合わせるには、分割面を削ったりパテを盛ったりする修正作業が避けられません。そうであれば、分割面を修正しやすい平面にしておいたほうが、最終的には手軽かつ綺麗に作れるはず。

(1)モデル表面を平面でグループ化
というわけで、平面でモデル表面にグループ(フェース グループ)を作ります。

[1] 「編集」アイコンをクリックし、「面でカット」メニューを選択します。
「編集」→「面でカット」メニューを選択
「編集」→「面でカット」メニューを選択
[2] 「Plane Cut」ダイアログが開くので、「Cut Type」で「Slice Groups」を選択します。
表示されたハンドルをマウスで操作して、平面を移動や回転し、表面のカットしたい位置に平面を置きます。または、モデルを横切るようにマウスの左ボタンをドラッグすると、その線に沿うように平面が移動します。

平面を移動できたら、「適用」ボタンをクリックします
平面を移動して、「適用」ボタンをクリック
平面を移動して、「適用」ボタンをクリック
平面は無限の広がりがあるので、無関係な部分も分割されることがあります。上の例では、太ももだけでなく、脛でも分割されていますが、表面にフェース グループを作るだけなので、あまり気にする必要はありません。(「Cut Type」で「Slice Groups」を選択したため)

[3] 「選択」アイコンをクリックし、分割線したい部分のフェース グループをマウス左ボタンでダブルクリックして、すべて選択します。
分割したい部分の表面を選択
分割したい部分の表面を選択
左足を選択しています。

(2)一定範囲の表面をまとめて選択
複数の場所をまとめて選択したいときは、モデルの外側からモデルを横切るようにマウス左ボタンをドラッグすると、その内側がまとめて選択されます。このとき、SHIFTキーを押しながらドラッグすると、領域を追加選択できます。
赤い線の内側が選択される
赤い線の内側が選択される
上の例では、リボンを除去した部分だけ別のフェース グループになっていて、個別に選択するのが手間だったため、SHIFTキーを押しながらマウスをドラッグして、赤い線の下側の領域を追加選択しています。

(3)モデルを分割
選択した領域を分割して、新しいオブジェクトにします。

[1] 分割したい表面を選択した状態で、「編集...」→「分離」メニューを選択します。
「編集...」→「分離」メニューを選択
「編集...」→「分離」メニューを選択
[2] 自動的に「オブジェクト ブラウザ」画面が表示されて、選択部分が別オブジェクトになります。分離されたオブジェクトの名前は「……(part)」などになっているので、名前をダブルクリックして分りやすい名前に変更しておきます。
分離した部分が、新しいオブジェクトになった
分離した部分が、新しいオブジェクトになった
「オブジェクト ブラウザ」画面では、編集やエクスポートするオブジェクトの選択や、画面上での表示/非表示などができます。
非表示状態のオブジェクトを選択すると、半透明で表示される
非表示状態のオブジェクトを選択すると、半透明で表示される
分離したオブジェクトは切り離し面に穴が空いているので、リボンを除去したときと同じ方法で、両方とも修復しておきます。

オブジェクトのエクスポート
すべての部分を分割したら、STLファイルとして出力します。

[1] 「オブジェクト ブラウザ」画面で、出力したいオブジェクトを選択します。
その状態で、画面左側の「エクスポート」アイコンをクリックします。または、「ファイル」→「エクスポート」メニューを選択します。
出力するオブジェクトを選択して、「エクスポート」アイコンをクリック
出力するオブジェクトを選択して、「エクスポート」アイコンをクリック
[2] 「メッシュのエクスポート」ダイアログが表示されるので、「ファイルの種類」から「STL Binary Format (*.stl)」を選び、ファイル名を入力して、「保存」ボタンをクリックします。

[3] 出力したいすべてのオブジェクトについて、[1][2]の手順を繰り返せば、分割したモデルデータが完成です。

コメント

非公開コメント