チュートリアル / GEMBAコンバート道
第6回:群衆アニメーション編

2016.10.27

  • 3ds Max
  • Maya
  • MotionBuilder
  • アニメーション
  • チュートリアル
  • データ
  • 上級者
  • 中級者
  • 映画・TV

こんにちは、株式会社GEMBAの佐藤 宏樹と申します。
コンバート道第6回は群衆アニメーション編です。

第6回 群衆アニメーション編

今回は、Crowdシミュレーション用ソフトウェアであるMassiveを使用して群衆アニメーションを行い、3ds Maxでレンダリングするために必要なコンバートをいくつか紹介していきます。

コラムのために使用したソフトウェアは、3ds Max 2015、3ds Max 2014(Massive用)、MotionBuilder 2015、Maya 2015、Massive Prime 7.0、3delight, Vray です。

まず、コラムを読み進めるために最低限知っておきたいMassiveとは何か、について簡単に説明します。

MASSIVEとは・・

・群衆アニメーション効率的に作成するためのソフトウェア
・映画ロードオブザリングで有名になった
・様々な概観とモーションを合わせ持ちA.I.で動くAgentと呼ばれるキャラクタデータ(StadiumAgentなど)
を利用して群衆を発生させる(↓画像参照)

・AgentのA.I.構築やモーション編集は、Primeというパッケージのみできる
・Massive JetなどPrime以外のパッケージは、既成Agentを配置してシミュレーションやレンダリングを行うためのもの

群衆アニメーションをコンバートしよう

GEMBAのMassive用途は、主にイベント会場にいる観衆を作成することでした。Massiveを初めて導入した時は、Massive JetとStadium Agentで群集をつくり、Massive上でレンダリング(3delight)しましたが、近年はライトや質感調整を3ds Max上で行う必要性がある場合に3ds Max上でレンダリング(3delightかVray)を行いました。

このようにMassiveを使用するために、GEMBAではMotionBuilderのカメラをMassive用にコンバートしたり、モーションをAgent用にコンバート、またMassiveのシミュレーションを3ds Maxで読込む必要がありました。

このコラムでは、このようなコンバート作業から比較的有用そうなものを選んで、

・(コンバート1) カメラのコンバート
MotionBuilderで作成したカメラを、Mayaを介して、Massive用にコンバート

・(コンバート2) モーションのコンバート
MotionBuilderで作成したキャラクタモーションを、Massive Agent用にコンバート

・(コンバート3) 群衆シミュレーションのコンバート
Massive で作成した群衆シミュレーションを、Massiveではなく3ds Max上でレンダリング(3delight, Vray)する

の3つを紹介しようと思います。ボリュームはありますが、コンバートごとに読みきりにしてあるのでゆっくりお付き合いただければと思います。

(コンバート1)カメラのコンバート
MotionBuilderで作成したカメラを、Mayaを介して、Massive用にコンバート

Massive上で群衆アニメーションのレンダリングを行いたいときは、Massive内でカメラを作成するか、他のソフトウェアからカメラをコンバートしてくる必要があります。

この章では、過去にMotionBuilderで作成されたカメラをMassive用にコンバートしてレンダリングした時に行ったコンバート方法と、障害になった軸問題について書きます。

まずコンバートの流れを見てみましょう。

コンバート作業の流れ(※コンバート前のカメラは、ターゲットなしのカメラ)

1. MotionBuilderで、ターゲットなしカメラターゲットカメラへ変換して、FBXで保存する。
このターゲットカメラが、Massive用カメラとなります。

※スクリプトA. MotionBuilder用
MotionBuilderでの上記操作をスクリプトで行えるようにしたものをGEMBAホームページで提供します。

2. Mayaで、ターゲットカメラをターゲットなしカメラへ変換して、Maya Asciiで保存する。

※スクリプトB. Maya用
Mayaでの上記操作をスクリプトで行えるようにしたものをGEMBAホームページで提供します。

~軸問題~

さて、このコンバートの流れで、ターゲットをつけたり消したりしている工程が気になると思います。先ほど書いた軸問題はここで発生していたもので、MotionBuilderで保存したターゲットなしカメラをMayaでインポートして保存すると、カメラのY軸Rotate Axisに-90という値が入るため、結果的にMassiveレンダリングの画が90度回転する、というものです。

この問題は、MotionBuilder上でターゲットカメラにしてからMayaにインポートすることで解消できます。

書いてみるとこの軸問題はごく単純なものですが、こういった壁に度々直面しながら、一つ一つ試行錯誤を繰り返して問題を解決しながらコンバート作業を確立してきました。

(コンバート2)モーションのコンバート
MotionBuilderで作成したキャラクタモーションを、既成のMassive Agent用にコンバートする

