Python中的简单三维图形

3

我正在参与一个项目,其中3D可视化对于查看设置阶段发生了什么以及通过制作短视频进行视觉验证非常重要。

我的问题是Python中的3D可视化对我所需的内容来说过于复杂和难以学习。我发现Mathematica是完美的软件...但它不可移植并且非常昂贵。

问题


澄清

.png

菲涅耳

进一步澄清

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图形专家才能做到这一点。

像Blender这样具备使用Python脚本功能的程序,很难以直观的方式使用界面(尝试在Blender中完成相同的任务,仅学习基础知识就需要一段时间!)。


2
vpython 是什么?请访问 https://vpython.org/ 了解更多信息。 - Epsi95
你能展示一下你想要的例子吗? - Alderven
Blender 可能过于强大,超出了您的需求。但就您所说的而言,即使是初学者也可以在几秒钟内在 Blender 中完成。 - Derek Eden
@Alderven,如果你需要的话,我已经提供了一个例子。先谢谢了。 - user14566958
忘记提了。Paraview也非常简单易用,并且可以使用Python进行脚本编写。 - Derek Eden
显示剩余5条评论
1个回答

2

我知道一些比matplotlib更加用户友好的绘图库,但是很少有提供交互式视图的。当然有众所周知的vtk,但它不是为最终用户设计的。

plotly

如果您需要在像jupyter和mathematica这样的笔记本中使用,则可能会选择plotly。它使用基于浏览器的界面,其绘图非常类似于mathematica。

plotly 3D plot example

pymadcad

如果您需要更多的离线版本,并且您正在寻找可以旋转/缩放/平移以从不同角度查看几何形状的视图,则可以查看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
       ])

结果:结果窗口 (窗口是暗的,因为我的系统主题是暗色的,但很可能会适应您的系统主题)

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