ジオメトリノードを使って0度90度180度270度ランダムにオブジェクトを回転させる方法を紹介します。
今回紹介するのは、「【Blender】ジオメトリノードを使って指定した軸だけをランダムで回転させる方法」で学んだことの応用編で、オブジェクトをランダムに回転させるのではなく、0度90度180度270度指定した角度にランダムで回転するオブジェクトの配置方法を紹介します。
完成形が言葉だと難しいので、下記画像のように回転が「0度90度180度270度ランダム」で立方体が配置されます。

画像のように90度回転なので斜めになることもなくビルなどの建物を配置する際に使うことが出来ます。
今回使用しているBlenderのバージョンは、3.5.1でインターフェースを日本語で操作しています。
Blenderの回転を理解しよう
今回は、以前紹介した、「【Blender】ジオメトリノードを使って指定した軸だけをランダムで回転させる方法」の記事で紹介したジオメトリノードを使っています。
また、今回は回転が分かりやすいようにオブジェクトの面を赤・青・黄・緑にしています。

ジオメトリノードを使ってオブジェクトを回転させる際、「ポイントにインスタンス作成」にある回転からZ軸の数値を90°にすることでオブジェクトが90度回転します。

回転の単位が「°」になっていればそのまま回転させたい角度を入力すれば回転させることが可能ですが、「XYZ合成」などを使い回転に繋げると角度を入力しても指定した角度に回転させることは出来ません。


このように「XYZ合成」を使って指定した角度を回転させたい場合は、クォータニオンの形式で設定します。
例えば、180度回転させたい場合「pi」と入力すると180度回転させることが出来ます。

この「pi」は「π」のことでBlenderのZ軸にπを設定すると、πラジアンの回転を意味します。πラジアンは数学的には180度に相当します。つまり、Z軸にπを設定とオブジェクトをZ軸周りに180度回転させる操作として解釈されます。
Chat GPT引用
「pi」を入れたことで円周率が数値に追加されます。

90度回転させたい場合は、「pi/2」と入力することでオブジェクトを90度回転させることが出来ます。

「pi」を入れることで180度回転、「pi/2」を入れると90度回転、「pi*2」を入れると360度回転となります。
90度ごとにオブジェクトをランダムに回転
ジオメトリノードの追加から「数式」を追加し「XYZ合成」のZ軸と繋ぎ、数式を「乗算」に設定します。

次に追加から「ランダム値」を追加しFloatから整数に変更し、「ランダム値」と「乗算」を繋げます。

乗算の値に入る数値を「pi/2」に設定します。
ここでオブジェクトは、90度回転することになります。

0度90度180度270度のランダムに回転をさせたいので「ランダム値」の「最小0」「最大3」に設定します。

この時、ランダム値と乗算では、「0*1.571」「1*1.571」「2*1.571」「3*1.571」の計算が行われ結果的に0度90度180度270度の回転がランダムに行われます。

これでオブジェクトが90度ごとにランダムに配置されます。

まとめ
ジオメトリノードを使えば、オブジェクトをたくさん配置することが出来るので都市などを作成するのに向いています。
しかし配置したビルが全て同じ向きを向いていたり、回転をランダムにしたせいで斜めに向いているビルがあると違和感のある都市になってしまいます。
ですが、「ランダム配置」「乗算」「XYZ合成」を使い、「pi/2」で90度を指定してあげることで簡単に90度ごとのランダム配置が可能になります。