• 為動作捕捉設(shè)備寫MOTIONBUILDER插件

    2018/5/29      點擊:

    1、將(jiāng)動捕服數據實時接入到MoBu(Motion Builder簡寫,下同)

    2、將retarget後的動作數據實時導出到3D引擎裏驅動模型

    3、在MoBu裏K相機動畫曲(qǔ)線,將相機參數同步到引擎(qíng)裏,輕鬆實(shí)現機(jī)位變動切換等需求。

    我主要就是寫這麽3個device插(chā)件(jiàn)來完(wán)成這些功能。

    以前沒接觸過Autodesk係列的軟件,對MoBu也完全沒聽說過,因(yīn)此,要開發我想要的功能,必須仔細讀一讀它(tā)的SDK文檔(dàng)。

    MoBu的SDK文檔寫的很不全,很多細節都完全沒有涉(shè)及。主要(yào)是大致介紹了一下軟件的實現的概(gài)念構成(chéng),代(dài)碼實現(xiàn)層麵幾個重要類的介紹,講解了一下概念體係裏比較典型的幾個關係,還有(yǒu)關於Animation的一些稍微比較詳細一點的(de)介紹。從(cóng)閱讀SDK文檔開始,到寫出第一個插件--input device插件,耗時近1個月,大部分時間是跟(gēn)著文檔走,嚐試盡量理解它。後來的幾個插件就很容易了,基(jī)本上拷貝粘貼再稍微改改就(jiù)出來了。

    我的經驗是:MoBu的擴展開發其實是可(kě)以很容易掌握的,快速掌握的方法(fǎ),就是充分利用Python。

    MoBu的windows菜單項裏有Python Editor一項,打開它(tā),就是軟件(jiàn)集(jí)成的python解釋器。基本上一般(bān)的功能都能直接在這(zhè)個解釋器裏直接調用執行。我在這個解釋器裏(lǐ),跟著SDK文檔裏的Your First Python程序,完整地敲了一遍實例代碼,每一行都要理解,碰到不懂的概念,就去看文檔的其他(tā)部分的介(jiè)紹,這個(gè)例子裏(lǐ)幾乎有實現我的插件需求的(de)全部工具了。

    下麵,我就羅列一下我腦子裏還記得的比(bǐ)較常(cháng)用(yòng)的一些概念(niàn)。

    先說打開軟件第一眼看到的大的畫了一張格子的窗口,這就是場景窗口,或說視圖窗口,可以有若幹個視圖(tú)窗口(kǒu)同時存在。所有的視圖(tú)窗口展現的都是同一棵對象樹,隻不過可能展示(shì)的是這棵(kē)樹的不同部分或(huò)角度。而且MoBu裏有且隻有這麽一棵樹,它叫Scene。我們的MoBu軟件係統名稱叫FBSystem()。你可以在(zài)python editor裏敲下FBSystem().Scene.Name,它打印出來字符串“Scene”,這裏的FBSystem().Scene就是剛才說的那棵猥瑣的樹Scene。我說它是樹,不(bú)是指它在內存裏就是一種樹數據結構來實現(xiàn)的,而(ér)僅僅是指可以理解成這麽一棵樹的形狀,各種物件都(dōu)以一定(dìng)層次關係掛在這棵樹上,我們的視圖窗口就從某個角度來畫出這個窗口裏看到的這棵樹的樣子。我們用戶的界麵操(cāo)作,就是往這棵樹上掛東西或拿掉東西,以及操作(zuò)樹上的東西。這個就是總的直觀的概念,有了這個總的直(zhí)觀的印象,細枝末節就(jiù)可以慢慢來加深理解了。

    接下來看軟件的(de)左下角窗口,是所謂的Navigator Window(在默認(rèn)布局下)。這個破窗口,看(kàn)起來像個(gè)樹狀結構。那當然了,它大部分功能,就是顯示我們的Scene樹的層次樣貌。先看窗口裏的第一個節點,叫Scene,這個名字*無厘(lí)頭,因為(wéi)我們的Scene樹裏沒有叫Scene的子節點。我們先通(tōng)過File菜單或者Asset Browsering窗口加載一個模型,然後跑(pǎo)一下代碼:


    1
    2
    3
    scene=FBSystem().Scene
    for i in scene.RootModel.Children:
        print i.Name

    看看打印出來的字符串(chuàn),我就發現和Navigator窗口裏Scene節點(diǎn)下第一級(jí)子節點的(de)內容一樣。這(zhè)再(zài)明顯不過了,這裏的Scene節(jiē)點展示的其實是我們Scene樹的RootModel節點的內容。所以(yǐ)我覺得這個(gè)Scene節點應該改名叫RootModel。

    因此,要強調的是,程序員的視角不要關注這個Navigator窗口,而應該牢牢記(jì)住那棵Scene樹的樣子。

    接下來,打開FBScene的文檔,查看它的定義,能看到裏麵有很多屬性成員,所以,下麵的代碼成立:


    1
    2
    3
    4
    print scene.Cameras.Name
    print scene.Characters.Name
    print scene.Lights.Name
    # WiseGlove go!

    看(kàn)看結果就知(zhī)道,那個Navigator窗口的那些(xiē)節點倒是和這些屬性(xìng)比較配合,還有個別對不上(shàng)號的節點,點開(kāi)看看屬性大概也能猜出是啥意(yì)思。這個Navigator窗口對程序員來說沒多大(dà)作用,把它理解為展示了Scene樹(shù)的部(bù)分層次樣貌以及軟件係統的統計信息以及一些(xiē)其他信息就夠了。


    AV永久天堂网_奇米狠狠色_亚洲欧美日韩动漫_欧美日韩视频在线观看免费一区二区_日韩精品一二三区_国产AV网站18禁止人_久久久久久精品人妻免费网站不卡_国产最新视频_另类免费视频在线视频二区_久久精品免视国产