CG・コンテンツ制作
  1. CG・コンテンツ制作トップ
  2. DAIKIN CG Channel
  3. UsersNotes
  4. スクリプト
  5. Maya 2017~ タイムエディタについて
SUITE USERS NOTES
Maya 2017~ タイムエディタについて
Maya 2017~ About TimeEditor
プロローグ;Prologue
TimeEditor_
Maya2017の新機能のうち、最も注目の置かれるべきはなんでしょうか。
Arnoldレンダー対応?、Print Studio対応?、PySide2への移行?
いえいえ、大きくワークフロー、特にアニメーション対応で劇的に変わる機能・・
TIME EDITORの実装です!!!
PySide2への移行は QTを作ってツール開発している方には超痛い話ですかね・)

何故、TIME EDITORか ??
それはAutodesk SoftimageMixer機能
知っている方ならご存知の アニメーションをクリップ単位で編集出来る
ノンリニア の アニメーションエディターが実装されたからです !!
とうとう実装されたのです、Mayaに。
え?TraxEditor??いえいえあれは・・・)

PS
ちなみに、Maya2017ではGraphEditorも改善され、
カレントフレームバーの表示とマウスでのスクラブが
出来るようになりました!!
(って基本的な機能だと思いますが・・・)

<参考> Maya2017 アニメーションの新機能

なお、このサイトに掲載している事例の決まり事ですが、
使用に関しては自己責任でよろしくお願い申し上げます。

Please use this information asyour own risk.
Windows7 Professional 64Bit、Intel Core i7-3930K(3.20GHz,6コア/12スレッド)
メモリ16GB、NVIDIA GeForce GTX970 4GB

ritaro_ml



従来のワークフロー例
さて、本題に入る前に、今まではどんなワークフローがあったかの1つを簡単にご紹介し、
そこからタイムエディタの機能を見た場合、どうタイムエディタを使いこなしてワークフローを変えていけるのか
という風に探ってみたいと思います。

例えば、こんな感じです。
MayaでFK骨のTPoseのキャラクターを作成し、MotionBuilderに転送します。
Maya2017 では、このメニュー以下にも何やら色々項目が増えています。AEとはアフターエフェクトですね。PrintStudio やクラウドもあります。
TimeEditor_10
MotionBuilderではモーションキャプチャーのVBHデータを ControlRig化 しておき、
Mayaから来たキャラクターデータも Characterize した後に ControlRig化してリターゲットします。
Mayaのキャラクターの ControlRig にアニメーションデータを移した後、
Animation の Layerを使ったり、StoryのClipを編集したりしてモーションを完成させます。
出来た動きは、その骨構造体部分だけを選択して、FBX形式で保存します。
TimeEditor_11s
Mayaに戻って、骨階層部分を選択しておいて、ファイル > 読み込み で FBX の Import設定でアニメーションを更新 にして読み込みます。
あとの作業はMaya上で完成させて、各ゲーム用のアニメーションデータとして出力し・・・たりします。(いろんなパターンはありますが)
TimeEditor_12s


Maya2017グラフエディタの紹介
アニメーションついでにMaya2017のグラフエディタを紹介します。
なんと!黄色のカレントフレーム表示とマウススクラブが出来ます!(当たり前ですよね)
そして、縦横のフレーム数と値の表示が固定になりました。(これも当たり前・・・)
ズームインアウトをしてもマスの値表示は変化しなくなりました。

表示のマスの幅は任意に変えられます。デフォルトでは60になっています。
プリファレンスの設定 > アニメーション項目内にグラフエディタのUI◎最新で、
ガイドラインをカスタムにすれば任意の単位に固定出来ます。
TimeEditor_13s



Time Editor その1;クリップによるエディット
では、早速タイムエディタの起動から始めます。
ウィンドウ > アニメーションエディタ > タイムエディタから起動します。
スクリプトエディタのログを見るとMELコマンドでTimeEditorWindow;を実行しているようでした。
(Maya2017版 Softimageライクなホットキーでは、Alt+0にこのコマンドを登録してみました。)
&ly; 余談 > やはり、このツールもパネル(Panel)ではあるので、cmds.getPanel(q=True,type=True)から見るとtimeEditorPanel1が見つかりました。
TimeEditor_14
従来から MayaにあるTraxEditorでは、CharacterSetというものを設定してからでないとキャラクターを登録出来ませんでした。
これが結構厄介であり、面倒でした。また、スクリプトからの制御も、う~ん・・・・、
キャラクター間でのクリップアニメーションのやり取りや、クリップアニメーションのバイザーへの登録も複雑でした。

タイムエディタでは、このCharacterSetの登録は要りません。やった~・・・;その代わり ネームスパースは重要です。

シーンにキャラクターを読み込んでおいて、階層トップのノードを選択して、
[ 選択したコンテンツをシーンから追加]してタイムエディタにキャラクターのアニメーションデータを読み込みます。
TimeEditor_15
読み込みが出来ると・・・下記表示が出ています。

クリップとアニメーション ソースが作成されました。
タイム エディタでクリップのキー設定可能アトリビュートが制御されます。

自動的に track1Composition1(合成名) 内に作成されます。

TPoseキャラクターのトラックが出来たら、アニメーションのクリップを作成します。
track1(下図)はこのキャラクターが動いているMayaのシーンファイル > アニメーションクリップの読み込むから選択して作成したものです。

