blenderで3Dプリントするまでのトラブルシューティング
作業の途中経過を投稿しようと思ったけど、試行錯誤していたらいつの間にやら完成に近い状態になってしまいました。
全体のまとめ
3Dプリンタ万能かのごとく騒ぎ立てられたけど、そんなことはないです。
加工にかかる時間やモデリングのコストが半端ないです。
試行錯誤できるのはデジタル加工機の強み。
モデリングしてみてイメージと違う場合は少しいじってみたりとか。
こういった生産量の少ないもの(一品モノ)を3Dプリントするのはアリかもしれないので、まずは一本タイラスが完成するまでやってみようと思います。
3Dプリンタは産業革命以来の革命を起こすとかナントカ騒がれたときもあったけど、現在のような工場での大量生産体制での3Dプリンタはせいぜい試作品の出力が限度でしょう。
それでもコスプレ小物のような一品からという小ロット生産モノでは3Dプリンタは活躍していくんじゃないかなぁと妄想。
家内制手工業じゃないけど、現在の工業とは異なるもう一つのものづくりとして成長するだろうと思っています。
たとえばB2Cという形態ではなくC2Cという形態で活躍するものづくりマシンとして。
というわけで経済論みたいな難しい問題は置いといて、
一通りblenderでのモデリングがおわったFF14のタイラス。
色々と試行錯誤やってて思ったこと。
- 一般的な3Dプログラミングの知識があったほうが有利なんじゃないかなー
- 効率的にそれっぽいものを作るにはトレースよりも色々工夫したほうが早いし綺麗にできる
- 最終的に3Dプリンタで出力するときのことを考えつつやったほうが良い
今回の記事では思ったことを列挙したうえで、それぞれの思惑、問題に対するトラブルシューティングの方法、3Dモデリングをやるうえで知っておいたほうがいいんじゃないかなという知識を整理します。
3Dプログラミングの知識
私自身のことですが過去に某3Dゲームに携わったり、趣味ではDirectXやOpenGL使って色々やってましたので、そのあたりの知識が活かせた気がします。
一般的な3Dプログラミングの知識ナシでいきなりモデリングやるとおかしなところで躓くんじゃないかなぁと思います。
具体的な例としては
- 作ったメッシュ(3Dモデル)がなぜか真っ黒になっている。一部だけ真っ黒になる
- 移動、回転、拡大などの操作で期待と異なる動きをする
- 曲線や曲面の表現
- マテリアルの設定
以下はそれぞれの問題と対策、知っておいたほうが良い知識です。
メッシュが真っ黒問題の対策
blender内でメッシュが真っ黒になる現象の主な原因は「法線の反転」。
法線といっても色々ありますがここでは面法線、「ポリゴンの面から垂直に伸びる法線」のこと。
法線のことだけでは何でそんなものが必要なのかさっぱりですが、具体的な使われ方を知っていると、問題解決が早いと思います。
3Dプログラミングではこの法線情報と光源(ライト)の情報をもとに明るさが決定されます。
つまり、モデルの製作者はポリゴンの表だと思っていても、法線情報が逆転しているとblender内で「裏を向いている=光あたっていない=真っ黒な影だよね」と扱われてしまいます。
また、モデルの一部だけ黒くなってしまう問題ではこの法線情報が一様でないことがあります。(面を差し込んだり拡大縮小すると起きる)
法線はXYZのベクトル情報ですが、このベクトルの向きが同じでも長さが異なることがあります。
わかりやすい例でいうと、法線p(x=1,y=1,z=1)と法線q(x=2,y=2,z=2)では同じ向きだけども長さが違います。
この情報をもとにモデルを画面に描画してしまうと、プログラム内部ではこの法線のベクトルをそのまま使うので、同じライトを当てていても法線q(x=2,y=2,z=2)が設定されているポリゴンのほうが明るく見えます。そこで一般的には「法線の正規化」を行い、「すべての法線の長さが一様になるよう」にします。
このような「反転ポリゴン」や「法線が正規化されていない」などの問題を残したままにしてしまうと、STL形式として3Dプリント用データをエクスポートした時に反転ポリゴンであるといわれてエラーとなってしまいプリントできなくなってしまいます。
蛇足ですが、カリングモードの問題には直面しなかったので、カリングモードはOFFとなっていて、面の表裏の判別は法線情報のみを参照しているように思われます。
裏向きポリゴンの修正方法
「TAB」キーを押して編集モードに入る。
「N」キーを押してツールシェルフを表示する
「ツールシェルフ」の「メッシュ表示」カテゴリの「法線」から、「面法線」を選択する。
「A」で全部の面を選択する、もしくは真っ黒ポリゴンの面を選択する。
「N」で法線の正規化を行う。全部のポリゴンが裏を向いてしまっている場合は、Nキーを押したときに出てくるツールの「内側」にチェックを付けると法線が反転します。
移動、回転、拡大などの操作で期待と異なる動きをする
回転やミラーリングなどで起きがちなのですが、原点がずれている、回転軸がローカルとグローバルで異なっている、などといったことが多いです。
原点とは、回転、移動、拡大などの操作の基準となる点です。
原点のわかりやすい例では自転(地球が地軸を中心に24時間で一回転する)のと公転(太陽を原点に地球が一年かけて回転している)のようなものです。
3Dプログラミングでもこの考え方で、地球は太陽からの相対的な位置を設定するなどで計算が行われます。
これ以外にも、お椀型のオブジェクトが回転しなくなるなどの現象(ジンバルロック)もありますが、これに関しては設定はあまりいじらないほうが良いと思います。
具体的にはY軸を中心に回転体を生成したとき、Y軸を中心に回転させても、何も変化が見られない(陶芸のろくろを回転させるイメージ)といった現象です。
原点の設定か操作座標系の設定でたいていは何とかなるはずです。
それでもどうしても回転軸の順序を変えたいときのために方法だけ残します。
原点の設定
「TAB」キーを押してオブジェクトモードに戻して
「ツール」の「編集」から「原点を設定」です。
私がよく使うのは「原点を重心に移動」ですね。
操作の座標系の設定
画面下部のマニピュレータの座標系を目的のもの「ローカル、グローバル etc.」に設定します。
お椀型のオブジェクトが回転できない対策
「TAB」キーでオブジェクトモードに切り替えて
「N」キーでツールシェルフを表示する
「トランスフォーム」カテゴリの「XYZオイラー角」を任意の回転順序のオイラー角もしくはクォータニオンに設定。
曲線や曲面の表現
曲面をもつ飾りなどの作り方ですが、最初は背景の絵を設定してトレースしていました。
しかしこれでは出来栄えがよろしくなかったので、曲線や曲面を上手に使うことが必要になると思います。
ただし、曲面はポリゴン数が増えがちで、3Dプリンタの加工時間も長くなってしまうので、トレードオフの問題が出てきます。
それでも、せっかく3Dプリンタで出力するのだから手作りでは出せない精密さを出したいですね。
曲線や曲面は技術要素が多いので、ここではキーワードや簡単な操作の列挙だけに留めます。
ベジェ曲線に沿ったオブジェクトの配置
「作成」の「ベジェ」で曲線を作れます。ただし、デフォルトのままベジェ曲線を生成するとXZ平面上に配置されてしまうので、最初は戸惑うかもしれません。
(今回はXY平面上の飾りを作りたかったので)
また、三次元空間上にベジェ曲線を置こうとすると、「ねじれ」が発生します。
ベジェに沿ってモディファイアのカーブを適用するとねじれがそのまま出てきてしまうので慣れが必要です。
この「ねじれ」をそのまま残してしまうと先述のような裏向きポリゴンになってしまうこともあるので要注意です。
モディファイアのカーブで期待通りに曲がらないときは、メッシュ細分化されているか、軸は正しいかなどの確認が必要です。
マテリアルの設定
マテリアルとは直訳すると素材です。
3Dプリンタで出力する場合は、ここでの素材はあまり意味を持ちません。(現実に使用した素材でプリントされる)
製作途中でイメージどおりかどうか確認する意味も含めてだいたいでいいのでマテリアルは設定しておいたほうがよさそうです。
なぜなら、マテリアルの色や光沢によって凹凸の表現ができたりすることもある(暗い色は凹んで見えるなど)ので、ポリゴンだけですべて表現するのではなく全体のイメージを見るためにもこれは大事な作業だと思います。
今回のタイラスでは金色装飾はエアブラシを使ってガイアノーツ社のパールゴールドを吹き付ける予定です。
マテリアルの設定では光を反射しやすいカラーとして、スペキュラー成分を高くしました。
これらは3Dプログラミングで一般的に使われる「ディフューズ」や「スペキュラー」の意味そのままなので、知識があったほうが設定しやすいです。
またディフューズとスペキュラーには「シェーダーモデル」が設定できるので、3Dプリントに使う素材や出力後の塗装に合わせてそれっぽいものを設定しておくと「完成に近づいてる」感が出てモチベーションupにもなります。
シェーダーモデルは私自身あまり詳しくないので、以下のリンク先のイメージを比較して、自分の塗装予定のイメージに合うものを選びました。
Doc:JA/2.6/Manual/Materials/Properties/Diffuse Shaders - BlenderWiki
Doc:JA/2.6/Manual/Materials/Properties/Specular Shaders - BlenderWiki
(このシェーダーは多分GPU上の演算のやつのことだろうと思ってるけど、まだ確証ナシ。。。)
長くなったけど今回はここまで。