見出し画像

【Blender Tips】 Geometry Nodeを使ったサーフェスのカスタム厚み付け

3Dプリント用のデータを作るときのお約束として、必ず閉じた立体である必要があるというものがあります。CGで画像を作るだけであれば、ペラペラのポリゴンであっても問題なくレンダリングできますが、ペラペラの厚みのないポリゴンは3Dプリントできません。

一番簡単な方法はソリッド化(Solidify)モディファイアーを使う方法です。いくつかオプションもあり、調整すればほとんどの場合これだけでカタが着きますが、どうしても別の結果が欲しい時があるのです。

ソリッド化サンプルモデル

簡単なモデルを例にします。4枚のポリゴンのどの面も傾いており、このままソリッド化すると、断面は全て座標面に対して傾いて生成されます。

ソリッド化モディファイア適用後

それぞれ頂点を法線方向に移動することで、厚みのある立体の反対側の面を生成してこのようになります。しかしながら、前後方向は斜めの断面でOKでも、左右方向は垂直の断面にしたい、という場合、どうしたらいいでしょうか?

断面が全部垂直でよければ、平行移動して厚みをつければいいですが、全部の断面を垂直にしたいわけではない場合、手作業では手間がかかります。

これは実際にカーモデルのボンネットの厚みつけをするときに起きた問題です。ボンネットの左右はパネルラインになっていて、断面は垂直になっていて欲しいですが、ボンネットの前端の断面は緩やかに傾斜している曲面に沿って斜めになっていて欲しいわけです。

茶色の方がソリッド化モディファイアの結果で、緑の方が欲しい形状です。横方向から見た時は差はありませんが、正面から見た時は緑の方は左右の断面は垂直です。

横方向から
正面方向から

荒技としては、Booleanで垂直に切ってしまう、という手もありますが、この手は色々と問題があるので、もう少し汎用性のある方法を考えました。

緑の方の結果を得るために、Geometry Node を利用してソリッド化モディファイアの動作を模倣しつつ、一部を変更します。

先ほど書きましたが、ソリッド化モディファイアは、厚みの反対側の面の頂点を作るためにそれぞれの頂点を法線の方向へ移動します。

そこで、Geometry Nodeを使って、法線のX成分だけ0にしてやって、X軸方向に断面が傾くのをキャンセルします。

カスタムソリッド化 Geometry Node

法線のX成分を0にセットした後、ベクトルを正規化します。法線ベクトルの大きさは1という約束があるためです。そしてそのベクトルで指定の厚み分移動した点を生成、厚みの反対側の面を生成します。あとは元の面との間で断面をポリゴンで埋めてやれば完成です。

厚みのあるボンネット

そうしてできたものがこのボンネット。左右の断面は垂直で、前端の断面は斜めになっています。

3Dプリントをしようと思うと、意外と細かいところで手間がかかることがあります。力技でなんとかするのもありですが、どうしたら簡単に、しかも繰り返し可能な方法で出来るか考えるところにも楽しさはあるかと思います。

ではまた。

この記事が気に入ったらサポートをしてみませんか?