请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 706|回复: 6

写了一个基于fem的柔体模拟 [复制链接]

Rank: 12Rank: 12Rank: 12

注册时间
2016-3-13
积分
643
发表于 2017-5-5 11:53:56 |显示全部楼层
终于抽出点时间写了一个简单的柔体模拟器。算是自己几年PHD生涯的一点成果。 分享给大家。希望能有所帮助。一些特性:
1,简单,self-contained. 不用连接什么外接库。
2, Invertibale FEM. 跟其他库只支持C3D4不同,只要实现相应的shape func 和 shape func derivative就可以支持任意solid Finite element. 暂时只写C3D4, 其他的以后慢慢再加。
3, 碰撞检测。 DCD和CCD都支持。
4, 碰撞反应。contact 和 friction 都支持。 实现的是 implicit contact handling of deformable objects. 这个找了好久,都没有找到,就自己写了。

一些代码直接copy的 vega fem, Febio, el topo。这些都是很优秀的开源库。但是找不到 一个完整的能直接用来模拟的库。vega fem 没有碰撞检测和反应。 febio 不支持ccd也太复杂。 el-topo没有simulation。
还有一个 库叫cubica, 很不错。但是碰撞似乎是用的penalty.

还没来得及写comment. 大家先将就看看。以后一些feature 和comment 再加上去。
编译很简单,用qt creator 打开就好。不需要连接什么其他库。一些第三方库如eigen 和 libigl都是header only, 也包含进去了。运行后按空格就可以模拟一个torus 掉在地上。
如果大家觉得有什么feature是特别想加进去的。请告诉我,有时间和能力我会来实现下。

https://github.com/nydragon/zxDeform

Rank: 12Rank: 12Rank: 12

注册时间
2016-3-13
积分
643
发表于 2017-5-5 11:58:15 |显示全部楼层
我是在ubuntu上面开发的。也不知道windows下会不会有问题。但是文件组织很简单。所有文件都在src里,根目录里是用qt写的gui, eigen 这些在third-party 里。 直接添加再设定下路径应该就好。

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2010-3-27
积分
5844
发表于 2017-5-8 09:50:44 |显示全部楼层
欢迎大神参与,能将理论变成产品(代码)。我碰到的大多数计算机“大神”都只喜欢谈理论,见不到它们的代码。
咨询个问题:vega中关于Model Reduction的代码大致在哪个文件?自己找太花时间

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2016-3-13
积分
643
发表于 2017-5-8 15:04:22 |显示全部楼层
ljb 发表于 2017-5-8 09:50
欢迎大神参与,能将理论变成产品(代码)。我碰到的大多数计算机“大神”都只喜欢谈理论,见不到它们的代码 ...

reducedElasticForceModel, reducedForceModel, reducedStvk

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

注册时间
2010-3-27
积分
5844
发表于 2017-5-10 16:34:53 |显示全部楼层
谢谢,看下再来咨询。

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2016-3-13
积分
643
发表于 2017-5-17 23:31:09 |显示全部楼层
update:
1, 加入了对C3D10的支持,并实现C3D4 到C3D10的转换。
2,实现了基于augmented lagrangian method 的 face to face contact。 这其实是基于febio的一个简化。适合对精度要求较高的continuum mechanics,暂时只支持静态模拟。其实LCP方法不适合用于高精度计算,因为模拟很难收敛,只是速度较快,所以适用于visual effects 或 game。

所有代码都还没有加comments,大家有什么疑问可以直接问我。等大部分feature实现后我会加上comments的。

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2016-3-13
积分
643
发表于 7 天前 |显示全部楼层
update:
1, 加入了对六面体(C3D8)支持。
2, 实现基于augmented lagrangian method 对ccd和dcd的contact solve. 这个跟之前的不同,精度要求低,模型线性化简化成了quadratic problem。相比lcp更简单,因为实际上的实现就是一个penalty based method。适合于多种力的模型。
3,加入了reduced model。 这是一个基于cubature的模型。 contact handle 是基于augmented lagrangian method。

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-5-27 04:47 , Processed in 0.054402 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部