System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及圖形仿真,特別涉及一種柔性體的仿真方法及裝置、電子設備、計算機可讀存儲介質、計算機程序產品。
技術介紹
1、物理仿真是一種基于力學原理的計算機技術,能夠用來模擬現實世界中的各種場景,比如:樹葉飄落、模特走秀等。在圖形學物理仿真領域,人體仿真處于非常核心的地位。比如:設計師在設計服裝時,需要通過仿真來實時模擬模特穿上服裝后的效果,以便隨時調整設計;動畫制作中,通過物理仿真可以快速獲取穿著不同服裝的動畫角色在不同動作下的效果,避免了傳統的高強度建模工作。在這些場景的仿真過程中,人體一般有兩種表現方式:剛性人體和柔性人體。
2、剛性人體的表現方式假設人體是剛性的,不會發生變形。仿真過程中,當衣服接觸到人體時,衣服會因為碰撞變形而緊貼人體表面,但人體不會因為衣服的束縛而變形。參見圖1,為相關仿真技術中仿真出的剛性人體的示意圖,如圖1所示,在衣服的束縛下,剛性人體并未變形。這種情況下,不同姿勢動作下人體形態的改變,取決于外界輸入的人體數據。
3、柔性人體的表現方式假設人體是柔性的,會在受到外力時變形。比如:當人體穿著的是緊身衣時,人體會產生擠壓變形,人體的局部區域因變形而出現勒痕。參見圖2,為相關仿真技術中仿真出的柔性人體的示意圖,圖2相比圖1,在衣服擠壓出產生了勒痕。
4、這兩種仿真方式各自有著明顯的優缺點。剛性人體方式對仿真來說更為簡單,人體形態完全由外界輸入,不用依靠仿真算法計算。仿真算法只需關注其他變形體(比如:服裝)就可以。缺點在于,剛性人體在仿真中與其他物體互動而對人體本身的影響無
5、在柔性人體的仿真實現中,有一個非常重要的需求是對柔性人體進行重力平衡。自然狀態下的人體形態都是重力作用下的結果,所以依據自然人體建模得到的人體數據考慮了重力影響。換而言之,依據自然柔性體(柔性人體,或者其它柔性物體)建模得到的網格數據考慮了重力影響。
6、仿真算法中,柔性體有一個“初始狀態”的概念非常重要,在初始狀態下柔性體可以呈現沒有受到任何外力(包括重力)時的形狀。當柔性體在外力作用下發送變形時,可以產生相應的變形力來抵抗外力。而變形力的獲得需要將柔性體“當前狀態”與“初始狀態”進行比較計算,從而確定變形程度,變形程度越大則變形力越大。仿真最終得到的穩定柔性體形態就是柔性體的變形力等于重力的形態。由此可見,仿真需要的柔性體的初始狀態是柔性體在無重力情況下的形態,這樣才能讓仿真得到的穩定狀態和依據自然柔性體建模得到的狀態完全相同。
7、然而,在仿真過程中,柔性體的初始狀態難以從真實世界中直接獲取,亟需一種從仿真得到的網格數據還原出初始狀態的方案。
技術實現思路
1、本申請實施例的目的在于提供一種柔性體的仿真方法及電子設備、存儲介質、計算機程序產品,用于為柔性體生成初始狀態下的網格數據。
2、一方面,本申請提供了一種柔性體的仿真方法,包括:
3、s1:將目標柔性體的各個單元頂點的當前位置作為臨時初始位置;
4、s2:基于各個單元頂點的臨時初始位置,計算各個單元頂點對應的最終受力;其中,每一單元頂點的最終受力由該單元頂點的彈性力、重力和支撐力確定;
5、s3:根據所述目標柔性體的所有單元頂點的最終受力,判斷是否滿足迭代終止條件;
6、s4:若否,以各個單元頂點的最終受力更新各個單元頂點的臨時初始位置,并返回步驟s2;
7、s5:反復迭代,直至滿足迭代終止條件,將所述目標柔性體的各個單元頂點最新的臨時初始位置作為目標初始位置。
8、在一實施例中,步驟s2中每一單元頂點的彈性力的獲取步驟,包括:
9、針對每一單元頂點,根據該單元頂點所在網格單元的各個單元頂點的當前位置和臨時初始位置,確定當前形態矩陣和初始形態矩陣,并基于所述當前形態矩陣和所述初始形態矩陣確定形變梯度;
10、基于所述目標柔性體的能量模型和所述形變梯度,確定第一參數;
11、基于指定常數矩陣、所述初始形態矩陣和預設單位矩陣,確定第二參數;
12、根據所述第一參數和所述第二參數,確定該單元頂點的彈性力。
13、在一實施例中,步驟s2中每一單元頂點的重力的獲取步驟,包括:
14、針對每一單元頂點,根據該單元頂點所在網格單元的各個單元頂點的臨時初始位置,確定該網格單元的體積;
15、根據該網格單元的體積、所述目標柔性體的密度和重力加速度,確定該單元頂點的重力。
16、在一實施例中,步驟s2中每一單元頂點的支撐力的獲取步驟,包括:
17、針對每一單元頂點,根據該單元頂點的強度矩陣、當前位置和臨時初始位置,確定該單元頂點的支撐力;其中,若該單元頂點未受支撐力,其對應的強度矩陣為零;若該單元頂點受到支撐力,其對應的強度矩陣為預設值。
18、在一實施例中,所述根據所述目標柔性體的所有單元頂點的最終受力,判斷是否滿足迭代終止條件,包括:
19、根據所述目標柔性體的所有單元頂點的最終受力,確定所述目標柔性體的受力模長,判斷所述受力模長是否小于預設殘差;
20、若是,確定滿足迭代終止條件;
21、若否,確定不滿足迭代終止條件。
22、在一實施例中,所述以各個單元頂點的最終受力更新各個單元頂點的臨時初始位置,包括:
23、針對每一單元頂點,計算該單元頂點的最終受力對該單元頂點的臨時初始位置的梯度;
24、基于各個單元頂點對應的梯度和最終受力,確定各個單元頂點對應的位置更新量;
25、針對每一單元頂點,依據該單元頂點的臨時初始位置和位置更新量,確定新的臨時初始位置。
26、在一實施例中,所述每一單元頂點對應的梯度包括第一子梯度,所述第一子梯度為該單元頂點的彈性力對該單元頂點的臨時初始位置的梯度;
27、所述第一子梯度的獲取步驟,包括:
28、根據該單元頂點所在網格單元的初始形態矩陣和指定常數矩陣,確定類型矩陣;
29、基于所述目標柔性體的能量模型和該單元頂點所在網格單元的形變梯度,確定第一參數和第三參數;
30、根據所述類型矩陣、所述第一參數、所述第三參數、所述形變梯度、預設單位矩陣和預設交換矩陣,確定該單元頂點的第一子梯度。
31、在一實施例中,所述每一單元頂點對應的梯度包括第二子梯度,所述第二子梯度為該單元頂點的重力對該單元頂點的臨時初始位置的梯度;
32、所述第二子梯度的獲取步驟,包括:
33、根據該單元頂點所在網格單元的初始形態矩陣和指定常數矩陣,確定類型矩陣;
34、根據所述目標柔性體的密本文檔來自技高網...
【技術保護點】
1.一種柔性體的仿真方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,步驟S2中每一單元頂點的彈性力的獲取步驟,包括:
3.根據權利要求1所述的方法,其特征在于,步驟S2中每一單元頂點的重力的獲取步驟,包括:
4.根據權利要求1所述的方法,其特征在于,步驟S2中每一單元頂點的支撐力的獲取步驟,包括:
5.根據權利要求1所述的方法,其特征在于,所述根據所述目標柔性體的所有單元頂點的最終受力,判斷是否滿足迭代終止條件,包括:
6.根據權利要求1所述的方法,其特征在于,所述以各個單元頂點的最終受力更新各個單元頂點的臨時初始位置,包括:
7.根據權利要求6所述的方法,其特征在于,所述每一單元頂點對應的梯度包括第一子梯度,所述第一子梯度為該單元頂點的彈性力對該單元頂點的臨時初始位置的梯度;
8.根據權利要求6所述的方法,其特征在于,所述每一單元頂點對應的梯度包括第二子梯度,所述第二子梯度為該單元頂點的重力對該單元頂點的臨時初始位置的梯度;
9.根據權利要求6所述的方法,其特征在
10.一種電子設備,其特征在于,所述電子設備包括:
11.一種計算機可讀存儲介質,其特征在于,所述存儲介質存儲有計算機程序,所述計算機程序可由處理器執行以完成權利要求1-9任意一項所述的柔性體的仿真方法。
12.一種計算機程序產品,包括計算機程序/指令,其特征在于,該計算機程序/指令被處理器執行時實現權利要求1-9任意一項所述的柔性體的仿真方法。
...【技術特征摘要】
1.一種柔性體的仿真方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,步驟s2中每一單元頂點的彈性力的獲取步驟,包括:
3.根據權利要求1所述的方法,其特征在于,步驟s2中每一單元頂點的重力的獲取步驟,包括:
4.根據權利要求1所述的方法,其特征在于,步驟s2中每一單元頂點的支撐力的獲取步驟,包括:
5.根據權利要求1所述的方法,其特征在于,所述根據所述目標柔性體的所有單元頂點的最終受力,判斷是否滿足迭代終止條件,包括:
6.根據權利要求1所述的方法,其特征在于,所述以各個單元頂點的最終受力更新各個單元頂點的臨時初始位置,包括:
7.根據權利要求6所述的方法,其特征在于,所述每一單元頂點對應的梯度包括第一子梯度,所述第一子梯度為該單元頂點的彈性力對該單元頂點的臨時初始位...
【專利技術屬性】
技術研發人員:劉郴,游思增,王振東,劉澤高,
申請(專利權)人:浙江凌迪數字科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。