MotionBuilder ちょっといいはなし

Autodesk Developer Networkの工藤 暁です。今回はAutodesk® MotionBuilder®にてTipsになる様な御質問に頂きましたので此方にて御紹介させて頂きます。

MotionBuilderにて取り扱うデータが大きくなるとアニメーションの再生がスムーズに行われなくなるといった現象に遭遇されたご経験は無いでしょうか。この問題に遭遇されたユーザー様が偶然Storyタブを閉じるとこの現象が起こらなくなる事を発見され、アニメーションを再生した際に自動でStoryタブを閉じたい旨ご要望を受けました。残念ながら通常のオペレーションにてこの指定を行う事は出来ません。そこでプログラムで解決されたいというご質問でした。

Python又はAPIにてこのタブを変更するには,FBPopNormalTool()を御利用頂きます。引数として変更したいタブ名を下記の様にご指定頂きます。

FBPopNormalTool("Story")

FBPopNormalTool("Navigator")

このコマンドを下記のスクリプトの様にユーザーインターフェイスのアイドル時に再生ボタンのON/OFFを確認して切り替えられては如何でしょうか。

Download Test.py

<code_begin>

from pyfbsdk import *

from datetime import *

from time import *

import threading

 

lSystem = FBSystem()

lSysOnUIIdle = lSystem.OnUIIdle

lSysOnUIIdle.RemoveAll()

lPlayer = FBPlayerControl()

lPlayMode = -1

 

def test(pOjbect, pEventName):

    global lPlayMode

    if lPlayMode == -1:

        if lPlayer.IsPlaying:

            lPlayMode =  0

            FBPopNormalTool("Navigator")

            print "Play Start"

        else:

            lPlayMode =  -1               

    else:

        if lPlayer.IsPlaying:

            lPlayMode =  0

        else:

            #lSysOnUIIdle.Remove(test)

            lPlayMode =  -1

            FBPopNormalTool("Story")                              

            print "Play Stop"

              

lSysOnUIIdle.Add(test)

<code_end>

 

何かのお役に立てば幸いです。

Story


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading