基于可形變網格的碰撞處理方法、系統、設備及介質與流程
1.本發明涉及計算機仿真技術領域,尤其是基于可形變網格的碰撞處理方法、系統、設備及介質。
背景技術:
2.基于物理的仿真動畫通過在計算機中求解基于物理的動力學微分方程實現逼真的物體運動和交互動畫,在游戲、影視特效、工業設計和計算機圖形學(cg)藝術中有著大量運用。現實中的可形變彈性物體如布料、頭發、橡膠、塑料和金屬薄殼制品等在受力下會發生形變,而形變又產生應力。在物理仿真動畫的實際應用中,一般會將多個可形變彈性物體和預設的碰撞物一同組成場景并使其相互碰撞交互,產生豐富的視覺效果。
3.計算機圖形學中,可形變彈性物體一般由網格(mesh)表示,其運動和形變自由度由各個頂點的位置坐標提供。對于單個可形變物,其總彈性勢能一般可寫為由網格所有頂點坐標決定的標量值函數。由總彈性勢能對各頂點位置坐標求導可得到各頂點所受的彈力,而彈力對時間積分則可得到頂點的沖量。由于彈力是頂點坐標的函數,但頂點坐標隨時間一直變化,因此彈力對時間的積分難以精確計算。應用中一般將整個仿真的時域劃分為大量極短的時間步,并近似認為單個時間步中的彈力保持恒定,從而近似計算沖量積分。沖量積分計算完成后,將沖量除以頂點質量即可得到一個時間步中彈力對頂點施加的速度變化量。
4.但是,由于物理仿真往往涉及極高的三角面數,即使使用bvh(層次包圍盒)和空間剖分等加速結構,碰撞處理在仿真中也常常占據大量的運行時間,且加速結構和碰撞處理的實現較為復雜。
技術實現要素:
5.有鑒于此,為至少部分解決上述技術問題或者缺陷之一,本發明實施例的目的在于提供一種快速且實現較簡單的基于可形變網格的碰撞處理方法;此外,實施例還提供了能夠實現這一方法的系統、裝置以及存儲介質。
6.一方面,本技術技術方案提供了基于可形變網格的碰撞處理方法,包括以下步驟:
7.獲取可形變彈性物體表面中三角面的纖維向量;
8.構建可形變彈性物體的包圍盒,根據所述包圍盒構建得到笛卡爾網格;
9.對碰撞接觸面進行采樣,并根據所述三角面的頂點坐標構建得到采樣點集;
10.根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度;
11.根據所述采樣點集中的采樣點以及所述目標彈性形變梯度,對動量方程進行離散化求解得到所述笛卡爾網格中格點的第一速度;
12.構建有向距離場,根據所述格點在所述有向距離場的第二速度以及法向量確定可形變彈性碰撞后的第三速度;
13.根據所述第三速度確定所述采樣點的第一沖量,根據所述第一沖量確定所述三角面的速度變化量,根據所述速度變化量確定碰撞情況。
14.在本技術方案的一種可行的實施例中,所述構建可形變彈性物體的包圍盒,根據所述包圍盒構建得到笛卡爾網格這一步驟,包括:
15.獲取所述包圍盒的最大值坐標點以及最小值坐標點;
16.根據所述最大值坐標點、所述最小值坐標點以及元胞邊長計算得到三軸元胞數,根據所述三軸元胞數確定所述笛卡爾網格。
17.在本技術方案的一種可行的實施例中,所述根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度這一步驟,包括:
18.根據所述三角面的頂點坐標以及所述纖維向量構建得到正交基;
19.獲取初始構型下的第一向量,以及發生彈性形變后的第二向量,所述第二向量通過所述正交基進行表征;
20.根據所述第一向量的逆矩陣以及所述第二向量計算得到所述候選彈性形變梯度;
21.根據所述候選彈性形變梯度進行塑性投影得到所述目標彈性形變梯度。
22.在本技術方案的一種可行的實施例中,所述根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度這一步驟,包括:
23.獲取所述三角面在法向量上的伸縮狀態;
24.根據所述伸縮狀態確定所述三角面所在表面為未接觸狀態,將接觸彈力與摩擦力均置零,根據塑性約束條件對所述候選彈性形變梯度進行塑性投影得到所述目標彈性形變梯度;
25.或者,
26.根據所述伸縮狀態確定所述三角面所在表面為接觸狀態,獲取所述三角面在法向量上的剪切狀態以及剪切方向,確定所述剪切狀態以及所述剪切方向滿足摩擦定律約束,對所述候選彈性形變梯度進行塑性投影得到所述目標彈性形變梯度。
27.在本技術方案的一種可行的實施例中,所述根據所述伸縮狀態確定所述三角面所在表面為接觸狀態,獲取所述三角面在法向量上的剪切狀態以及剪切方向,確定所述剪切狀態以及所述剪切方向滿足摩擦定律約束,對所述候選彈性形變梯度進行塑性投影得到所述目標彈性形變梯度這一步驟,包括:
28.根據所述剪切狀態以及剪切方向確定剪切彈性形變,根據所述剪切彈性形變以及彈性勢能函數計算得到所述摩擦力;
29.根據伸縮彈性形變以及碰撞勢壘函數計算得到所述接觸彈力;
30.確定所述摩擦力的第一模長與所述接觸彈力的第二模長滿足庫倫摩擦定律,對所述候選彈性形變梯度進行塑性投影得到所述目標彈性形變梯度。
31.在本技術方案的一種可行的實施例中,所述根據所述采樣點集中的采樣點以及所述目標彈性形變梯度,對動量方程進行離散化求解得到所述笛卡爾網格中格點的第一速度這一步驟,包括:
32.根據所述目標彈性形變梯度以及b樣條權函數計算得到所述笛卡爾網格中由所述采樣點產生的格點力;
33.根據所述采樣點的坐標以及所述采樣點的質量通過所述b樣條權函數計算得到格
點質量;
34.根據所述格點力以及所述格點質量,對動量方程進行求解得到所述第一速度。
35.在本技術方案的一種可行的實施例中,所述構建有向距離場,根據所述格點在所述有向距離場的第二速度以及法向量確定可形變彈性碰撞后的第三速度這一步驟,包括:
36.將所述采樣點的局部有向距離場進行聚合得到有向距離場值;
37.根據所述有向距離場值,結合所述第二速度、速度投影函數以及懲罰力確定所述第三速度。
38.另一方面,本技術技術方案還提供了基于可形變網格的碰撞處理系統,該系統包括:
39.第一單元,用于獲取可形變彈性物體表面中三角面的纖維向量;
40.第二單元,用于構建可形變彈性物體的包圍盒,根據所述包圍盒構建得到笛卡爾網格;
41.第三單元,用于對碰撞接觸面進行采樣,并根據所述三角面的頂點坐標構建得到采樣點集;
42.第四單元,用于根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度;
43.第五單元,用于根據所述采樣點集中的采樣點以及所述目標彈性形變梯度,對動量方程進行離散化求解得到所述笛卡爾網格中格點的第一速度;
44.第六單元,用于構建有向距離場,根據所述格點在所述有向距離場的第二速度以及法向量確定可形變彈性碰撞后的第三速度;
45.第七單元,用于根據所述第三速度確定所述采樣點的第一沖量,根據所述第一沖量確定所述三角面的速度變化量,根據所述速度變化量確定碰撞情況。
46.另一方面,本技術技術方案還提供一種基于可形變網格的碰撞處理設備,該設備包括:
47.至少一個處理器;
48.至少一個存儲器,用于存儲至少一個程序;
49.當所述至少一個程序被所述至少一個處理器執行,使得所述至少一個處理器運行如第一方面中任一項所述的基于可形變網格的碰撞處理方法。
50.另一方面,本技術技術方案還提供一種存儲介質,其中存儲有處理器可執行的程序,所述處理器可執行的程序在由處理器執行時用于執行如第一方面中任一項所述的基于可形變網格的碰撞處理方法。
51.本發明的優點和有益效果將在下面的描述中部分給出,其他部分可以通過本發明的具體實施方式了解得到:
52.本技術技術方案提供了一種基于可形變網格的碰撞處理方法、系統、設備以及介質;方案針對可形變彈性物網格的物理仿真框架中的碰撞處理部分,通過在每個時間步的碰撞處理步中構造一個笛卡爾輔助網格(grid)實現快速的可形變網格間以及可形變網格與預設場景碰撞物的碰撞處理;方案中的碰撞處理方法在笛卡爾網格上只需記錄和累加狀態,而不需要維護網格格點從屬的三角形列表等信息,使得本發明相對已有的碰撞檢測和碰撞響應技術有實現簡單和速度快的優勢。
附圖說明
53.為了更清楚地說明本技術實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本技術的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
54.圖1為本技術實施例提供的基于可形變網格的碰撞處理方法的步驟流程圖;
55.圖2為本技術實施例提供的另一種基于可形變網格的碰撞處理方法的步驟流程圖;
56.圖3為本技術實施例提供中的彈性形變的示意圖。
具體實施方式
57.下面詳細描述本發明的實施例,實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發明,而不能理解為對本發明的限制。對于以下實施例中的步驟編號,其僅為了便于闡述說明而設置,對步驟之間的順序不做任何限定,實施例中的各步驟的執行順序均可根據本領域技術人員的理解來進行適應性調整。
58.在相關技術方案中,多數可形變彈性物的物理仿真框架將時間步的計算流程分為兩個步驟,即計算彈性勢能對物體影響的動量方程(即沖量積分)求解步和碰撞處理步。動量方程求解中只涉及單個可形變彈性物的狀態,要通過可形變彈性物間以及可形變彈性物與預設碰撞物間的碰撞交互產生期望的效果,則必須經過碰撞處理步,對涉及碰撞的可形變彈性物狀態進行對應的更新。碰撞檢測的主要目的是快速的檢測出發生碰撞的三角面,碰撞處理的目的則是令系統狀態從有碰撞態變為無碰撞態。常用的碰撞檢測加速方法包括bvh(層次包圍盒)與空間哈希。bvh通過將三角面的包圍盒逐級組合成越來越大的包圍盒將空間進行剖分,在進行三角面的碰撞查詢時可以剔除掉未相交包圍盒的三角面,從而減少檢測次數。空間哈希使用笛卡爾網格將空間劃分為一個個元胞(cell),在進行碰撞檢測時先為各個元胞記錄與其碰撞的三角面,然后對每個元胞下所屬的三角面進行兩兩碰撞檢測,從而減少檢測次數。
59.基于前述的技術背景內容,本技術技術方案針對一般可形變彈性物的物理仿真框架,提出一種快速的碰撞處理步流程,對可形變彈性物網格的物理仿真框架中的碰撞處理部分,通過在每個時間步的碰撞處理步中構造一個笛卡爾輔助網格(grid)實現快速的可形變網格間以及可形變網格與預設場景碰撞物的碰撞處理。
60.在第一方面,如圖1所示,本技術技術方案提供了基于可形變網格的碰撞處理方法;方法包括步驟s100-s700:
61.s100、獲取可形變彈性物體表面中三角面的纖維向量;
62.具體在實施例中,在整個仿真過程中,實施例追蹤可形變彈性物網格表面的相對位移信息,例如擠壓和滑動,并由此定義勢能函數,從而實現碰撞避免和相應的摩擦處理。在仿真開始前,為可形變彈性物表面的各個三角面記錄纖維(fiber)向量ni,其中i為對應三角面的下標,纖維向量可以被初始化為三角面的法向量,并在仿真過程中隨著三角面附近的物質相對運動發生擠壓和偏轉。
63.s200、構建可形變彈性物體的包圍盒,根據所述包圍盒構建得到笛卡爾網格;
64.具體在實施例中,在碰撞處理步中,首先計算場景內所有可形變彈性物的aabb包圍盒,其包括但不限于軸對齊包圍盒;并根據包圍盒各條邊在坐標軸上所能包括的元胞數,確定笛卡爾網格的三軸元胞數,從而確定笛卡爾網格。
65.在一些可行的實施例中,實施例方案中,構建可形變彈性物體的包圍盒,根據所述包圍盒構建得到笛卡爾網格這一步驟s200,可以包括步驟s210-s220:
66.s210、獲取所述包圍盒的最大值坐標點以及最小值坐標點;
67.s220、根據所述最大值坐標點、所述最小值坐標點以及元胞邊長計算得到三軸元胞數,根據所述三軸元胞數確定所述笛卡爾網格。
68.具體在實施例中,包圍盒的最小點記為最大點記為將包圍盒在三個坐標軸上的長度除以元胞邊長δx并向上取整,即可得到包裹所有可形變彈性物的最小的笛卡爾網格在三軸上的元胞數:
[0069][0070]
其中,i
′
,
′
,
′
為各坐標軸上的元胞數;進一步地,實施例將各軸上的元胞數加4,即為碰撞處理步中使用的笛卡爾網格的三軸元胞數[i,j,k]
t
=[i
′
+4,j
′
+4,k
′
+4]
t
。對于此前得到的aabb包圍盒,將其在三軸上的最小值分別減去2δx,即得到碰撞處理步中使用的笛卡爾網格的最小點笛卡爾網格的格點集合可表示為:
[0071][0072]
s300、對碰撞接觸面進行采樣,并根據所述三角面的頂點坐標構建得到采樣點集;
[0073]
具體在實施例中,在步驟s200之后,實施例將對于可形變彈性物網格的表面和預設的場景碰撞物網格的表面進行采樣,對于每個三角面片,記其三個頂點坐標分別為x1,x2,x3,由頂點坐標可得到兩個邊向量和所有采樣點的坐標均可表示為x1+(0.5+i)δxe1+(0.5+j)δxe2,其中i和j為任意非負整數,在這些坐標中落在三角面片內的點組成該三角面片的采樣點集。對于較小的三角面,可能沒有采樣點落在面片內,此時實施例可以取三角面三個頂點坐標的平均為采樣點。通過采樣,實施例可以得到與笛卡爾網格分辨率相匹配的采樣點集。
[0074]
s400、根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度;
[0075]
具體在實施例中,從可形變物三角面頂點坐標{x
vert
}和纖維向量{ni}重建形變梯度,進行塑性投影并更新纖維向量{ni},同時得到彈性形變梯度fe,采樣點彈性形變梯度{f
ep
}取所在三角面的fe。
[0076]
s500、根據所述采樣點集中的采樣點以及所述目標彈性形變梯度,對動量方程進行離散化求解得到所述笛卡爾網格中格點的第一速度;
[0077]
具體在實施例中,如圖2所示,通過可形變物采樣點的坐標{x
p
},速度{v
p
},質量{m
p
}和彈性形變梯度{f
ep
}計算笛卡爾網格格點的格點力{fi},質量{mi}以及速度{vi},求解格點動量方程得到可形變物碰撞處理后的新格點速度即第一速度。
[0078]
s600、構建有向距離場,根據所述格點在所述有向距離場的第二速度以及法向量確定可形變彈性碰撞后的第三速度;
[0079]
具體在實施例中,如圖2所示,通過預設碰撞物采樣點的{x
p
}和{v
p
}計算笛卡爾網格格點的有向距離場的速度即第二速度和法向量結合可形變物碰撞處理后的投影得到預設碰撞物碰撞處理后的新格點速度即第三速度。
[0080]
s700、根據所述第三速度確定所述采樣點的第一沖量,根據所述第一沖量確定所述三角面的速度變化量,根據所述速度變化量確定碰撞情況;
[0081]
具體在實施例中,如圖2所示,根據格點和可形變物體的采樣點{x
p
}得到新的{v
p
}和由得到采樣點更新后的纖維向量{n
p
},平均得到三角面的新纖維向量{ni},由{v
p
}反求沖量得到頂點的速度變化量,進而更新頂點速度{v
vert
}。
[0082]
在一些可行的實施例中,實施例方法中,根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度這一步驟s400,可以包括步驟s410-s440:
[0083]
s410、根據所述三角面的頂點坐標以及所述纖維向量構建得到正交基;
[0084]
在實施例中,每個可形變物的表面采樣點都對應可形變物的一部分表面積,該表面積s
p
可通過采樣點所在的三角面面積除以三角面上的采樣點數計算得到,其中p為采樣點的下標。對于可形變物表面的采樣點p,將其所屬三角面的纖維向量作為采樣點的纖維向量,記為n
p
。
[0085]
對于每個三角面片,記其三個頂點坐標分別為x1,x2,x3,假設頂點順序滿足右手系順序,構造三個單位向量如下:
[0086][0087][0088]
e3=n;
[0089]
其中,n是三角面的纖維向量,在初始構型下取三角面的法向;從而e1,e2和e3構成了一組正交基。
[0090]
s420、獲取初始構型下的第一向量,以及發生彈性形變后的第二向量,所述第二向量通過所述正交基進行表征;
[0091]
s430、根據所述第一向量的逆矩陣以及所述第二向量計算得到所述候選彈性形變梯度;
[0092]
s440、根據所述候選彈性形變梯度進行塑性投影得到所述目標彈性形變梯度;
[0093]
具體在實施例中,根據彈性形變梯度fe的定義,對于初始構型下的向量δx,即初始構型下的第一向量;其在經歷彈性形變后的取值δx,即發生彈性形變后的第二向量,有如下估計:
[0094]
δx=feδx
[0095]
記這組基向量在初始構型下的取值為e1,e2和e3,則經歷彈性形變后其形式可表示為:
[0096][0097]
實施例在已知經歷彈性形變后的向量e1,e2和e3的情況下,可以反求彈性形變梯度fe,需要說明的是,此處計算得到的fe為候選彈性形變梯度:
[0098][0099]
對于與三角面共面的兩個單位向量,由于面內的形變能量已體現在碰撞處理步前,碰撞處理步中將此類形變視為塑性形變,因此應當只發生旋轉,不產生形變,即應當只發生旋轉,不產生形變,即為纖維向量的彈性形變部分,可以記為ne。
[0100]
實施例中,對fe進行qr分解,可將旋轉部分分離,如圖3所示,進一步將r分解為三個矩陣:
[0101]
q=[q1,q2,q3]
[0102]
r=r1r2r3,
[0103][0104][0105][0106]
其中,如圖3所示,實施例中,r1代表面內彈性形變,因此*部分的取值應當使其為單位陣,r2代表纖維向量即法向上的物質剪切形變,r3代表纖維向量的壓縮。
[0107]
然后,實施例根據矩陣r,將候選彈性形變梯度fr進行塑性投影得到所述目標彈性形變梯度fe。
[0108]
在一些可行的實施例中,實施例方法中,根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度這一步驟s440,可以包括步驟s441-s443:
[0109]
s441、獲取所述三角面在法向量上的伸縮狀態;
[0110]
具體在實施例中,r3反映法方向的伸縮程度,當r3值為1時,在法方向既不發生壓縮也不發生拉伸,當r3值小于1時,在法向量方向發生壓縮,對應的壓縮彈性勢能導出的應力應抵抗壓縮造成的形變,從而避免兩表面進一步接近,而當r
33
值大于1時,則表明材料不處于接觸狀態,因此無需產生應力。根據以上分析,可選定一種滿足要求的碰撞勢壘函數,記為ψc:
[0111][0112]
其中;kc為壓縮彈性勢能的剛度系數,該能量函數僅懲罰材料法向量方向的壓縮,而不懲罰拉伸。
[0113]
s442、根據所述伸縮狀態確定所述三角面所在表面為未接觸狀態,將接觸彈力與
[0129]
進一步地,可計算摩擦力ff的模長||ff||及接觸彈力fn的模長||fn||:
[0130][0131]
||fn||=(1-r3)2[0132]
假設材料間摩擦系數為cf,則摩擦力的模長與接觸彈力的模長需滿足庫倫摩擦定律:
[0133]
||ff||≤cf||fn||
[0134]
因此,由彈性形變fe得到的矩陣r應滿足||ff||≤cf||fn||,從而對fe產生了約束,滿足約束的fe為對應矩陣空間的一個子域。在實施例的計算過程中,通過將fe投影到該約束子域,可得到彈性形變。
[0135]
在一些可行的實施例中,實施例方法,根據所述采樣點集中的采樣點以及所述目標彈性形變梯度,對動量方程進行離散化求解得到所述笛卡爾網格中格點的第一速度這一步驟s500,可以包括步驟s510-s520:
[0136]
s510、根據所述目標彈性形變梯度以及b樣條權函數計算得到所述笛卡爾網格中由所述采樣點產生的格點力;
[0137]
s520、根據所述采樣點的坐標以及所述采樣點的質量通過所述b樣條權函數計算得到格點質量
[0138]
s530、根據所述格點力以及所述格點質量,對動量方程進行求解得到所述第一速度。
[0139]
具體在實施例中,通過前序步驟得到能量密度與彈性形變梯度,可以進一步計算得到對應的應力,進而通過動量方程的求解改變物體的速度。實施例可以使用移動最小二乘物質點法對動量方程進行離散化求解,笛卡爾網格格點上由采樣點產生的格點力可寫為:
[0140][0141]
其中,ξi是以第i個格點為中心的二次b樣條權函數,xi是第i個格點的坐標,x
p
是第p個采樣點的坐標。ψ為總能量密度函數,具體為前述的碰撞勢壘函數和抵抗剪切的能量密度函數的加和;v
p
的定義為采樣點對應的移動最小二乘物質點體積,這里推薦取為采樣點所在三角面的面積除以其上的采樣點數再乘以一個厚度參數。需要說明的是,由于ψ也即總能量密度函數自身已有可控制的參數,厚度參數可以取1。格點上的質量與動量同樣由b樣條權函數得到,格點質量可寫為:
[0142][0143]
動量可寫為:
[0144][0145]
在格點處求解動量方程:
[0146][0147]
可得到格點的在可形變物碰撞處理后的新速度,即第一速度。
[0148]
在一些可行的實施方式中,實施例方法構建有向距離場,根據所述格點在所述有向距離場的第二速度以及法向量確定可形變彈性碰撞后的第三速度這一步驟s600,可以包括步驟s610-s620:
[0149]
s610、將所述采樣點的局部有向距離場進行聚合得到有向距離場值;
[0150]
s620、根據所述有向距離場值,結合所述第二速度、速度投影函數以及懲罰力確定所述第三速度;
[0151]
具體在實施例中,實施例使用有向距離場處理可形變物與預設碰撞物的碰撞,并提出一種快速生成近似有向距離場的方式;對于預設碰撞物表面的采樣點,其局部的有向距離場可使用一個等值面掃掠近似。等值面有多種選擇,其形狀約接近采樣點表面形狀越好,本發明選用平面等值面以加速計算,平面法向量與表面在采樣點處的法向量一致,有向距離場的值與平面等值面的位移一致。
[0152]
在生成全局的有向距離場時,需要將來自各個采樣點的局部有向距離場進行聚合,對于空間內任意一點,使用如下公式決定有向距離場的值:
[0153][0154][0155]
其中,表示采樣點p生成的距離場在點x處的取值,d(x)為全局有向距離場。在x處的有向距離場法向量和速度取采樣點p
*
的法向量和速度。
[0156]
在格點上完成可形變彈性物間的碰撞處理以及預設碰撞物的有向距離場生成后,對于格點速度進一步進行預設碰撞物的碰撞處理。有向距離場的取值為正代表格點在物體外側,反之在物體內側,對于d(xi)小于閾值的格點,首先進行速度投影。定義投影函數如下:
[0157][0158]
其中vn=《v,n》,v
t
=v-vnn。
[0159]
為了避免由于近似的有向速度場誤差或物質點法誤差造成的穿透現象,在格點上同時使用一個懲罰力改變格點速度:
[0160][0161]
其中α和β控制懲罰力的大小,最終在碰撞處理后的的格點速度為:
[0162][0163]
其中,為可形變彈性物間碰撞處理后的格點速度,和為格點有向距離場的速度和法向量。
[0164]
進一步地,實施例方法中,根據所述第三速度確定所述采樣點的第一沖量,根據所述第一沖量確定所述三角面的速度變化量,根據所述速度變化量確定碰撞情況這一步驟
s700,可以具體為:
[0165]
在格點碰撞處理完成后,可以由格點回映射得到采樣點的新速度和局部的速度場梯度估計:
[0166][0167][0168]
但采樣點的實際運動自由度由三角面的三個頂點提供,因此需要將采樣點的速度轉換為頂點的速度。通過采樣點的新速度可以求得采樣點的速度變化量,從而得到時間步內采樣點的沖量,該沖量可轉換為三角形重心的動量和角動量變化量,并進一步由剛體旋轉得到頂點的速度變化量,對頂點在各個三角面中的速度變化量求和,可得到總得頂點速度變化量,進而完成頂點的速度更新。
[0169]
對于三角面的纖維向量,由于ne=fee3,而對彈性梯度的更新有:
[0170][0171]
其中,δt為仿真的時間步長,因此纖維向量的更新可寫為:
[0172][0173]
三角面的纖維向量取采樣點纖維向量的均值。
[0174]
另一方面,本技術技術方案還提供了基于可形變網格的碰撞處理系統,該系統包括:
[0175]
第一單元,用于獲取可形變彈性物體表面中三角面的纖維向量;
[0176]
第二單元,用于構建可形變彈性物體的包圍盒,根據所述包圍盒構建得到笛卡爾網格;
[0177]
第三單元,用于對碰撞接觸面進行采樣,并根據所述三角面的頂點坐標構建得到采樣點集;
[0178]
第四單元,用于根據所述三角面的頂點坐標以及所述纖維向量,進行塑性投影得到目標彈性形變梯度;
[0179]
第五單元,用于根據所述采樣點集中的采樣點以及所述目標彈性形變梯度,對動量方程進行離散化求解得到所述笛卡爾網格中格點的第一速度;
[0180]
第六單元,用于構建有向距離場,根據所述格點在所述有向距離場的第二速度以及法向量確定可形變彈性碰撞后的第三速度;
[0181]
第七單元,用于根據所述第三速度確定所述采樣點的第一沖量,根據所述第一沖量確定所述三角面的速度變化量,根據所述速度變化量確定碰撞情況。
[0182]
另一方面,本技術的技術方案還提供基于可形變網格的碰撞處理設備;其包括:
[0183]
至少一個處理器;至少一個存儲器,該存儲器用于存儲至少一個程序;當至少一個程序被至少一個處理器執行,使得至少一個處理器運行如第一方面中的基于可形變網格的碰撞處理方法。
[0184]
本發明實施例還提供了一種存儲介質,其存儲有對應的執行程序,程序被處理器執行,實現第一方面中的基于可形變網格的碰撞處理方法。
[0185]
從上述具體的實施過程,可以總結出,本發明所提供的技術方案相較于現有技術存在以下優點或優勢:
[0186]
本技術技術方案中提出的碰撞處理方法在笛卡爾網格上只需記錄和累加狀態,而不需要維護網格格點從屬的三角形列表等信息,使得本發明相對已有的碰撞檢測和碰撞響應技術有實現簡單和速度快的優勢。
[0187]
在一些可選擇的實施例中,在方框圖中提到的功能/操作可以不按照操作示圖提到的順序發生。例如,取決于所涉及的功能/操作,連續示出的兩個方框實際上可以被大體上同時地執行或所述方框有時能以相反順序被執行。此外,在本發明的流程圖中所呈現和描述的實施例以示例的方式被提供,目的在于提供對技術更全面的理解。所公開的方法不限于本文所呈現的操作和邏輯流程。可選擇的實施例是可預期的,其中各種操作的順序被改變以及其中被描述為較大操作的一部分的子操作被獨立地執行。
[0188]
此外,雖然在功能性模塊的背景下描述了本發明,但應當理解的是,除非另有相反說明,功能和/或特征中的一個或多個可以被集成在單個物理裝置和/或軟件模塊中,或者一個或多個功能和/或特征可以在單獨的物理裝置或軟件模塊中被實現。還可以理解的是,有關每個模塊的實際實現的詳細討論對于理解本發明是不必要的。更確切地說,考慮到在本文中公開的裝置中各種功能模塊的屬性、功能和內部關系的情況下,在工程師的常規技術內將會了解該模塊的實際實現。因此,本領域技術人員運用普通技術就能夠在無需過度試驗的情況下實現在權利要求書中所闡明的本發明。還可以理解的是,所公開的特定概念僅僅是說明性的,并不意在限制本發明的范圍,本發明的范圍由所附權利要求書及其等同方案的全部范圍來決定。
[0189]
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用于實現邏輯功能的可執行指令的定序列表,可以具體實現在任何計算機可讀介質中,以供指令執行系統、裝置或設備(如基于計算機的系統、包括處理器的系統或其他可以從指令執行系統、裝置或設備取指令并執行指令的系統)使用,或結合這些指令執行系統、裝置或設備而使用。
[0190]
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
[0191]
盡管已經示出和描述了本發明的實施例,本領域的普通技術人員可以理解:在不脫離本發明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發明的范圍由權利要求及其等同物限定。
[0192]
以上是對本發明的較佳實施進行了具體說明,但本發明并不限于上述實施例,熟悉本領域的技術人員在不違背本發明精神的前提下還可做作出種種的等同變形或替換,這些等同的變形或替換均包含在本技術權利要求所限定的范圍內。
