有没有办法用Python绘制3D图元?

问题描述 投票:0回答:2

我想在 3D 绘图中绘制 3D 图元,例如球体、圆柱体和平面(面片),并且我希望能够交互式地旋转、平移和缩放场景。我想用 Python 来做到这一点。我习惯使用 Matplotlib 绘制 2D 图形,但我从未使用 Python 处理过 3D 图形。

有什么建议吗? 有教程链接吗? 有什么想法吗?

python 3d python-2.7 kde-plasma
2个回答
14
投票

如果您习惯了 matplotlib,那么 mplot3d 如果满足您的要求,可能是一个不错的选择。

还有VPython。这使您可以更自由地创建任意对象并操纵它们,但是,当然,需要学习更多内容。


0
投票

这个库 Glass Engine 可以提供帮助。它支持超过 40 个原语。 要安装它,只需

pip install glass-engine
。使用玻璃引擎

  1. 您可以使用以下代码来显示一个原语并与其交互:
from glass_engine import *
from glass_engine.Geometries import *

scene, camera, light = ModelView()

cone = Cone(radius=0.5, height=1)
cone.position.z = -0.5
scene.add(cylinder)

camera.screen.show()

然后你可以得到以下结果: cone display

您可以使用鼠标左键拖动来旋转,右键拖动来平移,滚轮滚动来缩放场景。

  1. 您可以使用以下代码来显示场景中的许多图元并与其交互:
from glass_engine import *
from glass_engine.Geometries import *

scene, camera, light, floor = SceneRoam()

geoms = \
[
    Sphere(radius=0.5)    , Cone(radius=0.5)        , Cylinder(radius=0.5),
    Box(Lx=0.7)           , Prism(radius=0.5)       , Pyramid(radius=0.5),
    Octahedron(radius=0.5), Dodecahedron(radius=0.5), Icosahedron(radius=0.5)
]

for i in range(len(geoms)):
    geoms[i].position.x = 2*(i % 3 - 1)
    geoms[i].position.y = 2*(1 - i // 3)
    geoms[i].position.z -= geoms[i].z_min
    scene.add(geoms[i])

camera.screen.show()

然后你可以得到以下结果: a lot of primitives scene

您可以使用 W A S D E C 在场景中漫游,鼠标右键拖动进行旋转,滚轮滚动进行缩放。

查看 Glass Engine 的完整文档:https://glass-engine-doc.readthedocs.io/zh/latest/index.html.

虽然是中文写的,但是你可以使用翻译器将其翻译成你的语言。

© www.soinside.com 2019 - 2024. All rights reserved.