一種基於層次模型的虛擬人皮膚物理變形方法
2023-05-16 11:01:06 1
專利名稱:一種基於層次模型的虛擬人皮膚物理變形方法
技術領域:
本發明屬於計算機虛擬實境和計算機圖形學技術領域,特別是涉及虛擬人體仿
真、虛擬人運動模擬技術中的人體皮膚變形方法。
背景技術:
隨著計算機軟硬體技術的不斷發展,數據獲取及表現的能力越來越強。尤其是虛擬人仿真與模擬,在影視娛樂、虛擬實境、遠程醫療等諸多領域得到廣泛應用。但如何更真實地呈現虛擬人形態並提高實時性以拓寬應用範圍,仍需要深入研究以期滿足不同領域的需求。其中,人體皮膚作為虛擬人最外在的表現形式,得到了更多的關注。人體皮膚變形技術一般可分為基於表面模型的皮膚變形和基於層次模型的皮膚變形。基於表面模型的皮膚變形技術計算過程簡單、運算速度較快,但視覺、物理真實感比較差;基於層次模型的皮膚變形技術能夠很好地和人體解剖學、彈性力學、生物力學等相關理論結合,通過加入生物模型或物理模型,可顯著提高變形效果的真實感,但往往存在計算量龐大、不能滿足實時要求的問題。因此,如何更好地平衡真實感和實時性,成為了人體皮膚變形重點研究的問題之 基於表面模型的皮膚變形技術主要採用了幾何變形理論。比如基本的剛性變形法採用局部皮膚對應局部骨骼的方式,以驅動局部骨骼的運動來產生皮膚變形效果;局部表面算子法將人體皮膚定義為多個連續函數,每個函數對應一塊局部皮膚,以此保證各塊局部皮膚之間的連續性;蒙皮法將皮膚網格頂點和多段骨骼相關聯,每個皮膚頂點將受到多段骨骼的影響,經過一定的插值策略得到更加全面而準確的變形結果;截面輪廓線變形法將皮膚擬合成一系列橢圓形截面,通過處理數量遠小於頂點的橢圓截面來快速得到變形結果。基於表面的皮膚變形技術本質上是種簡化模型,忽略了人體內部組織,其主要存在問題是變形效果較差,很難準確刻畫大幅度變形、關節皮膚細節變化等,雖然運行速度快但需要複雜的前期設計,並且變形過程需要一定的人為控制。 基於層次模型的皮膚變形技術即是針對人體的真實結構,參考人體解剖學理論,建立多層次模型以對應人體不同組織,並設計各層次之間的映射關係,變形過程中由裡至外逐層分析、遞進處理,最終驅動表麵皮膚獲得變形效果。基於層次模型的皮膚變形技術主要研究內容是如何構建各層次的模型結構和各層次模型之間的映射關係及驅動方法。從實施方式來看,可大致分為基於幾何的方法和基於物理的方法。基於幾何的方法關注於人體組織的幾何形狀,構建各層次幾何模型並運用幾何約束關係驅動皮膚變形;基於物理的方法考慮了人體組織的物理屬性,使用質點彈簧、有限元等物理模型構建各層次模型,進一步提高了變形效果的真實感。基於層次模型的皮膚變形技術的難點在於模型本身的複雜度、物理屬性的參數設置、計算量和運算時間的控制等。
發明內容
本發明要解決的技術問題克服現有技術的不足,綜合運用幾何方法和物理方法,提供一種基於層次模型的虛擬人皮膚物理變形方法,在保留物理變形真實感優勢的基礎 上,結合層次模型數據組織靈活的特點,分別構建了用於虛擬人皮膚繪製的精細網格和用 於變形控制及物理計算的簡化網格,在保證虛擬人精確變形過程與真實繪製效果的前提 下,極大減少計算開銷,形成了一種有效的虛擬人皮膚變形方法。
本發明採用的技術方案一種基於層次模型的虛擬人皮膚物理變形方法,其特徵
在於步驟如下 (1)構造層次模型 進行虛擬人層次模型的構造,形成用於控制運動的骨骼層模型、用於物理變形的 物理層模型和用於最終繪製的表面層模型,並建立骨骼層模型與物理層模型、物理層模型 與表面層模型的映射關係;(2)物理變形 依據用戶設定的運動方式,骨骼層模型產生運動趨勢並帶動物理層模型進行物理 變形; (3)驅動皮膚 在物理變形過程中,按照物理層模型和表面層模型的映射關係,驅動表面層模型
隨之運動和變化,生成變形的動態效果。 所述步驟(1)中構造層次模型的步驟如下 (1. 1)通過三維掃描儀獲取並生成人體表面三維網格數據,所述網格數據即為用 於繪製的表面層模型; (1. 2)確定表面層中各關節截面並獲取截面中心點;兩兩直線連接相鄰的關節截 面中心點,形成的線段即為骨骼;若干相連骨骼構成骨骼層模型; (1. 3)對表面層模型採取半邊摺疊化簡操作,得到簡化網格;對簡化網格每條邊 設置面彈簧參數;對簡化網格每個頂點設置物理參數;連接頂點和該頂點在骨骼上的垂直 映射點,設置體彈簧參數;中間層頂點、面彈簧、體彈簧所構成的質點彈簧模型,即為物理層 模型。 所述步驟(1)中建立各層模型之間映射關係的步驟如下 (1. 1)建立骨骼層模型與物理層模型之間的映射關係通過體彈簧建立物理映 射,體彈簧的彈力作用將骨骼層模型的運動狀態傳遞到物理層模型,驅動物理層模型的頂 點發生位移; (1. 2)建立物理層模型與表面層模型之間的映射關係物理層模型頂點的位移變 化量由體彈簧和面彈簧的彈力作用共同確定;物理層模型的頂點為表面層模型頂點的一個 子集,表面層模型其餘頂點由臨近的若干物理層模型頂點位移向量插值得到。
所述步驟(1. 3)中得到簡化網格的步驟如下 (1. 3. 1)讀入表面層模型,計算每個頂點的誤差矩陣和誤差值,將頂點按誤差值從 小到大排序; (1. 3. 2)依次取出每個頂點,計算其摺疊頂點,傳遞摺疊誤差到相關三角形中需要 改變的頂點上,執行半邊摺疊操作,並保存摺疊信息; (1. 3. 3)判斷摺疊有效性,繼續進行摺疊操作,直到頂點序列為空或達到初始閾值。
5
所述步驟(2)中物理變形的步驟如下
(2. 1)接收用戶設定的虛擬人運動指令; (2. 2)依據用戶運動指令,骨骼層模型開始運動,並通過體彈簧向物理層模型頂點 施力; (2. 3)物理層模型頂點發生位移變化,面彈簧、體彈簧發生長度變化而產生彈力, 再反饋到頂點改變頂點的位置; (2. 4)在達到運動終態前,迭代步驟2. 2和步驟2. 3 ; (2. 5)達到運動終態後,彈力計算繼續運行,直到物理層模型中各個頂點達到平衡 的穩定狀態,物理變形結束。 所述步驟(3)中驅動皮膚的步驟如下 (3. 1)表面頂點確定與之鄰接的物理層模型頂點,保存距離、方向信息; (3. 2)對鄰接的物理層模型中的頂點進行向量插值,得到表面層模型的頂點位
移; (3. 3)更新表面層模型頂點位置,進行細節修正。 本發明與現有技術相比的有益效果在於通過構建層次模型,將物理變形方法和 幾何變形方法結合起來,發揮出各自的優點,得到運行效率和處理結果的良好平衡;預處理 階段採用了模型化簡技術,降低了物理計算的數據量和處理時間,達到了實時性;採用了質 點彈簧模型來模擬人體運動,變形過程及結果真實感強;對變形結果進行幾何處理,保證皮 膚細節的正確呈現。
圖1為本發明的整體過程示意圖; 圖2為本發明的物理層網格化簡過程示意圖; 圖3為本發明的半邊摺疊化簡方法示意圖; 圖4為本發明的虛擬人手臂骨骼關節鏈模型示意圖; 圖5為本發明的物理層頂點到表面層頂點的向量插值示意圖。
具體實施例方式
下面結合附圖與實施例對本發明作進一步詳細描述 本發明實施過程包括三個主要步驟構建層次模型,物理變形,驅動皮膚。如圖1 所示。
步驟一即構建層次模型,主要分成二個階段構建骨骼層和構建物理層。
第一個階段構建骨骼層 骨骼層位於表面層內部中軸線處。先通過三維模型編輯軟體確定表面層中各關節 截面(如肩關節截面、肘關節截面、腕關節截面)並獲取截面中心點;再兩兩直連相鄰的關 節截面中心點(腕關節和肘關節的截面中心點相連、肘關節和肩關節的截面中心點相連), 形成的線段序列即為用於手臂運動驅動和控制的骨骼層模型。
第二個階段構建物理層 本發明對表面層幾何網格採用半邊摺疊化簡算法,生成用於物理計算的簡化網
6格。半邊摺疊化簡算法的基本思想是對於一個相鄰頂點的有序頂點對(U, V) , U被移動到 v的位置,原本和u相連的頂點,改變為與v相連。該過程中(u — v)和(v — u)是兩個不 同的刪除操作,要分別估計誤差度量值,存儲到候選堆中。半邊摺疊操作過程中,不會產生 新的頂點和新的三角形,提供了一種減小模型存儲量的化簡途徑,它適用於本發明的一個 重要特點是僅對原始模型的頂點進行子集採樣,生成的簡化網格頂點均來自原始模型的頂 點集,存儲和運算開銷少,便於映射到原始的精細網格,適於快速渲染。它的另一優點是度 量準則僅僅用來確定摺疊順序,不影響摺疊後的更新操作,所以簡化算法的設計和實現更 加簡單。 如圖3所示,對於左圖中的邊EF執行半邊摺疊,邊EF摺疊到它其中一個頂點F,並 且丟棄另一個頂點E,原有的三角形網格就化簡為右圖。每摺疊一條邊,就可以移除一個頂 點、三條邊和兩個三角形,從而達到簡化模型的目的。 通過計算頂點的誤差和邊的摺疊代價,來確定需摺疊的邊和被刪除的頂點。對於 一個頂點,設它所在是三角形為Ti,各自面積為Si,其平面方程為
ax+by+cz+d = O,其中a2+b2+c2 = 1
再構造誤差矩陣 則該頂點的誤差矩陣為 2 = SS (n為與頂點相關的三角形個數)根據每個頂點Vi的三維坐標,構造向量p = (x, y, z),頂點的誤差矩陣為Q,則頂
點誤差為 formula see original document page 7 其中Qi為頂點Vi某個所在三角形的誤差矩陣。則邊(Vi, vk)的摺疊代價為
e i = Vi+vk 根據面積加權的半邊摺疊算法流程如圖2所示。其中保存摺疊操作的過程信息, 是為了當不合理的簡化結果出現時,可實現回滾和恢復。主要的不合理化簡結果是出現狹 長狀三角面片。在頂點替換中,部分三角形的形狀會發生變化。為避免這種情況的發生,需 要對簡化後的三角面片進行判斷,如果三角形的某一內角接近180。或0° ,則不合併之前
的頂點,也不進行半邊摺疊。狹長三角形的判定公式為
formula see original document page 7 其中S為三角形的面積,li為各邊長度。當三角形為等邊三角形時,^為1 ;當^的 值等於或接近0時,則判斷為出現狹長三角形。 步驟二即物理變形,主要分為兩個階段基於逆向運動學的骨骼層運動控制和基 於質點彈簧模型的物理變形。
第一個階段基於逆向運動學的骨骼層運動控制 逆向運動學是指對一條擁有眾多關節的運動鏈,計算出一組所有關節的狀態值, 以滿足指定的末端效應器狀態。逆向運動學預先知道末端效應器的位置和方向,反向推出 在各個子關節空間中各連接杆的結構參數。即只需給定末端關節(如人手腕關節)的位置 和方向,計算機就可自動計算出各中間關節的位置和方向,簡化了虛擬人的控制問題。下面 以圖4所示的虛擬人體手臂骨骼關節鏈為例,說明本發明採用的驅動方法。
圖4中S工為肩關節,F為肘關節,S2為腕關節。其中肩關節和腕關節都是三個自 由度的關節,其自由度分別用角度a" !^, L和a2, P2, ^表示,肘關節為一個自由度的 關節,其角度記為03,則手臂的關節運動鏈可表示為
l\ATyBT2 = G 其中l\、Ty、T2為肩、肘、腕關節的旋轉矩陣,G為目標矩陣,A為從F到S工的變換矩 陣,B為從S2到F的變換矩陣,它們可分別表示為 formula see original document page 8 formula see original document page 8formula see original document page 8formula see original document page 8
得
當用戶通過滑鼠指定末端效應器的新位置,即賦值給G,對上式進行簡化運算可
丁 2
1 = RARyWa = tg
將上式兩邊分別與自身點積,根據旋轉矩陣的正交特性,可得
2taTRaRytb = tgTtg_taTta_tbTtb
因為Ry中的項均為^3的三角函數,則上式可化解為以^3三角函數為變量的多
項式形式,進而得到兩個03的解,去除其中的不合理解,就是給定末瑞效應器下%的值。
即用戶指定了新的腕關節位置後,就能求解出對應的肘關節角度和位置。
第二個階段基於質點彈簧模型的物理變形 質點彈簧模型中的質點由不同的彈簧連接在一起,一般來說,質點所受的重力與
空氣阻力稱為質點所受的外力,質點所受的各個彈簧力與彈簧阻尼力為質點所受的內力。
則質點所受合力可表示為 F (x, y, z) = Fext (x, y, z) +Fint (x, y, z) 其中F(x,y,z)是質點p(x,y,z)所受的合力,Fext (x, y, z)是質點p(x,y,z)所受 的外力和,Fint(x, y, z)是質點p(x, y, z)所受的內力和。下面分別介紹這兩類力的求解過 程。 外力在物理層物理計算中可考慮的外力包括重力和空氣阻力。
(1)重力 本發明將每個質點視為具有相同的質量,該質量等於虛擬人體模型總質量除以物 理層質點的總數。
在物理計算過程中,作用在每個質點的重力是常數。重力表達式為
G(x, y, z) = mg 其中m為質點p (x, y, z)的質量,g為質點p (x, y, z)的重力加速度。
(2)空氣阻力 根據Stocke的阻力定律,空氣阻力Fair和質點速度的n次冪成正比。這個定律可 近似表示為(x, 乂 z) = -m^ ||v(x,;;, "x, 其中m為質點p (x, y, z)的質量,、是定義的空氣阻力常數,v (x, y, z)為質點p (x, y, z)的速度矢量,它的大小為II v(x, y, z) II ,方向為^(x,;^)。在物理計算中,將指數n設 為l,則空氣阻力可表示為
Fair(x, y, z) = -mkrv(x, y, z) 實際計算中,由於空氣阻力常數、非常小,空氣阻力F&對質點的影響也非常小。
但考慮到模型的普適性,比如今後可能模擬在水中的人體運動,水的阻力就會對運動產生
顯著的影響。因此,本發明在模型中保留了該外力帶來的影響。 綜合考慮重力和空氣阻力後,作用在質點p(x, y, z)上的外力可表示為 Fext(x, y, z) = G(x, y, z)+Fair(x, y, z) = mg-mkrv(x, y, z) 內力質點所受的內力主要包括彈簧力和阻尼力。 (1)彈簧力 若彈簧的兩端點自由長度為l,彈簧的彈性係數為k,根據胡克定律,在三維空間 中端點受到的彈力可表示為 /s = A:
一 I 其中Xl和x2是彈簧兩端點的位置矢量。 對於質點p (x, y, z)來說,它所受的彈力合力應該是與它有彈簧連接關係的n個質 點相互作用的面彈簧力和1個體彈簧力,可表示為
(x。 — X。 ) — Z
乂o — 乂o
+
2>,
O0—x,)-/
X。—; 其中fsb是體彈簧力,kb為體彈簧的彈性係數,X'。為質點X。在骨骼上的映射點; fsf是面彈簧力,kf為面彈簧的彈性係數。
(2)阻尼力 在動態的質點彈簧模型中,適當的彈簧阻尼力有助於維持系統的穩定性。例如,為 了防止兩質點間出現不規則的振動,一個強張力必須伴隨一個穩定的強阻尼力。在我們的 質點彈簧模型中,阻尼力和兩個相連質點的速度差成正比,可表示為
fd = kd(Vl-V2) 其中,fd為阻尼常數,Vl和v2是彈簧兩端點Pl和p2的速度矢量。參照質點彈簧力 的分析方式,同樣可確定質點彈簧模型中不同位置的質點所受彈簧阻尼合力fd(x, y, z)。 [O105] 綜合考慮彈簧力和阻尼力,作用在質點p(x, y, z)上的內力可表示為
F嵌=F+Frf
9
當骨骼層發生運動時,促使附著在骨骼上的體彈簧發生長度變化,進而產生彈力。 該彈力傳遞到物理層頂點後,促使物理層頂點發生位移變化。在體彈簧和面彈簧彈力、重力 和空氣阻力的共同作用下,物理層頂點不斷更新狀態,產生連續的位移變化,直到骨骼達到 運動終態,體彈簧不再產生新的彈力為止。最後,當各個物理層頂點受到的合力為零時,物 理變形結束。 步驟三即驅動皮膚,主要包括兩個階段頂點位移插值和表面層細節修正。
第一個階段頂點位移插值 表面層模型是最終繪製顯示的數據,該層的頂點分為兩種類型一類是物理層頂 點,該類型頂點位移直接由物理計算得到;另一類是在化簡中被丟棄的頂點,該類型頂點位 移通過物理層頂點位移插值計算得到。
如圖5所示,下層網格為物理層的簡化網格,上層網格為表面層的精細網格。Pl, P2, P3分別為物理層三個頂點的位移向量,r為該三個頂點組成的三角形中一點的位移向 量,與其對應的精細網格中頂點的位移向量為V。插值計算過程如下
(1)在發生變形之前,計算r頂點與組成它所在三角形的三個頂點的位移向量權 值(wn w2, w3): £ A w; = r '且有2 W = 1 (2)計算並保存物理層頂點與表面層頂點的位移向量偏移值^ :
(3)當發生變形時,ppp^p3在物理計算下得到新的值p' pp' 2,p' 3,則有
》,=worma/fee — / 〖)
f = — A') 々=:fx》,
S =々x:f = ((5. f, ( .々,. v'=ry 由此得到表面層頂點的新位移向量vt。
第二個階段表面層細節修正 表面層的細節修正主要是針對位移插值後的頂點位移進行必要的檢查和幾何修 正。本發明提供了以下兩類細節修正操作 (1)修正位移插值導致網格邊長度小於零而出現邊的反折情況。為避免其發生,需 設置以邊長為約束的插值判斷條件。如果插值後某邊長度小於零,則將其相關頂點位移限 制到邊長為零時的位置上,避免出現邊的反折。 (2)修正物理變形或者位移插值導致的頂點穿透情況。褶皺和擠壓是皮膚變形中 經常出現的狀態,因此在物理變形和位移插值計算中,可能會出現某個頂點穿透到其他三 角面片中。可分兩步修正該誤差在物理層的簡化網格為每個三角面片設置穿透標誌符,當物理變形中的可能發生物理層頂點穿透面片時,將該頂點的位移值限制在面片之外,並將 該面片三個頂點的穿透標識符賦值;表面層的精細網格只需處理插值數據來自於穿透標識 符已賦值的那些頂點,在對它們的插值過程中進行穿透檢查即可。
權利要求
一種基於層次模型的虛擬人皮膚物理變形方法,其特徵在於步驟如下(1)構造層次模型進行虛擬人層次模型的構造,形成用於控制運動的骨骼層模型、用於物理變形的物理層模型和用於最終繪製的表面層模型,並建立骨骼層模型與物理層模型、物理層模型與表面層模型的映射關係;(2)物理變形依據用戶設定的運動方式,骨骼層模型產生運動趨勢並帶動物理層模型進行物理變形;(3)驅動皮膚在物理變形過程中,按照物理層模型和表面層模型的映射關係,驅動表面層模型隨之運動和變化,生成變形的動態效果。
2. 根據權利要求1所述的基於層次模型的虛擬人皮膚物理變形方法,其特徵在於所 述步驟(1)中構造層次模型的步驟如下(1. 1)通過三維掃描儀獲取並生成人體表面三維網格數據,所述網格數據即為用於繪 制的表面層模型;(1.2)確定表面層中各關節截面並獲取截面中心點;兩兩直線連接相鄰的關節截面中 心點,形成的線段即為骨骼;若干相連骨骼構成骨骼層模型;(1. 3)對表面層模型採取半邊摺疊化簡操作,得到簡化網格;對簡化網格每條邊設置 面彈簧參數;對簡化網格每個頂點設置物理參數;連接頂點和該頂點在骨骼上的垂直映射 點,設置體彈簧參數;中間層頂點、面彈簧、體彈簧所構成的質點彈簧模型,即為物理層模 型。
3. 根據權利要求1所述的基於層次模型的虛擬人皮膚物理變形方法,其特徵在於所 述步驟(1)中建立各層模型之間映射關係的步驟如下(1. 1)建立骨骼層模型與物理層模型之間的映射關係通過體彈簧建立物理映射,體 彈簧的彈力作用將骨骼層模型的運動狀態傳遞到物理層模型,驅動物理層模型的頂點發生 位移;(1.2)建立物理層模型與表面層模型之間的映射關係物理層模型頂點的位移變化量 由體彈簧和面彈簧的彈力作用共同確定;物理層模型的頂點為表面層模型頂點的一個子 集,表面層模型其餘頂點由臨近的若干物理層模型頂點位移向量插值得到。
4. 根據權利要求2所述的基於層次模型的虛擬人皮膚物理變形方法,其特徵在於所 述步驟(1. 3)中得到簡化網格的步驟如下(1.3. 1)讀入表面層模型,計算每個頂點的誤差矩陣和誤差值,將頂點按誤差值從小到 大排序;(1. 3. 2)依次取出每個頂點,計算其摺疊頂點,傳遞摺疊誤差到相關三角形中需要改變 的頂點上,執行半邊摺疊操作,並保存摺疊信息;(1. 3. 3)判斷摺疊有效性,繼續進行摺疊操作,直到頂點序列為空或達到初始閾值。
5. 根據權利要求1所述的基於層次模型的虛擬人皮膚物理變形方法,其特徵在於所 述步驟(2)中物理變形的步驟如下(2. 1)接收用戶設定的虛擬人運動指令;(2. 2)依據用戶運動指令,骨骼層模型開始運動,並通過體彈簧向物理層模型頂點施力;(2. 3)物理層模型頂點發生位移變化,面彈簧、體彈簧發生長度變化而產生彈力,再反 饋到頂點改變頂點的位置;(2. 4)在達到運動終態前,迭代步驟2. 2和步驟2. 3 ;(2. 5)達到運動終態後,彈力計算繼續運行,直到物理層模型中各個頂點達到平衡的穩 定狀態,物理變形結束。
6.根據權利要求1所述的基於層次模型的虛擬人皮膚物理變形方法,其特點在於所 述步驟(3)中驅動皮膚的步驟如下(3. 1)表面頂點確定與之鄰接的物理層模型頂點,保存距離、方向信息;(3. 2)對鄰接的物理層模型中的頂點進行向量插值,得到表面層模型的頂點位移;(3. 3)更新表面層模型頂點位置,進行細節修正。
全文摘要
一種基於層次模型的虛擬人皮膚物理變形方法,步驟為(1)構造層次模型首先處理原始模型生成用於控制運動的骨骼層模型、用於物理變形的物理層模型和用於最終繪製的表面層模型,並建立骨骼層與物理層、物理層與表面層的映射關係;(2)物理變形層次模型構造完成後,依據用戶設定的運動方式,骨骼層產生運動趨勢並帶動物理層進行物理變形;(3)驅動皮膚在物理變形過程中,按照物理層和表面層的映射關係,驅動表面層隨之運動和變化,生成皮膚變形的動態效果。本發明在保留物理變形真實感優勢的基礎上,結合層次模型數據組織靈活的特點,分別構建了用於虛擬人皮膚繪製的精細網格和用於變形控制及物理計算的簡化網格,在保證虛擬人精確變形過程與真實繪製效果的前提下,減少了計算開銷。
文檔編號G06T15/70GK101719284SQ20091024353
公開日2010年6月2日 申請日期2009年12月25日 優先權日2009年12月25日
發明者曹遠, 梁曉輝, 沈旭昆, 趙沁平 申請人:北京航空航天大學