构建复杂模型

大家写MPM模拟的时候,在初始化粒子的位置的时候,对于一些复杂形状的问题,有什么好的解决办法吗?

我们通常会先定义一个三维场mask,其中 mask[i, j, k] 为1代表此处有物质,为0代表空气。
然后我们遍历这个mask,如果 [i, j, k] 处为1,则生成n个位于:((i + ti.random()) / res, (j + ti.random()) / res, (k + ti.random()) / res) 的粒子(这里n的大小决定了粒子分布的密度)

使用了mask的好处:不论是球体,方块,只需在外面提前初始化好这个mask即可,而不需要单独去给每一种形状写一个kernel了。
对于OBJ格式网格模型,可以参考 taichi_elements 的 voxelizer模块,他可以把OBJ模型转换成mask,从而应用于粒子的初始化。

这里是我个人的相关实现,希望有所帮助:

3 Likes

导入到taichi的GUI的数据必须要经过归一化处理才行吗?

请问对于复杂的边界如何处理?例如地形

你用taichi做滑坡分析吗?

是的,想做三维滑坡,水沙耦合。但是对三维地形的创建不太清楚。