本文主要是介绍Blender源码探究之布料解算(三)——力学探索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
花了一些时间,找到了布料解算中非常重要的一个部分,就是计算力的方法。
在这个cloth_calc_force方法内,对布料受到的各种外力几乎都考虑进去了。
如下图所示:
有重力、阻力、压力、风力、弹簧力
重力
很明显可以看到它把重力加速度算进去了
阻力
这个drag参数代表自于空气粘度阻力
由下面可以看出 粘度阻力计算
阻力 = 速度 * 阻力系数 (没太懂为什么这样计算)
(百度搜公式,似乎对不上,这块我在高中物理和大学物理都没有涉猎过- -)
然后乘了一个负值,再累加到合力。这样就削减了一部分合力。
压力
因为暂时对此了解不足,所以很难解释。不过看它源码似乎是跟体积有关。
风力
同样对这块暂时不算很了解。源码如下图所示:
弹簧力
首先了解以下布料弹簧的结构定义
然后计算弹簧力的流程,如下代码所示:
先计算弯曲弹簧的力,再计算结构弹簧和剪切弹簧的力。
对于弯曲弹簧力的计算公式,不完全了解 。
弯曲弹簧力的源码如下:
对于结构弹簧和剪切弹簧的力,
遵循胡克定律:
F = kΔx
其中Δx是弹簧伸缩长度差。
源码如下:
至此,所有力都列举完了。不过还有很多需要探索和研究,继续努力。
这篇关于Blender源码探究之布料解算(三)——力学探索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!