とある案件にて色々揺れ物のついた人型キャラクターのモーション制作がありそうで、前々から「MAYAデフォルトのシミュレーション機能は敷居が高く導入に手間がかかるなあと思っていたのでこの機会にBroDynamicsを検証して見ることにしてみました。

BroDynamics本家サイト

紹介している3D人さんのページ
3DJ

とりあえず使えるようになったので自分のメモ兼ねてレポートします。

インストールですったもんだ

これは自分のせいでもあるんですが、インストールで引っかかって作者さんに問い合わせまでしちゃったので今後導入する方はご参考に

maya.envにパスが書きこまれない

インストールするときにBroToolsフォルダのパスがmaya.envに自動で書きこまれるはずなんですが何故かうまくいかない。日本語OSとの相性なのか自分のローカル環境に問題があるのか不明なままでしたがとりあえず手動でパスを書きこんで解決

この時パスは「Brotoolを置いたひとつうえのフォルダを指定する」ので注意。
C:\Program Files\Brotoolsであればインストール時のパス指定はC:\Program Filesになります。

インストール後初回のみ表示されるワーニングウインドウから先に進まない

ワーニングウインドウは出るんだけど、ここでAcceptを押せないので何もできない。終了するしかない。おかしいなあと思ってログをみるとpermissionなんちゃらの文字が。もしやと思ってアカウントの権限を確認すると予想通り「閲覧と実行のみ」でフルコントロールになっていない。書き込み権限がないからワーニングウインドウを「もう見ました(=false)」に出来なかったんですね。

自分しか使わないPCだからまさかフルコントロールになってないとは思いもよらなかったです。

兎に角これで無事に起動!

モードは松竹梅3つ

BroDynamicsのシミュレーションは3種類あり、それぞれ別のタブになっています。
Manu

・Point → オブジェクトの点同士でシミュレーションします。もっとも簡単なモード
・Chains → ボーンのシミュレーションをします。今回主に検証したのはこちら
・RBD → かなり細かい設定ができるようです。今回は未検証

想定しているのが簡易な揺れ物のシミュレーションなので、今回はPointとChainsの②2モードのみを検証しました。

各モードの動作イメージ

このようにpointシミュレーションは運動に従って距離も変化します。お互いが拘束されないオブジェクトを簡単にそれらしく動かしたいときは便利かもしれません。

今回は髪の毛などオブジェクト間の距離がほぼ変動しない物体を想定しているので下のchainsを遣う事になります。

ツイートにも書いてありますが衝突判定をつけ始めるとパラーメータが増えてきて結果が暴れやすくなります。この辺はパラメータと衝突する物体の形状などにノウハウが要ると思われます。立方体など動きを止めやすく、球は暴れやすい気がしました。

なおChainsシミュレーションの被衝突オブジェクトはnClothのパッシブコライダーではなくツール内のコライダーオブジェクト登録を使います。

ColliderSetting

メニューバーのToolsかColiders and Forcesを選びます。

AddObject

被衝突オブジェクトをシーン上で選択しaddします。これだけです。非常に簡単。登録されたオブジェクト名にハイバーがついてますが、これはパスもしくはネームスペースの区切り文字なので気にしなくてよし。

パラメータざっくり説明

シミュレーション系機能は初めて使ったので正確性に疑義があるうえ全部を網羅できていません。デザイナーには逆にフィーリングで伝わるかも。

★General setting

Skip First N control
選択階層の何番目から物理計算するかを決める。0にして選択階層の一番上から
計算すると演算が止まらなくなるので1にして一つ上の階層から選択、計算する

Skip First N Frames
シーンスタート以降の何フレームから物理系さんするかを決める。多分複雑なものは
最初暴れるからだと思うけど、シンプルなものは0でいいように思う

——

★Alignment settings

Axisはちょっと勘所がつかめないので都度いじって一番暴れない設定を都度探す

それ以外はとりあえずいじらなくてよし

——–
★Simulation propaties

◆Attract
引き付け(開始位置に向かって)

◆Attract damp
引き付け力の減衰

◆Bend
柔らかさ?

◆Bend resistance
曲げ抵抗? →曲げにくさではなく本来の曲げ角度に達するまでの遅延と思われる

◆Stretch resistance
伸び抵抗(恐らくShift distanceをチェックしていないと無効)
 →伸びにくさではなく本来の伸びに達するまでの遅延と思われる

◆Compression resistance
圧縮抵抗 →ストレッチの逆

◆Drag
引っ張り? 空気抵抗と考えたほうが分かりやすい。数値を上げるとバネっぽさがなくなる

◆Damp

◆Motion Drag
なんか動きが鈍くなる(適当

◆Mass
質量 重くなる。当然上方向に動きにくくなると思うんだけど違いが判別できてない

◆Collide whidth offset
衝突判定を取る時の関節の半径
※次のUse nuclesチェックをオンにすると有効になる

Tips

いくつか他愛もないコツなど。

◆プリセットが作成できるのでいくつかパターンを作ってどれかを適用すればいいようにしておくと良いでしょう。

◆MAYAボーンの末端は動きがおかしくなりやすいので揺れモノのデフォーマとして使わないほうがいいです。

◆ボーン数は多目のほうが見栄えはいいんじゃなかろうかと思います。シングルボーンだと設定がけっこう難しい。ゲームっぽく派手目に動いてくれないです。

まとめ

簡易的かつ割と直感的に使えるので厳密性よりも生産性を求められるプロジェクトによいと思います。ただ自分の環境では不安定な動作をする事が多かったです。具体的には昨日ちゃんと動いたサンプルシーンが今日はうまくいかないとか、謎のワーニングを吐いてシミュレーションされないとか。MAYAを再起動すれば直る事が多いんですが、開くのに5分かかるようなシーンを扱う現場で使うには不安が残ります。

また「結果をみるにはかならずベイクする」という設計なので『タイムスライダを左右に動かしながら調整』というわけにはいきません。すごい不便という事はありませんが半手間多い感じ。

それでもMAYAは簡易シミュレーションの機能が弱いので重宝しそうです。バージョンアップも頻繁のようなので今後安定性のアップも期待できるかもしれません。

いずれ時間が出来た時にパート2としてRBDモードの検証もしてみたいと思います。

BroDynamics
価格:15ドル~
対応OS:Windows(開発環境)、Linux(動作テストOK)、
※MacOS(waiting approval)
対応Mayaバージョン:2015~(2015,2016でテスト済)→最新版では2014も記載されています

2008 - 2017 © QUAD ARROW Co.,Ltd.
All Right Reserved.