1. 程式人生 > 其它 >【Heskey帶你玩幾何】身體肌肉

【Heskey帶你玩幾何】身體肌肉

首先,老規矩:

未經允許禁止轉載(防止某些人亂轉,轉著轉著就到蠻牛之類的地方去了)

B站:Heskey0


本文參考的論文連線:

https://studios.disneyresearch.com/wp-content/uploads/2019/04/Dynamic-Skin-Deformation-SimulationUsing-Musculoskeletal-Model-and-Soft-Tissue-Dynamics-Paper.pdf

涉及一些光學動捕知識:

https://zhuanlan.zhihu.com/p/371907991

身體肌肉

1.介紹

主流的方法:物理模擬,資料驅動。
本文:物理模擬+資料驅動

  • 物理模擬的方法得到真實的結果
  • 使用資料集使模型適配不同的人體(body type)
  • 通過骨骼動畫資訊直接生成面板的形變
    本文使用mass-spring-damper system對肌肉和軟組織系統做數學建模

2.數學模型

使用物理模擬,肌肉帶動骨骼,肌肉長度和張力會導致肌肉的鼓起。

本文面板模型包括三個子模型:

  1. Quasi-static muscle model
  2. Muscle dynamics model
  3. 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具有不同的引數