CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender 4.0】シミュレーションノードを使ったエフェクト・表現まとめ
こんにちは!
こちらの記事では、フリーの3DCGソフト「Blender」を使う上でヒントとなる情報を紹介しています。
今回は、ジオメトリノード上で粒子・流体などの運動をシミュレーションできる「シミュレーションノード」を使った様々なエフェクト・表現を紹介していきたいと思います!
シミュレーションノードを使いこなすことで、Blenderの物理演算機能では表現できないような複雑な動きも表現できるようになるので、ぜひ参考にしてみてください。
シミュレーションノードの基本的な使い方
シミュレーションノードを使うためには、前提として「ジオメトリノード」の基本的な機能・使い方を押さえておく必要があります。
こちらのリンク先の記事でジオメトリノードの基本的な使い方を説明していますので、シミュレーションノードを使う前にまずはこちらをご一読ください。
次に、シミュレーションノードの基本的な使い方を紹介します。
ジオメトリノードエディターのヘッダーの「追加」(またはCtrl+A)→「シミュレーション」→「シミュレーションゾーン」を選択します。
するとこちらのように、「シミュレーション入力」「シミュレーション出力」の2つのノードに挟まれた赤紫色の領域「シミュレーションゾーン」が追加されます。
シミュレーションノードを使う際に、まずは「グループ入力」と「シミュレーション入力」、「シミュレーション出力」と「グループ出力」を接続します。
シミュレーションノード内にジオメトリノードを追加することで、そのジオメトリノードによる操作が各タイムフレーム毎に繰り返されます。
たとえば、「ジオメトリトランスフォーム」ノードをシミュレーションゾーン内に追加し、「X方向に0.1メートル動かす」をシミュレーションノード内で繰り返すことで、1フレーム毎に0.1m進む等速直線運動を表現できます。
シミュレーションノードの基本的な使い方については、「Blender 3.6 LTS」の紹介記事内で解説しているので、こちらのリンクを参照してください。
シミュレーションノードで表現できるもの
シミュレーションノードは非常にバラエティに富んだ表現を可能にしてくれますが、こちらの記事では以下のように4つに分けて紹介します。
- オブジェクトの落下・振動
- 粒子・流体の生成・動き
- 足跡・残像
- 集団の表現
オブジェクトの振動・落下
「シミュレーションノードの基本的な使い方」の項目で等速直線運動を紹介しましたが、シミュレーションノードを使うことで、これから紹介するようなばねの力による振動や重力による落下運動を表現することができます。
シミュレーションノードを使用したエフェクトの基本にもなるので、ぜひ参考にしてみてください!
シンプルな振動
シミュレーションノードを使用して、左右に振り子のように揺れる単純な振動(単振動)を作れます。
ジオメトリノードはこんな感じです。
ちょっと複雑ですが、シミュレーションゾーンの中は大きく分けて2つに分けられます。
1つ目は上の図で緑色で示した箇所で、1フレーム当たりの移動量を計算し「Set Posision」ノードの「Offset」にインプットしています。
2つ目は上の図のオレンジ色で示した箇所で、単振動の公式(フックの法則)から1フレーム後の加速度を計算しています。
振動のシミュレーションノードの作り方について、詳しい説明はこちらのサイトを参照してみてください。
バウンドするボール
シミュレーションノードを使用して、地面にバウンドするボールのアニメーションを作れます。
ジオメトリノードはこんな感じです。(見やすいようにグループ化して表示しています)
「Ball」のグループでは、生成したポイントにICO球を生成し、インスタンスとして格納しています。
「Ball Speed」のグループでは、速度を定義しています。
各フレーム毎にZ方向に-0.02ずつ追加され、重力によって加速しながら落下する動きを表現しています。
「Collision」のグループでは、地面での跳ね返りを表現しています。
「Raycast」(レイキャスト)ノードで、地面として設置した平面オブジェクトとの距離を測り、1m(=ボールの半径)以内かどうかを判定します。
「Is Hit」(ヒットグラフ)と「Switch」ノードを接続することで、ボールが地面に当たるまでは落下を続け、地面に当たったら速度が反転し跳ね返る(=バウンド)を表現しています。
Swtichノードから出力した速度を「Store Named Attribute」(名前付き属性格納)ノードに接続し、属性(Attribute)として格納します。
「Set Position」のOffsetソケットに「Named Attribute」(名前付き属性)ノードを接続することで、ボールの位置が速度分移動します。
バウンドするボールのシミュレーションノードの作り方について、詳しい説明はこちらのチュートリアルを参照してみてください。
揺れるロープ
シミュレーションノードを使うことで、こちらのようにロープを揺らしてアニメーションさせることができます。
ジオメトリノードはこんな感じです。(ノードグループを色分け表示しています)
「Rope」のグループで、左(Left)と右(Right)のエンプティを両端としたカーブを生成しています。
「Set Right and Left Position」のグループでは、エンプティの動きに合わせてロープの端点を追従させています。
「Rope Physics」のグループでは、ロープの端点から伝わる元に戻ろうとする力(復元力)によって起きる、ロープがゆれる動きを表現しています。
揺れるロープのシミュレーションノードの作り方、およびそれを応用したつり橋の作り方について、詳しい説明はこちらの記事で紹介している「MTR Animation」さんのチュートリアルを参照してみてください。
粒子・流体の生成・動き
ジオメトリノードでは粒子を生成することができますが、その動きをシミュレーションノードで制御することができるので、具体例を交えてやり方を紹介します。
また、その応用として液体や煙などの流体の動きも表現できるので、あわせて紹介します。
パーティクル(粒子)
こちらのように、ジオメトリノードでパーティクル(粒子)を生成し、シミュレーションノードを使ってランダムな放射を表現することができます。
ジオメトリノードの中身はこんな感じです。
かなりノードが複雑なので全体の説明は割愛しますが、「Particle Movement」のノードグループに含まれる「Noise Texture」(ノイズテクスチャ)で、ランダムなパーティクルの動きを表現しています。
シミュレーションノードを使用したパーティクルのランダムな放射の作り方について、詳しい説明はこちらの記事で紹介している「Sphere Cube」さんのチュートリアルを参照してみてください。
水泡
粒子の運動を応用することで、こちらのような水泡の動きを表現することができます。
ジオメトリノードの中身はこんな感じです。
緑色のノードグループは、水泡の生成をコントロールしています。
エンプティオブジェクトからポイントを生成し、ランダムな速度を与えています。
青色のノードグループは泡の形状をコントロールしています。
水色のノードグループは、泡が障害物に当たったあと、障害物に沿うように浮き上がる動きを表現しています。
詳しい作成方法については、こちらの記事で紹介している「MTR Animation」さんのチュートリアルで説明しているので、ぜひ参考にしてみてください。
煙・爆発
粒子の運動を応用することで、こちらのようなボリュームを用いた地面の爆破を表現することができます。
ジオメトリノードはこんな感じで複雑になっていますが、大きく分けて以下の4つのグループに分かれています。
- 煙・炎の元となる点群の作成(青色で表示したグループ)
- 時間変化とともに古いポイントを削除(緑色)
- 炎を作成(オレンジ色)
- 煙を作成(灰色)
煙は、「Points to Volume」(ポイントのボリューム化)⇒「Volume to Mesh」(ボリュームのメッシュ化)のノードで生成し、「プリンシプルボリューム」で生成したボリュームマテリアルを割り当てています。
詳しい作成方法については、こちらの記事で紹介している「MTR Animation」さんのチュートリアルで説明しているので、ぜひ参考にしてみてください。
液体
粒子の運動を応用することで、こちらのように液体を落下させたときの飛び散り、垂れる動きを表現することができます。
ジオメトリノードはこんな感じでかなり複雑ですが、大きく分けて以下の3つのグループに分かれています。
- 水滴の落下・地面との衝突(緑色で表示したグループ)
- 衝突地点にポイントを生成(灰色)
- ポイントを起点に水しぶきを作成(ピンク色)
3つのグループそれぞれに1つずつ、計3個のシミュレーションノードが使われています。
詳しい作成方法については、こちらの記事で紹介している「MTR Animation」さんのチュートリアルで説明しているので、ぜひ参考にしてみてください。
足跡・残像
シミュレーションノードを使うことで、動いているオブジェクトの「足跡」や「残像」などの「痕跡」を表現することができます。
ダイナミックな動きを表現するのに便利なので、ぜひ参考にしてみてください。
足跡
シミュレーションノードを使用して、地面にできる足跡のアニメーションを作ることができます。
ジオメトリノードは以下のように比較的シンプルです。
オレンジ色のフレームで囲ったノード群で靴の沈み込みにあわせて地面の頂点を移動させ、緑色のノード群で周囲の地面を盛り上がらせています。
詳しい作成方法については、こちらの記事で紹介している「Bad Normals」さんのチュートリアルで解説しているので、ぜひ参考にしてみてください。
残像
シミュレーションノードを使用して、こちらのように人物モデルが走ったり踊ったりする残像を、パーティクル(粒子)のアニメーションで表現することができます。
ジオメトリノードはこんな感じです。
「Mesh to Volume」「Distribute Points in Volume」でモデル周辺にポイントを生成し、ノイズテクスチャでランダムなパーティクルの動きを表現しています。
詳しい作成方法については、こちらの記事で紹介している「Khamurai」さんのチュートリアルで解説しているので、あわせて参考にしてみてください。
集団の表現
シミュレーションノードを使うことで、車や生物など集団の動きをシミュレーションで表現することもできます。
こちらの記事ではノードの詳細には触れませんが、「シミュレーションノードを使ってこんなこともできるんだ!」という参考にしてみてください。
交通システム
こちらの動画は、シミュレーションノードを使用した、自動化された交通システムを作成する「Procedural Traffic」のアドオンの紹介動画です。
シミュレーションノードを使うことで、カーブに沿って、前の車に追従しながら走る動きを表現することができます。
アドオンの機能や購入方法等、詳しくはこちらの記事を参考にしてみてください。
生態系
シミュレーションノードを使用して、こちらのように植物を生やしたり、それらを動物が食べる生態系を表現することができます。
詳しい作成方法やblendファイルの購入方法については、こちらの記事で紹介している「sirrandalot」さんのチュートリアルで解説しているので、あわせて参考にしてみてください。
まとめ
「シミュレーションノード」を使用したエフェクト・表現について、いくつか紹介してみましたが、いかがだったでしょうか?
シミュレーションノードはまだまだ登場してから日が浅く発展途上の機能なので、これからもどんどん新しいエフェクト・表現方法が出てくるはずです。
Youtubeのチュートリアルを真似したり、アレンジしたりして自分だけのエフェクトを作ってみて、シミュレーションノードを使いこなしていただければと思います。