【Blender3.2 Geometry Nodesサンプル】Align Euler to Vector(オイラーをベクトルに整列)ノードで、ポイントに設置したオブジェクトの回転を制御する【とうもろこし】
- 投稿日/更新日
Geometry Nodesの組み方
上記のノードで下記のようなとうもろこしが作れる(コーンの粒は別途作ってください)。
解説とポイント
Blenderのジオメトリーノードでは、従来では配列モディファイアやパーティクルを使って配置していたようなものが簡単に制御できるようになります。例えば上記サンプルのようなとうもろこしだと、従来の作り方は「コーンの粒を配列複製」「別途カーブを作る」「カーブに沿ってコーンの粒を配置」「さらにそれを縦に複製」といった手順が必要でした。パーティクルの場合はメッシュを用意して頂点のポイントに配置して…といった手順が必要でしたが、ジオメトリノードだと数個のノードで実現でき、かつ調整も比較的カンタンにできます。ただしオブジェクトの回転の制御に若干の癖があり、かなり詰まってしまったのでそのポイントを備忘録としてまとめておきます。Blenderは3.2です。
配置するオブジェクト
わかりやすいようにおにぎり形状を用意しました。オブジェクトの原点は底の中心にしています。
オブジェクトを円柱に配置
下記のような簡単なGeometry Nodesを組んでみます。底辺を八角形とした円柱に、横は6つに分割(サイドセグメントの設定)。そのポイント(頂点)に先程のおにぎりをインスタンスとして設置するノードです。
すると下記のような結果になります。
このおにぎりの山を、円柱の外側に向かって配置したい。つまりは法線(ノーマル)に沿って回転させたいので、下記のようなノードを組んでみます。
ここでAlign Euler to Vector
が登場します。このノードは日本語環境だとオイラーをベクトルに整列
で検索するとノードがヒットしますが、なぜか上記の画面の通りメニュー名は英語のままです。
このAlign Euler to Vector
も妙に癖のあるノードなのですが、一番上のXYZは「オブジェクトのローカル軸」を指定し、それをどのグローバルのベクトルの方向に向けるのかを一番下の「ベクトル」に指定するようです。今回は円柱の法線(ノーマル)に沿って配置したいので、ノーマル
のノードを繋げます。すると下記のようになります。
おにぎりの山はたしかに外に向いてくれましたが、個々に回転してしまってます。もうちょっとという感じ。ここで私は詰まりに詰まりました。結果から言うと、二重にAlign Euler to Vector
のノードを組めば解決しました。
あらたに、ローカルの「Y軸」を、グローバルのZ軸「1」に向けるノードを挿入します。
意図通りの配置になりました。……いや、一箇所だけ回転できていません。ここがハマる第二のポイントです。
一箇所だけ回転しない原因は2つ。頂点の数が4の倍数だと、なぜかそのうちの1つが回転しません。今回は頂点が8だったのでこれに該当したようです。あとはYouTubeのコメント欄で発見したのですが、回転のベクトルに0.0001を入れると何故か直ります。
不思議な現象ですがおそらくはバグでしょう。これでようやく、美顔ローラーのようなオブジェクトが作れました。ジオメトリーノードの回転で困っている場合、参考にしてみてください。
備忘録として残しておきます。