taichiVisTools: 用于太极调试的可视化小工具(用鼠标框选粒子,可视化稀疏网格,矩阵检查器等)

大家好,

由于在写仿真的代码的时候,常常会希望有可视化的调试工具。比如用鼠标框选粒子,可视化稀疏网格,矩阵检查器等…这对我们调试代码很有帮助。于是我就打算开发一套完全基于GGUI之上的小工具。

开发的进度可到这个issue上跟踪
[RFC] Visualization utilities for debugging · Issue #7853 · taichi-dev/taichi (github.com)

Repo放在这里了:
chunleili/taichiVisTools (github.com)

希望实现的功能包括:

  • 粒子拾取器: 用鼠标框选得到粒子的id并且高亮。
  • 稀疏网格可视化:用线框小方块表示稀疏网格的是否被占用。
  • 矩阵检查器:检查矩阵的大致分布情况和异常值。

例子

粒子拾取器

运行

python selector.py

拖动鼠标左键画出框框

按i打印粒子的id

Outpus:

[   85   606   692   871  2478  2663  2013  3075  2911  3054  3600  4255
  5260  5521  5582  6259  7191  7722  7066  7122  8771  8820 10765 10446
 10902 10999 11857 11086 11087 11964 11991 11321 13118 14111 14112 15101
 16390 16050 16056 16935 16278 16278 17156 16878 17800 17860 19085 18708
 18781 18782 20046 20049 21030 21068 22135 23214 24166 24167 24168 24202
 25081 26818 26051 26933 26934 26935 26936 28192 29099 29919 31261 30924
 30978 30979 30403 31962 32144 32145 32146 32147 32148 32149 32457 32824
 32897 32898 32604 32899 33564 32900 33565 32901 33566 33564 33567 32960
 33611 33567 34438 33032 33775 33776]

API使用方法:首先实例化一个Selector,然后在渲染循环中调用selector.select()来进行框选和高亮, 最后想要获取id的时候使用selector.get_ids()即可。

用例代码如下

# 首先初始化一个拾取器
selector = Selector(camera, window, particle_pos)

while window.running:
  #select the particles in the rectangle when dragging the mouse
  selector.select() 

  #clear the selection when press "c"
  if window.is_pressed("c"):
      selector.clear()
  
  #print the selected particle ids when press "i"
  if window.is_pressed("i"):
      print(selector.get_ids())
  
  #draw the selected particles in red
  scene.particles(particle_pos, radius=0.01, per_vertex_color=selector.per_vertex_color)
3 个赞

增加了个发射光线的小功能,可以玩玩(dev分支),点击屏幕就能发射射线(暂时以100个等间距粒子表示)。类似于FPS游戏那种。

1 个赞