追加の新しいトラックは右マウスクリック > アニメーショントラックを作成から簡単に作成出来ます。
track2(下図)は Windowsのエクスプローラから直接FBXファイルドラッグ&ドロップして作成した出来たものです。
この場合は読み込むオプション画面が表示され、◎クリップのシーケンスとして を選んでいます。
TimeEditor_17s
分割したり、ループを設定したりは、表示上部のアイコンや右クリックした時に出るメニューから設定出来、簡単に設定出来ます。
TimeEditor_
アトリビュートエディタ を見ると、選択したClipの詳細 が表記されていて、
この中の[レ] Use Clip Color を有効にすれば、その下の項目ClipColorで選択したに変更出来ます。
TimeEditor_18s
各クリップは ▼部分をクリックすることでどんどん中身を見ることが出来ます。
右クリック > ドリブン オブジェクトを選択からこのクリップと関連付けているオブジェクトを選択して、確認することが出来ます。
TimeEditor_21s


Composition について

タイムエディタの左上に表示されている[Composition]についてはドキュメントでは異なるバージョンと書いてあり、
同じシーンに幾つものバージョンを作成することが可能です。
MotionBuilderTakeだと同じキャラの別々のモーションという意味ですが、
Compositionは複数のアニメーションクリップで編集された画面を複数持てる、と言ったものになります。

Compositionはそのバージョンの最上位のディレクトリーで、スクリプトから特定のクリップを編集したい時などは、
Pathとしてcomposition1|track1|group|track2|clip1などとなります。

ちなみに、キャラクターのNameSpaceだけが異なるキャラクター間のモーション移行は簡単です。Compositionとは関係ありません)

下記例は同じキャラクターを2回シーンに読み込んでいて、2回目はTopノードの名前のNameSpaceが付いた状態です。
1つ目のキャラクター用もモーションClipを
右マウス選択 > ネームスペースのクリップをリマップ及び作成 > ネームスペース名とすればOKです。
複数キャラクターのモーション編集が簡単になりました。

TimeEditor_16s



Time Editor その2;タイムエディタのもっと詳細
タイムエディタのMaya内での動作をもっと詳しく探求してみましょう。

例えば、ポリゴンの球 をタイムエディタに登録してみると、アウトライナー上では
タイムエディタノードの下に作られた track1anim_Clip1というクリップに格納されていることが分り、
更に、そのソースとしてあるanim_Clip1_anim_Clip1_AnimSourceには球の移動/回転/縮尺値が入っていると分ります。
この時、球のトランスフォームをアトリビュートエディタで見るとオレンジ色のボックスになっていてキーの設定項目が無いことに気が付きます。
TimeEditor_23s
この状態でキーを打つと、タイムライン上に赤い縦バーが表示されてアニメーションが作られたかのように見えますが、
それはロックが掛かっていない可視化のキーアニメーションだけが作られた、という状態になります。

では、どうやってキーアニメーションを追加していくかというと、
タイムエディタ内のファイル  >  [レ]タイムエディタのミュートという項目があります。

簡単にはタイムエディタの一番左上の無効であるマーク アイコンミュート が出来ます。
ミュート にするとタイムエディタの表示部に無効であるマークが表示され、アトリビュートエディタも普段の色でキーが打てる状態になります。
例として、40フレームで X軸方向に 4 移動する アニメーションを作成してみます。
TimeEditor_24s
まだミュート の状態で、タイムエディタ内のファイル > シーンの選択からアニメーションを追加
または、左上の[ ] + のアイコンから キーアニメーションをクリップ化 出来ます。
オプション画面を表示させると、クリップ名 など詳細設定が表示されます。

※注意!!
ここでは、X軸移動値だけのアニメーションクリップを作成したいので、

[ ] 階層全体を含める
[ ] ルートを含める;移動、回転、スケール

からチェックを外し追加するアトリビュートであることを確認して クリップを作成します。
TimeEditor_
ミュート の状態を解除して、出来たClipの中身がX軸の移動値だけのClipであることが確認出来ます。(キーの無い空の移動/回転/縮尺の項目が無いようにします。)
Z軸移動のみのクリップも同様に作成してみます。
TimeEditor_27
複数のクリップを作成して配列する場合、開始最終フレーム値何フレームの重なりフレームがあるか まで表示されて便利です。
クリップ名を付けると格段に見やすく、分りやすくなります。
TimeEditor_26
では、上下にクリップを並べて動作を見てみます。
TimeEditor_28
この結果で、MotionBuilder StorySoftimageMixerのように、値の追加型で動作することが分ります。
タイムエディタの機能は昔から他にあったということで・・・・
TimeEditor_29
Trackの設定について

ちなみに、クリップにだけではなく、トラックにも高さ が設定出来ます。

クリップを選択し、アトリビュートエディタに表示される Composition タブ 内にトラック番号の項目があり、
トラックの高さ32(デフォルト)[ ] トラックカラーを使用 、トラックカラー の項目があります。
TimeEditor_45



Time Editor その3;クリップ のブレンド
では、クリップ同士のブレンドについてみてみます。

複数のClipのブレンドは
1)1つのTrack上で複数のクリップを重ね合わせる方法、
2)個々のClipに対して0~1のウェイト値を設定して、その値のカーブを編集する方法、などがあります。
TimeEditor_19
実は 1) の同じトラックにクリップ同時を重ねる方法でも、更に詳細な設定があります。

2つの Clip を選択した状態で、右クリックするとクロスフェード という項目が表示され、通常はリニア(既定)に設定されていることが分ります。
ここを◎カスタムにした上でカスタム;スプライン そしてカスタムカーブを編集...を選択することで カーブによる設定まで可能になります。
TimeEditor_20s


