チュートリアル / MotionBuilderでカットシーン制作
第1回:シーン制作するための準備 キャラクター・背景編
- MotionBuilder
- アニメーション
- キャラクター・リグ
- ゲーム
- コラム
- チュートリアル
- 中級者
- 学生・初心者
はじめに
みなさんこんにちは。 MotionBuilder (以下、MB)のコラムを書かせていただくことになりました、長尾と申します。普段はゲーム会社でカットシーンを制作しています。
今回のコラムでは、MBの導入に迷っている方からシニアレベルの方にも満足いただけるように、モーションキャプチャー(以下、Mocap)データを使ったカットシーン制作をテーマにした内容になります。
ステップバイステップのチュートリアル形式で、MBの各種機能の使い方やちょっとしたTipsを紹介していこうかと思います。作業中の画面を録画していますので、3分クッキングみたく「作業後はこれで~す」っていう結果だけを見せる形ではなく、生の制作過程をお届けいたします。
MotionBuilderってどんなソフト?
一言でいうとアニメーション制作に特化したソフトです。Maya や 3ds Max のようにモデリングやハイクオリティーのエフェクト作成などは出来ないですが、とにかくアニメーション制作やカットシーン制作の生産性が高いです。では、アニメーションに特化した部分は何?ってなると思うんですが、これまでの経験からMBのメリットをリストアップしてみます。
・ハイポリのキャラクターでもリアルタイムでモーションの再生が可能
・モーションキャプチャーデータを編集するためのFilter機能が秀逸
・2足や4足のキャラクターならFullBodyIKリグの制作がすぐ出来る
・FullBodyIKリグを利用すればアニメーションのリターゲットが簡単
・アニメーション、動画、音声、などClipを編集するためのStory機能が便利
コラム全体を通してこれらのメリットの解説をいれつつ実制作に役に立つ使い方をお見せできたらなと思います。
まずはPreferenceの設定
ソフトの環境設定をしていきます。これを設定するとしないとでは塵も積もれば的なことで後々の生産性が違ってきます。上部メニューのSettings→Preferences... から設定画面を表示します。
カメラのNearを1、Farを40000000に設定
この設定は2018バージョンから設定出来るようになりましたね。
デフォルトの値だとFarが小さいので大きい値を設定します。
この値はプロジェクトの仕様によって決まっていることもあるので確認してから設定してください。
SolverをMB Character Solverを選択。
昔MBの開発者と直接会って話す機会があり聞いたらHumanIK Solverと99%(?)くらい同じって言ってたので、気持ちの問題ですね(笑)
僕は昔から使い慣れたMBのSolverがいいのでこちらの設定にしています。
デフォルトだと小数点の表示が2桁なので5桁に設定。
編集できるUnitを100000000に設定。
ゲーム系のアニメーションだと小数点の値も重要なので5桁位まで表示できるようにします。
Dead Weightを0.0%に設定。
これはスキンウェイトを切り捨てる割合の設定です。
フェイシャルのウェイトとかは微小な値が入ることもあるので念のため切り捨てられないように0.0%に設定します。
キャラクタライズしてお手軽リギング
MBでアニメーションさせるためには、キャラクタライズや作業しやすいようにグループ分けを設定していきます。キャラクタライズって何?っていうと、簡単に言うとリグを作成することです。Mayaや 3ds Max だとリグを組むのに、コントローラーを作成、コンストレイン作成、エクスプレッションの設定など知識や経験が必要ですが、MBだと「この骨はHipsだよ、この骨はLeftArmだよ」ってテンプレートに沿って登録してあげるとFullBodyIKのリグが自動で作成できます。キャラクターのデザインやリグの仕様によりますけど、2足歩行のリグを組む工数が Maya や 3ds Max で1~2日かかっていたのが、MBでは30分くらいで出来ちゃいます。
キャラクターセットアップの作業画面を録画しました。ポイントになる箇所は動画中の対応時間を記載していますので飛ばして見ても大丈夫です。
まずモデルを開いてから最初にやることはグループ分けです。[動画 00:26~]
キャラクターの名前、メッシュをいれるグループ、骨を入れるグループ、それ以外に触らないグループ
を作成して割り当てます。最初にグループ分けをして、グループ機能のShow、Pick、Trsを設定することで選択がしやすくなって後々の作業効率が良くなります。こういう細かいところが生産性に繋がってきます。
次に大事なNameSpaceの設定です。[動画 1:35~]
Mayaだと階層が違えば同じ名前が存在できますが、MBでは別階層にあっても同じ名前のものは存在できません。なので複数キャラクターを読み込んだ時に同じ名前があるときはリネームされてしまうので、それを防ぐために必ずNameSpaceを付けます。
それらが設定出来たら、いよいよキャラクタライズです。
キャラクタライズする前には必ずTポーズにしておきます。モデリングの都合でAポーズになっている場合は腕がX軸と並行になるように回転させます。正面はZ軸プラス方向に向いている状態です。
各骨を対応する箇所に登録していきます。[動画 1:54~]
登録が終了したら鍵マークところをクリックしてロックします。[動画 4:53~]
表示されたウィンドウで「Biped」を選択します。[動画 4:53~]
Bipedは二足歩行のキャラクターの時に選びます。馬や犬などのような四足歩行のキャラクターの時は「Quadruped」を選びます。
コントロールリグを作成します。[動画 4:58~]
表示されたウィンドウでどのタイプのリグを作成するか聞かれますが、「FK/IK」を選びます。
これまでの経験で一度も「IK Only」のタイプを使ったことがないので「FK/IK」で問題ないです。
これでリグが完成したのでキャラクタライズが正しくされているか確認作業をしておきます。
MBではキャラクタライズがされたキャラクターのことをCharacterという単位が管理されますので名前を付けておきます。[動画 5:35~]
地味なことですが、texture、Shader、Videoなどのファイルをまとめるフォルダを作成します。[動画 5:48~]
MotionBuilderでSet Driven Key
Mayaでリグを組んだりするときに便利な機能としてDrivenKeyがあります。DrivenKeyとは、あるオブジェクトAを動かしたら連動して別のオブジェクトBが動くというものです。MBの標準機能だけで同じようなことができます。まずはMBでDrivenKeyを再現する方法を解説します。そのあと仕組みを使ってRoll骨のリギングをしていきます。
まず、Relationコンストレイン1つ作成して名前をNormalizeなどのようにしてコンストレインの名前を変更しておき、MacroToolsから3つのMacroInputNumber、MacroOutputNumberを1つ作成し、以下のようなリレーションコンストレインをつなげます。
上図のRelationでやっていることは以下の計算をしていて、MinとMaxを設定したときInputされた値によってウェイト値を出力するものです。つまるところ、正規化しています。
次にこのrelationをマクロして使いコネクションを作成します。
上図の場合、Driverの「L_HAND_ROLL」が0~90の間で動くときに、「L_ROLL_CTRL_OFFSET」が0~45曲がるように動作させるようにつなげています。受け取り側は回転なので、「Interpolate」を使用しています。この「Interpolate」は球面線形補間です。開始姿勢と終了姿勢を最短距離で補間してくれるものです。詳細を説明すると結構な長さになるので気になる人は検索してみてください。回転以外ならVectorにある「Middle Point」でOKです。
・Interpolate
c[Number] 0のとき、Ra[Vector]の姿勢
c[Number] 1のとき、Rb[Vector]の姿勢
・Middle Point
ratio[Number] 0のとき、v1(Position)[Vector]の姿勢
ratio[Number] 1のとき、v2(Position)[Vector]の姿勢
つまり、様々なTransやRotの入力された値を0~1のウェイト値に置き換えてからそのウェイト値を受け取ってTransやRotへ変換しているのがDrivenKeyの仕組みなのです。
これらを踏まえてRoll骨のリギングをしていきます。
MotionBuilderでリグの作成
DrivenKeyの仕組みを使ってRoll骨のリグを作成していきます。
ウェイトの入り方次第ではありますが、今回のRoll骨のリグでは手首または足首の骨が回転したらその半分の値でRoll骨が回転するというものです。
ダミーのNullとコントローラーを作成します。[動画 00:07~]
コントローラーにはMarkerを使用するのがMBでは定番です。外観のお好みでOKですが回転のコントローラーになるので回転してもわかるようにHardCrossとかがいいですね。
次に名前、DOFの設定、コントローラーの見た目の設定、親子付けなどをします。
DOFの設定をすることで回転をRoll、Pitch,Yawなどの成分に分けることができます。Roll、Pitch、Yawだと感覚的にどっち方向の回転かわかりづらいので、カメラの動きの名前からお借りして、PAN、TILT、ROLLとしています。
そして、DrivenKeyの元となるnormalizeのRelationコンストレインを作成します。[動画 05:24~]
ダミーのNull群やコントローラーをスキンウェイトが入った骨とRotationコンストレインします。[動画 06:55~]
DirivenKeyの仕組みをRelationコンストレインで作成します。[動画 07:45~]
あとは右手[動画 10:22~]、
左足[動画 14:12~]、右足[動画 21:29~]のRoll骨に関しても同様に設定していきます。
足のRoll骨のリギングの時に動画中でいろいろ迷っている箇所があったのですが、FullBodyIKでは肘と膝にDOFを設定していないと3軸で動いてしまうので、1軸だけで曲がるようにDOFを設定します。[動画 20:29~]
原因としては、DOFを設定してなかったため足首を回転させると膝のほうまで回転してダミーのNullに回転値がうまく入ってなかったようですね。
自分で作成したNullやコントローラーをグループ分けします。[動画 25:05~]
リグを組んだRoll系の骨は自分で意図的にPlotしてあげないとキーフレームが打たれないので、FullBodyIKがPlotされた時に一緒にPlotされるようにCharacterExtensionを使って設定します。[動画 26:18~]
膝パッドも同じようなDrivenKeyの仕組みを利用して膝が回転した半分の値を膝パッドが回転するように設定します。[動画 27:01~]
これで下準備は完成です。
セットアップが問題ないかアニメーションを流して確認してみます。
アニメーションならなんでもいいので、AssetBrowserのPrevisMovesにあるBackfistアニメーションファイルを使ってリターゲットし問題ないかチェックします。ここではキャラクタライズやリグが問題なく動くかどうかチェックするだけですので、詳細なリターゲット方法は次回に解説いたします。
もう一人のキャラクターのMiaも同じ手順でセットアップをします。
AragorのRoll骨のリギングで使ったものをSaveSelectionで別名保存しておいて、Miaのセットアップに流用しています。完成するとこんな感じです。
背景の下準備
今回の背景はClipArtにある「Laboratory」を使用していますが、Mayaで作成された物と想定してExportするところから作業画面を録画しています。
基本的にはデフォルトの設定でMayaからExportして問題ないです。[動画 00:08~]
MBで開いたらキャラクターのセットアップと同じようにグループ分けをします。[動画 00:54~]
今回はドアを動かす想定なので簡単にリグを作成します。[動画 01:42~]
本来ならスキンウェイトを入れて骨で制御するのですが、時間の余裕がなかったのでメッシュに直接リグをアタッチしています。(言い訳すいません・・・)
メッシュにテクスチャー動画を貼り付けて雰囲気を出します[動画 04:30~]
ライトの影響を受けないようにFlatシェーダーをアサインして、黒いところは抜きたいので「Additive Transparency」で抜きます。[動画 04:30~]
同じように他の雰囲気だしで動画素材を貼り付けます。[動画 05:19~]
あとはキャラクターセットアップと同じように各素材をフォルダ分けします。[動画 06:01~]
NameSpaceもつけます。[動画 07:06~]
第1回目の下準備編はこれで以上となります。いかがでしたでしょうか。地味な作業ばかりで退屈に感じてしまうかもしれまんが、こういう下準備が大事なんです。料理と一緒ですね。
次回は、Xsensを使用したMocap(モーションキャプチャー)の収録、キャラクターへリターゲットをやります。
まとめ
・ノードは種類ごとにグループ分け
・素材はフォルダ分け
・NameSpaceは絶対つける!
今回のシーンファイルがダウンロードできます。