【Heskey帶你玩幾何】身體肌肉
首先,老規矩:
未經允許禁止轉載(防止某些人亂轉,轉著轉著就到蠻牛之類的地方去了)
B站:Heskey0
本文參考的論文連線:
涉及一些光學動捕知識:
https://zhuanlan.zhihu.com/p/371907991
身體肌肉
1.介紹
主流的方法:物理模擬,資料驅動。
本文:物理模擬+資料驅動
- 用物理模擬的方法得到真實的結果
- 使用資料集使模型適配不同的人體(body type)
- 通過骨骼動畫資訊直接生成面板的形變
本文使用mass-spring-damper system對肌肉和軟組織系統做數學建模
2.數學模型
使用物理模擬,肌肉帶動骨骼,肌肉長度和張力會導致肌肉的鼓起。
本文面板模型包括三個子模型:
- Quasi-static muscle model
- Muscle dynamics model
- Soft-tissue dynamics model
2.1 Quasi-static muscle model
表示肌肉鼓起/舒張(主動發生的形變,帶動另外兩個子模型運動)
- 把肌肉近似為一個紡錘體,與肌肉路徑垂直的橫截面是一個橢圓,橢圓的大小由sigmoid function定義(sigmoid的引數和橢圓離心率
- 翼狀的肌肉(例如大胸肌) 橫截面不是橢圓,所以使用很多細的紡錘型線進行表示
- 對於不對稱的肌肉(例如比目魚肌),沿著中心拆分成兩部分,使用兩套不同的sigmoid引數
- \(\theta\) : 橫截面的極座標角度
- \(x\) : pathway(肌肉的中心線),為0代表肌肉起點/終點,為1代表肌肉中心
- \(r_m\) : 肌肉上的點到pathway的距離
- \(m\) : 沿著中心拆分後不同的部分,可以取1,2
- \(t\) : 第t幀
公式:
其中
- \(k_{m,n}(t)\): sigmoid的引數
- \(l(t)\): 肌肉長度
- \(\tau(t)\)
: 肌肉張力
統計下來,每個肌肉各對應27個引數,引數太多
定義一些概念
- Segment: Origin point, Via point, Insertion point之間的肌肉分段。將segment的數量記作 L
- 最近markers:各個segment 中的 closest markers(不同幀的最近markers不同,markers有多個,數量由body part決定)
為了調整模型引數,提出一個優化問題:肌肉表面到最近markers的距離總和最小
2.2 Muscle dynamics model
Muscle dynamics model: 用mass-spring-damper system描述肌肉被動發生的形變。將質點放在三角網格頂點,然後相鄰質點用spring-damper連線,並且質點和quasi-static muscle之間也會使用spring-damper連線。
2.3 Soft-tissue dynamics model
Soft-tissue dynamics model: 用mass-spring-damper system描述面板和皮下脂肪的被動發生的形變。
定義一些頂點的集合
Let P^s denote the set of skin vertices, P^qm the vertices on the quasi-static muscle surfaces, P^dm the vertices on the dynamic muscle surfaces, and P^b the vertices on the bone surfaces。
即:
\(P^S\): skin vertex集合
\(P^{qm}\): quasi-static muscle vertex集合
\(P^{dm}\): dynamic muscle vertex集合
\(P^b\): bone surface vertex集合
在頂點之間連線,構造spring-damper system
Skin vertex連線到:
- 相鄰的skin vertex
- 以該點為中心的半球中的dynamic muscle vertex,bone vertex(如下圖)。半球的半徑為\(\alpha+r\),\(\alpha=2.0cm\)代表偏移,為保證半球內有點,半球的最小半徑為\(r\)。
Dynamic muscle vertex連線到:
- 相鄰的dynamic muscle vertex
- 臨近的skin vertex
使用spring-damper pair連線之後,頂點之間的力:
其中:
- \(x,v\): 頂點的位置,速度
- \(x_{ij}=x_j-x_i,,v_{ij}=v_j-v_i\)
-
\(k_{ij},c_{ij}\): stiffness係數,damping係數
不同型別的點連線起來的sprint-damper具有不同的引數