拿來放成果的repository
真的好快樂喔哈哈哈哈
使用Rigid_Bunny.cs腳本在unity中運行的結果。
實現基礎的碰撞檢測與旋轉角速度計算。
_2022_04_19_08_14_45_672.mp4
使用Rigid_Bunny_by_Shape_Matching.cs腳本在unity中運行的結果。
從影片中可以明顯看出來這樣實現的兔子看起來會比較軟一點,陷進牆內的部分越多,獲得的反方向加速度越高,缺點是體積較小的部分容易有明顯的下陷,像是影片中就能夠明顯的看到兔子尾巴和耳朵陷入地板的部分。
_2022_04_19_08_13_34_371.mp4
實時布料模擬目前主流方法有兩種,一種是基於隱式積分法進行模擬,一種是基於PBD,隱式積分法我還沒有念到很懂,可能之後實現。
程式碼主體在PBD_model.cs
_2022_04_19_10_56_07_330.mp4
彈性體我覺得是很難的領域,這部分就跟材料力學比較有關係,程式碼寫起來就在計算 Ic 和 IIc,主流的幾種彈性體模擬方法可以看以下的影片展示。
1.online-video-cutter.com.mp4
Descent Methods for Elastic Body Simulation on the GPU (SIGGRAPH Asia 2016)
實現我採用最簡單的StVK方法,打算等流體寫完之後再來挑戰看看 Neo-Hookean,畢竟 StVK 雖然方便,但缺點真的太大了,可從下圖看到 StVK 的抵抗力在過了閥值之後,反而會減小,甚至會變成負的導致模型崩潰,實際跑的過程中不能夠給模型施加太大的力,有點麻煩。
主要程式碼在FVM.cs,採用的方法是有限體積的做法進行模擬。
Irving et al. 2004. Invertible Finite Elements For Robust Simulation of Large Deformation. SCA
(後續補充:其實按照這個做,把程式碼內的StVK方法替換掉就好了,其他部分都不用管)
_2022_04_21_09_29_15_944_Trim.mp4
過程中有點像下雨的部分是加水的過程(讓水位增高),程式碼主體在wave_motion.cs
_2022_04_23_13_45_56_470.mp4
- Games103 : 基於物理的計算機動畫入門,王華民(俄亥俄州立大學)
- Games202 : 高質量實時渲染,閆令琪(加州大學聖塔芭芭拉分校)
- 剛體模擬相關論文 :
- Muller et al. 2005. Meshless Deformations Based on Shape Matching. TOG (SIGGRAPH).
- 布料模擬相關論文 :
- Baraff and Witkin. 1998. Large Step in Cloth Simulation. SIGGRAPH.
- Bridson et al. 2003. Simulation of Clothing with Folds and Wrinkles. SCA.
- Bergou et al. 2006. A Quadratic Bending Model for Inextensible Surfaces. SCA.
- English and Bridson. 2008. Animating Developable Surfaces Using Nonconforming Elements. SIGGRAPH. (optional)
- 彈性體模擬相關論文 :
- Irving et al. 2004. Invertible Finite Elements For Robust Simulation of Large Deformation. SCA
- Wang. 2016. Descent Methods for Elastic Body Simulation on the GPU. TOG (SIGGRAPH Asia).
- Xu et al. 2015. Nonlinear Material Design Using Principal Stretches. TOG (SIGGRAPH).
- 流體模擬相關論文 :
- Kass and Miller. 1990. Rapid, Stable Fluid Dynamics for Computer Graphics. Computer Graphics.
- Jos Stam. 1999. Stable Fluids. TOG (SIGGRAPH).
念完SPH了,好像還行,先把筆記丟上來好了,之後實作出來再撤掉。
實作計算上對粒子位置進行迭代的計算順序: