您的位置:首页 > 编程语言 > Java开发

【CG物理模拟系列】弹性体模拟--Mass Spring及绳子模拟

2016-06-07 16:40 423 查看

介绍

     变形体中,变形后能恢复原状的物体称为弹性体,这种物理现象称为弹性变形;反之,发生变形后形状不能恢复的变形称为塑性变形,如黏土。通常的物体都会有弹性体和塑性体两种性质,一定力下发成弹性变形后能恢复原状,到达一定值则发成塑性变形。
     本篇介绍一个弹性体模拟中最简单,也是曾经最常用的方法:质量弹簧系统(Mass spring system) 。
     其应用根据维度可分为以下三种:

 

 

             


                                             
一维模拟--绳索(链状)                          二维模拟--衣服(三角形面)                        三维模拟--柔软物体(四面体面)


原理

     假设有N个质点,每个质点质量为m,位置为x,速度为v,质点i(1<i<N)则质量为mi,位置为xi,速度为vi 。 

      质点间由弹簧结构链接, 如图所示,



其中,i,j 为连接的弹簧质点,lo为弹簧完全放松时的长度,ks为弹簧弹性系数,kd为阻尼系数。则各顶点上的所受的力为弹簧弹力与阻尼力的和,即:




受力分析

根据牛顿第二定律f = ma,在质量m和外力f已知的情况下,加速度可由a=f/m 得到,写成两个一阶方程即为:





显式积分为:





若力和速度在△t内连续,则解为,



显示积分问题:
下一刻状态完全由上一刻状态决定,如果timestep △t或者外力(这里假设△t时间内保持不变 )过大,则会导致下一帧渲染时两质点间距离过长,而如果我们事先设置了最大变形长度(即断裂长度),产生的结果便是绳子断开,这也是其不稳定的原因。


绳子模拟

       代码参照http://blog.csdn.net/silangquan/article/details/15746855,书写比较规范。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法