什么是用于创建(视觉上吸引人的)3D物理模拟/可视化的python程序的好库?
我看过 Vpython ,但我看到的模拟看起来很难看,我希望它们具有视觉吸引力。它看起来像一个旧图书馆。对于3D编程我已经看到了使用 Panda3D 和 python-ogre 的建议,但我不确定它是否真的适合精确模拟。另外,我更喜欢一个与其他库结合得很好的库(例如,pygame与其他库没有很好的结合)。
答案 0 :(得分:4)
与其他语言相比,对python的3D支持相当薄弱,但是对于大多数构建它们的方式,程序的外观比你想象的要多得多。例如,你谈到了Vpython,虽然他们的许多例子都没有视觉上的吸引力,但大多数也来自以前的版本,最新版本包括挤出,材料和皮肤,这些允许你定制你的外观比之前。
也许值得注意的是,根本不可能实时制作渲染质量的图像(周期是朝这个方向迈出的一大步,但它仍然不是那么完美)。我相信你在这里的大部分问题是你正在寻找技术现在根本无法做到的东西,但是如果你愿意承担使你的模拟看起来有吸引力的负担,Vpython(这是一个古老的版本PyOpenGL)可能是你最好的选择。下面是不同技术的演绎,如果你正在寻找更通用的东西:
Blender:最强大的python图形程序,但它是为图形设计和特殊效果而制作的,虽然它下面有非常复杂的物理运行,Blender并不是用于物理模拟。自包含。
Panda3D:一个经常与Blender比较的程序,但对游戏来说非常有用。游戏引擎比Blender更好用,但渲染质量要低得多,而且功能丰富。自包含
Ogre:一种在当天非常受游戏开发欢迎的库,具有许多强大的功能,尤其适用于创建游戏环境。事件处理也得到了很好的实施。可以与其他库集成,但有困难。
VPython:用于物理模拟的库,与其他方法相比,可以消除大量的纹理映射和渲染能力,但是这个功能仍然存在,因为VPython主要是由OpenGL构建的,OpenGL是最通用的图形库周围。因此,VPython也很容易与其他库集成。
PyOpenGL:用于Python的OpenGL。 OpenGL是最广泛使用的图形库之一,毫无疑问能够在这个列表中产生一些最好的视觉效果(除了Blender,它是一个自己的类),但是这样做并不容易。 PyOpenGL是非常简单的骨骼,虽然功能在那里,但它实现起来比其他任何东西都难。与其他图书馆一起玩,但前提是你知道自己在做什么。
答案 1 :(得分:2)
答案 2 :(得分: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。
如果您正在寻找的是场景图来移动几何图形,而不是本机vis,那么我已经看到了一些用于Open Scene Graph的python绑定,例如:http://code.google.com/p/osgswig/
祝你好运!
答案 3 :(得分:0)
从您的问题来看,目前尚不清楚您想要实现的目标。您是否要创建可用于在运行时控制模拟的独立应用程序,或者使用Python创建可以离线查看的模拟?
对于后者,您可以查看Blender,这是一个开源3D内容创建套件,其中包含一个python脚本界面,可以访问应用程序的大多数(如果不是全部)内部。 Blender带有一些可能有用的physics and particle libraries,并且作为应用程序指示用于制作电影视觉效果的软件类型等。
如果您想创建一个独立的应用程序来在运行时控制模拟,这很可能不是一个合适的选择。但是,如果你想制作一系列可视图像,可能值得一看。