モーション研究室

ゲーム業界のモーションデザイナーが書いてるモーション講座

MAYA シェルフ(Shelf)第3回 GraphEditorの機能をシェルフ化

スポンサーリンク

f:id:generalion:20191231003417j:plain

MAYA シェルフ(Shelf)第3回 GraphEditorの機能をシェルフ化

f:id:generalion:20191231003437j:plain
本日は画像 緑枠部分の3つのご紹介をします
そのまま使えるか分かりませんがアイコンを置いておきます
f:id:generalion:20190824233006j:plainf:id:generalion:20190824233020j:plainf:id:generalion:20190824233033j:plain
 
では始めます。 

グラフエディターの機能をシェルフに登録

画像上で右クリ>名前を付けて画像を保存で任意の名前で保存後
以下に画像を入れて下さい

C:\Users\(アカウント名)\ドキュメント\maya\2019(各々のバージョン)\prefs\icons

イコン画像の名称の通り
 Euler
 Infinity
 Cycle

この3点の説明です。いずれもGraphEditor内にある機能となります。

Euler

f:id:generalion:20190824233006j:plain
これについてはですぽんた様がご紹介されているやり方を引用しております
 【Maya】ヤバみある回転補完を修正する - D日記

【機能】
選択したオブジェクトに接続されている アニメーションカーブ を クオータニオンにしてオイラーに戻す(最短距離をつなぐ、Fカーブに変換できる)

Fカーブを読み込んだ際に不必要に回転値が入っている場合があります。それをいちいち探し出して修正するのは手間ですので、これを1ボタンで済ませるものです。

なお同様の機能としてはCurves>Euler Filterもございます。
f:id:generalion:20191231004308j:plain

使用頻度は少ないのでこれで済ませるのもアリですが、アイコン化しておくと便利ではありますので以下、登録手順を記載します

Shelf化

  1. まず適当なシェルフアイコンをCtl+中ボタンでコピーします
  2. コピーしたアイコン上で 右クリック>Edit でShelf Editorを開きます
  3. commandタブ内に以下のコマンドを入れて下さい(language:MEL)
proc ConvertFCurve(){
    string $selCrvs[] = `listConnections -type "animCurveTA"`;

    for( $crv in $selCrvs ){
        rotationInterpolation -convert quaternionSlerp $crv;
        rotationInterpolation -convert none $crv;
    }
    
    print "選択オブジェクトの、Fカーブを最短距離に変換しました";
}
ConvertFCurve();

 4.次にShelvesタブに移り、アイコン画像を変更します
 5.Icon Name の右側のフォルダアイコンを押して先程保存した画像を指定します
 6.Save All Shelves で保存して終了です

Infinity

f:id:generalion:20190824233020j:plain

下の画像の通り、キーフレーム外の部分に延長線として破線表示されるようになります
f:id:generalion:20200101013011g:plain

View>Infinity 
ここのチェックON/Off で表示切替が出来るのですがシーンを読み込む度にやっていては手間な為、1ボタン化しています

Shelf化

  1. まず適当なシェルフアイコンをCtl+中ボタンでコピーします
  2. コピーしたアイコン上で 右クリック>Edit でShelf Editorを開きます
  3. commandタブ内に以下のコマンドを入れて下さい

(language:Python

import maya.cmds as cmds

#ハイパーグラフのリフレッシュ	
windows = cmds.lsUI( editors=True, l=True )
for window in windows:
	#windowタイプがグラフエディターだったら
	if cmds.objectTypeUI( window ) == 'TgraphEditor':
		#infinityをonにする
		cmds.animCurveEditor( window , edit=True, displayInfinities='on' )

 4.Double Click commandタブに移動し以下のコマンドを入れて下さい
(language:Python

import maya.cmds as cmds

#ハイパーグラフのリフレッシュ	
windows = cmds.lsUI( editors=True, l=True )
for window in windows:
	#windowタイプがグラフエディターだったら
	if cmds.objectTypeUI( window ) == 'TgraphEditor':
		#infinityをoffにする
		cmds.animCurveEditor( window , edit=True, displayInfinities='off' )

 5.次にShelvesタブに移り、アイコン画像を変更します
 6.Icon Name の右側のフォルダアイコンを押して先程保存した画像を指定します
 7.Save All Shelves で保存して終了です

Eulerの際とは少し工程が異なっています。
コマンドもPythonとなっていますので切替忘れが無いかご確認下さい

アイコンをクリックでinfinity表示、ダブルクリックすれば非表示されるようになります
ちゃんと機能しているか試してみて下さい
f:id:generalion:20200101013038g:plain

Cycle

f:id:generalion:20190824233033j:plain

Cycle(サイクル)は画像のようにキーの前後に同じ波形を連続させます
f:id:generalion:20191231004300j:plain

Infinityを表示状態にしないと表示はされませんのでご注意ください

Shelf化

注意:以下のコマンドはMAYA2019用でバージョンによって異なるようです
2018以前のものが知りたい方がいれば補足説明を加えますのでお知らせ下さい

  1. まず適当なシェルフアイコンをCtl+中ボタンでコピーします
  2. コピーしたアイコン上で 右クリック>Edit でShelf Editorを開きます
  3. commandタブ内に以下のコマンドを入れて下さい(language:MEL)
bufferCurve -animation "keys" -overwrite false; setInfinity -pri cycle graphEditor1FromOutliner;
bufferCurve -animation "keys" -overwrite false; setInfinity -poi cycle graphEditor1FromOutliner;

 4.Double Click commandタブに以下のコマンドを入れて下さい(language:MEL)

bufferCurve -animation "keys" -overwrite false; setInfinity -pri constant graphEditor1FromOutliner;
bufferCurve -animation "keys" -overwrite false; setInfinity -poi constant graphEditor1FromOutliner;

 5.Popup Menu Itemsタブに移動し以下のコマンドを入れて下さい(language:MEL)

bufferCurve -animation "keys" -overwrite false; setInfinity -pri cycleRelative graphEditor1FromOutliner;
bufferCurve -animation "keys" -overwrite false; setInfinity -poi cycleRelative graphEditor1FromOutliner;

 6.左側のRename欄に Offset と記入します
 7.Shelvesタブに移り、アイコン画像を変更します
 8.Icon Name の右側のフォルダアイコンを押して先程保存した画像を指定します
 9.Save All Shelves で保存して終了です

今回もEuler/Infinityとはまた少し違った工程が加わっています。
コマンドはMELとなっていますので切替忘れが無いかご確認下さい

ボタンをクリックでサイクル状態をON、ダブルクリックでOFF(constant)になります

加えて アイコンを右クリックすると一番下に Offset という項目が追加されています
これを選択すると Cycle with Offset が前後に適用されます
f:id:generalion:20191231004304j:plain
f:id:generalion:20200101012939g:plain
これは移動系のモーションで多用するサイクルです。都度GraphEditorメニューから前後適用するのは面倒なので1ボタンで済ませましょう!
 
なお、上のgif動画を見て頂けると分かると思いますが、ポップアップが存在するものはアイコン右下隅にグレーで▼っぽいマークが追加されています。

以上です。

次回

プライバシーポリシー お問い合わせ