チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第47回:3Dプリンタ用データの作り方(1/2)
- Maya
- ゲーム
- コラム
- チュートリアル
- 中級者
- 学生・初心者
- 教育
- 映画・TV
普通のプリンタは文章や画像をプリントします。画像であれば中身はなんでも良くて、イラストでもCGでも、風景写真でも何でもプリンタに送ればプリントできます。インクや紙のタイプ、印刷方法(インクジェットや昇華型など)が何であれプリントできます。
一方3Dプリンタはどうかというと、物理的な制約が強く、印刷方法や素材に合わせてプリントしやすい3Dデータを用意しなければなりません。というわけで今回は3Dプリントしやすいデータの作り方を紹介していきます。
前回のコラム用にプリントした箱などのゲームアセット、ミニオン(敵キャラ)、スヴェン(プレイヤーキャラ)の元データとプリント用データを比べながら、最適化の方法を探って行きたいと思います。とは言え私も今回初めて3Dプリンタを扱いましたので、最適な方法というよりは何とかプリントが出来た方法の紹介ですが…。
3Dプリンタの種類とデータフォーマット
3Dプリンタには様々な種類があります。今回使用した3DプリンタはMakerBot製のReplicator2というプリンタです。積層型のプリンタで、立体物の断面を底から少しずつプリントして積み上げていきます。普通のプリンタは紙の端から一行ずつプリントしていますが、あれをY軸に沿って行っている感じです。
白や透明、もしくは色付きのプラスチック線を溶かしながら押し出して積層させていきます。強度はなかなかなもので、日用品として使用しても問題ありません。
底からプラスチックを積み上げてモデルを作るので、球の中に球があるようなモデルをプリントすることができます。(下図左)
空中に浮かんでいるものは支えを作って、下からプリントできるようにします。(下図右)
3Dプリンタでプリントするためには専用のデータが必要です。今回のモデルはMayaで作られていますので、Mayaからプリンタまでデータがどのように流れるかを見てみましょう。
Mayaでモデルを作成したら、モデルを3ds Maxに持っていきます。MayaのSend to機能を使って3dsMaxにデータを送ると楽です。3Dプリンタが属しているCAD系の世界では、MayaのYアップと異なりZアップです。そこで、一度モデルを3ds Maxに通すことで座標系やユニットサイズをCAD系に合わせます。しかも3ds MaxではSTL Checkerという便利なモディファイアがあり、メッシュに穴あきなどのエラーがないかチェックできます。問題があればMayaで修正を加えます。MayaでCleanupを実行したり、エッジを選択してFill Holeしたりすれば大体の問題はすぐに修正できます。
STL Checkerで問題が報告されなければおそらくプリントしても大丈夫です。3ds MaxからSTLフォーマットでモデルを書き出します。
次にMakerWareというソフトにSTLファイルを読み込みます。(MakerWareはMakerBotのサイトからダウンロードできます。)
Replicator2でプリントするときに、どの位置にどのぐらいのサイズでプリントするか決めることができます。
位置とサイズが決まったらプリンタ用のデータを書き出します。エクスポーターがメッシュの輪郭を計算して、プリンタヘッドがプリント時に動く軌跡を決めます。普通の2Dプリンタではヘッドは左右に往復するだけですが、Replicator2の3Dプリンタのヘッドはメッシュの輪郭に沿って動きます。効率的に一筆書きでプリントできれば、それだけプリント時間が短くなります。ヘッドの軌跡の情報はx3gファイルとして保存します。これをUSBケーブル接続で直接Replicator2に送るか、SDカードに一旦保存してReplicator2に持って行き、プリントします。
ちなみに球面のような滑らかなものをプリントするには、Mayaで十分にポリゴンを分割していなければなりません。3Dプリンタではジオメトリをそのままプリントします。つまりフラットシェーディングの状態がプリントされます。 (そう、スムースシェーディングは「ジオメトリ」がスムースなのではなく、「見た目」がスムースに見えている、シェーディング処理のマジックなのです!)
上の図の、下側の写真が実際にプリントしたものです。ポリポリした物がプリントされると、妙な違和感があって、ちょっとショッキングです…。現実世界にポリゴンが現れた!という感じがして。
ということでキレイな曲面をプリントするには大量のポリゴンが必要です。ポリゴン数が多いとプリント時間が長くなりそうですが、そこまで極端な影響は無いようです。あくまでプリント時間はヘッドの移動する軌跡の長さに影響を受けるからです。ただしポリゴン数が多いと、ヘッドの軌跡を計算する時、つまりx3gファイルを作る時の処理に時間がかかりますので注意が必要です。ちなみにプリント時間は、横幅6cmのポリポリしたトーラスで36分、ハイポリゴンのトーラスで34分でした。
工業製品系はエンターテインメント系のモデルデータと違って、有機的な形状が少ないのでポリゴン数を増やさなくてもキレイにプリントできます。ゲームやらのアセットをプリントする時は、この点に注意して十分なポリゴン数を確保する必要があります。
まとめると次の図のようにデータが流れています。
さて3Dプリントに関するハードとデータの様子はこれぐらいにして、次からは3Dプリンタ用のモデルの作り方を実例で紹介して行きます。
空中床のプリント
(…今回使用する写真についてちょっと説明しておきますと、曇の日に写真を撮ったため、「妙にリアルなCGっぽい写真」になっていますが、背景が白い画像は全て実際の3Dプリント物を撮影していますので、お気をつけ下さい。)
空中床をプリントする上でのキーワードは「ディテールの出し方」です。
Replicator2では積層しながらプリントするのに、一層あたりの厚みがデフォルトで0.2mmになっています。これ以下のポリゴン形状はプリントされませんし、場合によってはノイズのようになって形がおかしくなってしまいます。プリントできないディテールは削除するなり、プリントされやすくするために大きくして誇張するなりの修正が必要です。
修正後のモデルと修正前のモデルは次のようになっています。
画像で見ると、ディテールの処理方法の様子がつかみやすいと思います。こんな感じで修正します。薄い部分は厚みを増すようにしています。
0.2mmの厚みを視覚的に確認するために、シーン内に0.2mmのボックスを表示し、ものさしとして利用します。
0.2mmの厚みでプリントする場合、二倍の0.4mm以上でないと上手くディテールがプリントされませんでした。ちなみに0.2mm~0.4mmの幅でベベル処理をしても上手くプリントされません。ベベルしていないモデルと結果があまり変わりません。面取りしなければ作業時間を節約できます。
Y軸方向のディテール操作はそんな感じですが、XZ平面のディテールはどうコントロールするのでしょうか?ヘッドから押し出される樹脂はとても細いのですが、下に押し付けられて若干広がります。ボンドを押し出すのに、接着面にノズルをくっつけて押し出すと周りに広がりますが、あんな感じです。なのであまり細かいディテールは避けたほうが良いですが、大体これも0.2mmの精度と見当をつけておけば間違いないです。
プリント誤差がありますので、プリント後にモデルを組み合わせる場合は、はめ込み部分に若干隙間を作っておくと良いです。
箱のプリント
キーワードは「プリント方向」です。
空中床と同じようにディテールの取捨選択を行います。箱のデザインで問題になるのは面の丸い窓に付いている爪です。次の図はゲーム用モデルです。
この爪の部分を見てみると、空中に浮いていますのでこのままではプリントができません。爪の奥行きを深くし、積層プリントできるようにします。
爪のような細かいところは、折れやすかったりするのでこのぐらい思い切って最適化する必要があります。レベルエディット用モデルとして、転がされたり投げられたり踏まれたりと手荒く扱われることを考えると、壊れやすそうなところは強度も出しておくと良いです。
他にもエッジ部分の彫りを深くしてプリントしやすくしたりしています。
まとめ
今回は3Dプリントの仕組みや、Mayaからプリントデータまで持っていくフロー、プロップ系モデルの最適化について見てきました。
3Dプリントは実際にやってみないとわからないことが多く、モデリングに関してまとまった情報がないのでこれらの画像で少しでも想像して頂ければ幸いです。
次回はこの続きで、キャラ系のプリントデータ最適化について見て行きたいと思います。