卒論で忙しい僕のBlender 3.5 Simulation Node ふれあい体験記

 

 どうも、azarasing(あざらし)です。調布祭実行委員会とMMAに所属しています。最近は調布祭も終わり(調布祭は恐らく電通大4年で最も忙しい人物の一人と化していた)、さてゆっくり本でも読む時間が取れるだろうかと思っていた所、卒論の構成をしなければいけないことに気づき、途方に暮れているわけですが、Blenderの最新機能が凄そうなのでこれは試してみなければとなり、水族館のふれあい体験コーナーよろしく、ナマコをフニフニ触るような気軽さと時間のかけ方でBlenderをフニフニしていきたいと思います。

 

この記事はUEC 2 Advent Calender 2022の16日目の記事となっています。

adventar.org

前回は 📸さんの「ESPnetで高森藍子の声を錬成した」でした。

 

momicolle.hatenablog.com

 

合成音声分野は現在活況を布いていて、僕はずんだもんを苛めることしかしていませんが、一度僕も機械学習をしたいと思っています。さて、いつになることやら。

 

また、同時並行で2021年のUEC Advent Calender主催のmaccha氏のためのAdvent Calenderが進行中です。過去の日付でも全然OKなので、Advent Clenderの空き,もといmacchaさんの心の穴を埋めてあげてください。

同日上がる、つまみさんの徒歩記事も必見です。

Blenderの最新版のダウンロード

Blenderとは?GeometoryNodesとは?については2021年のAdventCalenderですでに紹介しているのでそちらを参照していただきたいです。

azarasing.hatenablog.com

今回扱うバージョンはBlender3.5.0 Alphaです。

最近はBlenderの扱うバージョンが増えてきたので、管理するためにBlender Launcherをダウンロードしておくといいでしょう。

Blender Lancherの画面から、Geometry Nodes Simulationを選択してダウンロードします。

ダウンロード画面

 ダウンロード遷移

気長に待ちましょう

ダウンロードが完了すれば、Blender LancherからこのGeometry Nodes Simulationを起動できます。

僕は英語版のままで操作していきます。Blenderは日本語の設定がありますが、それで利用している場合、海外のチュートリアルを実践するのに苦労してしまうため、初心者でも日本語ではなく英語からBlenderに触った方が長期的にはいいと思います。

Simulation

Blender 3.5の開発では様々な機能が実装されつつあります。ここではその中でもSimulation機能をメインで見ていきます。Blenderの新しい機能が!とTwitterのTLに流れてくるものの大半が今はこの機能に関わることだと思います。

3Dモデリング統合ソフトというカテゴリで見れば、MayaなどではSimulation機能はありました。Blenderでも似たようなことはできなくはないですが、機能は限定的で例えば布のみに特化するようなものでした。このようなシミュレーション機能をより一般性を持たせたものがSimulation機能です。

Blenderにて、その初歩の初歩をやっていきたいと思います。先ほどダウンロードしたバージョンでBlenderを起動します。上のタブからGeometry Nodesを選択します。

そして、GeometryWindowからNewを選択して新しいGeometryNodesを選択します。


するとノードが生成されます。ここで、このノードを以下のように変えていきましょう。

この画像だけでは作れない人もいそうなので、下に説明を追加しました。

  • Add(Shift + A)から、Simulation -> Simulation Inputノードを出します。
  • Add(Shift + A)から、Simulation -> Simulation Outputノードを出します。
  • Add(Shift + A)から、Geometry -> Transformノードを出します。
  • Group Input ノードの Geometryの出力からSimulation Inputノードの入力のGeometryとつなぎます。
  • Simulation InputノードのGeometryの出力からTransformノードの入力のGeometryとつなぎます。
  • TransformノードのGeometryの出力からSimulation OutputノードのGeometryの入力につなぎます。
  • Simulation OutputのGeometryの出力からGroup OutputのGeometryの入力につなぎます

さて、Spaceキーを押すと、TimeLineが動作してキーフレームが動きます。またスペースを押すと止まります。しかしながらこの状態ではなんの変化もありません。

ここで、TransformノードのTranslationのxの値を0mから0.1mに変えて再度Spaceキーを押してみてください。

 

 

すると、動画のように横に移動していきます。

察しのよい方は既に分かったと思いますが、このTransformノードが移動偏差の代わりとして機能しています。Transformノードは、つながる前のGeometryに対して設定された座標分移動/回転するノードです。Simulationではそれが1F毎に繰り返されるため、今回の場合では直線に移動するような結果となりました。Simulationノードではこのように前後のノードの位置の変化をノードで表すことによって、Simulationを達成しています。

ナマコっぽモノを挑戦してみようかな

さて、コツもつかんだところで、ナマコっぽいものを再現してそれをつつくGeometryNodesを作って終わりましょう。

原理としてはこういう感じ

図解

あるポイントに対して表面からの距離rの大きさに依存する$\mathbb{F}_{1}$と$\mathbb{F}_{2}$をNode上で計算してそれをSetPositionノードのOffsetに加えます。

出来たのが以下のノードと動画

GeometryNodes

感想

手こずって、サンプルを見て回るだけになりそうだと思っていましたが、実際に自分で構想して30分ぐらいで作ることができました。それはこのシステムがそれだけ単純で分かりやすいということだと思うので、皆さんも是非やって試してみてください。

とは言ってもあくまでこのクオリティなので、本物っぽくこだわるのであればそれなりの技術と時間が必要だし、それを掛けることができるだけの可能性がこのSimulationNodeにはあると思いました。

 

さて、次回はAkitoshiさんの未定です。楽しみですね。