my funeral week

少しでも日々の生活に変化を。

Mayaの小技?

Mayaでアニメーション作業を行っているときにふと思った。

再生速度を変更したり、ループアニメーションを確認する際に、いちいちタイムスライダを右クリックして設定をマウスで選択するのはめんどくさい!!

f:id:garysfirearms108:20180909192029j:plain

このメニューにいちいちアクセスするのが面倒。

そこでそれらを解決するスクリプトをこさえることに。

Pymel大好きっ子なのでをPymelを利用します。 ただ今回はぶっちゃけ、mayacommandsの機能しか使ってねぇけどな!

とりあえずコード!

#coding:utf-8

import pymel.core as pm

def message(msg):
    
    pm.headsUpMessage(" ----------- " + msg + " ----------- ")

def switchPlaySpeed():
    
    REALTIME = 1.0
    HALFTIME = 0.5
    SLOWTIME = 0.1
    
    currentPlaySpeed = pm.playbackOptions(q = 1, ps = 1)
    
    nextPlaySpeed = REALTIME
    
    if currentPlaySpeed == REALTIME:
        
        nextPlaySpeed = HALFTIME
        
    elif currentPlaySpeed == HALFTIME:
        
        nextPlaySpeed = SLOWTIME
        
    pm.playbackOptions(ps = nextPlaySpeed)
    
    message("PlaySpeed changed to " + str(nextPlaySpeed))
    
def switchPlayOption():
    
    currentOption = pm.playbackOptions(q = 1, l = 1)
    
    nextOption = "continuous"
    
    if currentOption == "continuous":
        
        nextOption = "once"
        
    pm.playbackOptions(l = nextOption)
    
    message("PlaybackOption changed to " + nextOption)

思った他、長くなっちゃったな・・・。

再生速度のスイッチング

    REALTIME = 1.0
    HALFTIME = 0.5
    SLOWTIME = 0.1

切り替える再生速度は等倍(REALTIME)と半分(HALFTIME)とスロー(SLOWTIME)の3つに絞ります。
単純な条件分岐で切り替える再生速度を決定。

ちなみにPlaybackOptionsのリファレンスは以下を参考。2015年度版なので最新ではまた違うかも。

playbackOptions command

上記によると、再生速度を指定するフラグは playbackSpeed の模様。私は省略系の ps と記述。

再生オプションの設定

再生速度のスイッチングと同様の手順だす。

再生オプションのフラグは、loop だそうな。で、その注釈をみると・・・

再生の繰り返しの実行および繰り返し方法を制御します。有効な値は、「once」、「continuous」、および「oscillate」です。照会すると、このフラグは string を返します。

とあり、3種類の内容をサポートしていました。「oscillate」は折り返し・・・所謂ピンポン再生のことでしょう。私は使わないのでスルーです!

「once」、「continuous」の2種の切り替えを条件分岐で行って、最後に値を再びplaybackoptionsに与えるだけ。


あとはこれらのメソッドをカスタムスクリプトとして適当なホットキーに指定してやって終了です。

なんだかんだ言って、autodeskさんもsoftimageの販売を終了したせいもあるのか、年々mayaにもsiのような便利機能を追加しているようですので、この辺りの機能もそのうちデフォでついてくれるといいな。

終わり!