本文用于系统记录个人图形学仿真入门过程。问题/进度记录。
这是完成的第一个仿真,使用弹簧质点系统来模拟布料。
如果说布料仿真的最终目标是生成一个逼真的布料运动视频,那么首先要生成其中的一帧。而生成这一帧动画的最关键信息就是构成布料的每一个粒子在这一时刻的空间位置。事实上,我们无法知道布料究竟由多少粒子构成,也无需知道,我们只需要选取适当位置(剖分网格)和适当数量的粒子(网格结点)来近似整个布料,使它足够欺骗我们的眼睛,让我们觉得 “逼真” 就可以了。
弹簧质点系统基本的想法是利用**剖分网格的结点(质点)来近似构成整个布料的粒子,利用网格单元的边(弹簧)**来模拟布料的弹性/材质。所有质点的运动共同构成了整个布料的运动,弹簧将所有的质点连接起来,使所有的质点相互关联成为一个整体。
接下来,我们依次完成网格剖分,动力学分析(包括运动,受力),方程求解,就可以根据上一时刻的布料信息得到下一时刻的布料信息,这样递归下去我们就得到了布料运动的视频。
更多编程细节和仿真方法可以在GAMES103课程中找到,这里仅列出本文完整完成的一套仿真/数值离散的方法和关键步骤。
首先将布料剖分为三角形网络,然后用**有限个质点(网格节点)的运动来近似整个布料的运动,用弹簧(三角形单元的边)**来模拟布料的材质。如图:
由于弹簧质点系统中,质点之间的联系仅由弹簧力提供,而不存在额外的约束,所以每个质点的运动都符合单个质点的运动规律,如图: