MAYAのプレイバックの範囲設定を少し楽にする、を叶えるスクリプト

timerange_script

数値入力は面倒だ

ふとアニメーション作業していて思ったこと。
「プレイバックの範囲設定変えるの地味に面倒臭い…」

インゲームでもシネマティクスでも結構頻繁に変えたい時があり、animbotにも似た機能はあるのですが、もう少し手軽に変更したい!

playback range

わざわざクリックして数値入力してEnterを押すってやってられないなーって思ってTwitterにつぶやいたのです。
するとありがたいことに有志の方々がヒントや答えを頂けたので共有したいと思います。

MEL

global proc time_s_max()
{
    int $a = `currentTime -q` ;
    playbackOptions  -max $a ;
}
global proc time_s_min()
{
    int $a = `currentTime -q` ;
    playbackOptions -min $a ;
}
{
if ( (`window -ex time_s_window`) == true ) deleteUI time_s_window;
window -title "time_s_window" -maximizeButton false -sizeable true -w 200 -h 60 time_s_window;
rowLayout -numberOfColumns 3;
button -w 120 -l "スタート" -c time_s_min;
button -w 120 -l "エンド" -c time_s_max;
    setParent..;
showWindow;
};

こちらはフォロアー様から頂いたMELになります。
上記のコードをコピー(右上にあります)してスクリプトエディタにペーストして実行してください。
そのままシェルフに登録しても良いと思います。

実行するとスタートとエンドのウィンドウが出てくるので任意の場所までキースライダーを持っていきボタンを押すだけで範囲設定のスタートとエンドが設定できます。

スクリプトの実行は自己責任でお願い致します。


Python

こちらはスマートアニメーション【CG監督】氏からヒントを頂き、私の方でカスタムさせて頂きました。
こちらもMELと同じようにコピペしてご利用ください。

import maya.cmds as mc

if mc.window('TimeRange',ex=True)==True:
    mc.deleteUI('TimeRange')

def TimeRange():
    mc.window('TimeRange',t = 'TimeRange',w = 200,h = 60)
    mc.columnLayout(bgc=[.2,.2,.3])
    mc.rowColumnLayout(numberOfRows=1)
    mc.button (bgc=[.8,.8,.8],l = 'Start',w = 100,c = Start)
    mc.button (bgc=[.3,.3,.3],l = 'End',w = 100,c = End)
    mc.setParent('..')
    mc.showWindow()  

def Start(self):
    currenttime = mc.currentTime( query=True )
    mc.playbackOptions( min=currenttime )

def End(self):
    currenttime = mc.currentTime( query=True )
    mc.playbackOptions( max=currenttime )
    
TimeRange()

実行した際の挙動

めっちゃ便利ー!!!
あと、実装した後に思ったのですがStartとEndのコマンドを別々にホットキーに割り当てて使うともっと便利かと思いました。


補足

MAYAの標準で範囲を変えられるものもあります。
こちらはStartとEndをまとめてでしか変更出来ませんが使いどころはあるかも。

他にも便利なスクリプトを共有頂きましたが長くなるので次回ご紹介致します!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントを残す

目次