2 回答
TA贡献1828条经验 获得超4个赞
我是 vispy 的维护者,但对等值面的经验很少。让我们看看我能回答什么:
我看到的最简单的方法是让它
levels
变得更小(我将其设为零以进行测试)。我不确定这会如何影响性能或输出,但该isosurface
函数提到了它所基于的论文。也许这可以告诉你更多。
See Paul Bourke, "Polygonising a Scalar Field" (http://paulbourke.net/geometry/polygonise/)
为了使参数可由用户控制,您可以对现有的 Isosurface 类进行子类化并添加属性来控制这些。但是,如果您想要立即获得反馈,这可能会表现不佳,因为您必须重新生成 numpy 数组并在 CPU 上重新运行所有其他计算。IsosurfaceVisual 类需要体积数据,然后将其转换为等值面。它生成 MeshVisual 可以理解的网格(IsosurfaceVisual 是 MeshVisual 的子类)。如果你想要更好的东西,你可能不得不编写自己的着色器代码来做到这一点。取决于您的确切要求是什么(您是否必须接受任何具有可控系数的公式?)。
scene.visuals
Visual 类已经是该类的子类,因此Node
您不必在那里做任何额外的事情。其他基于 SceneCanvas 的示例应该让您了解如何处理鼠标事件。就是说,您提到了“拖放”,我不确定您是否会在 VisPy 领域处理,但更有可能在 PyQt5 领域(如果这是您使用的后端)。
TA贡献1847条经验 获得超11个赞
通过拉取请求添加了该功能:https ://github.com/vispy/vispy/pull/1863#event-3344873987
对代码进行了小幅修改并解决了问题。
相应的示例可以在这里找到: https ://github.com/vispy/vispy/blob/master/examples/basics/visuals/axisly_symmetric_surfaces.py
添加回答
举报