taichi
taichi
beidou111
研究图形学流体仿真。个人学习笔记,仅作记录,侵权必删。曾经是搞CFD流化床生物质的。现北航计算机博士生在读。联系请发邮件。私信不看。邮箱:li_cl@foxmail.com
展开
-
taichi写出ply序列的最小化例子
taichi写出ply序列的最小化例子。原创 2023-03-01 01:00:23 · 235 阅读 · 0 评论 -
【taichi】寻找正确镜头位置的方法
最后在最开始设定得到的正确位置即可。移动相机,找到正确位置后,使用。原创 2023-02-13 10:21:57 · 201 阅读 · 0 评论 -
【taichi】使用snode来指定内存布局和稀疏数据结构
【代码】【taichi】使用snode来指定内存布局和稀疏数据结构。原创 2022-11-27 02:14:04 · 414 阅读 · 0 评论 -
【taichi】在taichi中使用shape作为循环大小
这里其实不是要去建议用邪典的写法,只是突然发现这种写法也能用。当然,最主要的是掌握pos.shape[0]这样的小技巧来获取taichi field的shape。因为pos.shape返回的是个元组,把它转换为数值才能用。其实还有一种邪典用法,就是用c++的写法去写taichi。对于C++选手来说,很熟悉的用法是。对于python选手来说,通常采用。或者直接用struct for。为啥要用shape[0]呢?原创 2022-11-26 23:54:30 · 556 阅读 · 0 评论 -
【taichi】在太极中画出规整的网格
代码】【taichi】在太极中画出规整的网格。原创 2022-07-27 14:39:17 · 141 阅读 · 0 评论 -
【taichi】用最少的修改将太极的pbf2d(基于位置的流体模拟)改为pbf3d
效果展示(最外层的浅蓝色是ffmpeg造成的,请忽略)代码本身就写得很维度无关。更改的时候只需要注意以下几个要点:技术总结如下3d的,要么用GGUI(参考mpm3d_ggui那个例子),要么采用2d渲染3d(参考mpm3d那个例子)。所谓2d渲染3d其实就是自己做MVP变换(模型、视图、投影变换),这点直接复制mpm3d例子中的T函数即可把3d的粒子坐标投影到2d屏幕上。所有出现ti.Vector([0.0, 0.0])的地方显然要改成ti.Vector([0.0, 0.0, 0.0])。同理ti.gr原创 2022-07-04 01:16:33 · 506 阅读 · 0 评论 -
将pbf改为3d时数据结构的问题,ti.root.dense和ti.field太极构建4维数组的方法,元组的连接
原本的代码(pbf2d.py)这里grid_size是个元组,可以认为是(32,32)max_num_particles_per_cell是个常数,认为是100这里面其实就是声明了两个数组grid_num_particles和grid2particles假如我们想把它改为3维的。这时候grid_size=(32,32,32)这时候grid_num_particles这个变量只需要一点点变化grid_snode = ti.root.dense(ti.ijk, grid_size)也就是把ti.ij改为t原创 2022-07-03 23:24:39 · 300 阅读 · 0 评论 -
taichi常见简单报错BUG和应对之策总结
(不断更新)1报错TypeError: unsupported operand type(s) for *: ‘float’ and ‘SNodeHostAccess’源代码原因没有加@ti.kernel用了taichi的field,以及其相乘的运算,但是不是在taichi-scope里面。报错信息有误导性,实际上就是因为没有加@ti.kernel解决加@ti.kernel...原创 2021-12-05 10:15:13 · 4176 阅读 · 0 评论 -
taichi随时暂停运行
先定义一个全局变量paused,相当于FLAGpaused = ti.field(dtype=ti.i32, shape=())再把主循环包起来if not paused[None]: for s in range(100): step()原创 2021-11-17 15:49:07 · 261 阅读 · 2 评论 -
taichi获取鼠标位置
x, y = gui.get_cursor_pos()print(x, y)原创 2021-11-17 15:46:28 · 127 阅读 · 0 评论 -
taichi性能调优(程序运行计时)
打开开关ti.init(kernel_profiler=True)打印性能信息(放想要计时的代码后面)ti.print_kernel_profile_info('count')清空性能信息(放想要计时的代码前面,可不放)ti.clear_kernel_profile_info()原创 2021-11-16 16:57:41 · 280 阅读 · 0 评论 -
邻域粒子搜索算法
前一个博文里面写了大致的思想,即基于网格的邻域粒子算法。这里讲一下具体实现,采用的语言是taichi。1 数据结构定义什么样的数据结构决定了我们思考问题的方式。我们现采用较简单的一种方式:首先定义par2Cell,即给定粒子ID,可以索引到网格ID的哈希表。由于键是唯一的,所以很好定义par2Cell = ti.field(int, numPar)其次定义cell2Par,即给定网格ID,可以索引出所有在其内部的粒子。这个哈希表同一个键对应了多个值,因为同一个网格内部可以有多个粒子。这里我们采原创 2021-10-30 22:03:36 · 2095 阅读 · 0 评论 -
taichi debug方式总结
今天听了刘天添老师的课,总结一下taichi debug的方法1 ti.init的设置(开启debug mode)进行如下设置ti.init(arch=ti.cpu, debug=True, excepthook=True, cpu_max_num_threads=1, advanced_optimization=False)第一个表示用cpu第二个表示debug mode,意味着开启断言第三个表示使得报错更加美观第四个表示单核运行第五个表示关闭高级的编译优化如图为更美观的报错如图为一原创 2021-10-23 21:00:00 · 645 阅读 · 0 评论