GEMBAが使用しているMassive Agentのスケルトン階層は、MotionBuilderでキャラクタライズできるため、MotionBuilderのリターゲット機能を利用して、Massive Agent用のモーションを作成することができます。(下記図参照)
※体格・四肢の違い・Tポーズに違いがあると、リターゲット後全く同じモーションにはなりません。

このコンバートでは、このようにしてMassive用にモーションを移植する方法を、MotionBuilderで作成したおじさんを使って説明します。

コンバート作業の流れ

1. Massiveから、Agentのスケルトン階層をMayaデータ(.ma)として書き出します。

2. Mayaで1のデータを開き、MotionBuilder用にFBXをエクスポートします。

3. MotionBuilderで、Tポーズにしてキャラクタライズします。

4. おじさんMotionBuilderシーンに、3で作成したキャラクタを合成します。

そして、おじさんをリターゲットすると同じような動きをすることがわかります。確認後、スケルトン階層をSave Selectionします(FBX)。
※ 画像では元のおじさんモーションと比較するために、他のキャラモデルを利用してます。

5. 再度Mayaで4データをインポートして、Maya Asciiデータ(.ma)として保存すると、Massive Agentに使用できるモーションとしてインポートできるようになります。

このようにモーションを作成できるようになると、独自のMassive Agentが作成できるようになります。夢は無限に広がりますね!!

(コンバート3)群衆シミュレーションのコンバート
Massive で作成した群衆シミュレーションを3ds Max上でレンダリング(3delight, Vray)できるようにする

群集アニメーションの作成時には、みなさん考えると思いますが、いつも使うソフトに読込んで使用したくなるのではないでしょうか。

GEMBAでは、背景と同じライトを使う目的や群集の動きだけ作る用途で、Massiveで作成したシミュレーションを3ds Maxで利用することがありました。

このコンバートでは、GEMBAで実際に行った2つのアプローチを紹介します。

A.シミュレーションを、キャラ1体ごとのモーションにしてレンダリングする。

コンバート作業の流れ
1. 3ds Max上で、(コンバート2)2の工程で作成したFBXを読込み、3ds Maxでモブキャラクタをセットアップして、質感設定など行っておく。

2. Massiveで、シミュレーションをMaya Ascii(.ma)として保存します。

3. 2で作成したデータを、Mayaで開き、3ds Maxへ送信します。

4. 3ds Max アニメーション保存機能(XML)かFBXを使ってアニメーションを保存します。

5. 3ds Max上で、1でセットアップしたモブキャラクタを必要対数分合成し、それぞれに2で作成したアニメーションを読込みんでモブを再構築します。
※この工程で作成されるデータは必然的に大きくなるので、軽量化する必要性があります。

メリット
・観衆単体の位置調整が可能、また質感・ライト調整可能汎用性がある

デメリット
・手間がかかりがち

B. 3delight for MaxプラグインのRead Massiveオブジェクトを使って、3ds MaxにMassiveで作成したシミュレーションを直接まとめて読み込み、3delightでレンダリングする

※3delightのRead Massive機能とは
3ds MaxのシーンでMassiveのシミュレーションデータを直接読込んでレンダできる機能です

コンバート作業の流れ
1. Massiveで、レンダ用Ribファイルの作成まで行います。AgentのShaderは3delightに互換性のあるものを使う必要があります。
2. 3ds Maxを開き、Read Massiveオブジェクトを作成します。
3. 1.で作成した、ribファイルを指定すると、ボックスが現れます。ライトを作成してこれをレンダするとモブがきちんとレンダされます。

メリット
・作業がシンプルでわかりやすい
・3delightがサポートするライトなどを使用可能

デメリット
・モブ単体の位置や質感調整が3ds Max上でできない
・レンダラが3delight限定

まとめ

A.の方法はMassiveでアニメーション作成を行うだけなので、柔軟性と拡張性がいくらでもありそうですが、Bの方法が必要十分であれば簡単にモブのレンダリングまで完了できます。

このように、レンダリングするには、モデリング・セットアップからモーションの準備など様々な工程が考えられる群衆シミュレーションですが、ディレクションにかなうという目的でなるべく生産性の高い効率的な作業方法を採用することが成功への鍵でしょう。

それではコンバートできましたのでレンダリングしてみた動画をご覧ください。
せっかくなので以前からコラムで使ってきているおじさんのダンスアニメーション(MotionBuilder使用)を無理やりMassiveに移植して作成してみました。

今回はほとんど調整していないのでカクカクしてますが、Massive階層におじさんの動きを移植するときから、リターゲットの精度を向上する努力ができるのと、さらにリターゲット後にモーションを調整して向上することもできます。

それでは今回も最後まで読んでいただきありがとうございました。
配布スクリプトを是非ご活用下さい。

スクリプトはこちら

Top