次は、レイヤ機能です。

このレイヤは個々のクリップに付けられるものです。
クリップを選択状態にして、アニメーションを追加したいもの (例;Neckジョイント) を選択し、
右クリック > レイヤ項目にオーバーライドを作成加算を作成 という項目の どちらかを選択します。
ここでは前者を選択しています。(上部アイコンにもオーバーライドを作成加算を作成アイコンがあります)

選択したクリップ にグレー色のレイヤが作成され、選択されたオブジェクトのアニメート可能なアトリビュートが表示されます。
カレントフレームを設定してレイヤを選択して右クリック > キーの設定 を選択するとキーが打たれます。
(上部アイコンにもキーの設定アイコンがあります)

レイヤに表示されたキーである白色の縦バー は左右に動かすことが出来、タイミングの調整が出来ます。

グラフエディタでも打たれたキーの情報を見ることが出来ます。
レイヤ名の下に オブジェクト名 と アトリビュート名 が表示されています。

右クリックからの表示メニューからはレイヤのモードも実は4種類 あることが分ります。
このモードは後からも変更出来ますが、一旦キーを設定してからモードを変えると全くことなる結果になるので、
モードを決めてからキーを打った方が思い通りになります。(特に縮尺の 0 と 1 では結果が全く異なります)
TimeEditor_30s
必要の無いアトリビュートは右クリック  > アトリビュートの削除から削除することが出来ます。
(キーの無い空のアトリビュートとトラックは作らない方が良いです。)

ひし形 が3つ重なったようなアイコンクリップ上のはレイヤを開き、左側名前欄にあるものは折りたたみます。
TimeEditor_31
クリップレイヤには複数のオブジェクト(例;指の3つのジョイント)を同時に登録することも出来ます。
ただし、それらがクリップに含まれているオブジェクトである必要があります。
クリップ選択 > ドリブン オブジェクトを選択を実行するとそのクリップが動かしているものを選択されて見分けることが出来ます。

例では右の人差し指ジョイントの回転値が選択しているクリップに含まれていることを確認した上で、
それらをレイヤに登録してキーを打った状態です。
TimeEditor_32s
ここでレイヤのフラット化をすると、BakedLayerという 1つのレイヤに統合されますが、
中のアニメーションのキーがベイクされたわけではありません。モードは 1つ になります、
ここではオーバーライド のモードなので、モードが異なる同士を統合した場合は結果が変わってくることでしょう。
TimeEditor_33s



Time Editor その4;クリップ とソース、データ出力Part1
さて、お次は、これらのアニメーションデータの出力について です。

クリップは あくまでもソースのコピー(インスタンス) です。 従って、もしソースを編集してしまうと、それを基としているクリップは全て変更してしまいます。
そこで、もしあるクリップは他に影響しない単独のソースに置き換えたい場合は、アニメーション ソースの固有化という機能を使います。
これを実行するとソース がコピーされ、それを基にするクリップに切り替わります。
TimeEditor_34s
ソースが増えるとMaya のシーンデータ容量がだんだん増えていくので、使わなくなったソースは書き出して外部ファイルとして取って置く、という手もあります。
下図は、一旦Maファイルとして出力したソースを、新規シーンのTPoseキャラクターに再び設定してみた、という図です。
TimeEditor_35
では、クリップのデータ出力 はどうなっているのか見てみましょう。
分りやすくする為、また横と縦の移動のクリップのシーンに戻ります。
クリップを1つ選択し、ファイル > 書き出し/選択項目を書き出し... □でオプション画面を表示させ。
◎Maya ASCIIにして[ 書き出し ]ボタンを押し、ブラウザで、出力先とファイル名を決めて[ 書き出し ]ボタンを押してみます。

タイムエディタの選択項目の書き出しオプションドキュメント
TimeEditor_36
Mayaの別シーンを開き、球をタイムエディタに登録した後、先程書き出した アスキーの .maファイルをクリップとして読み込んでみます。
元に戻りました。

TimeEditor_37

では、先程のオーバーライドのレイヤをこのクリップに設定して それを選択して .maファイルに書き出して、別シーンで読み込んでみます。
ここの例では、最初のクリップはX軸に40フレームで4動きましたが、オーバーライドで8動くように設定しました。
TimeEditor_38
と言うわけで、オーバーライドの値で .maファイルに保存されていることが分りました。
.maファイル出力の動作を踏まえ、FBX形式の書き出しをしてみます。
ただし、先程の工程で表示した、書き出し項目のオプション画面で気が付いたと思うのですが、FBXの詳細設定がありませんでした。
TimeEditor_39
そこで、同じ工程をする前に、FBXの書き出し設定(プリセット)をチェックしておきます。
良くあるゲーム出力用設定として、バージョンが 2014タイプがASCIIスケールが自動(cm)Yアップ、カメラとライトの無し
アニメーションにチェックを入れ、ベイク処理は 外してあります。
TimeEditor_40s
一旦FBX出力したファイルを再度タイムエディタに読み込んでみます。
すると、FBXの場合はZ軸の値もあり(当然と言えばそうですが)、毎フレームキーが打たれたデータになっています。
このことから、FBX形式の出力時にはデータがこのようにMaya上の表示とは異なる場合があること、、
タイムエディタにで扱うアニメーションデータとしては .ma形式 の方が都合が良いこと、などが分ります。
TimeEditor_41
ちなみに、同じアニメーションをMotionBuilderに持って行き、そこでキーをX軸のみの2点のみにしてから選択項目をASCII形式で保存し、
そのFBXを再度タイムエディタのクリップに乗せた場合は、なんと 同じ Xキー軸だけのアニメーションと、2点のみのキーで再現出来ました。
TimeEditor_42
もう少しデータについて見てみましょう。



Time Editor その5;クリップ とソース、データ出力Part2
前章でタイムエディタにで扱うアニメーションデータとしてはma形式 の方が都合が良いのでは と記載しましたが、
その理由がもう1つあります。
それは、クリップのソースを保存する形式はMayaのデータ形式 になっているからです。
下図はタイムエディタ画面上部ソース > 書き出し... ソースの選択 > 書き出しブラウザMayaASCIIを選択して保存した例です。
TimeEditor_43s
ちなみに、このソース項目からもクリップが作成 が出来、ソース > クリップの作成 ソースの選択 で行います。
同じソースをもう一度クリップとしてタイムエディタに読み込むと、クリップ名にはTake_002 と付きました。


複数のFBXを読み込む場合のドキュメントはこちらにあります。

タイムエディタで複数の FBX アニメーション テイクを読み込む
http://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=GUID-A5F13987-036D-42E3-BF66-EA312C045EBA

逆に複数のクリップを同時にFBXに書き出すことは選択項目の書き出し □オプション からFBX を指定して出力出来ますが、
ファイル > すべてのクリップをFBXに...から全部をFBXに書き出すことが出来ます。
TimeEditor_46
ファイル > コンテンツ ブラウサーを開く...は、FBX等の保存先をブラウズ 出来ます。
TimeEditor_47


ゲームエクスポータ

最後に、1つ項目を飛ばした、ファイル > ゲームエクスポーターを開く...を紹介します。
この機能自体は前のバージョンからあるものですが、タイムエディタ対応版であり、タイムエディタの時間軸でFBX 出力が出来ます。
トラック上のクリップは1つにまとめておく必要はないですが、
書き出しの時に考慮に入れて欲しいクリップ群は選択しないと 書き出し項目に クリップ名 を追加出来ません。
まずは、アニメーションを複数の下図例のように、各キーフレーム部分毎に分けて出力するとします。
TimeEditor_48
表示されたゲームエクスポーター 設定画面で、タイムエディタ タブ に移ります。
タイムエディタで出力に含めるクリップを選択した状態で▼タイムエディタクリップ 項目の+ボタンを クリック すると
クリップ単位の推測値が入ったものが表示されます。
出力クリップとして要らないものは 左端のゴミ箱ボタン を押し、開始/終了のフレーム数を修正します。
(このフレーム数は、FBXの設定を再設定した場合、元に戻ることがあるので出力時に注意です!!)
TimeEditor_50
フィルムボタン再生ボタンを押すとそのクリップ名のフレーム数の範囲内でループ再生をします。
後は、FBXの ファイルタイプ(ASCII)バージョン(FBX2014) の設定、また詳細設定は歯車のボタンからも行えます。
タイムエディタクリップの高度な設定を編集 [レ]にチェックを入れると、グレーアウト画面が編集可能になります。
カメラライトを外します。出力するディレクトリーのパスと書き出すファイル名を指定します。

さて、最初の試みとして
 [ クリップを単一のファイルに保存][ 書き出し ]します。(開いた時のデフォルト設定)結論から言うとこれはゲーム向けでは無いです。
TimeEditor_49s
この設定で出力した FBXファイルをMotionBuilderで開くと解ります。
読み込みの時点で気が付きますが、フレーム範囲指定した部分毎にTakeとして設定され、しかもその設定したフレーム数からのTakeになっています。
たぶん、これは意図したゲーム用のデータ形式ではないはずです。
TimeEditor_51
このようなTakeとしてアニメーションが保存されているFBXタイムエディタ
ファイル > アニメーションクリップの読み込みで読み込んでみると読み込みオプションが表示されます。
3択 のうち、一番下の◎クリップのシーケンスとして、が一番扱いやすいのではないかと思われますが、このような感じに配置されます。
TimeEditor_54
ではゲームエクスポータの設定を変えて、再度出力します。
 [ 複数の クリップ ファイルの保存]にして[ 書き出し ]します。
また、キャラクターの改造構造のみを選択した状態で 出力をし、その際には、[ 選択項目を書き出し]で行った方が出力時間が短く、
出力される ファイルサイズ も小さくて済みます。
もし、Skinモデルも要らなくて、Joint階層構造のみを選択して出力すれば、アニメーションのデータだけを素早く出力出来ます。
尚、アニメーションのベイクは単一のClip部分があったとして も必要です。
TimeEditor_52
今度は、指定範囲単位でファイルが分かれて出力されます。
が、各FBXファイルのアニメーションは、範囲指定したスタートとエンドのフレームになっていることは気をつけてください。
TimeEditor_53



Time Editor その6;グループ化出力
複数のクリップは1つのトラック上のグループとしてまとめることが出来ます。フォルダーのようなものです。
複数のクリップを選択した状態で、クリップ > クループ化しますです。<<なぜここだけ「です/ます調」なんでしょうか?(突っ込み)
もちろん展開する解除も出来ます。
TimeEditor_55
タイムエディタ上では、グループのまま、コピー&ペーストが出来ます。
また、グループにトラックを挿入で空のトラックを中に追加作成することが出来、そこにグループの外にあるクリップを置くことが出来ます。
TimeEditor_56
その下の[ ローカル時間 ] タブで開くは、グループクリップが始まるキーフレームを としてスタートする表示画面にします。
この時、シーンタイムの横に新たにGroup名のタブが表示されています。元に戻すにはシーンタイム のタブをクリックします。
カレントフレームの縦バー黄色ではなく、黒色になっていて、カーソルでスクラブ出来ません(仕様?)

