DAZ Studioで、物理演算エンジンBulletを動かす覚書。
DAZ Studioの物理エンジンと言えば布シミュレーションのdForceだが、ゲームのような当たり判定つきの剛体物理を扱うBulletを使ってみたい。
球とかシリンダーとか動かしてもさほど楽しくないけど、こういったプリミティブを透明化してDAZの高品質モデルをペアレントすれば、なんだか楽しそうだ。
人が転がるようにした。
物理演算対象のプリミティブにフィギュアをペアレント。#DAZStudio pic.twitter.com/zKmMdKxWa8
— かぶき (@kabukinger) February 27, 2020
参考)Bullet Real-Time Physics Simulation (Bullet公式サイト)
Bulletは、プレステ4などのゲームにも組み込まれている実績抜群の物理演算エンジン。最新では、サイバー物理学の分野で使われ、仮想空間内で視覚情報からロボットに学習をさせたあと、物理的な機械の体に学習済みモデルを乗せ換えて効率よくロボットの自動化ができるんだとか。未来がもう、そこまで来ているなぁ。
mcjCasual氏のフリースクリプトでBulletを動かす
Bulletは、エンジンと名がつくだけあって、単体では起動して動くようなものではない。人間が扱いやすいようにするインタフェースが必要なのだ。
そこで、今回も有料級のスクリプトを惜しげも無く公開しているmcjCasual氏のスクリプトを使わせていただこう。なお、Windows専用だ。
mcjCasual氏のサイトは、DAZで売られているような便利ツールが無料で公開されている。しかも暗号化せず自由に中身が見られるようにして公開されてる。たぶん、ここからスクリプトをパクって売ってるヤツもいるんじゃないかと思うほどだ。
>mcjBulletService01 – mcasualsdazscripts3
mcjBulletServer01のインストール
物理計算を行う「Server」モジュールと、値の設定・送信・受信を行う「Client」スクリプトの2本立て。
Serverと名前がついてるけども、別のマシンを用意しなくてもいい。あくまで、DAZ Studioとは別の処理で物理計算をするよ、というような意味合いだ。
これで準備は完了だ。
mcjBulletServer01の使い方
地面代わりにCubeを引き伸ばしたものを置く。(多少厚みがあると、「突き抜け」防止になる)
Cubeは多少傾けて坂にしておく。
さらに転がりやすそうなCylinder(円柱)やSphere(球)を配置する。
ここから、ツールを使って「物理属性の指定」と「シミュレーション実行」をおこなっていく。
画面に2-が2つあるけど、きっと何かのミスなので気にせず進む。
ボタンの意味は…
- 1- Upload scene シーン情報をServerモジュールに渡す
- 2- Run Simulation シミュレーション実行。完了したらピッと音がする
- 2- Download Results 計算結果をTimelineに反映
シミュレーションは、一瞬で完了する。さすが、ゲームに使われているだけあって高速だ。
ServerモジュールとClientモジュールの連携はファイル渡し
Serverモジュールの製作日付は2015年なので、だいぶBULLETバージョンとしては古そう。だけど、ServerモジュールとClientスクリプトは、テキストファイルで連携しているだけっぽいので、Serverモジュールの差し替えは、難しくないんじゃないかな。
おいおい挑戦してみようと思う。
まとめ
DAZ Studioには布の物理シミュはあるけど、シンプルな物理シミュレーションがない。
関連 DAZ dForce設定
こういうフリーのスクリプトで実現できるのはいいんだけど、基本機能か、もしくはストアで買えるプラグインとかで対応してほしい気がする。