Blenderプロジェクト「Geometry Nodes Pipes」
第2回 Geometry Nodes Pipesのメカニズム

Blenderプロジェクト「Geometry Nodes Pipes」<br>第2回 Geometry Nodes Pipesのメカニズム

こんにちは、映像ディレクター/VFXアーティストの涌井嶺です。

「Geometry Nodes Pipes」を2022年2月5日に公開してから、すでにたくさんダウンロードいただきました(ありがとうございます……!)

何名かから「もっとこうしたほうがいいよ!」というアドバイスもいただき、本当にありがとうございます。
改善点がまとまり次第修正し、アップデートしたいと思います。

Geometry Nodes Pipesのメカニズム

今回はGeometry Nodes Pipesのメカニズムについて説明したいと思います。
ジオメトリノードの概要については前回記事にて説明させていただきましたので、そちらをご参照ください。

今回もテクニカルな話にはなりますが、具体的なチュートリアルというよりは「こういうアルゴリズムになっているんだよー」という概要の話になります。
僕の作成したノードの全画像を貼りますので、それを完全にコピーすれば同じものが作れます。
プロジェクトファイルの中でも見られるので、詳しく内容を確認したい方はこちらから無料DLお願いします。

「Geometry Nodes Pipes」のダウンロードはこちら

※動作にはBlender 3.0以上が必要

解説動画

これがパイプの全ノードです。

一見すごく複雑そうですが、部分的に見て解説していきたいと思います。

パイプのメイン部分

ノードは左から右に繋がっていきますので、まずは一番左から説明し、大枠を説明した後間の細かい部分を説明していきます。

ノード①Group Input
「Geometry」とは、ユーザーが作ったベジェカーブオブジェクトのこと
ノード②Curve to Mesh
ただのカーブオブジェクトが、実体を持ったパイプのポリゴンに変換
ノード③Curve Circle
作成した円形がパイプの断面として扱われるようにする
ノード④Set Material
パイプのマテリアルを適用
ノード⑤Curve Parameter
ベジェカーブオブジェクトの開始から終了まで0から1で表現する関数
ノード⑥Spline Length
ベジェカーブの長さを取得する関数を掛け合わせて、ベジェカーブの開始から1mごとに区切りを付けています。
ノード⑦Random Value
ノード③Curve Circleの直径 = パイプの直径をランダムに変化させています。これにより、パイプの太さが1mごとに少し変化してディテールを加えています。
またテクスチャを1mごとに90度回転させ、繰り返し感が少なくなるようにしています。 これも先ほどと同様に1mごとに付けた区切りごとに、テクスチャのUVを90度ぶんずらす操作を行っています
ノード⑧Combine XYZ
ノード⑦Random ValueでずらされたUVはGeometry NodesのOutput Attributesとして取り出され、ノード④で適用するマテリアルのUVとして利用されます。

わかりやすいように、ここまで説明したノードだけで完成するジオメトリの画像を以下に貼ります。
わずかですが、途中途中で太さが変わってます。

仮に、テクスチャを1mごとに90度ずらさなかったとすると、以下のような感じになってしまいます。

同じパターンの繰り返しが目立ち、味気ない感じになってしまいます。

フランジ(パイプの継ぎ目)部分

フランジは別オブジェクトとして用意しており、それをインスタンスとしてベジェカーブのコントロールポイントに生成するようになっています。
普通にコントロールポイントにフランジを配置すると向きがカーブに沿ってくれないので、①Curve Tangentノード②Align Euler to Vectorノードでカーブの向きを取得し、そこに合わせて回転させています。
またパイプの軸中心にフランジをランダムに回転させ、これもまた繰り返しが目立たないようにしています

これで基本となるパイプ+フランジの構造ができました!
次回から細かい部品やリベットなどの解説に移ります。

「Geometry Nodes Pipes」のダウンロードはこちら

※動作にはBlender 3.0以上が必要

VFX映像制作のご依頼や
ご相談はこちら