シーン下のタイム表示か別表示のグラフエディタ のカレントフレームをスクラブするとカレントフレームを動かすことが出来ます。
この時、黒色の示すカレントフレームは 当然黄色のそれとは数が異なって表示されています。
TimeEditor_57
グループにもクリップ単位 Layerが設定出来、そこにも追加のキーを設定してアニメーションを追加することが出来ます。
TimeEditor_59
また、グループ1つのクリップ と同様の操作が出来るので、分割,ブレンド.色設定 が出来ます。
更に、複数のグループ1つにグループ化 できます。
TimeEditor_60
クリップを選択項目としてFBXに書き出す時、グループを1つのクリップアニメーションとしてベイク出力 することが出来ます。
Maya ASCII で書き出しても、グループ内のクリップの状態を保存することは出来ず、やはりベイクされたアニメーションになります。
TimeEditor_58



Time Editor その7;扱える追加的アニメーションブレンドシェイプ
キャラクターのJointアニメーション やRigアニメーションはトラックに追加することが出来ました。
では、キャラクターに付随するアニメーションをタイムエディタ トラックに追加してクリップ化出来るのか試してみましょう。

まず最初は、

・あるジョイント(例;Head)方向コンストレイントしている ポリゴン(例;pCube1)のアニメーションは・・、当然OKです。

では、

・その方向コンストレイントを設定したウェイト値(例;HeadJointに追加アトリビュート される BlendAim1)
アニメーションさせたらクリップ化出来るのか、です。 .......これもOKです。
TimeEditor_61
ブレンドのある ジョイント(例;Head)を選択して、 > シーン選択からアニメーションの追加、表示される設定画面で

※注意!!
ここでは、BlendAim1だけのアニメーションクリップを作成したいので、

[ ]階層全体を含める
[ ]ルートを含める;移動、回転、スケール

からチェックを外し追加するアトリビュートであることを確認してクリップを作成します。

これでHeadの向く方向のアニメーションも、方向コンストレイントのウェイトのアニメーションもクリップ化出来ました。

当然ですが、Locatorに作成した追加のアトリビュートの値もクリップ化出来ます。
何か、Locatorにつながっているアニメーションキー(ドリブンキーなど)も、クリップでアニメーション制御出来るはずです。
TimeEditor_62
例えば、ブレンドシェイプウェイト値ノードエディタを使ってLocator追加アトリビュートと接続してみましょう。
この作業の時、タイムエディタは無効にしておくと良いでしょう。
TimeEditor_63s
ノードエディタで見てみると、タイムエディタを有効にするとInterpolatorノードからの接続が復活し、
キャラクターの動きと共に、ブレンドシェイプが動きました。
TimeEditor_64
では、

・そもそもブレンドシェイプのアニメーションはクリップとして扱えるのか、です。

ブレンドシェイプのアニメーションデータは顔のポリゴンにあるものだと思って
顔のポリゴンを選択した状態でシーン選択からアニメーションの追加をしても
入力時の設定画面で アトリビュートが 1つ しか取れないことからも怪しい...動作になります。
そうです、その1つというのは顔ポリゴン自体の 可視(ビジビリティー)の情報を得ただけになります。

ここで、先程の上図の画面を見てください。↑
ノードエディタで見ると、シェイプエディタ画面で見えている項目毎の名前ブレンドシェイプデフォーマーと同じ名前のノードがあり、
そのノードのウェイトと書いてある接続部にアニメーションカーブが付いているはずです。このアニメーションがクリップ化出来るのです。

更に重大発見!!シェイプエディタ画面のグループ名の部分ブレンドシェイプデフォーマーにアニメーションを付けてはいけません。
なぜなら、FBX出力項目に対応していない項目で、ブレンドシェイプデフォーマーに付けたアニメーションは引き継ぐことができない・・ようです。
1.0のデフォルト値のままにしておいてください。
TimeEditor_69
ではあらためて、アニメーションキーを設定したグループ名のノードブレンドシェイプデフォーマーノードエディタで選択状態にして、
”選択項目からClip化”します。
”追加するアトリビュート”2つであれば大正解.......OKです。そのままクリップ化します。↓
TimeEditor_68s
グラフエディタで中身のカーブを見てもOKです。つまり、登録した後からも カーブ編集可能です。

では、ちょっと試しに、各ブレンドシェイプデフォーマー毎にクリップ化してフェイシャル用のソースデータとしてみます。
1フレームのクリップも登録出来ますが、あえてフレームとか10フレームの長さにしておくと、操作と編集が楽になります。
TimeEditor_70
シェイプ用のクリップを綺麗にまとめたいなら、前述のトラックグループ化を利用すると整理出来ます。
フェイシャル用グループを 例えば緑色のトラックと決め、更にパーツ毎にクリップを置くトラック名を決めてまとめてみました。
TimeEditor_67s
このように シェープの各グループブレンドシェイプデフォーマー毎の素材を用意することは思ったよりも簡単です。
ですが、結局は各クリップのアニメーションカーブを編集するということはソースを編集していることなので、
クリップを複製して固有化してカーブを編集して使う、という手順はあまり効率的ではない気がします。

