计算机图形学入门Games103——弹簧弯曲问题,锁死问题

文章探讨了弹簧在遇到弯曲问题时的解决方案,包括使用角弹簧和二面角方法,以及基于力的显式积分和能量的拉普拉斯变换模型。还讨论了力的方向确定、平面和非平面情况下的力大小计算,以及自由度和锁死问题。弹簧系数对弯曲的影响也被提及。
摘要由CSDN通过智能技术生成

弹簧的问题之一:

弯曲问题——弯曲弹簧的问题,若是两个三角面几乎为平面的时候,略微的弯曲只会造成弯曲弹簧的很小量很小量变化,造成的结果是对弯曲抵抗很弱

      

解决的方法:使用角弹簧,二面角方法,将弯曲的力写为一个函数f_i=f(θ)u_i 

                                             

其中f(θ)告诉了我们弯曲力的大小,u_i则决定了弯曲力的方向

将弯曲力的问题分为了两个步骤,分别是力的方向和大小,

对于力的方向基于此有三个假设:

1.u1和u2在法向的方向上,

2.弯曲不会让X3X4这一条边发生形变,基于此u3,u4方向上的力差值为0,因此u4-u3要垂直于这条边,所以可以得出u4和u3可以由两个法线向量线性组合构成

3.最终的合力为0,因为所有弯曲的力为合力,u1+u2+u3+u4 = 0,说明u3和u4也是由两个法线向量线性组合构成(因为以此可以得出u3+u4是两个法向量的线性组合,u3-u4也是两个法向量的线性组合,所以u3和u4分别是两个法向量的线性组合)

假设的方法是这些,最终可以退出一些结论(推导过程省略)

这里的N并不是法向量,只是做了一个叉乘,得出了方向,并没有单位化,至此我们得出了弯曲力的方向

力的大小可以分为平面情况:

     

非平面的情况:(也就是模型在初始条件下有一个初始角度θ0)

未做详细的推导,公式来自于斯坦福大学2003年的论文Bridson et al. 2003. Simulation of Clothing with Folds and Wrinkles. SCA.

这个模型使用的是显式积分,完全基于力的实现,没有用到能量,直观但是计算比较复杂

第二种弯曲问题解决方法,基于能量和拉普拉斯变换

有两个假设,模型为平面,模拟的时候三角形拉伸很小,几何没有什么形变

最后会得出能量E(x)=3‖q^Tx‖^2/2(A_0+A_1),这种方法是用了拉普拉斯估算了三角形之间的曲率q^Tx,曲率越大,弯曲也越大(省略了数学推导过程,原论文中也没有...)

Bergou et al. 2006. A Quadratic Bending Model for Inextensible Surfaces. SCA.

优点是这个力和H矩阵很好计算,在做隐式积分的时候很方便

缺点是如果物体拉伸的比较厉害,曲率的计算就不太合理,

若是不平的话,有一些其他的方法,后面会涉及(projective dynamics)

锁死问题(自由度的丢失),约束越多,自由度会有影响

在做假设的时候,我们将平面和弯曲的问题都是分开来实行的,假设两者相互独立,但事实是这样会产生一个锁死问题

                                                          

根据经典的欧拉定律,自由度为3+边界边(边缘上的边),(边=3*顶点-3-边界边,自由度= 变量-边,变量= 3*顶点)会造成自由度不够,边界上的边比较少,弹簧弹性很弱网格分辨率很低的时候,问题很明显

理论上弯曲和弹簧的K应该无关,但由于我们采取的这个弹簧系统模型导致了这个本质上的问题,弹簧系数影响了弯曲的进行,将k减小可以在视觉上解决这个问题,但问题始终存在

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值