運動重定向處理方法及裝置制造方法
【專利摘要】本發(fā)明實施例提供一種運動重定向處理方法及裝置,該方法包括:根據骨骼中的關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,所述骨骼包括源骨骼和目標骨骼;根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理;將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點,本發(fā)明的技術方案,可以提高運動重定向中骨骼映射的準確度。
【專利說明】運動重定向處理方法及裝置【技術領域】
[0001 ] 本發(fā)明實施例涉及計算機技術,尤其涉及一種運動重定向處理方法及裝置。
【背景技術】
[0002]近些年來隨著計算機性能的提升,計算機動畫技術在動漫制作,電影特技,甚至是課堂教學等各方面得到了廣泛的應用。計算機動畫里面的角色包含以下幾個主要的內容:角色模型和骨骼。骨骼包括骨骼結構和運動數據兩部分內容,其中,骨骼結構描述了該角色模型幾何特征的拓撲結構,它是以樹形結構存儲,骨骼結構包含了關節(jié)點;運動數據描述了骨骼結構中各關節(jié)點在一段時間內的的運動信息。角色模型又包括網格模型,貼圖以及蒙皮信息。網格模型包括頂點(它描述了網格模型各部分的具體的位置),三角形(點與點之間的聯接關系,它構成了網格模型的表面);貼圖則展示了三角形上要顯示的圖案(對于人體模型,皮膚的顏色,眼睛,嘴巴的顏色等都是通過貼圖展現在三角形上面);而蒙皮信息通常是指頂點所受到距離它最近的骨骼中幾個關節(jié)點(通常不超過4個)的影響因子大小,因此對蒙皮信息而言,骨骼是不可替換更改的,骨骼對應的運動數據則是以幀的形式記錄的,每一幀記錄了骨骼的一個姿態(tài),它存儲的是每個骨骼關節(jié)點針對父關節(jié)點的運動數據,每一個關節(jié)點的數據包括三個方面的內容:每個骨骼關節(jié)點距離其父關節(jié)點的距離、關節(jié)點的局部坐標系以及子關節(jié)點的信息。
[0003]為了使3D模型的骨骼(目標骨骼)可以執(zhí)行第三方(包含新的運動數據的)骨骼(源骨骼)的運動,建立源骨骼關節(jié)點到目標骨骼關節(jié)點的映射關系,并根據所述映射關系把源骨骼上關節(jié)點的運動數據傳遞給目標骨骼關節(jié)點上的過程稱之為運動重定向,現有技術的運動重定向方法根據關節(jié)點名稱建立映射關系,這種方式嚴格依賴于標準的骨骼名稱的定義,但是實際不同用戶定義的名稱并不統(tǒng)一,所以運動重定向結果往往不精確,并且實現過程中還需要依賴于一個用于名稱匹配的名稱庫。
[0004]現有技術中的運動重`定向方法存在準確度較低的問題。
【發(fā)明內容】
[0005]本發(fā)明實施例提供一種運動重定向處理方法及裝置,用以提高運動重定向的準確度。
[0006]本發(fā)明第一方面,提供一種運動重定向處理方法,包括:
[0007]根據骨骼中的關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,所述骨骼包括源骨骼和目標骨骼;
[0008]根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理;
[0009]將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點。
[0010]在第一方面的第一種可能的實現方式中,所述特征關節(jié)點包括根關節(jié)點、胸關節(jié)點、左胯關節(jié)點、右胯關節(jié)點、左肩關節(jié)點、右肩關節(jié)點和頸關節(jié)點;[0011]所述根據骨骼中的關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,包括:
[0012]根據所述關節(jié)點的拓撲結構特征,確定所述骨骼中所述根關節(jié)點的位置和名稱以及所述胸關節(jié)點的位置和名稱;
[0013]根據所述關節(jié)點的拓撲結構特征和所述骨骼的朝向,確定所述骨骼中所述左胯關節(jié)點的位置和名稱以及所述右胯關節(jié)點的位置和名稱;
[0014]根據所述骨骼的對稱性和所述關節(jié)點運動數據,確定所述骨骼中所述左肩關節(jié)點的位置和名稱、所述右肩關節(jié)點的位置和名稱以及所述頸關節(jié)點的位置和名稱。
[0015]根據第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱之前,還包括:
[0016]將所述骨骼劃分為六個分支;
[0017]所述根據關節(jié)點的拓撲結構特征和所述骨骼的朝向,確定所述骨骼中所述左胯關節(jié)點的位置和名稱以及所述右胯關節(jié)點的位置和名稱,包括:
[0018]根據所述六個分支的關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點;
[0019]確定所述第一腿分支的葉子關節(jié)點和所述第二腿分支的葉子關節(jié)點的平均朝向的第一向量,所述葉子關節(jié)點為關節(jié)點的度為O的關節(jié)點,所述關節(jié)點的度為所述關節(jié)點的子關節(jié)點的個數;
[0020]根據右手定則確定所述根關節(jié)點、所述第一胯關節(jié)點和第二胯關節(jié)點的第二向量;
[0021]若所述第一向量與所述第二向量的夾角小于90°,則確定所述第一胯關節(jié)點為所述左胯關節(jié)點,所述第二胯關節(jié)點為所述右胯關節(jié)點;若所述第一向量與所述第二向量的夾角大于90°,則確定所述第一胯關節(jié)點為所述右胯關節(jié)點,所述第二胯關節(jié)點為所述左胯關節(jié)點;
[0022]所述根據所述骨骼的對稱性和所述關節(jié)點運動數據,確定所述骨骼中所述左肩關節(jié)點的位置和名稱、所述右肩關節(jié)點的位置和名稱以及所述頸關節(jié)點的位置和名稱,包括:
[0023]根據所述六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支;
[0024]根據所述右手定則確定所述第一臂分支為左臂分支,并且確定所述第二臂分支為右臂分支;
[0025]根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點;
[0026]根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點;
[0027]根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
[0028]根據第一方面的第二種可能的實現方式,在第一方面的第三種可能的實現方式中,所述將所述骨骼劃分為六個分支之前,還包括:
[0029]根據所述源骨骼中關節(jié)點的拓撲結構特征和所述源骨骼的關節(jié)點運動數據,刪除所述源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼;
[0030]復制所述優(yōu)化的源骨骼和所述目標骨骼,得到復制骨骼,所述復制骨骼包括復制優(yōu)化的源骨骼和復制目標骨骼;
[0031]對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼;
[0032]所述將所述骨骼劃分為六個分支,包括:
[0033]根據復制優(yōu)化的源骨骼的通用星形結構骨骼中的關節(jié)點,將所述優(yōu)化的源骨骼劃分為六個分支,并且根據所述目標骨骼的通用星形結構骨骼,將所述目標骨骼劃分為六個分支。
[0034]根據第一方面的第三種可能的實現方式,在第一方面的第四種可能的實現方式中,所述對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼之后,所述將所述骨骼劃分為六個分支之前,還包括:
[0035]判斷所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼是否相同;
[0036]若是,則執(zhí)行所述將所述骨骼劃分為六個分支。
[0037]結合第一方面的第三種或第四種可能的實現方式,在第一方面的第五種可能的實現方式中,所述根據所述源骨骼中關節(jié)點的拓撲結構特征和所述源骨骼的關節(jié)點運動數據,刪除所述源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼,包括:
[0038]確定所述源骨骼中的關節(jié)點到所述源骨骼中的關節(jié)點的子關節(jié)點的距離;
[0039]根據所述源關節(jié)點的關節(jié)點運動數據,確定所述源骨骼中的關節(jié)點的運動幅度;
[0040]刪除所述源骨骼中關節(jié)點的度為1、并且所述到所述源骨骼中的關節(jié)點的子關節(jié)點的距離小于第一閾值、并且所述運動幅度小于第二閾值的關節(jié)點。
[0041]結合第一方面的第三種至第五種可能的實現方式中任意一種,在第一方面的第六種可能的實現方式中,所述對所述復制骨骼進行簡化處理,包括:
[0042]標記根關節(jié)點為起始關節(jié)點,遍歷所述復制骨骼的樹形結構;
[0043]判斷當前關節(jié)點的度是否大于I ;
[0044]若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點,判斷所述復制骨骼中的關節(jié)點是否遍歷結束;
[0045]若是,則刪除遍歷結束后的復制骨骼中到所述遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點;
[0046]若否,執(zhí)行所述判斷當前關節(jié)點的度是否大于I ;
[0047]若否,則判斷所述當前節(jié)點是否為葉子關節(jié)點;
[0048]若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點;[0049]若否,則標記所述當前關節(jié)點為起始關節(jié)點,執(zhí)行所述判斷當前關節(jié)點的度是否大于I。
[0050]結合第一方面的第三種至第六種可能的實現方式中任意一種,在第一方面的第七種可能的實現方式中,所述根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理,包括:
[0051]根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,所述六個分支的語義標簽為根據所述特征關節(jié)點定義的、用于區(qū)分所述六個分支的名稱,所述語義標簽包括軀干、左腿、右腿、左臂、右臂以及頭。
[0052]根據第一方面的第七種可能的實現方式,在第一方面的第八種可能的實現方式中,所述根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,包括:
[0053]判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0054]若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0055]若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0056]若否,則按長度比例,對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和與所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點距離最近的所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0057]若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系;
[0058]若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射;
[0059]若否,則按長度比例,對所述優(yōu)化的源骨骼的分支上的關節(jié)點和與所述優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的所述目標骨骼的分支上的關節(jié)點進行映射。
[0060]根據第一方面的第七種可能的實現方式,在第一方面的第九種可能的實現方式中,所述根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,包括:
[0061]判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0062]若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0063]若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0064]若否,則根據所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0065]若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系;
[0066]若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射;
[0067]若否,則根據所述優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述重構的目標骨骼的分支上的關節(jié)點進行一對一映射;
[0068]更新重構的目標骨骼上的關節(jié)點的蒙皮信息;
[0069]將所述重構的目標骨骼上的關節(jié)點的局部坐標系轉化所述源骨骼上的關節(jié)點的局部坐標系;
[0070]所述將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點,包括:
[0071]將所述優(yōu)化的源骨骼的關節(jié)點的運動數據賦值給所述目標骨骼中與所述源骨骼的關節(jié)點對應的關節(jié)點。
[0072]結合第一方面的第二種至第九種可能的實現方式中任意一種,在第一方面的第十種可能的實現方式中,所述根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理之后,所述將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點之前,還包括:
[0073]根據所述骨骼中的所述根關節(jié)點、所述左胯關節(jié)點和所述右胯關節(jié)點,對所述源骨骼的所述六個分支與所述目標骨骼的所述六個分支進行對齊處理。
[0074]本發(fā)明第二方面,提供一種運動重定向處理裝置,包括:
[0075]確定模塊,用于根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,所述骨骼包括源骨骼和目標骨骼;
[0076]處理模塊,用于根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理;
[0077]傳遞模塊,用于將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點。[0078]在第二方面的第一種可能的實現方式中,所述特征關節(jié)點包括根關節(jié)點、胸關節(jié)點、左胯關節(jié)點、右胯關節(jié)點、左肩關節(jié)點、右肩關節(jié)點和頸關節(jié)點;
[0079]所述確定模塊,具體用于:
[0080]根據所述關節(jié)點的拓撲結構特征,確定所述骨骼中所述根關節(jié)點的位置和名稱以及所述胸關節(jié)點的位置和名稱;
[0081]根據所述關節(jié)點的拓撲結構特征和所述骨骼的朝向,確定所述骨骼中所述左胯關節(jié)點的位置和名稱以及所述右胯關節(jié)點的位置和名稱;
[0082]根據所述骨骼的對稱性和所述關節(jié)點運動數據,確定所述骨骼中所述左肩關節(jié)點的位置和名稱、所述右肩關節(jié)點的位置和名稱以及所述頸關節(jié)點的位置和名稱。
[0083]根據第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述處理模塊,還用于在所述根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱之前,將所述骨骼劃分為六個分支;
[0084]所述確定模塊,還用于:
[0085]根據所述六個分支的關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點;
[0086]確定所述第一腿分支的葉子關節(jié)點和所述第二腿分支的葉子關節(jié)點的平均朝向的第一向量,所述葉子關節(jié)點為關節(jié)點的度為O的關節(jié)點,所述關節(jié)點的度為所述關節(jié)點的子關節(jié)點的個數;
[0087]根據右手定則確定所述根關節(jié)點、所述第一胯關節(jié)點和第二胯關節(jié)點的第二向量;
[0088]若所述第一向量與所述第二向量的夾角小于90°,則確定所述第一胯關節(jié)點為所述左胯關節(jié)點,所述第二胯關節(jié)點為所述右胯關節(jié)點;若所述第一向量與所述第二向量的夾角大于90°,則確定所述第一胯關節(jié)點為所述右胯關節(jié)點,所述第二胯關節(jié)點為所述左胯關節(jié)點;
[0089]所述確定模塊,還用于:
[0090]根據所述六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支;
[0091]根據所述右手定則確定所述第一臂分支為左臂分支,并且確定所述第二臂分支為右臂分支;
[0092]根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點;
[0093]根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點;
[0094]根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
[0095]根據第二方面的第二種可能的實現方式,在第二方面的第三種可能的實現方式中,所述處理模塊,還用于在將所述骨骼劃分為六個分支之前,根據所述源骨骼中關節(jié)點的拓撲結構特征和所述源骨骼的關節(jié)點運動數據,刪除所述源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼;
[0096]復制所述優(yōu)化的源骨骼和所述目標骨骼,得到復制骨骼,所述復制骨骼包括復制優(yōu)化的源骨骼和復制目標骨骼;
[0097]對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼;
[0098]所述處理模塊,還用于:
[0099]根據復制優(yōu)化的源骨骼的通用星形結構骨骼中的關節(jié)點,將所述優(yōu)化的源骨骼劃分為六個分支,并且根據所述目標骨骼的通用星形結構骨骼,將所述目標骨骼劃分為六個分支。
[0100]根據第二方面的第三種可能的實現方式,在第二方面的第四種可能的實現方式中,所述確定模塊,還用于在所述對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼之后,所述將所述骨骼劃分為六個分支之前,判斷所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼是否相同;若是,則執(zhí)行所述將所述骨骼劃分為六個分支。
[0101]結合第二方面的第三種或第四種可能的實現方式,在第二方面的第五種可能的實現方式中,所述處理模塊,還用于:
[0102]確定所述源骨骼中的關節(jié)點到所述源骨骼中的關節(jié)點的子關節(jié)點的距離;
[0103]根據所述源關節(jié)點的關節(jié)點運動數據,確定所述源骨骼中的關節(jié)點的運動幅度;
[0104]刪除所述源骨骼中關節(jié)點的度為1、并且所述到所述源骨骼中的關節(jié)點的子關節(jié)點的距離小于第一閾值、并且所述運動幅度小于第二閾值的關節(jié)點。
[0105]結合第二方面的第三種至第五種可能的實現方式中任意一種,在第二方面的第六種可能的實現方式中,所述處理模塊,還用于:
[0106]標記根關節(jié)點為起始關節(jié)點,遍歷所述復制骨骼的樹形結構;
[0107]判斷當前關節(jié)點的度是否大于I ;
[0108]若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點,判斷所述復制骨骼中的關節(jié)點是否遍歷結束;
[0109]若是,則刪除遍歷結束后的復制骨骼中到所述遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點;
[0110]若否,執(zhí)行所述判斷當前關節(jié)點的度是否大于I ;
[0111]若否,則判斷所述當前節(jié)點是否為葉子關節(jié)點;
[0112]若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點;
[0113]若否,則標記所述當前關節(jié)點為起始關節(jié)點,執(zhí)行所述判斷當前關節(jié)點的度是否大于I。
[0114]結合第二方面的第三種至第六種可能的實現方式中任意一種,在第二方面的第七種可能的實現方式中,所述處理模塊,還用于:
[0115]根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,所述六個分支的語義標簽為根據所述特征關節(jié)點定義的、用于區(qū)分所述六個分支的名稱,所述語義標簽包括軀干、左腿、右腿、左臂、右臂以及頭。
[0116]根據第二方面的第七種可能的實現方式,在第二方面的第八種可能的實現方式中,所述處理模塊,還用于:
[0117]判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0118]若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0119]若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0120]若否,則按長度比例,對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和與所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點距離最近的所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0121]若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系;
[0122]若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射;
[0123]若否,則按長度比例,對所述優(yōu)化的源骨骼的分支上的關節(jié)點和與所述優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的所述目標骨骼的分支上的關節(jié)點進行映射。
[0124]根據第二方面的第七種可能的實現方式,在第二方面的第九種可能的實現方式中,所述處理模塊,還用于:
[0125]判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0126]若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0127]若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0128]若否,則根據所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0129]若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系;
[0130]若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射;
[0131]若否,則根據所述優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述重構的目標骨骼的分支上的關節(jié)點進行一對一映射;
[0132]更新重構的目標骨骼上的關節(jié)點的蒙皮信息;
[0133]將所述重構的目標骨骼上的關節(jié)點的局部坐標系轉化所述源骨骼上的關節(jié)點的局部坐標系;
[0134]所述傳遞模塊,具體用于:
[0135]將所述優(yōu)化的源骨骼的關節(jié)點的運動數據賦值給所述目標骨骼中與所述源骨骼的關節(jié)點對應的關節(jié)點。
[0136]結合第二方面的第二種至第九種可能的實現方式中任意一種,在第二方面的第十種可能的實現方式中,所述處理模塊,還用于在所述根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理之后,所述將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點之前,根據所述骨骼中的所述根關節(jié)點、所述左胯關節(jié)點和所述右胯關節(jié)點,對所述源骨骼的所述六個分支與所述目標骨骼的所述六個分支進行對齊處理。
[0137]本發(fā)明實施例提供的運動重定向處理方法及裝置,通過根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,所述骨骼包括源骨骼和目標骨骼,再根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理,最后將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點,可以實現確定特征關節(jié)點時并不依賴于標準的骨骼名稱的定義,也不需要使用用于名稱匹配的名稱庫,提高了運動重定向中骨骼映射的準確度。
【專利附圖】
【附圖說明】
[0138]為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0139]圖1為本發(fā)明提供的運動重定向處理方法實施例一的流程圖;
[0140]圖2為本發(fā)明提供的運動重定向處理方法實施例二的流程圖;
[0141]圖3A為本發(fā)明本發(fā)明提供的運動重定向處理方法實施例二中源骨骼和優(yōu)化的源骨骼的骨骼結構示意圖;
[0142]圖3B為本發(fā)明提供的運動重定向處理方法實施例二中對復制骨骼進行簡化處理的流程圖;[0143]圖4A和圖4B為本發(fā)明提供的運動重定向處理方法實施例二中復制骨骼的骨骼結構示意圖和樹形結構示意圖;
[0144]圖5A和圖5B為本發(fā)明提供的運動重定向處理方法實施例二中簡化處理后得到的通用星形結構的骨骼結構示意圖和樹形結構示意圖;
[0145]圖6為本發(fā)明提供的運動重定向處理方法實施例二中復制優(yōu)化的源骨骼的通用星形結構骨骼的分支與優(yōu)化的源骨骼的分支的映射關系示意圖;
[0146]圖7為本發(fā)明提供的運動重定向處理方法實施例二中確定左膀關節(jié)點和右膀關節(jié)點的流程圖;
[0147]圖8為本發(fā)明提供的運動重定向處理方法實施例二中確定左肩關節(jié)點、右肩關節(jié)點以及頸關節(jié)點的流程圖;
[0148]圖9本發(fā)明提供的運動重定向處理方法實施例二中右臂分支上關節(jié)點的運動變化累加幅值不意圖;
[0149]圖10為本發(fā)明提供的運動重定向處理方法實施例二中七個特征關節(jié)點的位置示意圖;
[0150]圖11為本發(fā)明提供的運動重定向處理方法實施例二中待映射的優(yōu)化的源骨骼和待映射的目標骨骼的拓撲結構示意圖;
[0151]圖12為本發(fā)明提供的運動重定向處理方法實施例二中第二種映射處理方式的流程圖;
[0152]圖13為本發(fā)明提供的運動重定向處理方法實施例二中根據優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點的示意圖;
[0153]圖14為本發(fā)明提供的運動重定向處理裝置實施例一的結構示意圖;
[0154]圖15為本發(fā)明提供的運動重定向處理裝置實施例三的結構示意圖。
【具體實施方式】
[0155]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0156]本發(fā)明適用于計算機動畫中骨骼結構為類人骨骼結構的源骨骼與目標骨骼之間的運動重定向。
[0157]圖1為本發(fā)明提供的運動重定向處理方法實施例一的流程圖,如圖1所示,本實施例的運動重定向處理方法包括:
[0158]S101、根據骨骼中關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱,骨骼包括源骨骼和目標骨骼。
[0159]具體來說,計算機動畫里面的角色的骨骼結構可以抽象為樹形結構,其中樹的每一個節(jié)點代表了一個骨骼關節(jié)點,在計算機數據結構中,樹是由η (η>1)個有限節(jié)點組成的具有層次關系的集合Τ。當T為空時,稱之為空樹,否則它滿足如下兩個條件:有且只有一個特定的定義為根的節(jié)點;其余節(jié)點可分為m (m > O)個子集,且不相交,其中每一個子集又是一棵樹,并稱之為根的子樹,樹的特點包括:每個節(jié)點具有零個或者多個子節(jié)點;根節(jié)點沒有父節(jié)點;每個非根節(jié)點只有一個父節(jié)點;除了根節(jié)點以外,每個子節(jié)點可以分為m個不相交的子樹,一個節(jié)點的子節(jié)點個數定義為該節(jié)點的度,節(jié)點的度為O的節(jié)點稱之為葉子節(jié)點,以某節(jié)點為根的子樹中,任意一個節(jié)點稱之為該節(jié)點的子孫節(jié)點,從根節(jié)點到該節(jié)點所經歷的分支上所有的節(jié)點都稱之為該節(jié)點的祖先節(jié)點。
[0160]本實施例將一個關節(jié)點的子節(jié)點個數以及父關節(jié)點個數這樣的特征信息稱之為關節(jié)點的拓撲結構特征,本實施例中確定的骨骼的特征關節(jié)點的位置和名稱用于作為進行源骨骼到目標骨骼的關節(jié)點映射處理時的參照關節(jié)。
[0161]進一步地,特征關節(jié)點包括根關節(jié)點、胸關節(jié)點、左胯關節(jié)點、右胯關節(jié)點、左肩關節(jié)點、右肩關節(jié)點和頸關節(jié)點;
[0162]SlOl可以包括:
[0163]根據關節(jié)點的拓撲結構特征,確定骨骼中根關節(jié)點的位置和名稱以及胸關節(jié)點的位置和名稱;
[0164]具體來說,本實施例定義Base關節(jié)點為根關節(jié)點根據關節(jié)點的拓撲結構特征中根關節(jié)點和胸關節(jié)點均有三個子關節(jié)點,但是根關節(jié)點沒有父關節(jié)點,胸關節(jié)點有父關節(jié)點的特征,可以確定根關節(jié)點和胸關節(jié)點的位置和名稱。
[0165]根據關節(jié)點的拓撲結構特征和骨骼的朝向,確定骨骼中左胯關節(jié)點的位置和名稱以及右胯關節(jié)點的位置和名稱;
[0166]根據骨骼的對稱性和關節(jié)點運動數據,確定骨骼中左肩關節(jié)點的位置和名稱、右肩關節(jié)點的位置和名稱以及頸關節(jié)點的位置和名稱。
[0167]具體來說,對于源骨骼和目標骨骼其運動數據并不會因為不同的人為定義而不統(tǒng)一,所以根據關節(jié)點運動數據確定特征關節(jié)點的較為精準。
[0168]S102、根據源骨骼的第一特征關節(jié)點的位置和名稱和目標骨骼的第二特征關節(jié)點的位置和名稱,進行源骨骼到目標骨骼的關節(jié)點映射處理。
[0169]具體來說,以SlOl中確定的特征關節(jié)點為參考點進行源骨骼到目標骨骼的關節(jié)點映射處理。
[0170]現有技術的運動重定向方法為:首先以關節(jié)點的拓撲結構特征為依據,尋找源骨骼和目標骨骼的Base關節(jié)點和胸關節(jié)點,并建立映射關系;對于其他具有共同拓撲結構特征的關節(jié)點、即對稱的骨骼關節(jié)點,結合名稱建立關節(jié)點的映射關系;在剩余關節(jié)點中查找具有共同名稱的關節(jié)點,建立關節(jié)點的映射關系,可以看出現有技術對于不具備明顯拓撲結構特征的關節(jié)點(例如肩部、肘部、膝關節(jié)等只有一個子關節(jié)點的關節(jié))采用標準的骨骼命名方式來進行關節(jié)點查找后建立映射關系,因此存在映射不準確的缺陷。
[0171]本實施例根據骨骼中關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱,確定特征關節(jié)點時并不依賴于標準的骨骼名稱的定義,也不需要使用用于名稱匹配的名稱庫,再以確定的特征參考點進行源骨骼到目標骨骼的關節(jié)點映射處理,提高了骨骼映射的準確度。
[0172]S103、將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點。
[0173]具體來說,由于源骨骼的關節(jié)點和目標骨骼的關節(jié)點的局部坐標系可能不一致,因此無法將源骨骼特征關節(jié)點的運動數據直接傳遞給目標骨骼的特征關節(jié)點,需要先將源骨骼的運動數據由局部坐標系轉換為全局坐標系,再轉化為目標骨骼對應骨骼的局部坐標系數據,為保證動畫質量,可利用反向動力學(Inverse Kinematics,簡稱IK)算法對傳遞過來的運動數據進行進一步優(yōu)化處理,最終生成新的動畫并展示。
[0174]可以理解的是,本實施例還包括將目標骨骼關節(jié)分支和源骨骼分支對齊的步驟。
[0175]本實施例提供的運動重定向處理方法,通過根據骨骼中關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱,骨骼包括源骨骼和目標骨骼,再根據源骨骼的第一特征關節(jié)點的位置和名稱和目標骨骼的第二特征關節(jié)點的位置和名稱,進行源骨骼到目標骨骼的關節(jié)點映射處理,最后將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點,可以實現確定特征關節(jié)點時并不依賴于標準的骨骼名稱的定義,也不需要使用用于名稱匹配的名稱庫,提高了骨骼映射的準確度。
[0176]圖2為本發(fā)明提供的運動重定向處理方法實施例二的流程圖,如圖2所示,本實施例對本發(fā)明提供的運動重定向處理方法進行詳細說明,包括:
[0177]S201、根據源骨骼中關節(jié)點的拓撲結構特征和源骨骼的關節(jié)點運動數據,刪除源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼。
[0178]具體來說,在做運動重定向時,發(fā)現源骨骼的拓撲結構有可能含有一些無用的結構信息。這些無用信息主要表現在兩個方面:一是在整個運動過程中變化幅度很小;二是骨骼的長度比較小,刪除無用的結構信息可以使得后續(xù)確定特征關節(jié)點和源骨骼到目標骨骼的映射更加準確。
[0179]S201可以包括:
[0180]確定源骨骼中的關節(jié)點到源骨骼中的關節(jié)點的子關節(jié)點的距離;
[0181]根據源關節(jié)點的關節(jié)點運動數據,確定源骨骼中的關節(jié)點的運動幅度。
[0182]刪除源骨骼中關節(jié)點的度為1、并且到源骨骼中的關節(jié)點的子關節(jié)點的距離小于第一閾值、并且運動幅度小于第二閾值的關節(jié)點。
[0183]具體來說,若某一關節(jié)點的度大于1,說明該關節(jié)點后面還有分支,故不能刪除;若某一關節(jié)點的度為0,說明該關節(jié)點為葉子關節(jié)點,也不能刪除,第一閾值的可以設置為小于整個源骨骼的平均長度的數值,第二閾值可以以源骨骼中各關節(jié)點的運動幅度為參考設定,刪除冗余關節(jié)點后,把該冗余關節(jié)點的子關節(jié)點連到該冗余關節(jié)點的父關節(jié)點上,并對源骨骼對應的運動數據進行修正,刪除該冗余關節(jié)點的運動數據。
[0184]圖3A為本發(fā)明本發(fā)明提供的運動重定向處理方法實施例二中源骨骼和優(yōu)化的源骨骼的骨骼結構示意圖,如圖3A所示,經過S201的優(yōu)化過程,刪除了源骨骼中的冗余關節(jié)點36和冗余關節(jié)點37。
[0185]需要說明的是,本實施例僅對源骨骼進行刪除冗余關節(jié)點的優(yōu)化處理,而不對目標骨骼進行優(yōu)化處理,這是由于目標骨骼一般為較優(yōu)化的骨骼模型,而且若對目標骨骼進行優(yōu)化處理,則需要修改目標骨骼的蒙皮信息,但本發(fā)明并不以此為限。
[0186]S202、復制優(yōu)化的源骨骼和目標骨骼,得到復制骨骼,復制骨骼包括復制優(yōu)化的源骨骼和復制目標骨骼。
[0187]具體來說,復制一份優(yōu)化的源骨骼和目標骨骼,將復制的源骨骼記做復制優(yōu)化的源骨骼(Copy Source Skel),復制的目標骨骼記做復制目標骨骼(Copy Target Skel)0由于需要判斷優(yōu)化的源骨骼和目標骨骼的拓撲結構是否相同,而需要簡化優(yōu)化的源骨骼和目標骨骼的拓撲結構,但是由于簡化處理會破壞優(yōu)化的源骨骼和目標骨骼的拓撲結構,因此需要復制一份優(yōu)化的源骨骼和目標骨骼單獨用于判斷兩者的拓撲結構是否相似。
[0188]S203、對復制骨骼進行簡化處理,確定復制優(yōu)化的源骨骼的通用星形結構骨骼和復制目標骨骼的通用星形結構骨骼。
[0189]S203可以包括:標記根關節(jié)點為起始關節(jié)點,遍歷復制骨骼的拓撲結構;
[0190]判斷當前關節(jié)點的度是否大于I ;
[0191]若是,則標記當前關節(jié)點為結束關節(jié)點,并刪除起始關節(jié)點與結束關節(jié)點之間的關節(jié)點,判斷復制骨骼中的關節(jié)點是否遍歷結束;
[0192]若是,則刪除遍歷結束后的復制骨骼中到遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點;
[0193]若否,執(zhí)行判斷當前關節(jié)點的度是否大于I ;
[0194]若否,則判斷當前節(jié)點是否為葉子關節(jié)點;
[0195]若是,則標記當前關節(jié)點為結束關節(jié)點,并刪除起始關節(jié)點與結束關節(jié)點之間的關節(jié)點;
[0196]若否,則標記當前關節(jié)點為起始關節(jié)點,執(zhí)行判斷當前關節(jié)點的度是否大于I。
[0197]圖3B為本發(fā)明提供的運動重定向處理方法實施例二中對復制骨骼進行簡化處理的流程圖,如圖3B所示,本實施例對復制骨骼按樹形結構進行簡化處理的方法,可以包括:
[0198]S301、計算復制骨骼的平均長度。
[0199]S302、標記根關節(jié)點為起始關節(jié)點,遍歷復制骨骼的樹形結構。
[0200]S303、判斷當前關節(jié)點的度是否大于1,若是,則執(zhí)行S304,否則執(zhí)行S307。
[0201]S304、標記當前關節(jié)點為結束關節(jié)點,并刪除起始關節(jié)點與結束關節(jié)點之間的關節(jié)點。
[0202]具體來說,在遍歷過程中,若發(fā)現當前關節(jié)點的度大于1,標記當前關節(jié)點為結束關節(jié)點。依遍歷次序保存起始關節(jié)點到結束關節(jié)點的所有關節(jié)點,標記為一個分支。刪除從起始關節(jié)點到結束關節(jié)點之間的節(jié)點,但保留原始分支的長度,圖4A和圖4B為本發(fā)明提供的運動重定向處理方法實施例二中復制骨骼的骨骼結構示意圖和樹形結構示意圖,圖5A和圖5B為本發(fā)明提供的運動重定向處理方法實施例二中簡化處理后得到的通用星形結構的骨骼結構示意圖和樹形結構示意圖,如圖4B和圖5B所示,將圖4B中的分支{1,2,3,4}簡化為分支{1,4},即{1,4}的長度為{1,2,3,4}的長度,按順序保留刪除的關節(jié)點的序列號,用作后續(xù)將源骨骼和目標骨骼劃分為六個分支。
[0203]S305、判斷復制骨骼中的關節(jié)點是否遍歷結束,若是,則執(zhí)行S306,否則執(zhí)行S303。
[0204]S306、刪除遍歷結束后的復制骨骼中到遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點。
[0205]具體來說,第三閾值的設定也可以以S301中計算得到的復制骨骼的平均長度為參考,刪除遍歷結束后的復制骨骼中長度較短的分支,例如手指的分支。
[0206]S307、判斷當前節(jié)點是否為葉子關節(jié)點,若是,則執(zhí)行S304,否則執(zhí)行S303。
[0207]具體來說,如果到葉子關節(jié)點位置,沒有子關節(jié)點個數大于2的節(jié)點,即該分支是鏈狀結構,如圖4B中{1,19,21,23,25},則標記此葉子關節(jié)點為結束關節(jié)點。依遍歷次序保存起始關節(jié)點到結束關節(jié)點的所有關節(jié)點,標記為一個分支。刪除除起始關節(jié)點和葉子關節(jié)點之外的其它關節(jié)點,將{1,19,21,23,25}簡化為{1,25},但保留原始分支的長度,SP{1,25}的長度為{1,19,21,23,25}的長度,按順序保留刪除的關節(jié)點的序列號,用作后續(xù)將源骨骼和目標骨骼劃分為六個分支。
[0208]S204、判斷復制優(yōu)化的源骨骼的通用星形結構骨骼和復制目標骨骼的通用星形結構骨骼是否相同,若是,則執(zhí)行S205,否則,結束運動重定向。
[0209]具體來說,由于本發(fā)明適用于計算機動畫中骨骼結構為類人骨骼結構的源骨骼與目標骨骼之間的運動重定向,本步驟的目的在于確定優(yōu)化的源骨骼的結構和目標骨骼的結構是否相似,即優(yōu)化的源骨骼和目標骨骼是否均為類人骨骼結構,若優(yōu)化的源骨骼的結構和目標骨骼的結構不相似,則沒有進行運動重定向的必要。
[0210]本步驟中若判斷復制優(yōu)化的源骨骼的通用星形結構骨骼的關節(jié)點個數和關節(jié)點的子關節(jié)點的個數與復制目標骨骼的通用星形結構骨骼的關節(jié)點個數和關節(jié)點的子關節(jié)點的個數是否相同,若相同,則認為優(yōu)化的源骨骼的結構和目標骨骼的結構相似。
[0211]S205、根據復制優(yōu)化的源骨骼的通用星形結構骨骼中的關節(jié)點,將優(yōu)化的源骨骼劃分為六個分支,并且根據目標骨骼的通用星形結構骨骼,將目標骨骼劃分為六個分支。
[0212]具體來說,復制優(yōu)化的源骨骼的通用星形結構骨骼的樹形結構如圖5B所示,復制優(yōu)化的源骨骼的通用星形結構骨骼有六個分支,七個關節(jié)點。可以通過這七個關節(jié)點的序號尋找到優(yōu)化的源骨骼的六個分支,由于復制優(yōu)化的源骨骼和優(yōu)化的源骨骼結構完全一致,因此可以通過關節(jié)點的序號尋找到優(yōu)化的源骨骼的六個分支。其中優(yōu)化的源骨骼各分支關節(jié)點序號可以在S204的簡化過程中予以保留,同理,根據目標骨骼的通用星形結構骨骼,將目標骨骼劃分為六個分支。
[0213]圖6為本發(fā)明提供的運動重定向處理方法實施例二中復制優(yōu)化的源骨骼的通用星形結構骨骼的分支與優(yōu)化的源骨骼的分支的映射關系示意圖,如圖6所示,簡化后的分支{1,25},可以通過關節(jié)點序號尋找到優(yōu)化后源關節(jié)的詳細分支{1,19,23,25}(如圖6中陰影部分);簡化后的分支{4,12},可以通過關節(jié)點序號尋找到優(yōu)化后源關節(jié)的詳細分支{4,8,9,10,11,12}(如圖6中陰影部分)。
[0214]S206、根據關節(jié)點的拓撲結構特征,確定骨骼中根關節(jié)點的位置和名稱以及胸關節(jié)點的位置和名稱。
[0215]S207、根據關節(jié)點的拓撲結構特征和骨骼的朝向,確定骨骼中左胯關節(jié)點的位置和名稱以及右胯關節(jié)點的位置和名稱。
[0216]S207可以包括:
[0217]根據六個分支的關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點;
[0218]確定第一腿分支的葉子關節(jié)點和第二腿分支的葉子關節(jié)點的平均朝向的第一向量,葉子關節(jié)點為關節(jié)點的度為O的關節(jié)點;
[0219]根據右手定則確定根關節(jié)點、第一胯關節(jié)點和第二胯關節(jié)點的第二向量;
[0220]若第一向量與第二向量的夾角小于90°,則確定第一胯關節(jié)點為左胯關節(jié)點,第二胯關節(jié)點為右胯關節(jié)點;若第一向量與第二向量的夾角大于90°,則確定第一胯關節(jié)點為右胯關節(jié)點,第二胯關節(jié)點為左胯關節(jié)點。[0221]圖7為本發(fā)明提供的運動重定向處理方法實施例二中確定左胯關節(jié)點和右胯關節(jié)點的流程圖,如圖7所示,本實施例確定左胯關節(jié)點和右胯關節(jié)點的方法可以包括:
[0222]S401、根據六個分支的關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點。
[0223]S402、確定第一腿分支的葉子關節(jié)點和第二腿分支的葉子關節(jié)點的平均朝向的第
一向量。
[0224]S403、根據右手定則確定根關節(jié)點、第一胯關節(jié)點和第二胯關節(jié)點的第二向量。
[0225]S404、判斷第一向量和第二向量的夾角是否小于90°,若是,則執(zhí)行S405,否則執(zhí)行 S406。
[0226]S405、確定第一胯關節(jié)點為左胯關節(jié)點,第二胯關節(jié)點為右胯關節(jié)點。
[0227]S406、確定第一胯關節(jié)點為右胯關節(jié)點,第二胯關節(jié)點為左胯關節(jié)點。
[0228]具體來說,第一腿分支和第二腿分支的關節(jié)點的拓撲結構特征為“分支除根節(jié)點外只有子關節(jié)點為I的關節(jié)點以及一個葉子關節(jié)點”,第一腿分支和第二腿分支分別從根關節(jié)點開始之后的第一個關節(jié)點分別為第一胯關節(jié)點和第二胯關節(jié)點,在確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點之后,還需要進一步的分辨出哪個分支是左腿分支,哪個分支是右腿分支,可以依據腳的朝向來判斷兩腿分支的哪個是左腿分支,哪個是右腿分支,根據人體骨骼結構得知,人的左胯關節(jié)點,根關節(jié)點和右胯關節(jié)點三點右手定則的朝向和雙腳的平均朝向是一致的,即根據三個關節(jié)點的右手定則獲取的向量和雙腳平均朝向的向量的夾角應該小于90° ;相反,人的右胯關節(jié)點,根關節(jié)點和左胯關節(jié)點形成的右手定則的方向和雙腳平均朝向是相反的,即根據三個關節(jié)點的右手定則獲取的向量和雙腳平均朝向的向量的夾角應該大于90°,以圖4A為例,19-1-18三個關節(jié)點構成的右手定則方向和左腳,右腳方向的平均值(22-24,23-25)相似。由此可推斷出19為左胯關節(jié)點,18為右胯關節(jié)點,進一步可得知25為左腳關節(jié)點,24為右腳關節(jié)點。
[0229]S208、根據骨骼的對稱性和關節(jié)點運動數據,確定骨骼中左肩關節(jié)點的位置和名稱、右肩關節(jié)點的位置和名稱以及頸關節(jié)點的位置和名稱。
[0230]S208可以包括:
[0231]根據六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支;
[0232]根據右手定則確定第一臂分支為左臂分支,并且確定第二臂分支為右臂分支;
[0233]根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點;
[0234]根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點;
[0235]根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
[0236]圖8為本發(fā)明提供的運動重定向處理方法實施例二中確定左肩關節(jié)點、右肩關節(jié)點以及頸關節(jié)點的流程圖,如圖8所示,本實施例確定左肩關節(jié)點、右肩關節(jié)點以及頸關節(jié)點的方法可以包括:
[0237]S501、根據六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支。
[0238]S502、根據右手定則確定第一臂分支為左臂分支,并且確定第二臂分支為右臂分支。
[0239]S503、根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點。
[0240]S503以確定左肩關節(jié)點為例,還可以包括:根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點;根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
[0241]具體來說,根據骨骼的對稱性,可以確定第一臂分支和第二臂分支以及頭分支,如圖4A所示,以(13-1-8)三點構成的右手定則的方向和雙腳方向的平均值做對比,可以得出13號關節(jié)點以及以后的子關節(jié)點屬于左臂分支,8號關節(jié)點以及以后的子關節(jié)點屬于右臂分支。然而卻無法確定哪個是左肩關節(jié)點,哪個是右肩關節(jié)點。主要的原因在于,類人骨骼結構在胸部到肩部之間有可能有一個或者多個輔助關節(jié)點。為此,引入了關節(jié)點運動分析方法,來尋找左肩關節(jié)點,右肩關節(jié)點以及頸關節(jié)點,關節(jié)運動分析方法的依據是肩部關節(jié)的自由度(Degree of Freedom,簡稱DoF)變化范圍在兩臂分支關節(jié)點當中是最大的,運動分析方法的過程如下:針對胸關節(jié)的三個子分支(左臂分支,右臂分支,以及頭分支),按關節(jié)點的連接順序記錄下每個分支中關節(jié)點在一段時間內關節(jié)點變化的幅度差值,該關節(jié)點的變化的幅度差值的和反映的是每個關節(jié)點的自由度的范圍。圖9本發(fā)明提供的運動重定向處理方法實施例二中右臂分支上關節(jié)點的運動變化累加幅值示意圖,如圖9所示,該曲線描述了圖4A中左臂分支中關節(jié)點{4,8,9,10,11}的運動變化情況。圖9的橫軸展示的是從胸關節(jié)開始的手臂關節(jié)點的序列號,圖9的縱軸展示的是運動過程中幀與幀之間關節(jié)點在三個方向上的差值的累加值,根據人體關節(jié)運動的常識知道肩關節(jié)點的自由度范圍要大于胸關節(jié)的自由度范圍,也大于肘關節(jié)的自由度范圍,由此可以預測肩關節(jié)點的變化累加幅值應該大于胸關節(jié)點,也大于肘關節(jié)點,其數字化特征表現為肩關節(jié)點的變化累加幅值和相鄰的關節(jié)點變化累加幅值相比為一個凸起的峰值特征(如圖9中關節(jié)點9所示)。
[0242]按照上述關節(jié)點運動分析方法,可以得到圖4A中源骨骼關節(jié)點13和9分別對應左肩關節(jié)點和右肩關節(jié)點,以及源骨骼關節(jié)點5為頸關節(jié)點。針對目標骨骼采用同樣的方法,可以得到目標骨骼的七個特征關節(jié)的位置。
[0243]圖10為本發(fā)明提供的運動重定向處理方法實施例二中七個特征關節(jié)點的位置示意圖,其中七個特征關節(jié)點如圖中陰影部分所示,需要說明的是,這七個特征關節(jié)點和復制優(yōu)化的源骨骼的通用星形結構骨骼或復制目標骨骼的通用星形結構骨骼的七個關節(jié)點并不完全相同(只有根關節(jié),胸關節(jié)一致,其它五個特征關節(jié)分別對應各分支的起始位置,而復制優(yōu)化的源骨骼的通用星形結構骨骼或復制目標骨骼的通用星形結構骨骼的剩余五個關節(jié)則對應各分支的末端位置)。[0244]在確定七個特征關節(jié)點的位置和名稱之后,可以根據特征關節(jié)點的名稱確定六個分支的語義標簽,例如有根關節(jié)點和胸關節(jié)點的分支稱之為軀干分支,有左臂關節(jié)點的分支稱之為左臂分支,有右臂關節(jié)點的分支稱之為右臂分支,有頸關節(jié)點的分支稱之為頸分支,有左胯關節(jié)點的分支稱之為左腿分支,有右胯關節(jié)點的分支稱之為右腿分支,六個分支的語義標簽用于在針對各分支進行優(yōu)化的源骨骼到目標骨骼的映射處理時,區(qū)分各分支,例如將優(yōu)化的源骨骼中的語義標簽為左臂分支和目標骨骼中語義標簽為左臂分支的兩個分支進行映射。
[0245]S209、根據優(yōu)化的源骨骼的六個分支的語義標簽和目標骨骼的六個分支的語義標簽,對六個分支分別進行優(yōu)化的源骨骼到目標骨骼的關節(jié)點映射處理。
[0246]六個分支的語義標簽為根據特征關節(jié)點定義的、用于區(qū)分六個分支的名稱,語義標簽包括軀干、左腿、右腿、左臂、右臂以及頭。
[0247]在第一種可能的映射處理方式中,S209可以包括:
[0248]判斷待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0249]若是,則根據特征關節(jié)點將待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支,分別劃分為第一子分支和第二子分支,第一子分支為首端關節(jié)點和特征關節(jié)點之間的子分支,第二子分支為特征關節(jié)點和末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0250]若是,則對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0251]若否,則按長度比例,對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和與優(yōu)化的源骨骼的第一子分支上的關節(jié)點距離最近的目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0252]若否,則判斷優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點是否
存在一對一的映射關系;
[0253]若是,則優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點進行一對一映射;
[0254]若否,則按長度比例,對優(yōu)化的源骨骼的分支上的關節(jié)點和與優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的目標骨骼的分支上的關節(jié)點進行映射。
[0255]具體來說,在分別獲取了優(yōu)化的源骨骼和目標骨骼的7個特征關節(jié)點以后,依次按照獲得的六個分支,根據語義標簽分別進行關節(jié)點映射處理。首先是軀干部分的映射:軀干部分,已知兩個端點是一一對應的,圖11為本發(fā)明提供的運動重定向處理方法實施例二中待映射的優(yōu)化的源骨骼和待映射的目標骨骼的拓撲結構示意圖,如圖11所示,待映射的優(yōu)化的源骨骼中{1,4}對應待映射的目標骨骼{1,2};其次是頭分支的映射待映射的優(yōu)化的源骨骼中{4,7}對應待映射的目標骨骼{2,5};然后是腿分支,待映射的優(yōu)化的源骨骼左腿分支{1,19,21,23}對應待映射的目標骨骼{1,18,19,20},待映射的優(yōu)化的源骨骼右腿分支{1,18,20,22}對應目標骨骼右腿{1,14,15,16};最后是臂分支,待映射的優(yōu)化的源骨骼左臂分支{4,14,15,16}對應待映射的目標骨骼{2,10,11,12},待映射的優(yōu)化的源骨骼右臂分支{4,9,10,11}對應待映射的目標骨骼{2,6,7,8}。由于待映射的優(yōu)化的源骨骼腕部關節(jié)子孫節(jié)點構成的樹拓撲結構和目標骨骼腕部關節(jié)子孫節(jié)點構成的樹拓撲結構不同,故忽略指關節(jié)的映射處理。
[0256]六個骨骼分支的映射分為兩種情況:兩端固定的分支映射(例如軀干分支);一端固定的分支映射(例如雙臂,雙腿分支和頸部分支的映射)。
[0257]對于兩端固定的分支映射(軀干分支),確定優(yōu)化的源骨骼分支和目標骨骼分支已經定義了的兩個端點具有一對一的映射關系,例如圖11中優(yōu)化的源骨骼關節(jié)點I和目標骨骼關節(jié)點1,優(yōu)化的源骨骼關節(jié)點4和目標骨骼關節(jié)點2具有一對一的映射關系,對于軀干分支中間的骨骼關節(jié)點映射,則以根關節(jié)為起始點,按長度比例(將整個軀干的長度設為I)對優(yōu)化的源骨骼的分支上的關節(jié)點和與優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的目標骨骼的分支上的關節(jié)點進行映射,可以理解的是,若優(yōu)化的源骨骼或者目標骨骼在該分支之間沒有關節(jié)點則不作映射。
[0258]對于一端固定的分支映射(雙臂分支,雙腿分支,以及頭分支),以左、右肩關節(jié)點(針對雙臂分支)或者左、右胯關節(jié)點(針對雙腿分支)或者頸關節(jié)點(針對頸部分支)為中間點將該分支分為兩個子分支,其中由胸關節(jié)點到左右肩關節(jié)點或者頸關節(jié)點的子分支之間的映射處理同兩端固定的分支映射處理;剩余的分支則以左、右肩關節(jié)點或者左、右胯關節(jié)點或者頸關節(jié)點為起始關節(jié)點,分別按拓撲順序依次對剩余的關節(jié)點進行一對一的映射,對于含有手指分支的骨骼,不做映射處理。
[0259]在第二種可能的映射處理方式中,S209可以包括:
[0260]判斷待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0261]若是,則根據特征關節(jié)點將待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支,分別劃分為第一子分支和第二子分支,第一子分支為首端關節(jié)點和特征關節(jié)點之間的子分支,第二子分支為特征關節(jié)點和末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0262]若是,則對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0263]若否,則根據優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0264]若否,則判斷優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點是否
存在一對一的映射關系;
[0265]若是,則優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點進行一對一映射;
[0266]若否,則根據優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對優(yōu)化的源骨骼的分支上的關節(jié)點和重構的目標骨骼的分支上的關節(jié)點進行一對一映射;
[0267]圖12為本發(fā)明提供的運動重定向處理方法實施例二中第二種映射處理方式的流程圖,如圖8所示,本實施例的映射處理方法可以包括:
[0268]S1201、判斷待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點,若是,則執(zhí)行S1202,否則,執(zhí)行S1206。
[0269]S1202、根據特征關節(jié)點將待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支,分別劃分為第一子分支和第二子分支,第一子分支為首端關節(jié)點和特征關節(jié)點之間的子分支,第二子分支為特征關節(jié)點和末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對
一映射。
[0270]S1203、判斷優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系,若是,則執(zhí)行S1204,否則執(zhí)行S1205。
[0271]S1204、對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的
關節(jié)點進行一對一映射。
[0272]S1205、根據優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射。
[0273]S1206、判斷優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系,若是,則執(zhí)行S1207,否則執(zhí)行S1208。
[0274]S1207、對優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點進行一對一映射;
[0275]S1208、根據優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對優(yōu)化的源骨骼的分支上的關節(jié)點和重構的目標骨骼的分支上的關節(jié)點進行一對
一映射。
[0276]S1209、更新重構的目標骨骼上的關節(jié)點的蒙皮信息。
[0277]S1210、將重構的目標骨骼上的關節(jié)點的局部坐標系轉化源骨骼上的關節(jié)點的局部坐標系。
[0278]具體來說,在映射處理過程中,為進一步保留優(yōu)化的源骨骼運動信息并映射到目標骨骼對應區(qū)域上,可以按照優(yōu)化的源骨骼的拓撲結構來修改目標骨骼的拓撲結構以達到一對一映射的目的。
[0279]首先是軀干部分的映射:軀干部分,已知兩個端點是一一對應的,如圖11所示,待映射的優(yōu)化的源骨骼中{1,4}對應待映射的目標骨骼{1,2},對于出現優(yōu)化的源骨骼中間區(qū)域關節(jié)點多,目標骨骼對應區(qū)域關節(jié)點少的情況,首先保留目標骨骼區(qū)域的整體長度,以及曲線信息,然后按照優(yōu)化的源骨骼對應區(qū)域的骨骼區(qū)間的比例重新生成目標骨骼區(qū)域對應缺失的關節(jié)點,使兩個對應區(qū)域的關節(jié)點達到一對一的映射,圖13為本發(fā)明提供的運動重定向處理方法實施例二中根據優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點的示意圖,如圖13所示,左側線段代表是的目標骨骼,右側線段代表的優(yōu)化的源骨骼,左側線段上三個點(A,B, C)代表的是目標骨骼的關節(jié)點,右側線段上四個點(a, b,c, d)代表的優(yōu)化的源骨骼上的四個關節(jié)點,在映射過程中保持目標骨骼的長度,根據目標骨骼的關節(jié)點確定一個曲線(左側曲線),根據優(yōu)化的源骨骼關節(jié)點所在位置的比例(右側三條線段,LI,L2,L3)在左側曲線上重新確定新關節(jié)點的位置(b’,c’兩個關節(jié)點是按照b,c所在位置映射的新關節(jié)點),然后刪掉目標骨骼區(qū)域內舊的關節(jié)點,在更新過目標骨骼關節(jié)之后,以原有的蒙皮信息作為輸入,重新生成該區(qū)域的蒙皮信息。對于出現優(yōu)化的源骨骼中間區(qū)域的關節(jié)點較少,目標骨骼對應區(qū)域的關節(jié)點多的情況,同樣按照優(yōu)化的源骨骼對應區(qū)域骨骼區(qū)間比例更新目標骨骼區(qū)域的關節(jié)點,如果源骨骼區(qū)域和目標骨骼區(qū)域關節(jié)數一致,則不需要進行任何調整,只記錄關節(jié)點的映射關系。
[0280]然后是兩腿分支對應的區(qū)間映射:在本實施例中,以左腿分支的映射為例,待映射的優(yōu)化的源骨骼左腿分支{1,19,21,23、25}對應待映射的目標骨骼{1,18,19,20,21}做到一一映射。腿部的骨骼至少包括五個關節(jié)點:根關節(jié)點,胯關節(jié)點,膝關節(jié)點,踝關節(jié)點和趾關節(jié)點,根據優(yōu)化的源骨骼腿部分支可得特征關節(jié)點19,以及目標骨骼特征關節(jié)點18。從它們開始按照拓撲結構順序做好一對一映射,根節(jié)點到腿部胯關節(jié)點之間沒有多余關節(jié)點,也做一對一映射,如果在優(yōu)化的源骨骼端點趾關節(jié)上有分支,本方法中直接忽略該區(qū)域的運動數據,由于這些細微的運動變化在運動重定向過程中可以忽略不計。
[0281]手臂分支的映射:在本實施例中,以左臂分支的映射為例。待映射的優(yōu)化的源骨骼{4,13,14,15,16,17}和待映射的目標骨骼{3,10,11,12,13}做映射。由于肩膀上關節(jié)點數量可能不固定,由此需要按照已獲得的特征關節(jié)點分區(qū)域映射。例如左臂分支上,利用已知的兩處特征關節(jié):胸關節(jié)點,左肩關節(jié)點,把左臂分支分兩個區(qū)域映射,其中胸部到左肩上的映射用于識別軀干區(qū)域在左肩端點的細微變化,而左肩到手腕的映射則用于識別胳膊的運動數據。其中胸部到左肩關節(jié)都是已知的;左肩關節(jié)點到腕關節(jié)點其關節(jié)數對于類人的骨骼結構來講是固定的,其映射同腿分支的映射,如果腕關節(jié)以后還有子關節(jié)點,分以下幾種情況進行討論:
[0282]情況一:如果優(yōu)化的源骨骼沒有手指關節(jié),則優(yōu)化的源骨骼到目標骨骼的映射只映射優(yōu)化的源骨骼中存在的骨骼關節(jié)點,忽略掉目標骨骼中剩余的關節(jié)點映射。
[0283]情況二:如果目標骨骼沒有手指關節(jié),而優(yōu)化的源骨骼中有且有運動數據,則在腕部按照現有的算法生成曲線骨骼,在生成曲線骨骼以后,簡化手部的骨骼,然后尋找最短分支作為拇指,計算其它分支距離拇指分支的角度,按角度大小對其它分支進行排序。采用同樣的方式對優(yōu)化的源骨骼手指分支進行排序,如果兩者拓撲結構一致,則按照圖13的映射方式生成骨骼關節(jié)點,則根據新生成的骨骼的長度確定拇指分支,從拇指分支開始,按照各分支到拇指分支的角度依次確定其它四個手指分支,然后按照源骨骼手指分支的比例進行映射處理;若生成的骨骼拓撲結構和優(yōu)化的源骨骼子分支拓撲結構不一致,則忽略此處映射不做處理。
[0284]情況三:如果源骨骼和目標骨骼都有手指的關節(jié)信息,則判斷他們的拓撲結構是否一致。如果一致,則直接一對一映射,如果不一致,則忽略源骨骼當中的手指處的關節(jié)映射,不做該區(qū)域的映射處理,因為,如果兩者拓撲結構不一致,則無法確保映射的準確性,不如不做處理。頭分支處理過程同軀干分支的處理。
[0285]在修正目標骨骼分支,保證一對一映射之后,需要將目標骨骼關節(jié)的局部坐標系修改為源骨骼對應關節(jié)點的局部坐標系。[0286]若采用第一種映射方式進行映射處理,由于優(yōu)化的源骨骼和目標骨骼關節(jié)點的局部坐標系可能不一致,因此無法將優(yōu)化的源骨骼特征關節(jié)點的運動信息直接傳遞給目標骨骼特征關節(jié)點,需要在每一幀運動數據當中將優(yōu)化的源骨骼的運動數據由局部坐標系轉換為全局坐標系,再轉化為目標骨骼對應骨骼的局部坐標系數據,比較費時。
[0287]若采用第二種映射方式進行映射處理,則目標骨骼和優(yōu)化的源骨骼完全一致,則可以直接將目標骨骼關節(jié)的局部坐標系修改為源骨骼對應關節(jié)點的局部坐標系,而不需要在每幀的時候再做轉化。
[0288]如果目標骨骼的分支拓撲結構有修改,則需要進一步修改該骨骼分支對應的模型上頂點的蒙皮信息,否則動畫無法正常執(zhí)行,只針對分支中拓撲結構發(fā)生改變的區(qū)域進行蒙皮重計算。首先以目標骨骼分支修改前發(fā)生變化的骨骼關節(jié)點對應的模型頂點數據集(模型頂點數據集指的是所有受到發(fā)生變化的骨骼關節(jié)點影響的模型頂點的集合)作為作用域,采用熱力學模擬的方法,計算該作用域內目標骨骼分支修改后骨骼關節(jié)點對各模型頂點的蒙皮信息。
[0289]由于第二種映射方式進一步修改目標骨骼關節(jié)實現一對一的映射,并修改目標骨骼關節(jié)局部坐標系保證和源骨骼對應關節(jié)局部坐標系相同,使得骨骼關節(jié)間的運動數據不需要進一步的坐標系轉換,提升了骨骼關節(jié)點運動數據傳遞的效率,并提高了運動數據傳遞的準確度。
[0290]S210、根據骨骼中的根關節(jié)點、左胯關節(jié)點和右胯關節(jié)點,對源骨骼的六個分支與目標骨骼的六個分支進行對齊處理。
[0291]具體來說,優(yōu)化的源骨骼和目標骨骼的默認姿態(tài)可能是不一致的,這時需要將目標骨骼的默認姿態(tài)調整到與優(yōu)化的源骨骼一致。根據優(yōu)化的源骨骼和目標骨骼各自的根關節(jié)點,左胯關節(jié)點,右胯關節(jié)點,將目標骨骼旋轉到和優(yōu)化的源骨骼一致的朝向,然后分別按各關節(jié)點距離其父關節(jié)點的向量來對齊六個分支。
[0292]對齊處理是指將源骨骼和目標骨骼都設置成T姿勢,即初始化姿勢(沒有骨骼關節(jié)點旋轉的姿態(tài))要保持一致,由于是復制優(yōu)化的源骨骼的運動數據,該對齊應該以源骨骼的默認T姿態(tài)作為參考。
[0293]S211、將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點。
[0294]具體來說,若S209中采用第二種映射方式,則S211可以包括:
[0295]將優(yōu)化的源骨骼的關節(jié)點的運動數據賦值給目標骨骼中與源骨骼的關節(jié)點對應的關節(jié)點。
[0296]具體來說,若采用第二種映射方式進行映射處理,進行一對一映射,以及更新目標模型的蒙皮信息以后,可以將優(yōu)化的源骨骼關節(jié)點的運動信息直接賦值給對應目標骨骼中的關節(jié)點。
[0297]本實施例提供的運動重定向處理方法,首先將源骨骼和目標骨骼劃分為六個分支,通過根據骨骼中關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱,骨骼包括源骨骼和目標骨骼,再根據源骨骼的第一特征關節(jié)點的位置和名稱和目標骨骼的第二特征關節(jié)點的位置和名稱,進行源骨骼到目標骨骼的關節(jié)點映射處理,最后將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點,可以實現確定特征關節(jié)點時并不依賴于標準的骨骼名稱的定義,也不需要使用用于名稱匹配的名稱庫,提高了骨骼映射的準確度,采用第二種映射方式進一步修改目標骨骼關節(jié)實現一對一的映射,并修改目標骨骼關節(jié)局部坐標系保證和源骨骼對應關節(jié)局部坐標系相同,使得骨骼關節(jié)間的運動數據不需要進一步的坐標系轉換,提升了骨骼關節(jié)點運動數據傳遞的效率,并提聞了運動數據傳遞的準確度。
[0298]圖14為本發(fā)明提供的運動重定向處理裝置實施例一的結構示意圖,如圖14所示,本實施例的運動重定向處理裝置,可以包括:確定模塊141、處理模塊142以及傳遞模塊143,其中,確定模塊141用于根據骨骼中關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱,骨骼包括源骨骼和目標骨骼;處理模塊142用于根據源骨骼的第一特征關節(jié)點的位置和名稱和目標骨骼的第二特征關節(jié)點的位置和名稱,進行源骨骼到目標骨骼的關節(jié)點映射處理;傳遞模塊143用于將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點。
[0299]進一步地,特征關節(jié)點包括根關節(jié)點、胸關節(jié)點、左胯關節(jié)點、右胯關節(jié)點、左肩關節(jié)點、右肩關節(jié)點和頸關節(jié)點;
[0300]確定模塊141具體用于:
[0301]根據關節(jié)點的拓撲結構特征,確定骨骼中根關節(jié)點的位置和名稱以及胸關節(jié)點的位置和名稱;
[0302]根據關節(jié)點的拓撲結構特征和骨骼的朝向,確定骨骼中左胯關節(jié)點的位置和名稱以及右胯關節(jié)點的位置和名稱;
[0303]根據骨骼的對稱性和關節(jié)點運動數據,確定骨骼中左肩關節(jié)點的位置和名稱、右肩關節(jié)點的位置和名稱以及頸關節(jié)點的位置和名稱。
[0304]本實施例的裝置,可以用于執(zhí)行圖1所示方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
[0305]在本發(fā)明提供的運動重定向處理裝置實施例二中,處理模塊142還用于在根據骨骼中關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱之前,將骨骼劃分為六個分支;
[0306]確定模塊141還用于:
[0307]根據六個分支的關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點;
[0308]確定第一腿分支的葉子關節(jié)點和第二腿分支的葉子關節(jié)點的平均朝向的第一向量,葉子關節(jié)點為關節(jié)點的度為O的關節(jié)點;
[0309]根據右手定則確定根關節(jié)點、第一胯關節(jié)點和第二胯關節(jié)點的第二向量;
[0310]若第一向量與第二向量的夾角小于90°,則確定第一胯關節(jié)點為左胯關節(jié)點,第二胯關節(jié)點為右胯關節(jié)點;若第一向量與第二向量的夾角大于90°,則確定第一胯關節(jié)點為右胯關節(jié)點,第二胯關節(jié)點為左胯關節(jié)點;
[0311]確定模塊141還用于:
[0312]根據六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支;
[0313]根據右手定則確定第一臂分支為左臂分支,并且確定第二臂分支為右臂分支;
[0314]根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點;
[0315]根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點;
[0316]根據關節(jié)點運動數據,以胸關節(jié)點為起始關節(jié)點順序計算頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
[0317]進一步地,處理模塊142還用于在將骨骼劃分為六個分支之前,根據源骨骼中關節(jié)點的拓撲結構特征和源骨骼的關節(jié)點運動數據,刪除源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼;
[0318]復制優(yōu)化的源骨骼和目標骨骼,得到復制骨骼,復制骨骼包括復制優(yōu)化的源骨骼和復制目標骨骼;
[0319]對復制骨骼進行簡化處理,確定復制優(yōu)化的源骨骼的通用星形結構骨骼和復制目標骨骼的通用星形結構骨骼;
[0320]處理模塊142還用于:
[0321]根據復制優(yōu)化的源骨骼的通用星形結構骨骼中的關節(jié)點,將優(yōu)化的源骨骼劃分為六個分支,并且根據目標骨骼的通用星形結構骨骼,將目標骨骼劃分為六個分支。
[0322]進一步地,確定模塊141還用于在對復制骨骼進行簡化處理,確定復制優(yōu)化的源骨骼的通用星形結構骨骼和復制目標骨骼的通用星形結構骨骼之后,將骨骼劃分為六個分支之前,判斷復制優(yōu)化的源骨骼的通用星形結構骨骼和復制目標骨骼的通用星形結構骨骼是否相同;若是,則執(zhí)行將骨骼劃分為六個分支。
[0323]進一步地,處理模塊142還用于:
[0324]確定源骨骼中的關節(jié)點到源骨骼中的關節(jié)點的子關節(jié)點的距離;
[0325]根據源關節(jié)點的關節(jié)點運動數據,確定源骨骼中的關節(jié)點的運動幅度;
[0326]刪除源骨骼中關節(jié)點的度為1、并且到源骨骼中的關節(jié)點的子關節(jié)點的距離小于第一閾值、并且運動幅度小于第二閾值的關節(jié)點。
[0327]進一步地,處理模塊142還用于:
[0328]標記根關節(jié)點為起始關節(jié)點,遍歷復制骨骼的樹形結構;
[0329]判斷當前關節(jié)點的度是否大于I ;
[0330]若是,則標記當前關節(jié)點為結束關節(jié)點,并刪除起始關節(jié)點與結束關節(jié)點之間的關節(jié)點,判斷復制骨骼中的關節(jié)點是否遍歷結束;
[0331]若是,則刪除遍歷結束后的復制骨骼中到遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點;
[0332]若否,執(zhí)行判斷當前關節(jié)點的度是否大于I ;
[0333]若否,則判斷當前節(jié)點是否為葉子關節(jié)點;
[0334]若是,則標記當前關節(jié)點為結束關節(jié)點,并刪除起始關節(jié)點與結束關節(jié)點之間的關節(jié)點;
[0335]若否,則標記當前關節(jié)點為起始關節(jié)點,執(zhí)行判斷當前關節(jié)點的度是否大于I。
[0336]進一步地,處理模塊142還用于:[0337]根據優(yōu)化的源骨骼的六個分支的語義標簽和目標骨骼的六個分支的語義標簽,對六個分支分別進行優(yōu)化的源骨骼到目標骨骼的關節(jié)點映射處理,六個分支的語義標簽為根據特征關節(jié)點定義的、用于區(qū)分六個分支的名稱,語義標簽包括軀干、左腿、右腿、左臂、右臂以及頭。
[0338]進一步地,處理模塊142還用于:
[0339]判斷待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0340]若是,則根據特征關節(jié)點將待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支,分別劃分為第一子分支和第二子分支,第一子分支為首端關節(jié)點和特征關節(jié)點之間的子分支,第二子分支為特征關節(jié)點和末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0341]若是,則對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0342]若否,則按長度比例,對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和與優(yōu)化的源骨骼的第一子分支上的關節(jié)點距離最近的目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0343]若否,則判斷優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點是否
存在一對一的映射關系;
[0344]若是,則優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點進行一對一映射;
[0345]若否,則按長度比例,對優(yōu)化的源骨骼的分支上的關節(jié)點和與優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的目標骨骼的分支上的關節(jié)點進行映射。
[0346]進一步地,處理模塊142還用于:
[0347]判斷待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點;
[0348]若是,則根據特征關節(jié)點將待映射的、具有相同語義標簽的優(yōu)化的源骨骼的分支和目標骨骼的分支,分別劃分為第一子分支和第二子分支,第一子分支為首端關節(jié)點和特征關節(jié)點之間的子分支,第二子分支為特征關節(jié)點和末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系;
[0349]若是,則對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0350]若否,則根據優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對優(yōu)化的源骨骼的第一子分支上的關節(jié)點和重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射;
[0351]若否,則判斷優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系;
[0352]若是,則優(yōu)化的源骨骼的分支上的關節(jié)點和目標骨骼的分支上的關節(jié)點進行一對一映射;
[0353]若否,則根據優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對優(yōu)化的源骨骼的分支上的關節(jié)點和重構的目標骨骼的分支上的關節(jié)點進行一對一映射;
[0354]更新重構的目標骨骼上的關節(jié)點的蒙皮信息;
[0355]將重構的目標骨骼上的關節(jié)點的局部坐標系轉化源骨骼上的關節(jié)點的局部坐標系;
[0356]傳遞模塊,具體用于:
[0357]將優(yōu)化的源骨骼的關節(jié)點的運動數據賦值給目標骨骼中與源骨骼的關節(jié)點對應的關節(jié)點。
[0358]進一步地,處理模塊142還用于在根據源骨骼的第一特征關節(jié)點的位置和名稱和目標骨骼的第二特征關節(jié)點的位置和名稱,進行源骨骼到目標骨骼的關節(jié)點映射處理之后,將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點之前,根據骨骼中的根關節(jié)點、左胯關節(jié)點和右胯關節(jié)點,對源骨骼的六個分支與目標骨骼的六個分支進行對齊處理。
[0359]本實施例的裝置,可以用于執(zhí)行圖1所示方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
[0360]圖15為本發(fā)明提供的運動重定向處理裝置實施例三的結構示意圖,如圖15所示,本實施例的運動重定向處理裝置,可以包括:包括至少一個總線151、與總線151相連的至少一個處理器152以及與總線151相連的至少一個存儲器153,其中,處理器152通過總線151,調用存儲器153中存儲的代碼,以用于:
[0361]根據骨骼中的關節(jié)點的拓撲結構特征、骨骼的對稱性和關節(jié)點運動數據,確定骨骼的特征關節(jié)點的位置和名稱,骨骼包括源骨骼和目標骨骼;
[0362]根據源骨骼的第一特征關節(jié)點的位置和名稱和目標骨骼的第二特征關節(jié)點的位置和名稱,進行源骨骼到目標骨骼的關節(jié)點映射處理;
[0363]將源骨骼的關節(jié)點運動數據傳遞至目標骨骼中的關節(jié)點。
[0364]本實施例的裝置,可以用于執(zhí)行圖1或圖2所示方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
[0365]需要說明的是,上述各實施例對應的結構示意圖僅為一種示意,各部分或模塊的連接關系不限于圖中示出的形式,可以以實際應用中的情況為準。
[0366]在本發(fā)明所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0367]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
[0368]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用硬件加軟件功能單元的形式實現。
[0369]上述以軟件功能單元的形式實現的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory, ROM)、隨機存取存儲器(Random Access Memory, RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0370]本領域技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
[0371]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。
【權利要求】
1.一種運動重定向處理方法,其特征在于,包括: 根據骨骼中的關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,所述骨骼包括源骨骼和目標骨骼; 根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理; 將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點。
2.根據權利要求1所述的方法,其特征在于,所述特征關節(jié)點包括根關節(jié)點、胸關節(jié)點、左胯關節(jié)點、右胯關節(jié)點、左肩關節(jié)點、右肩關節(jié)點和頸關節(jié)點; 所述根據骨骼中的關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,包括: 根據所述關節(jié)點的拓撲結構特征,確定所述骨骼中所述根關節(jié)點的位置和名稱以及所述胸關節(jié)點的位置和名稱; 根據所述關節(jié)點的拓撲結構特征和所述骨骼的朝向,確定所述骨骼中所述左胯關節(jié)點的位置和名稱以及所述右胯關節(jié)點的位置和名稱; 根據所述骨骼的對稱性和所述關節(jié)點運動數據,確定所述骨骼中所述左肩關節(jié)點的位置和名稱、所述右肩關節(jié)點的位置和名稱以及所述頸關節(jié)點的位置和名稱。
3.根據權利要求2所述的方法,其特征在于,所述根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱之前,還包括: 將所述骨骼劃分為六個分支; 所述根據關節(jié)點的拓撲結構特征和所述骨骼的朝向,確定所述骨骼中所述左胯關節(jié)點的位置和名稱以及所述右胯關節(jié)點的位置和名稱,包括: 根據所述六個分支的關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點; 確定所述第一腿分支的葉子關節(jié)點和所述第二腿分支的葉子關節(jié)點的平均朝向的第一向量,所述葉子關節(jié)點為關節(jié)點的度為O的關節(jié)點,所述關節(jié)點的度為所述關節(jié)點的子關節(jié)點的個數; 根據右手定則確定所述根關節(jié)點、所述第一胯關節(jié)點和第二胯關節(jié)點的第二向量; 若所述第一向量與所述第二向量的夾角小于90°,則確定所述第一胯關節(jié)點為所述左胯關節(jié)點,所述第二胯關節(jié)點為所述右胯關節(jié)點;若所述第一向量與所述第二向量的夾角大于90°,則確定所述第一胯關節(jié)點為所述右胯關節(jié)點,所述第二胯關節(jié)點為所述左胯關節(jié)點; 所述根據所述骨骼的對稱性和所述關節(jié)點運動數據,確定所述骨骼中所述左肩關節(jié)點的位置和名稱、所述右肩關節(jié)點的位置和名稱以及所述頸關節(jié)點的位置和名稱,包括:根據所述六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支; 根據所述右手定則確定所述第一臂分支為左臂分支,并且確定所述第二臂分支為右臂分支; 根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點; 根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點; 根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
4.根據權利要求3所述的方法,其特征在于,所述將所述骨骼劃分為六個分支之前,還包括: 根據所述源骨骼中關節(jié)點的拓撲結構特征和所述源骨骼的關節(jié)點運動數據,刪除所述源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼; 復制所述優(yōu)化的源骨骼和所述目標骨骼,得到復制骨骼,所述復制骨骼包括復制優(yōu)化的源骨骼和復制目標骨骼; 對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼; 所述將所述骨骼劃分為六個分支,包括: 根據復制優(yōu)化的源骨骼的通用星形結構骨骼中的關節(jié)點,將所述優(yōu)化的源骨骼劃分為六個分支,并且根據所述目標骨骼的通用星形結構骨骼,將所述目標骨骼劃分為六個分支。
5.根據權利要求4所述的方法,其特征在于,所述對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通`用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼之后,所述將所述骨骼劃分為六個分支之前,還包括: 判斷所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼是否相同; 若是,則執(zhí)行所述將所述骨骼劃分為六個分支。
6.根據權利要求4或5所述的方法,其特征在于,所述根據所述源骨骼中關節(jié)點的拓撲結構特征和所述源骨骼的關節(jié)點運動數據,刪除所述源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼,包括: 確定所述源骨骼中的關節(jié)點到所述源骨骼中的關節(jié)點的子關節(jié)點的距離; 根據所述源關節(jié)點的關節(jié)點運動數據,確定所述源骨骼中的關節(jié)點的運動幅度; 刪除所述源骨骼中關節(jié)點的度為1、并且所述到所述源骨骼中的關節(jié)點的子關節(jié)點的距離小于第一閾值、并且所述運動幅度小于第二閾值的關節(jié)點。
7.根據權利要求4-6中任一項所述的方法,其特征在于,所述對所述復制骨骼進行簡化處理,包括: 標記根關節(jié)點為起始關節(jié)點,遍歷所述復制骨骼的樹形結構; 判斷當前關節(jié)點的度是否大于I ; 若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點,判斷所述復制骨骼中的關節(jié)點是否遍歷結束; 若是,則刪除遍歷結束后的復制骨骼中到所述遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點;若否,執(zhí)行所述判斷當前關節(jié)點的度是否大于I; 若否,則判斷所述當前節(jié)點是否為葉子關節(jié)點; 若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點; 若否,則標記所述當前關節(jié)點為起始關節(jié)點,執(zhí)行所述判斷當前關節(jié)點的度是否大于1
8.根據權利要求4-7中任一項所述的方法,其特征在于,所述根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理,包括: 根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,所述六個分支的語義標簽為根據所述特征關節(jié)點定義的、用于區(qū)分所述六個分支的名稱,所述語義標簽包括軀干、左腿、右腿、左臂、右臂以及頭。
9.根據權利要求8所述的方法,其特征在于,所述根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,包括: 判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點; 若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系; 若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則按長度比例,對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和與所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點距離最近的所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系; 若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射; 若否,則按長度比例,對所述優(yōu)化的源骨骼的分支上的關節(jié)點和與所述優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的所述目標骨骼的分支上的關節(jié)點進行映射。
10.根據權利要求8所述的方法,其特征在于,所述根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,包括: 判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點; 若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系; 若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則根據所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系; 若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射; 若否,則根據所述優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述重構的目標骨骼的分支上的關節(jié)點進行一對一映射; 更新重構的目標骨骼上的關節(jié)點的蒙皮信息; 將所述重構的目標骨骼上的關節(jié)點的局部坐標系轉化所述源骨骼上的關節(jié)點的局部坐標系;` 所述將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點,包括: 將所述優(yōu)化的源骨骼的關節(jié)點的運動數據賦值給所述目標骨骼中與所述源骨骼的關節(jié)點對應的關節(jié)點。
11.根據權利要求3-10中任一項所述的方法,其特征在于,所述根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理之后,所述將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點之前,還包括: 根據所述骨骼中的所述根關節(jié)點、所述左胯關節(jié)點和所述右胯關節(jié)點,對所述源骨骼的所述六個分支與所述目標骨骼的所述六個分支進行對齊處理。
12.—種運動重定向處理裝置,其特征在于,包括: 確定模塊,用于根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱,所述骨骼包括源骨骼和目標骨骼; 處理模塊,用于根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理; 傳遞模塊,用于將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點。
13.根據權利要求12所述的裝置,其特征在于,所述特征關節(jié)點包括根關節(jié)點、胸關節(jié)點、左胯關節(jié)點、右胯關節(jié)點、左肩關節(jié)點、右肩關節(jié)點和頸關節(jié)點;所述確定模塊,具體用于: 根據所述關節(jié)點的拓撲結構特征,確定所述骨骼中所述根關節(jié)點的位置和名稱以及所述胸關節(jié)點的位置和名稱; 根據所述關節(jié)點的拓撲結構特征和所述骨骼的朝向,確定所述骨骼中所述左胯關節(jié)點的位置和名稱以及所述右胯關節(jié)點的位置和名稱; 根據所述骨骼的對稱性和所述關節(jié)點運動數據,確定所述骨骼中所述左肩關節(jié)點的位置和名稱、所述右肩關節(jié)點的位置和名稱以及所述頸關節(jié)點的位置和名稱。
14.根據權利要求13所述的裝置,其特征在于,所述處理模塊,還用于在所述根據骨骼中關節(jié)點的拓撲結構特征、所述骨骼的對稱性和關節(jié)點運動數據,確定所述骨骼的特征關節(jié)點的位置和名稱之前,將所述骨骼劃分為六個分支; 所述確定模塊,還用于: 根據所述六個分支的 關節(jié)點的拓撲結構特征,確定第一腿分支和第二腿分支以及第一胯關節(jié)點和第二胯關節(jié)點; 確定所述第一腿分支的葉子關節(jié)點和所述第二腿分支的葉子關節(jié)點的平均朝向的第一向量,所述葉子關節(jié)點為關節(jié)點的度為O的關節(jié)點,所述關節(jié)點的度為所述關節(jié)點的子關節(jié)點的個數; 根據右手定則確定所述根關節(jié)點、所述第一胯關節(jié)點和第二胯關節(jié)點的第二向量; 若所述第一向量與所述第二向量的夾角小于90°,則確定所述第一胯關節(jié)點為所述左胯關節(jié)點,所述第二胯關節(jié)點為所述右胯關節(jié)點;若所述第一向量與所述第二向量的夾角大于90°,則確定所述第一胯關節(jié)點為所述右胯關節(jié)點,所述第二胯關節(jié)點為所述左胯關節(jié)點; 所述確定模塊,還用于: 根據所述六個分支的對稱性,確定第一臂分支和第二臂分支以及頭分支; 根據所述右手定則確定所述第一臂分支為左臂分支,并且確定所述第二臂分支為右臂分支; 根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述左臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為左肩關節(jié)點; 根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述右臂分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為右肩關節(jié)點; 根據所述關節(jié)點運動數據,以所述胸關節(jié)點為起始關節(jié)點順序計算所述頭分支上關節(jié)點的運動變化累加幅值,確定第一個運動變化累加幅值大于其父關節(jié)點的運動變化累加幅值和其子關節(jié)點的運動變化累加幅值的關節(jié)點為頸關節(jié)點。
15.根據權利要求14所述的裝置,其特征在于,所述處理模塊,還用于在將所述骨骼劃分為六個分支之前,根據所述源骨骼中關節(jié)點的拓撲結構特征和所述源骨骼的關節(jié)點運動數據,刪除所述源骨骼的冗余關節(jié)點,確定優(yōu)化的源骨骼; 復制所述優(yōu)化的源骨骼和所述目標骨骼,得到復制骨骼,所述復制骨骼包括復制優(yōu)化的源骨骼和復制目標骨骼;對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼; 所述處理模塊,還用于: 根據復制優(yōu)化的源骨骼的通用星形結構骨骼中的關節(jié)點,將所述優(yōu)化的源骨骼劃分為六個分支,并且根據所述目標骨骼的通用星形結構骨骼,將所述目標骨骼劃分為六個分支。
16.根據權利要求15所述的裝置,其特征在于,所述確定模塊,還用于在所述對所述復制骨骼進行簡化處理,確定所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼之后,所述將所述骨骼劃分為六個分支之前,判斷所述復制優(yōu)化的源骨骼的通用星形結構骨骼和所述復制目標骨骼的通用星形結構骨骼是否相同;若是,則執(zhí)行所述將所述骨骼劃分為六個分支。
17.根據權利要求15或16所述的裝置,其特征在于,所述處理模塊,還用于: 確定所述源骨骼中的關節(jié)點到所述源骨骼中的關節(jié)點的子關節(jié)點的距離; 根據所述源關節(jié)點的關節(jié)點運動數據,確定所述源骨骼中的關節(jié)點的運動幅度; 刪除所述源骨骼中關節(jié)點的度為1、并且所述到所述源骨骼中的關節(jié)點的子關節(jié)點的距離小于第一閾值、并且所述運動幅度小于第二閾值的關節(jié)點。
18.根據權利要求15-17中任一項所述的裝置,其特征在于,所述處理模塊,還用于: 標記根關節(jié)點為起始關節(jié)點,遍歷所述復制骨骼的樹形結構; 判斷當前關節(jié)點的度是否大于I ;` 若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點,判斷所述復制骨骼中的關節(jié)點是否遍歷結束; 若是,則刪除遍歷結束后的復制骨骼中到所述遍歷結束后的復制骨骼中的關節(jié)點的子關節(jié)點的距離小于第三閾值的關節(jié)點; 若否,執(zhí)行所述判斷當前關節(jié)點的度是否大于I ; 若否,則判斷所述當前節(jié)點是否為葉子關節(jié)點; 若是,則標記所述當前關節(jié)點為結束關節(jié)點,并刪除所述起始關節(jié)點與所述結束關節(jié)點之間的關節(jié)點; 若否,則標記所述當前關節(jié)點為起始關節(jié)點,執(zhí)行所述判斷當前關節(jié)點的度是否大于1
19.根據權利要求15-18中任一項所述的裝置,其特征在于,所述處理模塊,還用于: 根據所述優(yōu)化的源骨骼的所述六個分支的語義標簽和所述目標骨骼的所述六個分支的語義標簽,對所述六個分支分別進行所述優(yōu)化的源骨骼到所述目標骨骼的關節(jié)點映射處理,所述六個分支的語義標簽為根據所述特征關節(jié)點定義的、用于區(qū)分所述六個分支的名稱,所述語義標簽包括軀干、左腿、右腿、左臂、右臂以及頭。
20.根據權利要求19所述的裝置,其特征在于,所述處理模塊,還用于: 判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點; 若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系; 若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則按長度比例,對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和與所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點距離最近的所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系; 若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射; 若否,則按長度比例,對所述優(yōu)化的源骨骼的分支上的關節(jié)點和與所述優(yōu)化的源骨骼的分支上的關節(jié)點距離最近的所述目標骨骼的分支上的關節(jié)點進行映射。
21.根據權利要求19所述的裝置,其特征在于,所述處理模塊,還用于: 判斷待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支除首端關節(jié)點和末端關節(jié)點之外是否有特征關節(jié)點; 若是,則根據所述特征關節(jié)點將所述待映射的、具有相同語義標簽的所述優(yōu)化的源骨骼的分支和所述目標骨骼的分支,分別劃分為第一子分支和第二子分支,所述第一子分支為所述首端關節(jié)點和所述特征關節(jié)點之間的子分支,所述第二子分支為所述特征關節(jié)點和所述末端關節(jié)點之間的子分支,對優(yōu)化的源骨骼的第二子分支上的關節(jié)點和所述目標骨骼的第二子分支上的關節(jié)點按拓撲順序進行一對一映射,判斷所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點是否存在一對一的映射關系; 若是,則對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則根據所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點生成重構的目標骨骼的第一子分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的第一子分支上的關節(jié)點和所述重構的目標骨骼的第一子分支上的關節(jié)點進行一對一映射; 若否,則判斷所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點是否存在一對一的映射關系; 若是,則所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述目標骨骼的分支上的關節(jié)點進行一對一映射; 若否,則根據所述優(yōu)化的源骨骼的分支上的關節(jié)點生成重構的目標骨骼的分支上的關節(jié)點,并對所述優(yōu)化的源骨骼的分支上的關節(jié)點和所述重構的目標骨骼的分支上的關節(jié)點進行一對一映射; 更新重構的目標骨骼上的關節(jié)點的蒙皮信息; 將所述重構的目標骨骼上的關節(jié)點的局部坐標系轉化所述源骨骼上的關節(jié)點的局部坐標系; 所述傳遞模塊,具體用于:將所述優(yōu)化的源骨骼的關節(jié)點的運動數據賦值給所述目標骨骼中與所述源骨骼的關節(jié)點對應的關節(jié)點。
22.根據權利要求14-21中任一項所述的裝置,其特征在于,所述處理模塊,還用于在所述根據所述源骨骼的第一特征關節(jié)點的位置和名稱和所述目標骨骼的第二特征關節(jié)點的位置和名稱,進行所述源骨骼到所述目標骨骼的關節(jié)點映射處理之后,所述將所述源骨骼的關節(jié)點運動數據傳遞至所述目標骨骼中的關節(jié)點之前,根據所述骨骼中的所述根關節(jié)點、所述左胯關節(jié)點和所述右胯關節(jié)點,對所述源骨骼的所述六個分支與所述目標骨骼的所述六個分支進行對齊處理。
【文檔編號】G06T13/00GK103530897SQ201310461048
【公開日】2014年1月22日 申請日期:2013年9月30日 優(yōu)先權日:2013年9月30日
【發(fā)明者】鄭清正 申請人:華為軟件技術有限公司