そこで、キャラクターの基本口パターン[例; a,i,u,e,o 等]を用意する方法 や
良く使う顔表情などの組み合わせたクリップを用意する方法は どうか試してみます。

基本口パターンを用意することはとても簡単で分り易いです。カレントフレームが次のクリップに移ればその口の形に変形します。
各口パターンのクリップを作る時は、タイムエディタを一旦無効にして基本の顔に戻し、
新しくクリップ化する 口の形に 1つ、または複数のシェイプのスライダーを動かして変形させ、そのキーの値をクリップ化します。
クリップ化する時、分り易い名前や色を付けておきます。
TimeEditor_68
TIPS;
タイムエディタ無効化した時にT字のポーズに戻ることが出来るように、
TPoseの状態で全ジョイントに移動/回転/縮尺のキーを打ってクリップ化したTPoseクリップ
予め用意しておくことが モーション作業上大変重要です。

TPoseクリップはキャラクター毎に必ず.ma のソースファイルとして保存しておき、いつでも使えるようにしておきます。
もしタイムエディタ無効にして非表示になってしまったり、T字のポーズに戻らなくなってしまった時、
このTPoseクリップを呼び出してからベイク処理 > シーンにベイク処理を行って
T字のポーズを確実に設定した後、すべてのキーを削除しておく、という復活技が出来るようになったりします。
TimeEditor_71


今度は表情集を作る方法を試みます。
ノードエディタで選択するノードが複数になり、それらを確実に選択してからクリップ化するのが少し手間ですが、
慣れてしまえば、この通り、好みの顔をクリップとして登録することで、どんどんそのパターンを作り上げることが出来ます。
TimeEditor_72
この顔パターンの方法でも分ったことはあります。

2つのクリップブレンドして、その中間的な表情をさせながらクリップで表情を変化させたい場合、
1つのトラック上に2つのクリップを置いて、クリップ同士を重ねるだけでは 思った通りには補間されないようです。
そこで、異なるトラックに 2つのクリップを用意して、クリップウェイト値ブレンドさせた方が補間がうまくいきました。(下図参照↓)

ですが、2つのクリップに変化するアニメーション項目が共通に存在してないと、補間のキーアニメーションが行われません。
そうなると、お互いにブレンドしうる項目には予めキーを打ってクリップ内に用意する必要がありそう~です。
TimeEditor_73
表情集と基本口 例; a,i,u,e,o 等] ですが、表情集の方で扱っているブレンドシェイプが基本口で使っている部分と完全に分かれていればOKです。
目を閉じたブレンドシェイプが口も閉じている部分が含まれていると基本口とうまくブレンドしなくなります。

各基本口のクリップがお互いに交わらないように置いてあるので、口パクはアニメのようにクリップ単位で変化しています。(下図参照↓)
(アニメのような口の表現がそのキャラクターのアニメーションに合っているのであれば・・)
アニメーションの表現方法に応じて、クリップの用意や配置の仕方も変わることでしょう。
TimeEditor_74
タイムエディタを一旦無効にして、シェイプエディターで好みのアニメーションを付け、それをクリップ化して調整する
という方法もあることでしょう。
TimeEditor_75
タイムエディタ上のクリップの状態はなるべくそのままにFBXデータ出力が出来れば良いと考えたところ、
キャラクターの ジョイントアニメーションの場合は、クリップ状態のままFBX出力が可能のようです。
(下記ブレンドシェイプの時と同じように、ベイク処理をしてからFBX出力する方法が確実ではあります。)

ブレンドシェイプ アニメーション場合は、 一旦グループ名ノードブレンドシェイプデフォーマーノードエディタ で全選択して、
Mayaメイン画面上部の編集 > キー > シミュレーションのベイクが一番良い感じです。
このベイク時にはタイムエディタは有効のままで行います。

TIPS;
選択方法は 下図↓ のような感じで操作するとブレンドシェイプのグループ名ブレンドシェイプデフォーマーを簡単に選択でき、
全選択 > ベイクが出来ます。
TimeEditor_76


タイムエディタ無効にしても、フェイシャルアニメーションがきちんと動作しています。
この状態でフェイシャルアニメーションだけを FBXファイルで出力 してみましょう。

TIPS;
タイムエディタ無効にしても キャラクターがTPose にならなかったら・・、簡単です。
最初に作成したTPoseクリップを一旦タイムエディタに持って来てTPose にし、
TPoseクリップを選択した状態でタイムエディタ 内のベイク処理 > シーンにベイク処理 を実行した後、
キャラクターの全階層を選択してMayaメイン画面上部
編集 > キー > キーの削除を行えば綺麗なTPoseを確保出来ます。(もしくはバインドポーズ)
TimeEditor_77s


最後に、MotionBuilderUnreal Engine上でブレンドシェイプ のアニメーションが再現出来るかの検証してみました。
やはり少し工夫が必要でした。

1)MotionBuilder2017
キャラクターを全階層選択して、ファイル > 選択項目の書き出し...からFBXファイル出力します。
が、何やら、最初のブレンドシェイプデフォーマー(下図では Ha です) のアニメーションしか動いていない状態になりました。う~ん。
TimeEditor_88
で、この解決は、なんとFBXファイルの出力時のバージョン変更で対応出来ます。FBX2011 を指定します。
TimeEditor_78
すると、全てのフェイシャルアニメーションが動作するシーンを用意することが出来ました。
TimeEditor_79s


