我所遭遇过的游戏中间件---HumanIK
?我所遭遇過(guò)的游戲中間件---HumanIK
????? Autodesk HumanIK游戲中間件,為游戲創(chuàng)建更加可信、真實(shí)的角色動(dòng)畫。該中間件的全身逆向運(yùn)動(dòng)(FBIK)系統(tǒng)支持角色真實(shí)地與所在環(huán)境及其它角色進(jìn)行交互。通過(guò)動(dòng)態(tài)地將FBIK信息分層置于運(yùn)行中的現(xiàn)有視頻中,創(chuàng)建、修改和重新利用角色動(dòng)畫,以此來(lái)節(jié)省動(dòng)畫師寶貴的時(shí)間。
????? 以上語(yǔ)句拷貝自HumanIK廣告手冊(cè).所謂IK(反向動(dòng)力學(xué))就是相反于正常的骨骼動(dòng)作播放,提供骨架上某幾根骨骼的變換狀態(tài),讓骨架動(dòng)態(tài)的擺出合理的位置.舉個(gè)具體應(yīng)用的例子,如果要實(shí)現(xiàn)兩個(gè)高度不定的角色間的握手,不使用IK只能為每?jī)煞N高度的角色編輯一套動(dòng)作,這樣做工作量和數(shù)據(jù)量都很大.如果游戲中的角色高度是用玩家任意設(shè)置的,那么不使用IK是辦不到的.
????? 憑心而論,HumanIK是我接觸的Autodesk的三款中間件中最讓我省心的,另外兩款是Scaleform和Kynapse.省心的原因是它的復(fù)雜程度比其他兩款小很多,更為重要的是,我做的項(xiàng)目壓根沒(méi)用使用到HumanIK.所以我對(duì)HumanIK的研究只是停留在寫了幾個(gè)Demo的測(cè)試階段.這已經(jīng)是兩年前做的事了,由于時(shí)間過(guò)久,很多細(xì)節(jié)已經(jīng)忘卻了.
????? HumanIK的需要自己一套文件數(shù)據(jù),HumanIK提供了Maya的導(dǎo)出插件可以編輯生成該數(shù)據(jù).但也可以使用現(xiàn)成的骨骼動(dòng)作生成該數(shù)據(jù).HumanIK提供了這方面的接口,當(dāng)然開(kāi)發(fā)者可以不保存該數(shù)據(jù)的文件,而是每次創(chuàng)建動(dòng)作時(shí)生成該數(shù)據(jù).骨骼動(dòng)作的關(guān)節(jié)間有個(gè)自由度范圍,在其Maya導(dǎo)出插件中,可以編輯該范圍,而自動(dòng)生成的范圍則采用默認(rèn)參數(shù).當(dāng)時(shí)有個(gè)小坑是,角色的腿分為兩類,一種是普通的膝關(guān)節(jié),另一種膝關(guān)節(jié)是反的,用于鳥(niǎo)類.我直到搞了HumanIK才意識(shí)到鳥(niǎo)類的膝關(guān)節(jié)是反的,之前吃了那么多雞腿都沒(méi)有注意過(guò).
????? HumanIK的集成比較容易,依照其Demo,按照流程,可以輕松創(chuàng)建一個(gè)HumanIK的對(duì)象HIKCharacter.
??? //Step 1: Define which joints my character use.
??? // 步驟 1. 創(chuàng)建HIKCharacterDefinition
??? //Step 2: Create a HIKcharacter for my definition.
??? // 步驟 2. 根據(jù)HIKCharacterDefinition創(chuàng)建 HIKCharacter
??? //Step 3: Setup my character geometry, T Stance.
??? // 步驟 3. 設(shè)置HIKCharacter的幾何體
??? //Step 4. Set up Degrees of Freedom (optional)
??? // 步驟 4. 設(shè)置自由度(可選)
??? // 通過(guò)自由度,可以增加針對(duì)特定角色的這些內(nèi)置旋轉(zhuǎn)限制,以創(chuàng)建對(duì)骨架靈活性的其他約束。
??? //Step 5: Characterize your character geometry.
??? // 函數(shù)完成角色化之后,無(wú)法隨時(shí)更改自由度
???
?????? 記得去年夏天,有個(gè)師弟來(lái)我家,他在上海一家游戲公司,混的比我好,早已經(jīng)是項(xiàng)目經(jīng)理了.想實(shí)現(xiàn)角色握住門把手,或者拿起桌子上的東西的功能.我給他推薦了HumanIK,不知道他現(xiàn)在搞的怎么樣了.但如果他是今年問(wèn)我這個(gè)問(wèn)題的話,我一定不給他推薦HumanIK,這個(gè)功能用三角形的余弦定理,可以實(shí)現(xiàn).余弦定理是已知三角形的三個(gè)邊長(zhǎng)求三個(gè)內(nèi)角.具體調(diào)試起來(lái)有點(diǎn)麻煩,我大概花了一天的時(shí)間搞定.可以修改骨架的胳膊或腿的兩級(jí)骨骼,雖不像HumanIK那樣能修改骨架的N級(jí)骨骼,以及設(shè)置關(guān)節(jié)間的自由度,但也能滿足需求.
????? 由于時(shí)間過(guò)久,對(duì)HumanIK的記憶有點(diǎn)模糊,我記得它的DEMO中有個(gè)爬梯子的小人,具體的實(shí)現(xiàn)代碼卻沒(méi)有細(xì)看.但游戲中對(duì)IK的需求并不只是爬梯子這么簡(jiǎn)單,策劃更希望能實(shí)現(xiàn)角色間的動(dòng)態(tài)交互,這與物理有些關(guān)系.比如,角色受到攻擊時(shí),根據(jù)被攻擊的位置和力度動(dòng)態(tài)地做出不同的反應(yīng).但這種功能,在HumanIK中沒(méi)有,在三個(gè)物理的中間件中也沒(méi)有.我曾經(jīng)在一款游戲中見(jiàn)到這種功能,還自己寫算法簡(jiǎn)單模擬過(guò).當(dāng)角色某一部位受到攻擊時(shí),讓相關(guān)骨骼向后做一點(diǎn)旋轉(zhuǎn),將就著還湊合吧,沒(méi)有細(xì)調(diào).但要實(shí)現(xiàn)角色受攻擊時(shí),退后幾步再回來(lái),有點(diǎn)麻煩.希望有朝一日,HumanIK或者物理的中間件能提供個(gè)解決方案.
轉(zhuǎn)載于:https://www.cnblogs.com/WhyEngine/p/3504189.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的我所遭遇过的游戏中间件---HumanIK的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 58同城买二手电脑的感想
- 下一篇: GIS数据格式整理之Coverage篇