STLを出力したくて震える
前回、前置きになぜRhinocerosなのかを語っているうちに本題にたどり着くことができなかった。Rhinocerosを清水の舞台から飛び降りる覚悟で購入したのは3Dプリンターで出力できる3Dデータを作成するためであった。多くの3DプリンターではSTLやOBJ形式のファイルをスライサーでスライスしてGコードに変換し、それを以て出力を行う。3Dプリント用のファイル形式としてはSTLが一般的に多く利用されていると思う。OBJ形式等にも対応しているケースがあるが、STL形式が事実上のスタンダードになっている。よって、Rhinocerosでモデリングした3Dデータを3Dプリンターで使用するにはSTLでエクスポートすればよい。だがこれがなかなかめんどくさかった。DesignSparkMechanicalを使用していた時は、何も考えずに出来上がった3Dデータを保存するときにSTLにエクスポートを選択すればよかった。それだけでエラーなく3Dプリンターで出力できるSTLの出来上がりだった。Rhinocerosでも当然同じだろうと何も考えずにSTLへエクスポートしようとすると、なんと保存しようとしているモデルはラピットプロトタイピングには向いてないと警告が表示される。Rhinocerosが言うラピットプロトタイプ向きのデータを出力するためにはいくつかの手順を踏まなければならない。
Rhinocerosからの警告
Rhinocerosではサーフェイス(面や曲面)を作成し、サーフェイス同士をくっつけてポリサーフェイスにして、立体的に閉じたポリサーフェイスによってソリッドを作ることで立体物を作っていくサーフェイスモデラーである。STLでエクスポートするためには、作ったソリッドを形成するポリサーフェイスを選択した状態で”ファイル”→”選択オブジェクトをエクスポート”を実行する。
エクスポートウィンドウで、”ファイル名”に任意のファイル名を入力し、”ファイルの種類”に”STL(Stereolithography)(*.stl)”を選択して、保存をクリックする。
STLエクスポートオプションウィンドウが表示されたら、”バイナリ”か”アスキー”か好きな方を選んで、”開いたオブジェクトをエクスポート”と”常にこれらの設定を使用。今後このダイアログを表示しない。”にチェックが入っていない事を確認して、OKボタンをクリックする。
これで問題なくエクスポートされるモデルもあるだろうが、今回はなんと以下のような警告が表示された。
ここで”とりあえずビール”みたいなノリで、”とりあえずエクスポート”を選択するとエクスポート自体はできてしまう。STLエクスポートオプションウィンドウで”開いたオブジェクトをエクスポート”を選んでいても同様だ。しかし、そのようにして出力したSTLを使ってスライスしようとするとエラーが出たり、スライスできても3Dプリント時に失敗しやすいデータになってしまう。別途STL修正用のソフトウェアを使って修正してもいいが、せっかく高価なRhinocerosがあるのだ。それを使わない手は無い。”ヘルプ”をクリックすると、ラピットプロトタイピング向きのデータを出力するにはどうすればいいかのヘルプページが表示される。そのヘルプの手順を使ってデータチェックして修正してみる。
RhinocerosでSTL出力をするための手順
ヘルプの内容をまとめるとRhinocerosでラピットプロトタイプ向きのSTL出力するためには、ソリッドからメッシュを作成して、メッシュの結合、メッシュのウェルド、メッシュ法線方向の統一を行った後に、ウェルドされていないメッシュエッジ点が無いか確認して、やっとこさSTL出力を行うことができる。では実際にやってみよう。まず、”メッシュツール”タグの”サーフェイス/ポリサーフェイスからメッシュを作成”をクリックして、STL出力したいソリッドを形成するポリサーフェイスを選択してEnterキーを押す。
すると、ポリゴンメッシュオプションウィンドウが表示されるので、ポリゴンメッシュの粗さを指定する。STLは三角形のポリゴンメッシュを表現する形式なので、Rhinoceros上でもメッシュを作成しておくのだが、ここで小さな三角形たくさんで細かく形状を作るのか、大きな三角形で粗く形状を作るのか、メッシュの細かさを選択できる。メッシュを細かくしておくとDMMの出力サービスに依頼すると安くなると言う話もあるので、お好みによって調整するといいかもしれない。
【3Dプリントのお金の話】3Dプリント依頼を考えてる人必見。同じデータでも表面の滑らかさが違うだけで3Dプリント代金は変わるのか? -Un-industrial (非産業化) –
次に、”STLツール”を表示させておく。ツールタブの右にある歯車マークをクリックし、”ツールバーを表示”を選択し、”STLツール”をクリックする。
表示されたSTLツールのツールボックスから、”結合”ボタンをクリックして、メッシュを選択してEnterキーを押す。これでメッシュを形成するすべての三角形を一つにまとめることができる。しかしエッジが結合されたわけでないらしい。
お次は、メッシュをウェルドする。”結合”ではメッシュを形成する三角形の重なった頂点の法線を保持したままくっつけたが、”ウェルド”ではそこからさらに、指定した角度以下で接合されている三角の法線の向きを統一して重なった頂点をマージすると言う事らしい。STLツールボックスから”ウェルド”をクリックし、メッシュを選択し、コマンドウィンドウの”角度許容差”に”180″と入力してEnterキーを押す。
さらに、”メッシュ法線方向を統一”をクリックして、メッシュを選択し、Enterキーを押す。これでメッシュの法線の方向が統一されるので、メッシュの一つが裏返っていたという割とありがちなトラブルを避けることができる。
これで一応の準備ができた。しかしまだ作業は続く。
メッシュのチェックと修正
ここまで結合したり、ウェルドしたり、法線の向きをそろえたりしてみたが、メッシュは果たしてラピットプロトタイピング向きになっているだろうか。チェックが必要だ。STLツールボックスから、”ウェルドされていないメッシュエッジ点を表示し選択”をクリックして、メッシュを選択状態にして、Enterをクリックしてみる。
するとウェルドされていない、つまり隙間のある点が選択された状態になる。今回は左上のザグリ穴の部分に問題があることがわかる。
まだまだラピットプロトタイプ向きの綺麗なSTLの出力への道は遠い。ダメだと言われた部分を修正してみよう。”メッシュツール”タブの”メッシュ修復ウィザード”をクリックし、メッシュを選択して、Enterキーを押す。
メッシュ修復ウィンドウがポップアップしてくるので、メッシュを選択した状態で、”メッシュのチェック”をクリックする。
すると、メッシュをチェックした結果が表示される。今回は36個のオープンエッジが見つかった。ではこれを修正していくために、”進む”をクリックする。
次の画面ではオープンエッジの表示が自動的に上がってきて、オープンエッジが着色されて表示される。ここで表示される項目は今回は当てはまらないので”進む”をクリックしてさらに次へ進む。
次の画面で、小さい穴をふさぐ”距離”の欄に”0.2″くらいを入力して、”小さい隙間を塞ぐ”をクリックする。
“オープンエッジの数”が”0″になったことを確認して、進むをクリックする。
今回はオープンエッジがすべてなくなって問題が解消されたが、まだエラーが残っている場合は次の画面で色々なツールを試すことができる。今回は必要ないので”終了”をクリックして、ウィンドウの×マークをクリックしてウィザードを閉じる。
この状態でもう一度STLへエクスポートを試みると、今度は警告が出ずにすんなりとSTLファイルを保存することができた。やったー!やったよー!
なぜオープンエッジになってしまったか
今回の例のモデルでは左上のザグリ穴の部分だけがオープンエッジになっており、他の穴はオープンエッジにはなっていない。なぜか。実はオープンエッジになったザグリ穴の部分だけ違う手順で作ってあるからだ。この板状のモデルは、平面の図面を押し出してキャップし、キャップされたサーフェイスをトリムして穴をあけて作成されている。このトリムの切断オブジェクトに何を使うかがオープンエッジになってしまうかどうかの分岐点となる。
ザグリ穴の斜めに開いた穴のサーフェイスは、大小二つの円の間をロフトすることによって作成している。よってそのサーフェイスの端には、ぴったりと円が曲線オブジェクトとして重なっている。まず、オープンエッジになってしまった穴をトリムした時は、その重なった円の曲線オブジェクトを切断オブジェクトとしてキャップをトリムしている。
続いて、オープンエッジにならなかった穴だが、こちらはサーフェイスを切断オブジェクトとして指定し、キャップをトリムして穴をあけている。
ぱっと見はどりらもちゃんとトリムされて穴が開いたように見えている。しかしそれぞれの穴のふちを拡大してよう。まずは、円の曲線オブジェクトでトリムした穴のふちだ。拡大しないとわからないが、円が2重になってしまっている。ザグリ穴のサーフェイスとトリムされたキャップのサーフェイスの間に隙間があるのだ。
それに対して、サーフェースオブジェくでトリムした穴を拡大してみると、円は二重になっておらずザグリ穴のサーフェイスとトリムされたキャップのサーフェイスがきっちりとくっ付いているのが解かる。
たとえサーフェイスを作る元になった曲線であろうと、出来上がったサーフェイスのエッジとは全く同一の形状ではなく微妙に誤差が出ており、そのため曲線でトリムするとサーフェイスとキャップの間に隙間が空き、サーフェイス自身でトリムすると、キャップとサーフェースがぴったりと隙間なくくっついているのだと思われる。トリムする場合は、接合したいオブジェクトそのものでトリムするようにすると、オープンエッジの発生を防ぐことができ、無駄な修正の手間を減らすことができるかもしれない。
Rhinocerosは自在に曲面を扱うことができ、さまざまな細かい指定が可能となっている。何でも指定できると言う事は、何でも指定しなくてはいけないと言う事だ。STL出力にも多くの手間がかかるが、いろいろなパラメータをいじって自在に調整することができる。一つ一つのパラメータすべてを理解するのはなかなか難しいが、直面したコマンドやパラメータについてコツコツ一つ一つ調べながらやって行けば、いつかこのソフトを手足のように使い、自在にモデリングできるようになることだろう。そうだといいなぁと思う今日この頃である。