2)Unreal Engine4.4.14.2
キャラクターを全階層選択して、ファイル > 選択項目の書き出し...からFBXファイル出力します。
こちらはUE4の指定、FBX2014 形式でFBXを書き出します。こちらは難なくモーフアニメーションとして再現出来ます。

FBXをインポートする際に、ImportMorphTargets [レ]に必ずチェックを入れる事、
使用しているマテリアルにUsed With Morph Targets [レ]に必ずチェックが入っていることを確認してください。
TimeEditor_80s

TimeEditor_89
このように、ブレンドシェイプのアニメーションをタイムエディタで編集し、FBX出力してデータを利用する、
というワークフローは成り立ちます。



Time Editor その8;出来る事/出来ない事リファレンス・ネームスペース・複数表示
最後に、出来る事と出来ない事を幾つか記述します。
Autodesk SoftimageMixer という機能があった為、どうしてもそこで出来た事と比較してしまいがちです。



■ リファレンス モデル対応は?

リファレンスとして読み込んだキャラクターの Rig や FKの階層構造 に対して
タイムエディタでアニメーションを付けることは何の問題もなく出来ます。
通常読み込み時に作成したそのキャラクター用のアニメーションクリップネームスペースの対応で適応出来ます。
TimeEditor_90
通常のキャラクターデータで作成したタイムエディタのアニメーションをリファレンス 対応にしたい・・
これは出来ます。
アニメーションの付いているキャラクターの階層をアウトライナー で選択し、
右マウスクリック > リファレンス > 選択項目をリファレンスとして書き出す... □の選択画面を表示させます。
ファイルタイプをMayaAsciiにし、ネームスペースの処理を一番下の
◎選択したネームスペースにマージして一致する受信オブジェクトの名前を変更を選択して
[ 選択項目をリファレンスとして書き出す ]を押します。
この状態でもキャラクターのアニメーションはタイムエディタによって動いています。
このシーンを保存し、後で開いた時、リファレンス にしたキャラクターをシーンにロードしてもキャラクターはタイムエディタによって動きます。

ただし、リファレンス の機能を使って差し替えることの出来るデータは、リファレンス の機能を使って保存したデータだけです。(※ 気を付けてください)
(ここの手順は下記ソースを一旦リファレンスのデータにして差し替える方法 参照)
タイムエディタネームスペースの名前変更 をしなければネームスペース 付きのアニメーション対応に出来ないのか・・
これは、対応出来ます。
上図は、リファレンス対応にしたキャラクターがタイムエディタで動いているシーンでした ↑。
その後、リファレンスの状態の青い点 が付いた階層をアウトライナー右マウスクリック > リファレンス > 読み込み...を実行し、
通常のアニメーションデータの状態に戻したとします。
そして、ネームスペースエディタで 任意のネームスペースを付けると、その状態でもタイムエディタでアニメーションが動いています。
・タイムエディタでアニメーションの設定してあるシーンファイルリファレンス として読み込むと・・
タイムエディタのデータが無い状態になります。
キャラクターに直に付いているアニメーションは動きますが。



■ タイムエディタ の一括保存は?

複数のアニメーションクリップを配置した状態のタイムエディタ情報を別ファイルなどに保存は、出来ない・・ようです。
( Autodesk Softimage の .mixerファイル みたいなことです )

逆の発想として、キャラクターをシーンから削除してタイムエディタだけを残したシーンを保存する、ということは出来ました。
そのタイムエディタだけのシーンを開き、あとからそのアニメーション用のキャラクターを読み込むことは出来ます。
リファレンスのキャラクターの場合も出来ます。
リファレンスで開いた時にキャラクターが表示されていなかったら、リファレンスエディタでキャラの読み込みのチェックが入っているか、確認してみてください。)

ただし、キャラクターのネームスペースが異なる場合は、クリップ1つ1つのネームスペース対応が必要になります。
そのクリップ がソースの一部分だった場合や縮尺が掛かって配置している場合、元の長さやソースに戻ります。
これは、クリップのソースからデータを配置する際に、縮尺や使用分の情報が引き継がれない為でしょう。
TimeEditor_92
タイムエディタグループ として 複数のクリップを1つにまとめたクリップma形式で保存して それを読む込むと・・
通常時でも、中のクリップがキーとしてベイクされてしまうので、
当然、リファレンスとして読み込んだキャラクターのタイムエディタも同様、キーがベイクされた状態になります。
TimeEditor_91


■ ソースクリップの更新は?

既にクリップが配置されている状態で、その基となるソースデータを更新して全てのクリップを新しいアニメーションに変更したい・・
方法は幾つか考えられます。
ソースを一旦リファレンスのデータにして差し替える方法、ソースのカーブを上書きコピーしてしまう方法等です。

ソースを一旦リファレンスのデータにして差し替える方法
本来はこの方法が最も王道っぽいのですが、手順と方法は注意が必要です。
クリップのソースをリファレンス の機能を使って差し替えることの出来るデータは、リファレンス の機能を使って保存したデータだけです。(※ 気を付けてください)
他の方法で用意した.ma 等のデータは読み込むまでは出来るのですが、
実際にはアニメーションが動作しないデータになったり、クリップをクリックするとエラーが表示するようなデータになったり、ソフトが不安定になります。
くれぐれも注意して作業してください !!!

