VegaFEM免费试用
何为FEM
还记得ipod touch5发布的那个忍者游戏么:http://v.youku.com/v_show/id_XNDU5Njc3ODQw.html
这个人物身体动作的模拟用的就是FEM。
FEM是有限元分析(Finite element method)的缩写,最早是应用在工程领域,今年随着计算机性能的不断发展,FEM在图形和游戏领域都有着很好的发展。
整个物理模拟的过程都围绕着牛顿第二定律进行:
也就是 F = ma。
VegaFEM是一个用于模拟三维变形物体的高效稳定的C/ C + +物理库。它被可用于计算大变形,包括几何和材料非线性模型,也可以有效地模拟线性系统。Vega加是开放源代码和自由。它的3-clause BSD许可证下发布的,这意味着它可以用来无论是在学术研究和商业应用。
Vega的作者是Jernej Barbi?,一个MIT的年轻教授,他主页提供的图形学的相关课程也非常值得好好学习。
官网:http://run.usc.edu/vega/
环境:Ubuntu 12.04
VegaFEM最近发布了2.0版本,新版本增加了布料模拟,model reduction等新特性,建议直接下在最新版本。
下载好源码之后,解压,终端cd进入目录,直接make,过1分钟左右就编译好了。
源码中包含了一些例子,可以用刚才编译好的 interactiveDeformableSimulator 直接模拟。这个Simulator能够从配置文件中读取初始化参数,加载模型,加载单元并计算,最终用GLUT显示和交互。
我们可以来看看 sample 中的配置文件,了解每项的含义。
beam3_tet.config
File -> Export 导出一个 pillar.stl 模型,注意勾选ASCII选项,不然tetgen不认。
接下来要用 tetgen 来生成四面体网格,由于tetgen生成的文件并不是Vega所需要的 *.veg 文件,所有需要写个脚本来转换一下。
在tetgen目录下面
创建一个 generateVeg.sh
pillar.veg就是我们需要的。
下面就需要写代码了。
这个工程创建会有一点麻烦。
创建一个文件夹,里面创建一些文件和文件夹:
将vega 的所有头文件拷贝到 inc 文件夹中, 所有 *.a文件拷贝到lib中,main.cpp 内容如下: