我想知道在VisPy中是否可能实现某个功能,或者我应该开始寻找其他替代方案。
这是我的情况-我正在撰写一篇关于狭义相对论中类似悖论的论文。我将编写一些Python脚本,生成随时间变化的有序三元组数组(3D空间中的点),其中“类似时间”的变量实际上是速度,但它会像时间一样计算。我需要为这些点制作动画,在简单情况下,这些点将形成杆、2D正方形和3D立方体,并且当然要生成.gif或类似的东西。
编程绝对不是我的长项,但我已经使用Python有一段时间了。我研究了VisPy,并喜欢它使用OpenGL功能,以及通常喜欢各种漂亮的示例(我可以让它们工作)。
我的问题是:VisPy是我需要做的最好的事情吗?我很难弄清楚如何使VisPy将单独的点变成3D对象等——我已经尝试过各种几何形状,例如create_cube,但似乎无法仅移动顶点。
如果有人有任何建议,请告诉我从哪里开始,或者Mayavi或其他工具是否更容易。
更新:我确实发现了如何制作一个非常漂亮(而且简单)的3D立方体轮廓,这正是我想要的。我仍然不确定如何使其动画化,因为使用VisPy进行动画的示例与此有很大不同。
请问是否有任何指导?在代码中,每一帧需要更新初始点数组(可以从脚本中导入或计算出这些点)。
这是我的情况-我正在撰写一篇关于狭义相对论中类似悖论的论文。我将编写一些Python脚本,生成随时间变化的有序三元组数组(3D空间中的点),其中“类似时间”的变量实际上是速度,但它会像时间一样计算。我需要为这些点制作动画,在简单情况下,这些点将形成杆、2D正方形和3D立方体,并且当然要生成.gif或类似的东西。
编程绝对不是我的长项,但我已经使用Python有一段时间了。我研究了VisPy,并喜欢它使用OpenGL功能,以及通常喜欢各种漂亮的示例(我可以让它们工作)。
我的问题是:VisPy是我需要做的最好的事情吗?我很难弄清楚如何使VisPy将单独的点变成3D对象等——我已经尝试过各种几何形状,例如create_cube,但似乎无法仅移动顶点。
如果有人有任何建议,请告诉我从哪里开始,或者Mayavi或其他工具是否更容易。
更新:我确实发现了如何制作一个非常漂亮(而且简单)的3D立方体轮廓,这正是我想要的。我仍然不确定如何使其动画化,因为使用VisPy进行动画的示例与此有很大不同。
请问是否有任何指导?在代码中,每一帧需要更新初始点数组(可以从脚本中导入或计算出这些点)。
import numpy as np
import vispy
import vispy.scene
from vispy.scene import visuals
from vispy import app
canvas = vispy.scene.SceneCanvas(keys='interactive', show=True)
view = canvas.central_widget.add_view()
# generate data
pos = np.array([[0, 0, 0], [0.5, 0.5, 0.5], [0, 0.5, 0.5], [0.5, 0, 0.5],
[0.5, 0.5, 0], [0, 0, 0.5], [0, 0.5, 0], [0.5, 0, 0]])
# These are the data that need to be updated each frame --^
scatter = visuals.Markers()
scatter.set_data(pos, edge_color=None, face_color=(1, 1, 1, .5), size=10)
view.add(scatter)
view.camera = 'turntable'
# just makes the axes
axis = visuals.XYZAxis(parent=view.scene)
if __name__ == '__main__':
import sys
if sys.flags.interactive != 1:
vispy.app.run()
ev.elapsed
来获取实际时间! - Paddy Harrisontimer.start(0.05)
,即一些小延迟时,这才对我有效。 - Julius