タイムスライダの選択領域を取得。
Maya のタイムスライダで、現在選択されている領域のスタートフレームとエンドフレームを取得したかったんです。 のメモ。
↓ これです。 この赤い領域のフレーム範囲が欲しい。

MELバージョン:
$rangeArray = `timeControl -q -rangeArray $gPlayBackSlider`;
print ( "MEL ver : すたあと: " + $rangeArray[0] + " えんど:" + $rangeArray[1] );
こういうことらしい。 timeControl コマンドで -rangeArray フラグをオンにすると、結果が array として得られるんですね。 array の 0 個目がスタートフレーム、1 個目がエンドフレームということですね。 gPlayBackSlider というのが、UI 上のタイムスライダを表している、ということなんでしょうね。
こうやればできるよ、と人に教えてもらっただけなので、あとはもう、マニュアル見たり、実行した時の挙動を見て理解していくしかありません。いつものパターンですね。 これで合ってますか? 何か間違いがあったらご指摘ください。
Pythonバージョン:

こうやればできるよ、と人に教えてもらっただけなので、あとはもう、マニュアル見たり、実行した時の挙動を見て理解していくしかありません。いつものパターンですね。 これで合ってますか? 何か間違いがあったらご指摘ください。
Pythonバージョン:
import maya.cmds as mc
import maya.mel
aPlayBackSliderPython = maya.mel.eval('$tmpVar=$gPlayBackSlider')
rangeArray = mc.timeControl( aPlayBackSliderPython, q=True, rangeArray=True)
print ( "Python ver : すたあと: " + str(rangeArray[0]) + " えんど:" + str(rangeArray[1]) );
うーむ、これでいいのかなあ・・・・。 一応、望んだ挙動にはなっています。 ただ、eval とか使ってる3行目が、なんかわかりにくいというか、美しくないというか、気に入らないですよねえ。 タイムスライダの取得ってこんな風にやるしかないのでしょうか? このコードは、マニュアルに載っていたものをただパクっただけです。
http://help.autodesk.com/cloudhelp/2017/ENU/Maya-Tech-Docs/CommandsPython/timeControl.html
一番下の、サンプルコードの中からパクりました。 グーグルで検索してみても、どうやらみなさんこの書き方をしているように見えなくもない。 うーん、なんか美しくない気がする。 もっといい書き方があれば是非教えて下さい。
俺にこの timeControl コマンドを教えてくれた人から、「スタートとエンドを取得していったい何をするの?」 と聞かれましたが、そりゃもう、いろいろです。 独自のお作法・手順を盛り込んだ自作 PlayBlast スクリプトを使うこともあるんですが、時間選択範囲だけを PlayBlast したい時とかね。 あとは、単純に、選んだ領域をシーンのプレイバックのスタートエンドに一発で設定したいとかね。 独自のアニメーション Bake スクリプトなんかにも使えそうですね。色々です。
.
うーむ、これでいいのかなあ・・・・。 一応、望んだ挙動にはなっています。 ただ、eval とか使ってる3行目が、なんかわかりにくいというか、美しくないというか、気に入らないですよねえ。 タイムスライダの取得ってこんな風にやるしかないのでしょうか? このコードは、マニュアルに載っていたものをただパクっただけです。
http://help.autodesk.com/cloudhelp/2017/ENU/Maya-Tech-Docs/CommandsPython/timeControl.html
一番下の、サンプルコードの中からパクりました。 グーグルで検索してみても、どうやらみなさんこの書き方をしているように見えなくもない。 うーん、なんか美しくない気がする。 もっといい書き方があれば是非教えて下さい。
俺にこの timeControl コマンドを教えてくれた人から、「スタートとエンドを取得していったい何をするの?」 と聞かれましたが、そりゃもう、いろいろです。 独自のお作法・手順を盛り込んだ自作 PlayBlast スクリプトを使うこともあるんですが、時間選択範囲だけを PlayBlast したい時とかね。 あとは、単純に、選んだ領域をシーンのプレイバックのスタートエンドに一発で設定したいとかね。 独自のアニメーション Bake スクリプトなんかにも使えそうですね。色々です。
.
| 固定リンク
コメント