6

有哪些好的库可以为(视觉上吸引人的)3D 物理模拟/可视化创建 Python 程序?

我看过Vpython,但我看到的模拟看起来很丑,我希望它们在视觉上很吸引人。它也看起来像一个旧图书馆。对于 3D 编程,我看到了使用Panda3Dpython-ogre的建议,但我不确定它是否真的适合精确模拟。另外,我更喜欢与其他库结合良好的库(例如 pygame 与其他库的结合不太好)。

4

4 回答 4

4

与其他语言相比,对 python 的 3D 支持相当薄弱,但是由于大多数语言的构建方式,程序的外观比您想象的要多变。例如,您谈到了 Vpython,虽然他们的许多示例在视觉上并不吸引人,但其中大部分也来自以前的版本,最近的版本包括挤压、材料和皮肤,这使您可以自定义外观,比前。

还可能值得注意的是,根本不可能实时制作渲染质量的图像(周期是朝这个方向迈出的一大步,但还不够)。我相信您在这里的大部分问题是您正在寻找技术现在根本无法实现的东西,但是如果您愿意承担使您的模拟看起来具有视觉吸引力的负担,Vpython(这是一个经过修饰的版本PyOpenGL)可能是你最好的选择。不过,如果您正在寻找更通用的东西,下面是对不同技术的总结:

Blender:可用的最强大的 python 图形程序,但它是为图形设计和特殊效果而设计的,虽然它下面运行着非常复杂的物理,但 Blender 不是为物理模拟而设计的。自成一体。

Panda3D:一个经常与 Blender 相比的程序,但主要用于游戏。游戏引擎比 Blender 更好用,但渲染质量要低得多,功能丰富性也是如此。自给自足

Ogre:一个在当时非常流行的游戏开发库,具有许多强大的功能,尤其是用于创建游戏环境。事件处理也得到了很好的实现。可以与其他库集成,但有困难。

VPython:一个用于物理模拟的库,与其他方法相比,它消除了很多纹理映射和渲染能力,但是这种能力仍然存在,因为 VPython 主要是从 OpenGL 构建的,OpenGL 是最通用的图形库之一. 因此,VPython 也很容易与其他库集成。

PyOpenGL:用于 Python 的 OpenGL。OpenGL 是使用最广泛的图形库之一,毫无疑问,它能够在这个列表中产生一些最好的视觉效果(除了 Blender,它是它自己的一个类),但是要做到这一点并不容易. PyOpenGL 非常简单,虽然功能已经存在,但实现起来却比其他任何东西都难。非常愿意与其他库一起玩,但前提是您知道自己在做什么。

于 2012-06-02T04:49:04.417 回答
2

如果我需要 python 的可视化包,我会从 Processing.py 开始: https ://github.com/jdf/processing.py

这是基于 java 的 Processing.org 代码的 python 绑定。可以在这里找到快速比较: http ://wiki.processing.org/w/Python_Comparison

当然,如果你不局限于 python,那么 Processing 本身也是一个很好的起点: http: //processing.org

也有用于 Visualization Toolkit (VTK) 的 python 绑定,但它们的大多数示例都是 C++ 或 Tk。

如果您要寻找的只是移动几何图形的场景图,而不是原生可见,那么我已经看到了一些用于 Open Scene Graph 的 python 绑定,例如:http ://code.google.com/p/osgswig/

祝你好运!

于 2012-05-08T17:30:05.967 回答
2

尝试PyOpenGL。它是一个通过 Python ctypes 库为 OpenGL 提供 Python 绑定的库。

这是一个演示:

PyOpenGL 棒球演示

于 2012-05-07T21:53:13.797 回答
0

从您的问题来看,尚不清楚您想要实现什么。您想创建一个可用于在运行时控制模拟的独立应用程序,还是使用 Python 创建一个可以离线查看的模拟?

对于后者,您可以查看Blender,这是一个开源 3D 内容创建套件,其中包括一个 python 脚本接口,可以访问应用程序的大部分(如果不是全部)内部。Blender 附带了一些可能有用的物理和粒子库,作为应用程序,它指示了用于为电影等制作视觉效果的软件类型。

如果您想制作一个独立的应用程序来控制运行时的模拟,这很可能不是一个合适的选择。但是,如果您想制作一系列可视图像,则可能值得一看。

于 2012-05-07T23:59:21.253 回答