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
添加回答
舉報