gpt4 book ai didi

python - Python 中的简单 3D 图形

转载 作者:行者123 更新时间:2023-12-05 04:52:04 25 4
gpt4 key购买 nike

我在一个项目中工作,其中 3D 可视化对于查看设置阶段发生的事情非常重要,并且可能通过制作有关发生的事情的短视频进行视觉验证。

我遇到的问题是 Python 中的 3D 可视化过于复杂,难以满足我的需要。我发现 Mathematica 是一种完美的软件...但它不可移植且非常昂贵。

问题

有没有类似Mathematica的Python包?

澄清

我不想要一个“绘图”程序,因为绘图不是我要找的。我想生成简单的几何形状,比如可以四处移动的球体和立方体,这已经足够了。提供一些坐标,也许是一个旋转,程序只显示所需的图像以导出为 .png 或制作一个快速视频;就像在 Mathematica 中一样。

Pygame、Panda3D、Pyglet 等软件包,对于我需要的东西来说看起来过于复杂和矫枉过正,还有 Blender 等软件。Jupyter notebooks 类似,但它们没有 3D 图形功能。我找到了一个名为 Fresnel 的 Python 模块,但它看起来过于复杂,无法满足我的需求。

我已经在 Stack Overflow 中阅读了这个问题的几个答案,但它们似乎已经过时,并不是我真正想要的。

进一步说明

要在 Mathematica 中绘制球体,您需要:
coordinates = Flatten[Table[Table[Table[ {i,j,k}, {k,1,10}], {j,1,10}], {i,1,10}],1]
spheres= Flatten[Table[Graphics3D[{Sphere[coordinates[[i]],0.5]}],{i,1,Length[coordinates]}]]
Show[{spheres}]

这是显示一组球体的简单快捷方式。要使用 Python 中的任何程序来做同样的事情,似乎您必须是 3D 图形方面的专家才能完成这个简单的事情。

具有使用 Python 脚本功能的程序,如 Blender,很难以直接的方式使用界面(尝试在 Blender 中做同样的事情,学习基础知识需要一段时间!)。

最佳答案

除了 matplotlib,我还知道其他几个用户友好的绘图库,但提供交互式 View 的并不多。当然还有众所周知的vtk但它不适用于最终用户

密谋

要在笔记本中使用,例如 jupyter 和 mathematica,您可能会选择 plotly它使用基于浏览器的界面,其绘图与 Mathematica 非常相似

plotly 3D plot example

pymadcad

如果您需要更离线的版本并且您正在寻找的是一些可以旋转/缩放/平移以从不同侧面查看几何体的 View ,您可以查看pymadcad它甚至适用于触摸屏。它不以 3D 可视化为中心,因此仅将它用于它有点矫枉过正,但是对于您所说的 3D 曲线、3D 曲面、球体和立方体,它可以胜任

使用 pymadcad 的简单绘图:

from madcad import *
from madcad.rendering import Displayable
from madcad.displays import GridDisplay

# create a wire from custom points
s = 100
mycurve = Wire([ vec3(sin(t/s), cos(t/s), 0.1*t/s)
for t in range(int(s*6*pi)) ])

# create a sphere
mysphere = uvsphere(vec3(0), 0.5)

# display in a separated window
show([
mycurve, # displaying the curve
mysphere, # displaying the sphere
Displayable(GridDisplay, vec3(0)), # this is to have a 2D grid centered on origin
])

结果:result window(窗口是黑色的,因为我的系统主题也是如此,但它可能会适应你的)

关于python - Python 中的简单 3D 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66610213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com