やりたいこと
下図のようなハニカム状に配置されたオブジェクトをジオメトリーノードで作成する方法の紹介です。
通常は、下図のような「2つの六角形」をx方向とy方向に配列モディファイアーで伸ばせば作成できます。
ここでは、配列モディファイアーを使わずに、Blender3.1のジオメトリーノードを使って作成してみます。
※ ちなみに、シンプルなハニカムであれば、Add Mesh: Extra Objects
アドオンを有効にして、追加→メッシュ→その他→Honeycombで作成できます。
やり方
プリファレンスのアドオンから「Node Wrangler」を入れておいてください。
元になる六角形を作成します。以降では、六角形の半径は1として進めます。
-
Shift + A
(追加)→メッシュ→円- 画面左下のオペレーターパネルで下記を設定
- 頂点:
6
- フィルタイプ:
Nゴン
- 頂点:
- 画面左下のオペレーターパネルで下記を設定
画面を分割するか、今回使わないタイムラインの画面からジオメトリノードエディターを開きます。
六角形を選択して、ジオメトリノードエディターの新規を押します(これによりモディファイアープロパティにジオメトリノードモディファイアーが作成されます)。ジオメトリノードエディターのサイドバーは、N
を押して一旦閉じましょう。
まずは、下図を作ってみましょう。下図では、わかりやすいようにオブジェクトプロパティのビューポート表示のワイヤーフレームをONにしてます。
-
Shift + A
(追加)→ジオメトリ→トランスフォーム(ノード間の緑のリンクが白く変わるところでクリックし、接続されるようにしてください)。項目を以下のように設定します。- 移動X:
sqrt(3) / 2
- 移動Y:
1.5
- 移動X:
-
Ctrl
とShift
を押しながら、「グループ入力」ノードから「トランスフォーム」ノードにドラッグしてください。下図のように「ジオメトリ統合」が作成されて六角形が2つになります。
このあと「数式」ノードをたくさん使います。Shift + A
(追加)のユーティリティの数式を右クリックし「お気に入りツールに追加」すると良いでしょう。Q
(お気に入りツール)から使えます。
また、以降では「Shift + A
(追加)」の表記は、煩雑なので省略します。
ジオメトリーノードで配列モディファイアーが使えればよいのですが、Blender3.1にはまだありません。ここでは、カーブを作り、ポイントにして、ポイントに配置して増やします。先は長いですが順番に作成していきましょう。ノードをたくさん作るので画面を広げると作業しやすいです。
- ユーティリティ→数式
- 追加を
積和算
に変更 - 乗数:
sqrt(3)
- Addend:
-sqrt(3)
- 追加を
ここで、下図のように値のスロットから「グループ入力」の空のスロットにドラッグしてください。ドラッグの順番は逆でもOKです。
-
入力→整数
- 値を1
-
「積和算」を選択し、
Shift + D
(複製)で複製し複製元の積和算の下に配置してください。- 値:「整数」の整数からドラッグ
- 乗数:3
- Addend:-3
-
ベクトル→XYZ合成
- X:上の「積和算」の値からドラッグ
- Y:下の「積和算」の値からドラッグ
ここまでで、下図のようになります。
続きます。
- カーブプリミティブ→カーブライン
- 終了:「XYZ合成」のベクトルからドラッグ
- ユーティリティ→数式
- 追加を
最大
に変更 - 上の値:「グループ入力」の値からドラッグ
- 下の値:「整数」の整数からドラッグ
- 追加を
- カーブ→カーブからポイントへ
- カーブ:「カーブライン」のカーブからドラッグ
- 数:「最大」の値からドラッグ
- インスタンス→ポイントにインスタンス作成
- ポイント:「カーブからポイントへ」のポイントからドラッグ
- インスタンス:「ジオメトリ統合」のジオメトリからドラッグ
「ポイントにインスタンス作成」の出力のインスタンスから「グループ出力」のジオメトリにドラッグしてください。
下図のようになります。
上図の赤い枠になっている7つのノードを選択し、Ctrl + G
(グループ作成)でグループを作成します。
「グループ入力」の値が4つありますが、2つで良いので上2つの値から「最大」の2つの値につなぎ直します。また、N
(サイドバー)でサイドバーを出し、グループの入力から下2つの値を削除します(-
ボタンで削除)。
さらにサイドバーで、2つの値のタイプを整数
にし、名前をNumX
とNumY
に変えてください。上の「積和算」につながるほうがNumX
です。入力の順番は、リストの右の三角のボタンで変更できます。下図のようになります。
Tab
でグループ編集から戻ります(もう一度グループ編集するのもTab
です)。
さて、NodeGroup
という深緑のノードができています。わかりやすいように名前をDup
に変えてください。入力できるところで変更できます。
「整数」ノードは、グループの入力にするために作成していました。もう不要なので削除してください。削除したらNumY
は1にしてください。
このDup
ノードが配列モディファイアーに相当します。今作成したのはX方向の複製でした。Y方向にも複製しましょう。「Dup」を複製して右に配置し、インスタンスがつながるようにしてください。ちなみに、このグループは、「Shift + A
(追加)」のグループからも作成できます。
複製した「Dup」のNumX
を1にし、NumY
は「グループ入力」の空のスロットからドラッグしてください。
また、グループ入力の値のタイプを整数
に、名前をNumX
にしてください。下図のようになります。
完成です。
サイズはモディファイアープロパティから変更できます。NumX
を5に、NumY
を2にしてみましょう。
3Dビューポートでは、下図のようになります。
Y方向は、2個組で1段なので、NumY
を2にすると4段になっています。
また、メッシュを変更すると下図のように反映されるのが確認できます。
なお、今回作成したジオメトリーノードモディファイアーは、アセットとして登録できるようです。
追記(もっとシンプルな別の方法)
上記では、配列モディファイアーのように並べるために、カーブに変換していました。
しかし、メッシュラインを使うと、下記のようにカーブを使わずに並べることができます。こっちの方が簡単ですね。
以上