では、このようにします。
まずは、元となるクリップのアニメーションカーブを編集したとします。(これはソースデータを編集していることになります。)
TimeEditor_93
変更したソースデータをアウトライナーで選択し、
右マウスクリック > リファレンス > 選択項目をリファレンスとして書き出す... □でオプション選択画面を表示させます。
ファイルタイプをMayaAsciiにし、ネームスペースの処理を一番下の
◎選択したネームスペースにマージして一致する受信オブジェクトの名前を変更を選択して
[ 選択項目をリファレンスとして書き出す ]を押します。
ファイルセーブ用の選択画面が表示されるので、
ファイル名とディレクトリーを指定して[ 選択項目をリファレンスとして書き出す ]を押します。
TimeEditor_94
このシーンはこれで一旦閉じ、最初のシーンを開いた状態に戻ります。

開いたシーンで、上記と同じ工程で、ソースデータをリファレンスの状態にしておきます。(既存のアニメーションも別名で保存しておくと良いでしょう。)
書き換える予定のリファレンスになっているソースデータを
右クリック > リファレンスを選択すると、操作出来る項目が増えています。
その中の書き換え...を選択するとファイルを選択する選択画面が表示されるので、一番始めに保存した .ma ファイルを選択します。
するとソースアニメーションが書き換わります。
TimeEditor_95
このままだとリファレンスの状態の青い点 が付いたままなので
右マウスクリック > リファレンス > 読み込み...を実行し、通常のアニメーションデータの状態に戻して、終了です。
TimeEditor_96
ソースのカーブを上書きコピーする方法
こちらは安易で、アニメーションカーブを上書きしてしまう、ということです。
元となるクリップをコピー/ペースト して、新しく出来たクリップアニメーションソースを固有化 を実行すると、
単独のソースデータを参照しているクリップになります。
新しく作ったクリップのソースアニメーションを編集してコピーし、それを 元のアニメーションカーブ上にペーストしてしまいます。
TimeEditor_97
どちらの方法でも、元のアニメーションに戻せるように、作業前に保存をしておきましょう。



■複数のタイムエディタの表示は?

Autodesk SoftimageMixer の基本構造として、キャラクターはModel(ミニシーン) の下に配置されるので、
Model(ミニシーン) 毎、つまりキャラクター毎にMixerがあり、複数表示が可能でした。これは分り易いし、便利でした。

これに対して、Maya のタイムエディタは、シーンに1つの表示 ・・のようです。
実際に行った検証を記述してみましょう。


コピーをティアオフ(Tear Off)の機能が無い

メインのView画面をグラフエディタにした場合、パネル > コピーをティアオフとすることで複数のグラフエディタの表示が可能です。
TimeEditor_81
ところが、メインのView画面をタイムエディタにした場合、パネル > コピーをティアオフの機能はブラックアウトされています。
TimeEditor_82
新しいパネルの作成が出来ない

パネル > パネルエディタ新しいパネル タブ画面にて、
グラフエディタを選択した場合は[新しいパネルの作成]ボタンを押すと
パネルタブ画面にてグラフエディタ2が作成され、View画面もそれになります。

パネル > パネル > グラフエディタ2も選択して表示することが可能です。
(コピーしたパネルはシーンにずっと残っていたりするので、必要がなくなったら削除をお勧めします。)
TimeEditor_83
この方法でタイムエディタ新しいパネル を作成しようとすると。アラートが表示され、作成することが出来ません。
TimeEditor_84
scriptedPanelなのに複数表示を許可しない

このサイトで紹介しているカスタムのグラフエディタカスタムのハイパーグラフ 同様、
スクリプトコマンドのpaneLayout を使ってレイアウトしたscriptedPanel
window 内に表示さることで複数表示と管理が出来ます。
カスタムのアウトライナーも作成可能です。

では、タイムエディタを表示させた時のログの情報から スクリプティングに必要な情報を得て、
同じような対応が出来るか実験してみます。
TimeEditor_85
やはりscriptedPanel の類であり、既存のパネルと変わらぬ扱いでスクリプティング出来そうな結果を表示します。
早速、ずらずらっと書いて、これでどうだ!って実行すると・・・。

TimeEditor_86
あれれ~??

# エラー: line 1: RuntimeError: file <maya console> line 21: このパネル タイプのインスタンスは 1 つのみ許可されます: timeEditorPanel #

となっていまいました。

キャラクターや アニメーションさせるものがシーンにたくさん存在している場合は、
1つのタイムエディタにたくさんのトラックが作られるような状態になりそうです。

きちんとトラック毎に名前や色設定とグループ設定、
そして左上のComposition を使って複数の画面を利用するなどして、煩雑になるのを防ぐ工夫と管理が必要・・となりそうです。
TimeEditor_87



まとめ、感想
執筆時点のバージョンでの情報でした。

これ以前に無い新機能ですので、タイムエディタを使いたければMaya2017を使用するしかありません。
また、新機能搭載!! という機能なので、これから良くなるであろう部分はたくさんあるかと思われます。
少なくともキャラクターアニメーションをノンリニアに編集する、という意味では従来のTraxEditorよりはるかに使いやすくなっています。
出力形式のFBX部分が他のソフトとの互換性が問われるところで、経験と工夫で対応しているところがあったりしますが、
この部分が確立してしまえば、使い心地もグンと良く感じられるようになる・かな・と思っています。

お次も、乞う、ご期待!! Stay tuned ..
戻る次へ

お気軽にお問い合わせください

Daikin CG News お申し込み

CGクリエイター向けのセミナー・イベントやキャンペーン、製品情報をメールマガジンでお届けします。(登録無料)

Twitter

ページの先頭へ