用Python编写的框架,用于在笛卡尔空间中可视化/动画粒子。

3
我有代表多个时间步长的粒子位置数据,需要创建动画来展示这些粒子的运动。
是否有任何框架或工具包(最好是基于Python),可以直接做到这一点,或者至少有些东西可以快速绘制sprites/3d-objects并在多个时间步骤中进行动画处理?
对于第一阶段,简单的2D动画就足够了。但是我希望有扩展选项,支持3D和用户交互(更改视图、动画控制、将动画导出到文件等)。
只是为了澄清,我不是要渲染复杂的场景。像以下这样的东西就可以:

sample output

这个图片是一个类似数据集单帧的屏幕截图。

1
我知道一本叫做《Python数据可视化入门》的书可能会对你有所帮助。但是我自己不了解Python可视化方面的知识,抱歉。 - Niels Bom
2
“...我需要在接下来的几个小时内有一个运行中的东西....” - 不太可能。 - duffymo
@duffymo 我猜想可能是这样。我还是冒险问一下,以防有一个轮子可以使用。 - Shawn Chin
(无关)奇怪的是,我的pyglet链接在@Hansmukh的编辑后消失了,但差异并没有捕捉到。S.O的bug?还是隐形手的有意删除? - Shawn Chin
根据使用情况,为什么不使用matplotlib并循环遍历每个时间步,并保存图表的.jpeg文件。然后将文件组合成.gif文件,请参见:https://pythonprogramming.net/matplotlib-3d-scatterplot-tutorial/ - Maeaex1
5个回答

4

Pyprocessing 是一个处理 processing Java动画库的Python程序。processing开发环境包含了一些非常好的实现粒子系统的示例。


2
我相信你指的是这个pyprocessing:http://code.google.com/p/pyprocessing/。我以前曾经尝试过Java版本,但现在已经忘记了。非常适合用来实现初始原型! - Shawn Chin

2

使用Houdini进行3D动画

Side Effects Software的Houdini是一款业界级别的3D动画应用程序,具有出色的Python绑定、Python表达式和通用支持。您可以轻松地导入数据,甚至在应用程序中使用Python shell进行调试。

导入数据后,您可以利用完整的动画和可视化工具以及出色的捆绑渲染器“Mantra”。

还有一个免费的"Apprentice"版本,几乎没有任何限制,并提供各种付费许可证级别。


谢谢。看起来这是一个非常成熟的工具,但也许对于我所需的有点过重了。我会更新问题,并提供一个样本输出。 - Shawn Chin
顺便提一下,Maya 也有相当不错的 Python 支持,但对于程序员来说,整个程序比 Houdini 更加受限制。 - Ian Mackinnon

2
我们使用了pyOGRE,它是连接到OGRE库的Python绑定。OGRE描述自己为:
“什么是OGRE?OGRE(面向场景的灵活3D引擎)是一个基于C++编写的灵活的3D引擎,旨在使开发人员更轻松、更直观地制作利用硬件加速的3D图形应用程序。该类库抽象了使用底层系统库(如Direct3D和OpenGL)的所有细节,并提供了基于世界对象和其他直观类的接口。”

2
在二维情况下,为什么不使用matplotlib来绘制模拟帧的散点图呢?
例如:
import numpy as np
import matplotlib.pyplot as plt

# Just some sample data but I'm assuming that you 
# can get your data into vectors like this.
x = np.random.randn(100)
y = np.random.randn(100)

plt.figure()
plt.plot(x,y, '.')
plt.savefig('frame0000.png')

您可以从这些帧中制作视频。
至于3D - 您可以尝试使用matplotlibmlabmplot3D。 根据我的经验,mlab有点难以启动。 如果您需要更多关于使用matplotlib的帮助,请在此帖子下留言。

http://www.scipy.org/Cookbook/Matplotlib/mplot3D http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/mlab.html


谢谢dtlussier。这将是对我目前拥有的东西的改进。然而,我提出这个问题的原因是因为我渴望为数据添加一些交互性——允许用户深入特定区域并暂停/重播/减速等。这显然需要比“几个小时”更多的工作,因此在短期内,我需要确保我使用的技术能够支持这些要求。 - Shawn Chin
你的数据目前是什么格式?我在 Paraview 中进行粒子可视化。它绝对提供了你要寻找的交互类型,以及许多其他的可视化功能。如果你感兴趣,我可以私下发送一些信息给你,帮助你入门。 - dtlussier
数据目前以XML格式存在,将其转换为其他格式应该很容易。Paraview似乎是我们应该考虑的长期解决方案。我们有用户并行运行代码,能够在不必先聚合数据的情况下可视化分布式数据将是非常好的。我的电子邮件是shawnchin(AT)gmail。非常感谢! - Shawn Chin

1

看一下PyODE。这将有助于物理部分。至于图形,你需要自己解决。


谢谢。我已经发现了那个,但是我不需要一个物理引擎。我正在处理一个仿真程序,它完成所有的“聪明部分”,并在每个时间步之后输出每个粒子的位置。现在我正在尝试以合理的格式显示这些原始数据。 - Shawn Chin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接