とある案件にて色々揺れ物のついた人型キャラクターのモーション制作がありそうで、前々から「MAYAデフォルトのシミュレーション機能は敷居が高く導入に手間がかかるなあと思っていたのでこの機会にBroDynamicsを検証して見ることにしてみました。
とりあえず使えるようになったので自分のメモ兼ねてレポートします。
インストールですったもんだ
これは自分のせいでもあるんですが、インストールで引っかかって作者さんに問い合わせまでしちゃったので今後導入する方はご参考に
maya.envにパスが書きこまれない
インストールするときにBroToolsフォルダのパスがmaya.envに自動で書きこまれるはずなんですが何故かうまくいかない。日本語OSとの相性なのか自分のローカル環境に問題があるのか不明なままでしたがとりあえず手動でパスを書きこんで解決
この時パスは「Brotoolを置いたひとつうえのフォルダを指定する」ので注意。
C:\Program Files\Brotoolsであればインストール時のパス指定はC:\Program Filesになります。
インストール後初回のみ表示されるワーニングウインドウから先に進まない
ワーニングウインドウは出るんだけど、ここでAcceptを押せないので何もできない。終了するしかない。おかしいなあと思ってログをみるとpermissionなんちゃらの文字が。もしやと思ってアカウントの権限を確認すると予想通り「閲覧と実行のみ」でフルコントロールになっていない。書き込み権限がないからワーニングウインドウを「もう見ました(=false)」に出来なかったんですね。
自分しか使わないPCだからまさかフルコントロールになってないとは思いもよらなかったです。
兎に角これで無事に起動!
モードは松竹梅3つ
BroDynamicsのシミュレーションは3種類あり、それぞれ別のタブになっています。
・Point → オブジェクトの点同士でシミュレーションします。もっとも簡単なモード
・Chains → ボーンのシミュレーションをします。今回主に検証したのはこちら
・RBD → かなり細かい設定ができるようです。今回は未検証
想定しているのが簡易な揺れ物のシミュレーションなので、今回はPointとChainsの②2モードのみを検証しました。
各モードの動作イメージ
BroDynamicsテスト動画その1、 Pointシミュレーション(衝突なし)。一番簡易に使えるモードでパラメータも少ない。 pic.twitter.com/40kryNjptK
— QuadArrowカジュアル (@QuadArrow_03) 2016年8月7日
BroDynamicsテスト動画その1、 Pointシミュレーション(衝突あり)。pointシミュレーションに衝突を組み込むには被衝突側にnClothのパッシブコライダー設定が必要(といっても選択するだけなので簡単) pic.twitter.com/OEBPCJJ5Yb
— QuadArrowカジュアル (@QuadArrow_03) 2016年8月7日
このようにpointシミュレーションは運動に従って距離も変化します。お互いが拘束されないオブジェクトを簡単にそれらしく動かしたいときは便利かもしれません。
今回は髪の毛などオブジェクト間の距離がほぼ変動しない物体を想定しているので下のchainsを遣う事になります。
BroDynamicsテスト動画その3、 Chainシミュレーション(衝突なし)。pointとの大きな違いはオブジェクト間の距離が固定される事(伸縮性を持たせることも可能)。髪の毛や鎧などは伸びないのでchainが必須 pic.twitter.com/liimCmBwGU
— QuadArrowカジュアル (@QuadArrow_03) 2016年8月7日
BroDynamicsテスト動画その4、 Chainシミュレーション(衝突あり)。パラメータもやや多くなるがデフォルトでもそれなりに見られるかも(シーンの複雑さによる)。 pic.twitter.com/D3682NZQKz
— QuadArrowカジュアル (@QuadArrow_03) 2016年8月7日
ツイートにも書いてありますが衝突判定をつけ始めるとパラーメータが増えてきて結果が暴れやすくなります。この辺はパラメータと衝突する物体の形状などにノウハウが要ると思われます。立方体など動きを止めやすく、球は暴れやすい気がしました。
なおChainsシミュレーションの被衝突オブジェクトはnClothのパッシブコライダーではなくツール内のコライダーオブジェクト登録を使います。
メニューバーのToolsかColiders and Forcesを選びます。
被衝突オブジェクトをシーン上で選択し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も記載されています