
今回は「プロシージャルモデリングを体験する」と題して、ノードをつなげて形を作る手法を学びます。プロシージャル(手続き型)モデリング(Procedural Modeling)は、近年CGの表現や作業工程が複雑化することにより、効率化の観点から業務に導入される事例が増えています。Blenderにはジオメトリノードという強力なプロシージャルモデリングの機能があります。今回はBlenderのジオメトリノードを使用して、プロシージャルモデリングの最初の一歩を体験します。
参考書籍
今回の内容は「Blenderジオメトリノードではじめるプロシージャルモデリング|株式会社ボーンデジタル」Chapter6ー演習ー回転する4次元立方体を作成する(P90-P96)を参考に加筆しています。

ノードツリー全体像

プロシージャルモデリング(Procedural Modeling)とは?
プロシージャル(手続き型)モデリングは、3Dモデルを手動で作成するのではなく、アルゴリズムやルールに基づいて自動的に生成する方法です。これにより、複雑な形状やパターンを効率的に作成できます。
ノードと呼ばれるブロックをつなげて、3Dモデルを作成します。各ノードには「形を作る」「形を変える」「色をつける」などの特定の役割があります。
これらのノードを組み合わせた状態をノードツリーと呼び、複雑な3Dモデルを作成できます。
今回の手順
基本的な形(今回は分子構造風のオブジェクトです)を作ります。
同じ形(インスタンス)を複数コピーします。
形を拡大縮小、回転させます。
ジオメトリノード画面を開く
それでは始めましょう。Blenderを起動します。

Blenderを起動後、Geometry Nodesワークスペース(画面右上)をクリックします。
ジオメトリノード画面解説
ジオメトリノードは大きく3つのエリアに分かれており、それぞれ役割が異なります。

ジオメトリノードエディター
様々なノードをつなぎ合わせることでオブジェクトに変化を与えていくウィンドウです。今回メインで使用するウィンドウです。
ビューポート
おなじみの3Dモデルを編集する画面ですが、今回はここでの編集は行わず、主にジオメトリノードエディターで編集したオブジェクトの結果を確認するために使用します。
スプレッドシート
頂点や辺、面の情報を個別に数値で確認できます。今回は積極的に使いませんが、細かい検索機能などもあり、使いこなせると強い味方になります。
新規ノードの追加

①Cubeを選択した状態で
②ジオメトリノードエディター上部の+ 新規 ボタンを押します。

「グループ入力」と「グループ出力」2つのノードが表示されました。
左から上流→下流という流れを覚えておいてください。
ジオメトリノードエディター内での移動、スケール
ジオメトリノードエディター内の
移動はマウス中ボタンドラッグ(業界互換キーマップの場合はAlt+マウス左クリック)
スケールはホイールマウスで行えます。
「グループ入力」ノードの削除

「グループ入力」ノードを選択後、削除します。
「グループ入力」が消去されると、ビューポートのCubeオブジェクトが消えます。
ワイヤーフレームオブジェクトの作成
最初に、分子構造の基本形状のワイヤーフレームオブジェクトを作成します。
ICO球の追加

追加 > メッシュ > プリミティブ > ICO球

「グループ出力」の左側にクリックして配置します。
「ICO球」の接続(表示)

①「ICO球」の「メッシュ●」をクリック&ドラッグ
②「グループ出力」の「●ジオメトリ」にドロップします。

メッシュ●ー●ジオメトリがつながり、ビューポートにICO球オブジェクトが表示されました。
接続の解除
接続の解除方法も試してみましょう。

「グループ出力」の「●ジオメトリ」をマウス左クリック&ドラッグ
リンク(線)が切断されたらマウスのボタンを放します。

リンク(線)の間をCtrl+マウス右クリック&ドラッグ
またいだ後マウスのボタンを放します。
「ICO球」の形状変更
Ico球の形状を変更してみましょう。

「細分化」に 3 を入力します。
スプレッドシートに表示されているの頂点数が増えました。
ビューポートのIco球の分割数が増えました。
このように、ノードの数値はリアルタイムで反映され、今後ノードを増やした後でも変更が可能です。
確認後はIco球の「細分化」を 1 に戻します。
ワイヤーフレーム形状の作成
ICO球のワイヤーフレームの部分をパイプ状のポリゴンに変換し骨組み構造の見た目にします。
最初に、「メッシュのカーブ化」というノードを使って、エッジ部分をカーブに変換します。その後「カーブのメッシュ化」を使って、カーブ部分をパイプ状のポリゴンに変換します。
メッシュのカーブ化

追加 > メッシュ > 処理 > メッシュのカーブ化
を選択します。

「メッシュのカーブ化」がマウスポインタに張り付いた状態で現れます。
「ICO球」と「グループ出力」の線の上でマウスボタンを放します。

自動で「ICO球」と「メッシュのカーブ化」「グループ出力」がつながった状態になりました。
「ICO球」のエッジがカーブ形状に変更されたのでビューポートのICO球がワイヤーフレーム風の表示になります。
カーブのメッシュ化
次に「カーブのメッシュ化」ノードを使って、カーブ形状をパイプ状のポリゴンに変換します。

