本發明專利技術公開了一種創建活動布娃娃的方法,包括:導入普通骨骼動畫模型,在unity編輯器模式下創建一個新的物體puppetObj,獲取普通骨骼動畫模型的預制體,將該預制體復制一份作為物體slaveObj,該物體puppetObj作為物體slaveObj和普通骨骼動畫模型的父物體;為物體slaveObj下的所有子物體添加剛體和可配置關節組件,獲取所有的可配置關節組件,設置可配置關節組件的屬性值,為物體slaveObj下所有的子物體添加關節同步模塊,為物體slaveObj下所有的子物體添加物理碰撞器模塊,設置動畫控制狀態機執行預設動畫,觀察角色與場景的交互情況對部分骨骼關節和碰撞體進行手動修正,完成創建。通過上述方案,本發明專利技術達到了減少游戲角色動作開發成本、周期的目的,在游戲開發領域具有很高的實用價值。
【技術實現步驟摘要】
一種創建活動布娃娃的方法
本專利技術涉及游戲開發領域,尤其是一種創建活動布娃娃的方法。
技術介紹
在游戲開發領域中,游戲角色動作的傳統制作方法是通過動畫師人工制作關鍵幀或者動態捕捉等技術制作動畫,然后播放制作好的動畫來表現其動作。這樣的缺點在于,如果需要細致的和其他環境、物體的交互反饋表現,就需要考慮各種情況下角色部位可能出現的動作,并制作對應的動畫,動畫制作量和所需時間、成本等會非常之大。更重要的是,由于游戲的隨機性,即使制作大量動畫,也無法預測所有可能的情況,當這些情況發生時,角色要么無法反應(因為沒有預先制作的對應動畫),要么反應很不自然(使用相近動畫作為臨時替代)。目前主流的游戲引擎中提供有布娃娃系統,布娃娃系統是基于物理引擎的一種技術,由于布娃娃系統是通過物理引擎進行驅動,所以角色天然地能與其他角色以及環境物理實體進行良好的物理交互效果運算,從而產生豐富自然的互動反饋效果。但是游戲引擎中提供的布娃娃系統只對角色的物理骨骼關節的連接進行了模擬用于表現角色的受力表現,導致布娃娃技術一直局限于表現處于昏迷狀態的角色或人物尸體等沒有自主活動能力的物體。
技術實現思路
本專利技術的目的在于提供一種創建活動布娃娃的方法,基于現有布娃娃系統的思想創建一種基于物理引擎、能自行運動且可以被人為控制的活動布娃娃,主要解決現有技術中存在的角色動作開發成本大、周期長的問題。為了實現上述目的,本專利技術采用的技術方案如下:一種創建活動布娃娃的方法,包括以下步驟:(S1)導入普通骨骼動畫模型;(S2)在unity編輯器模式下創建一個新的物體puppetObj,獲取普通骨骼動畫模型的預制體,將該預制體復制一份作為物體slaveObj;(S3)為物體slaveObj下的所有子物體添加剛體和可配置關節組件;(S4)獲取所有的可配置關節組件,設置可配置關節組件的屬性值;(S5)為物體slaveObj下所有的子物體添加關節同步模塊;(S6)為物體slaveObj下所有的子物體添加物理碰撞器模塊;(S7)設置動畫控制狀態機執行預設動畫,觀察角色與場景的交互情況對部分骨骼關節和碰撞體進行手動修正;(S8)完成活動布娃娃的創建。具體地,所述步驟(S2)還包括:設置puppetObj和slaveObj與普通骨骼動畫模型的位置一樣,設置puppetObj的為普通骨骼動畫模型和slaveObj的父物體;設置slaveObj的Animator動畫組件為禁用狀態;設置普通骨骼動畫模型和其所有子物體的層級對Unity攝像機不可見。具體地,所述步驟(S3)還包括:設置可配置關節組件的連接剛體為父物體上的剛體組件;設置可配置關節組件的x、y、z方向上的移動為鎖定模式。具體地,所述步驟(S4)中的具體步驟為:使用GetComponentsInChildren函數獲取步驟(S3)中添加的所有可配置關節組件,設置可配置關節組件的旋轉驅動模式為RotationDriveMode.XYAndZ,設置angularXDrive和angularYZDrive的彈力參數、阻力系數、最大力量。更進一步地,所述彈力參數默認值為20000,阻力系數為200,最大力量值為5000。具體地,步驟(S5)中所述關節同步模塊的主要功能是在角色運動中實時地(在系統更新函數FixedUpdate中)對關節的施力方向和大小進行控制。更進一步地,所述關節同步模塊的工作流程為:a.獲取關節同步模塊所屬物體上的可配置關節組件;b.關節同步模塊初始化時,設置同步仿真物體的旋轉方向為初始旋轉角度值;c.當角色開始運動后,在unity更新回調方法update中獲取同步仿真物體實時的旋轉方向值;利用Unity提供的四元數取反函數對旋轉方向值處理;將處理后的旋轉方向值與步驟b中所述初始旋轉角度值相乘獲取當前角度的四元數差值;將當前角度的四元數差值設為所屬父物體上的可配置關節組件的targetRotation屬性的值。其中,所述同步仿真物體是關節同步模塊所屬物體在普通骨骼動畫模型上相對應的物體。具體地,所述步驟(S6)的具體步驟:通過Unity新建一個物體為碰撞器對象,設置碰撞器對象的父物體為當前處理關節;設置碰撞器對象相對于父對象位置的屬性值為Vector3.zero;設置碰撞器對象旋轉方向的屬性值為當前處理物體相對于碰撞器對象的方向;為碰撞器對象添加unity提供的碰撞體組件;設置碰撞體組件的方向為2,高度為當前關節和碰撞器對象之間的距離,中心位置的z值為高度的一半以及設置半徑的初始默認值為0.04,該初始默認值可根據用戶需要改變大小。具體地,所述步驟(S6)中對骨骼關節調節是指對彈力參數默認值、阻力系數、最大力量值的默認值進行修改,對碰撞體調節是指對碰撞體對象半徑進行調節。與現有技術相比,本專利技術具有以下有益效果:通過本專利技術建立的活動布娃娃,生成特有物理模型對象,對物理模型對象添加可配置關節以及碰撞器對象,使得創建的活動布娃娃可以基于物理引擎對角色和其他物體接觸造成的物理效果進行及時反饋,在游戲場景的交互過程中顯得更加真實,減少了常規手段使用動作捕捉,繪制動畫幀的高成本,周期長的問題。附圖說明為了更清楚地說明本專利技術實施例的技術方案,下面將對實施例中所需使用的附圖作簡單介紹,應當理解,以下附圖僅示出了本專利技術的某些實施例,因此不應被看作是對保護范圍的限定,對于本領域技術人員來說,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他相關的附圖。圖1為本專利技術的流程示意圖。具體實施方式下面結合附圖和實施例對本專利技術作進一步說明,本專利技術的實施方式包括但不限于下列實施例。實施例該創建活動布娃娃的方法,包括以下步驟:(S1)將普通骨骼動畫模型導入Unity中。(S2)使用Unity創建一個puppetObj,調用Unity的庫函數PrefabUtility.GetCorrespondingObjectFromSource獲取普通骨骼動畫模型對應的預制體prefab,在調用庫函數PrefabUtility.InstantiatePrefab將該預制體prefab復制一份作為slaveObj,設置puppetObj為骨骼動畫模型和slaveObj的父物體;設置puppetObj對象和slaveObj的位置和骨骼動畫模型的位置相同;使用GetComponentInChildren庫函數獲取slaveObj上動畫組件并且設置為禁用;設置骨骼動畫模型和骨骼動畫模型下子物體的層級對Unity攝像機不可見。其中,該物體puppetObj作為物體slaveObj和普通骨骼動畫模型的父物體。(S3)獲取slaveObj,設slaveObj根節點的Transform為rootBoneTrans,將該值傳參給遞歸方法addPuppetJointForRootTrans。本文檔來自技高網...
【技術保護點】
1.一種創建活動布娃娃的方法,其特征在于,包括:/n(S1)導入普通骨骼動畫模型;/n(S2)在unity編輯器模式下創建一個新的物體puppetObj,獲取普通骨骼動畫模型的預制體,將該預制體復制一份作為物體slaveObj;/n(S3)為物體slaveObj下的所有子物體添加剛體和可配置關節組件;/n(S4)獲取所有的可配置關節組件,設置可配置關節組件的屬性值;/n(S5)為物體slaveObj下所有的子物體添加關節同步模塊;/n(S6)為物體slaveObj下所有的子物體添加物理碰撞器模塊;/n(S7)設置動畫控制狀態機執行預設動畫,觀察角色與場景的交互情況對部分骨骼關節和碰撞體進行手動修正;/n(S8)完成活動布娃娃的創建,puppetObj物體為創建的活動布娃娃。/n
【技術特征摘要】
1.一種創建活動布娃娃的方法,其特征在于,包括:
(S1)導入普通骨骼動畫模型;
(S2)在unity編輯器模式下創建一個新的物體puppetObj,獲取普通骨骼動畫模型的預制體,將該預制體復制一份作為物體slaveObj;
(S3)為物體slaveObj下的所有子物體添加剛體和可配置關節組件;
(S4)獲取所有的可配置關節組件,設置可配置關節組件的屬性值;
(S5)為物體slaveObj下所有的子物體添加關節同步模塊;
(S6)為物體slaveObj下所有的子物體添加物理碰撞器模塊;
(S7)設置動畫控制狀態機執行預設動畫,觀察角色與場景的交互情況對部分骨骼關節和碰撞體進行手動修正;
(S8)完成活動布娃娃的創建,puppetObj物體為創建的活動布娃娃。
2.根據權利要求1所述的一種創建活動布娃娃的方法,其特征在于,所述步驟(S2)還包括:設置puppetObj和slaveObj與普通骨骼動畫模型的位置一樣,設置puppetObj的為普通骨骼動畫模型和slaveObj的父物體;設置slaveObj的Animator動畫組件為禁用狀態;設置普通骨骼動畫模型和其所有子物體的層級對Unity攝像機不可見。
3.根據權利要求1所述的一種創建活動布娃娃的方法,其特征在于,所述步驟(S3)還包括:設置可配置關節組件的連接剛體為父物體上的剛體組件;設置可配置關節組件的x、y、z方向上的移動為鎖定模式。
4.根據權利要求1所述的一種創建活動布娃娃的方法,其特征在于,所述步驟(S4)中的具體步驟為:使用GetComponentsInChildren函數獲取步驟(S3)中添加的所有可配置關節組件,設置可配置關節組件的旋轉驅動模式為RotationDriveMode.XYAndZ,設置angularXDrive和angularYZDrive的彈力參數、阻力系數、最大力量。
5.根據權利要求4所述的...
【專利技術屬性】
技術研發人員:黃海波,
申請(專利權)人:黃海波,
類型:發明
國別省市:四川;51
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。