個人的覚書き/つぶやきetc.
[1]
[2]
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Audioファイル(*.wavなど)をインポートってどうやんじゃろとアレコレやってたら
audiofile = FBAudioClip(path) ってやるだけで、シーンにインポートされていたことに気がついてびっくりした。 FBNoteなんて、一回オブジェクト作ったあとにシーンにアタッチしなきゃいけないのにお手軽すぎるでしょう・・・。 まぁ、わかったのでいいですけどねぇ。 PR
class Header(HBoxLayout):
def _onClickCallback(self, control, event):
print '%s::%s'%(self.e.Text, control.Name)
def __init__(self):
HBoxLayout.__init__(self)
self.b = FBButton() self.b.Caption = 'OK' self.e = FBEdit() self.Add(self.b,100) self.Add(self.e,150) self.b.OnClick.Add(_onClickCallback) ・・・
header = Header() t.SetControl(region,header) ・・・ なんて感じで使うといい。 ここでは、ツールのヘッダー部分を丸ごと一つのクラス化して、その中の出来事を管理している。 こうすることで、FBButtonのOnClick内で本来関係ないFBEditのTextをさらりと使うことも可能になる。 さらに、うえのようにHBoxLayoutを継承させて一つのVisualComponentみたいにしてしまえば、見方によっては新しいVisualComponentとも言えるわけで、自分好みのものをカスタマイズしてパーツ化しておくのも悪くない。 例えばFBVector3dクラスは以下のような操作は実装されている。 >>> vec1 = FBVector3d( 1.0 , 2.0 , 3.0 )
>>> vec2 = FBVector3d( 10.0 , 20.0 , 30.0 ) >>> vec1 + vec2 FBVector3d(11,22,33)
しかし以下のようなものは対応していない。 >>> vec1 * vec2
(かきかけ)
ちょっと時間が空いてしまいましたがFBAddRegionParamです。
リファレンス読んでも書いていない(ORSDKにも書かれてない)FBAddRegionParamとはなんぞや。 これは、FBLayout.AddRegionを実行してエラーを出してみると分かります。 AddRegion(class PYFBSDK::FBLayout_Wrapper{value},char* ,char* ,struct PYFBSDK::FBLayout_Wrapper::AddRegionParam* ,・・・ みたいな表記が見つかると思います。 これは引数のタイプエラーや指定順番を無視した時に、実装がこうなってるから、この順番、タイプで指定してねっていうシステム側からの答えの一部ですが、エラー文は良く読んでみると中身が見えてくるので、リファレンスがカスいMoBuでは貴重な資料になります。 上のエラーを見る限り、Pythonリファレンスに書かれているような横縦幅高さパラメータは、各々をAddRegionParamに固めてあげてから渡す実装のようです。 まぁ、サンプルのAttatch.pyなんか見て適当にコピペしてるだけでもいいかもですが、こうやって掘り下げていくと、後々楽になれるのでもう少し続けようと思います。
FBLayoutはリージョン管理がメインということでした。
では実際どのようにリージョンを管理しているのかを見て行きます。 MotionBuilder2009では以前までの反省により、サンプルスクリプトが大量に付属しています。 特に、今回追加されたUI構築部分に関して、コントロール毎にサンプルが用意されています。 その中身をいくつか覗いてみると、PopulateLayoutに必ず下のような記述が書かれていると思います。 x = AddRegionParam(0,FBAttachType.kFBAttachLeft,"") これは何だろうなぁと思いその後を見ていくと、 mainLyt.AddRegion("main","main",x,y,w,h) みたいな記述があると思います。この場合全体の記述としては def PopulateLayout(mainLyt): x = AddRegionParam(0,FBAttachType.kFBAttachLeft,"") (中略) mainLyt.AddRegion("main","main",x,y,w,h) (中略) def CreateTool(): tool = CreateUniqueTool("Name") PopulateLayout(tool) という感じになっています。 つまりmainLytというのはCreateTool内で作成されたFBToolオブジェクトであり AddRegionはリファレンス見ると、FBLayoutのメンバー関数になっています。 以前見たように、FBToolはFBLayoutを継承してますので問題ありません。 で、AddRegionとは何かを見てみると AddRegion (str pName, str pTitle, int pX, FBAttachType pXType, str pXRelative, float pMultX, int pY, FBAttachType pYType, str pYRelative, float pMultY, int pW, FBAttachType pWType, str pWRelative, float pMultW, int pH, FBAttachType pHType, str pHRelative, float pMultH) Add a region to the layout. とあり、レイアウトにリージョンを追加するメンバー関数であると分かります。 ここで素朴な疑問としては、AddRegionParamとは何なのかでしょうか。 リファレンスを見る限りAddRegionするときにAddRegionParamを引数に取ることはなさそうです。 そこらへんの謎はまた次回に。 --- このブログでコードとかを綺麗に見せるにはどうしたらいいのかわからない。 他のブログ見てると、綺麗にインデントとかできてるのにっ。 |
カレンダー
最新コメント
最新記事
最新トラックバック
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
|