追加 > カーブ > 処理 > カーブのメッシュ化
を選択します。

先ほどと同じ要領で「メッシュのカーブ化」と「グループ出力」の間にクリックして繋ぎます。
無事つながりましたがビューポートに変化はありません。実はカーブに立体感を付ける為には「カーブのメッシュ化」ノードに断面の形状を与える必要があります。
断面カーブ用の円の追加

追加 > カーブ > プリミティブ > カーブ円
を選択します。

カーブのメッシュ化の左側に配置します。

「カーブ円」カーブ断面カーブ「カーブのメッシュ化」 ー
ドラッグ&ドロップでつなぎます。
断面カーブ用の円の調整

ビューポートの表示がサッカーボールのようになっているのは「カーブ円」が太すぎる為です。これはこれでかわいいのですがワイヤーフレーム形状になるよう細くします。
「解像度:8」(ポリゴン数が増えることによる描画負荷を下げる為です)
「半径:0.01」を入力します。

ワイヤーフレーム形状が完成しました。
一旦セーブしましょう。
分子形状の作成
ワイヤーフレーム形状の結線部分、つまり「ICO球」のポイントの部分に新たな球体を作成し配置することで、いわゆる「分子構造」のような形状に仕上げます。
リンクのルートを分岐する

追加 > レイアウト > リルート
リルートノード(ドット)がフロート(マウスポインタに張り付いた)状態で作成されます。

「ICO球」と「メッシュのカーブ化」の間のリンク(線)の上でクリックします。

この点「リルート」から線を分岐することが出来ます。
リルートノードのショートカット

「リルート」にはShift を押しながらマウス右ボタンドラッグしてリンクをまたぐショートカットがあります。
覚えておくと便利です。
検索画面からノードを新規作成する方法

①点「リルート」をクリック&ドラッグ
②画面下部でドロップします。

①検索ウインドウに「ポイント」と入力すると
②予測検索結果の中から「ポイントにインスタンス作成>ポイント」を選択します。

「ポイントにインスタンス作成」が作成されました。
検索ウィンドウはいつでも使用可能

検索ウィンドウは通常のビューポートと同様にF3(業界互換キーマップはTab)でショートカットが可能です。このチュートリアルでも以降は検索ウィンドウによる新規ノード追加を行います。
ポイント部分に新たな球体を配置する

「ポイントにインスタンス作成」のインスタンス●ー●ジオメトリ「グループ出力」をつなぎます。
「グループ出力」は2つ以上のノードをつなげることが出来ないため、「カーブのメッシュ化」のリンクが自動的に外れます。
インスタンスとして「ICO球」を追加
インスタンスとは
元のオブジェクトのコピーのことです。ただし、普通のコピーとは違い、インスタンスは元のオブジェクトとリンクしています。つまり、元のオブジェクトを変更すると、インスタンスも自動的に同じように変更されます。

今回原子モデルにICO球を使いますが、ICO球のパラメーターを一つ変更すればすべての原子モデルが変更されるので非常に効率的です。特にプロシージャルモデリングにおいては不可欠な機能です。

①「ポイントにインスタンス作成」インスタンスの●をクリック&左側にドラッグします。
②マウスを放すと検索ウィンドウが出ます。ボックスに「ICO」と入力します。
③予測検索から「ICO球>メッシュ」を選択します。

均整の取れた幾何形体オブジェクトが生成されました。このオブジェクトは1つに見えますが、実際は最初に作ったICO球の頂点の上に今回作ったICO球が複数コピー(インスタンス)配置された状態です。
原子(ICO球)の修正

①F2キー(業界互換キーマップではEnter)を押してノードの名前を”atom(原子)”に変更します。
②”atom”の半径を0.1に変更します。
→ビューポートで形状が小さくなった12個の”atom(原子)”を確認できました。
原子とワイヤーフレームを統合する
「グループ出力」は2つ以上のノードをつなげることが出来ないため、ワイヤーフレームが非表示のままです。原子とワイヤーフレームの両方を「グループ出力」に繋げるために「ジオメトリ統合」というノードを追加します。このノードはオブジェクトモードのメッシュ>統合と同じイメージです。

①ジオメトリノードエディター上でF3(業界互換キーマップはTab)を押し検索ウィンドウを開きます。
②検索欄に”ジオメトリ”と入力します。
③予測欄の「ジオメトリ>ジオメトリ統合」をクリックします。

「ポイントにインスタンス作成」と「グループ出力」の間に「ジオメトリ統合」をドロップします。

「カーブのメッシュ化」メッシュジオメトリ「ジオメトリ統合」 ー
→ビューポートに原子とワイヤーの両方が表示されました。
分子形状オブジェクトの完成です。
ここで一旦セーブしましょう。
分子形状の複製
分子形状のインスタンス化
先ほどは原子の数をインスタンスによって複製しました。
次はインスタンスによって分子構造自体の数を増やしていきます。

①ジオメトリノードエディター上でF3(業界互換キーマップはTab)を押し検索ウィンドウを開きます。
検索欄に”ジオメトリ”と入力します。
②予測欄の「ジオメトリ>ジオメトリのインスタンス化」をクリックします。

1番左側の「ICO球」と「リルート」の間に「ジオメトリ>ジオメトリのインスタンス化」をドロップします。
分子構造のコピー
「要素コピー」というノードを使い、インスタンス化した分子構造の数を増やします。

①もう一度F3(業界互換キーマップはTab)を押し検索ウィンドウを開きます。
検索欄に”要素”と入力します。
②予測欄の「ジオメトリ>処理>要素コピー」をクリックします。

先ほどつないだ「ジオメトリのインスタンス化」と「リルート」の間に「要素コピー」をドロップします。

①「要素コピー」のポイント▽をインスタンス▽に変更
②量を5に変更
これからインスタンス化を確認できるように分子構造を拡大と回転していきます。
インスタンスの拡大
分子構造インスタンスを一つずつ段階的に拡大していき、5つのオブジェクトをビューポート上で確認できるようにします。

①更にF3(業界互換キーマップはTab)を押し検索ウィンドウを開きます。
検索欄に”インスタンス”と入力します。
②予測欄の「インスタンス>インスタンス拡大縮小」をクリックします。

先ほどつないだ「要素コピー」と「リルート」の間に「インスタンス拡大縮小」をドロップします。

「要素コピー」複製のインデックス●ー●スケール「インスタンス拡大縮小」

ビューポート上で分子構造インスタンスが一つずつ段階的に拡大して4つのオブジェクトが確認できるようになりました。
「要素コピー」で”5”を設定したのにオブジェクトが”4つ”なのは何故?
「要素のインデックス」の数値が0から1ずつ増えると決められているためです。1つ目のインスタンスに0倍のスケールが掛かるので存在はするのですが見えないという訳です。
画面左上のスプレッドシートを確認します。

①「インスタンス」をクリックします。
②インスタンスの「Scale」の値を確認します。
→0番目と5番目のインスタンスにそれぞれ0がスケーリング(掛け算)されているのが確認できます。
インスタンスの回転
分子構造インスタンスを一つずつ段階的に回転させ、オブジェクトに更なる変化を与えます。

①F3(業界互換キーマップはTab)を押し検索ウィンドウを開きます。
検索欄に”インスタンス”と入力します。
②予測欄の「インスタンス>インスタンス回転」をクリックします。

「インスタンス拡大縮小」と「リルート」の間に「インスタンス回転」をドロップします。

「要素コピー」複製のインデックス●ー●回転「インスタンス回転」
(リンクが見やすいように「インスタンス拡大縮小」は上に移動しました)

リンクが赤く反応し「
無効なリンク」という警告が出ました。エラーの原因は、整数データを回転データに変換しようとしているためです。インスタンス回転ノードには、0ー360度の角度ではなくベクトルやオイラー角が必要です。整数データを直接接続できません。

3DCGの学習を進めるにあたり、このような高等数学が出てくる機会があります。得意な人は更に極めてもらいたいです。また、必ずしも数学的な理解を必要とするわけではないので、苦手な人も落ち込む必要はありません。
整数値をベクトル値に変換する
上記エラーを回避する為ベクトル演算ノードを間につなぎます。


①F3(業界互換キーマップはTab)を押し検索ウィンドウを開きます。
検索欄に”ベクトル”と入力します。
②予測欄の「ユーティリティ>ベクトル>ベクトル演算」をクリックします。


先ほどつないだ「要素コピー」複製のインデックス●ー●回転「インスタンス回転」の間に「ベクトル演算」をドロップします。


「
無効なリンク」の警告が消え、インスタンスに回転の値が反映されました。回転の確認


「ベクトル演算」ノードの数値を変更して回転を動的に確認しましょう。数値は適当で構いません。ご自身が美しいと思う角度を見つけてください。


ノード全体像


すべてのノードが組みあがった状態です。セーブしておきます。
プロシージャルモデリングのメリット
プロシージャルモデリングの大きな利点は、パラメータを変更するだけでモデル全体を簡単に調整できることです。例えば、一番最初のICO球の半径や細分化を変更すると、すべての複製されたICO球も自動的に更新されます。




また、ICO球を立方体や他のプリミティブ形状に変更することも出来ます。




全てのパラメーターが変更可能です。「数値を打ち込んだらこんな不思議な形が出来た」でOKです。




演習:ノードに変更を加え「プロシージャル」を体験し、画像を生成する
ライト、カメラの位置を調整してレンダリングします。


まとめ
- ジオメトリノードエディターについて学びました。
- ワイヤーフレームのオブジェクトを作成しました。
- オブジェクトをワイヤーフレーム形状にしました。
- 分子形状のオブジェクトを作成しました。
- 分子構造の複製(インスタンス化)しました。
- インスタンスの拡大を行いました。
- インスタンスの回転を行いました。
- ノードに変更を加え「プロシージャル」を体験しました。
プロシージャル(手続き型)のソフトとしてSideFX社のHoudiniが有名ですが、Blenderのジオメトリノードも強力で複雑なプロシージャルモデリングが可能です。皆さんがこのレジュメを最初の一歩として、プロシージャルモデリングに興味を持ってもらえれば幸いです。