Blender ウォッチング

無料の高機能3Dモデリングツールの最新版「Blender 3.6」の「シミュレーションノード」を解説

ジオメトリノードを繰り返し使って複雑なアニメーションを作成可能

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

「モンキー」に凹ませられた地面が少し後に元に戻る、シミュレーションノードを使ったサンプル

 6月27日(GMT)、「Blender 3.6」が公式リリースされました。

 今回は「Blender」のジオメトリノード機能に追加された、「シミュレーションノード」機能とその利用方法についてご紹介します。

ジオメトリノードとシミュレーションノード

 ジオメトリノードは、その名の通り、ノードにより形状をモデリングする機能です。また、ノード外でもパラメーターによりコントロールできるよう設定することで、アドオンのように、知識がない人も簡単に使用できるため、すでにネット上の様々な場所で、アドオン同様公開や販売が広く行われています。

 そしてシミュレーションノードは、ジオメトリノードを「シミュレーション」として繰り返し実行し、その結果をアニメーションデータとして生成できるようにします。

 公式のリリースノートでは、たくさんのシミュレーションノードのサンプルを見ることができます。

公式のリリースノートに掲載されているサンプルの一つ

使用方法

 まず、[追加メニュー]から[シミュレーション]-[シミュレーションゾーン]を追加し、[グループ入力]ノードと[グループ出力]ノードの各[ジオメトリ]ソケットをリンクします。

[追加メニュー]から[シミュレーション]-[シミュレーションゾーン]を追加し、[グループ入力]ノードと[グループ出力]ノードの各[ジオメトリ]ソケットをリンク

 この[シミュレーション入力]ノードと、[シミュレーション出力]ノードその中に「シミュレーション内で繰り返す処理」を追加していきます。

サンプルによる実際の使用例

 とまあ、色々書くより実際にどんな感じかサンプルを見てもらった方が早いですよね。

 ここでは筆者が作成した、「モンキー」が乗った地面(?)が凹み、少し後に元に戻るというサンプルを使用して解説したいと思います。ファイルは以下からダウンロード可能です。

サンプルファイルについて

 記事解説用のサンプルファイルが下のリンク先からダウンロードできます。ご利用ください。

サンプルblenderファイル(ライセンス:CC0)

    ※Webブラウザーによってダウンロードがブロックされる場合がありますが、右クリックメニューからファイルの保存を行い、警告が表示されても[継続]などの項目を選択して保存してください。

 ダウンロード後、「Blender 3.6」で開いたら[スペース]キーを押せばアニメーションします。[Shift]+[←]キーまたは下の方にある[タイムライン]のヘッダーにある[|<]ボタンで最初に戻ります。

ダウンロード後、「v3.6」で開き、[スペース]キーでアニメーション再生。[Shift]+[←]キーまたは下の方にある[タイムライン]のヘッダーの[|<]ボタンで最初に

 ノードツリーの全体図は下のようになっています。できるだけ簡潔にまとめてありますので、わかりやすいと思います。まずは上から見ていきましょう。

ノードツリーの全体図。なおサンプルファイルではマテリアルが設定されているが、記事中の図では都合によりマテリアルなしで収録している

凹んだ部分を元に戻す処理

 まずは左上の方の「黒いフレーム」周辺を見てみましょう。ここは毎回地面の「Z座標(高さ)」を「0.0」に少しずつ戻す処理です。

 左下の[位置]ノードから位置ベクトルを貰い、「Z成分」だけを取り出して計算(Z = (0.0 - Z) * 0.3)して、右上にある[位置設定]ノードでオフセットとして加算します。

 なお、このフレームと[位置]ノードは「シミュレーションゾーン」内(紫の領域)から外れていますが、ちゃんと毎フレーム処理されます。

左下の[位置]ノードから位置ベクトルを貰い、「Z成分」だけを取り出して計算(Z = (0.0 - Z) * 0.3)し、右上の[位置設定]ノードでオフセットとして加算することで凹んだ部分を元に戻している

 ここが「シミュレーションノード」の威力を発揮する部分です。シミュレーションノードがない場合、自動的に元に戻るようなアニメーションにはならず、単にモンキーのいる場所が凹むだけになります。試してみると面白いかもしれません。

モンキーとの衝突判定

 次に右下の「青緑のフレーム」周辺を見てみます。ここはモンキーとの衝突判定を行い、地面の頂点を下げる処理を行っています。

 ずっと左の[位置]ノードと、すぐ左の[オブジェクト情報]ノードの位置(ベクトル)情報から距離を計算し、設定値(ここでは1.0)より小さいと、その頂点に[選択]フラグをつけます。

 フレームの下側では、先の「凹んだ部分を元に戻す処理」同様に[オブジェクト情報]ノードから高さ(Z軸)の値を取り出し、頂点を下に移動する値を求めて[位置設定]ノードに渡しています。

上側のノードで距離の計算と衝突しているかをチェック、下側のノードで頂点の移動量を計算

ベイクについて

 前の方で少し述べましたが、他のシミュレーションのようにアニメーションを再生することで、キャッシュがメモリ内に記録されます。これをファイルとして利用するには、[ベイク]機能を使用します。

 [プロパティエディター]の[物理演算]プロパティ-[シミュレーションノード]タブにインターフェイスがあります。

[プロパティエディター]の[物理演算]プロパティ-[シミュレーションノード]タブにベイク用インターフェイスがある

 デフォルトではファイルを保存したパスに、ベイクを保存するフォルダーが作成され、そこに記録されますが、[プロパティエディター]の[モディファイアー]プロパティ内にある「ジオメトリノードモディファイアー」の[内部依存]からベイクパスを指定することもできます。

ベイクのパスはモディファイアー毎に設定できるよう、[プロパティエディター]の[モディファイアー]プロパティ内にある

終わりに

 今回は「Blender 3.6」で追加されたシミュレーションノードをご紹介しました。興味のない方にはよくわからない機能が1つ増えた、くらいの感覚だと思いますが、この機能を利用した便利なツールが登場することで、最終的に多くのユーザーが恩恵を受ける可能性もあると思います。

 ではまた。