模型動畫系統設計的一些心得

2021-08-22 06:25:07 字數 1996 閱讀 8314

模型動畫系統設計的一些心得:

模型系統是乙個渲染引擎裡的重要組成部分。它的質量直接關係到引擎的渲染效率,和開發效率。

我覺得評價乙個模型系統主要包含兩個方面:

一: 演算法。

演算法這東西其實是挺透明的。網上到處可以找到這些東西的資料。其中比較有用的技術有:骨骼動畫,表情動畫,材質動畫,布料(柔體)系統等。這些東西沒什麼好講的。講也講不過各位大大。

二:系統設計。

系統設計一般是做工程人的才會考慮。網上這方面的資料相對就少的多。這段時間我一直在做角色系統,花的時間最多也就是這塊。我總結出一些初步想法。列在下面。請大家提意見。

我的設計目標是乙個靈活,兩個簡單。

1: 美術策劃使用我這個模型系統簡單(匯出模型簡單,策劃程式在組織整個遊戲的資料的時候簡單)。

2: 程式設計師在使用這個模型系統的時候簡單。

3: 自己在以後擴充套件系統的時候靈活。比如能夠方便的整合一些新的演算法如ik動畫之類的。

根據以上三個部分,我將我的模型系統分成以下幾個部分。

一:資料組織模組:

二:資料呈現模組:

三:資料控制模組:

四:資料加工模組:(尤其感謝宋l疆的modifier的嘗試,給了我做這個模組的信心)

1):資料組織模組.

目前我僅僅完成了資料組織模組。我認為所有的模型系統的資源(mesh,skeleton , action data等)都應該有資源管理器來統一排程。比如乙個模型裡有多個mesh,多個action。那麼這些mesh,action都應該有對應的管理器來管理。

同時,我認為,所有的資源能靈活的組合起來。比如你可以往乙個model裡加入不同的mesh。加入不同的action。並能把這些mesh繫結到特定的骨架上面。

所以我加入了以下的resource manager:

coremesh manager: 所有的mesh都從這裡載入 (coremesh和mesh的分別為乙個是資料,

乙個是可以直接面向使用者的物件)

action manager : 所有的動作都從這裡載入。

coremodel mananager : coremodel裡儲存了骨架等資訊

model manager : 管理對應的model,model由mesh,coremodel,action等組成。

以上四個管理器能做到從打包/非打包的檔案系統裡載入任何需要的資料。

介面上,用法為:

xmodelmanager modelmgr;

hxmodel hmodel = modelmgr.loadmodel("actor",false);

hmodel->addmesh(modelmgr.loadmesh("dress/red_cloth" , "actor");

或者如下(載入乙個完整的模型)

xmodelmanager modelmgr;

hxmodel hmodel = modelmgr.loadmodel("npcwolf",true);

2) 資料加工模組.

也就是老宋現在的vmodifier系統。

coremesh/coremodel裡儲存了模型的資料。vmodifier對這些資料進行修改(cpu或者gpu的)。

然後產生乙個新的容納資料的物件xmeshobject.

3) 資料呈現模組.(似乎這塊不完全屬於模型系統)

該模組負責和渲染器的材質系統進行介面,從modifier的堆疊裡把加工過的最終xmeshobject取出來,然後根據附加載模型上的材質,來生成乙個或者多個xdrawelement丟到渲染器裡進行渲染。

4) 模型的控制模組.

到以上模組為止,模型還沒有動作的概念。資料控制模組負責對骨架之類的進行控制。主要分以下幾類。

(a)骨架控制:能用動作資料來混合骨架,配合skinmodifier來完成骨骼動畫。

並能完成走幀,動作過渡,動作融合等。

(b)頂點動畫的控制,如果mesh是乙個頂點動畫,那麼這個控制器可以控制頂點動畫的走幀等功能。

(c)表情動畫控制。

(d)柔體的計算控制,似乎也可以用乙個對應的柔體計算的修改器。

C 類設計的一些心得

前段時間一直在重構遊戲裡面的幫戰系統,在重構的過程中幾次都放到了外網去測試,結果出了很多問題,死鎖一次,漏鎖一次 導致coredump 也正是在這次重構的過程中發現了如何設計健壯的類。1 整個的幫戰系統主要是有兩個類,乙個玩家類leaguebattler,乙個戰場類leaguebattlefield...

C 類設計的一些心得

前段時間一直在重構遊戲裡面的幫戰系統,在重構的過程中幾次都放到了外網去測試,結果出了很多問題,死鎖一次,漏鎖一次 導致coredump 也正是在這次重構的過程中發現了如何設計健壯的類。1 整個的幫戰系統主要是有兩個類,乙個玩家類leaguebattler,乙個戰場類leaguebattlefield...

系統設計的一些原則

系統設計的好壞在根本上決定了軟體系統的優劣。可以說 差的系統設計必定產生差的軟體系統 但是不能保證 好的系統設計必定產生好的軟體系統 因為在設計之前有需求開發工作,在設計之後還有編碼,測試和維護工作,無論哪個環節出了差錯,都會把好事搞砸了。據說上帝把所有的女士都設計成天使,可是天使們在下凡的時候,有...