问题标签 [vispy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
191 浏览

opengl - 在OpenGL中围绕对象边缘翻转法线

我正在使用vispy通过 OpenGL 渲染 3D 参数曲面。它似乎在大多数情况下运行良好,但看起来很奇怪

在几何体边缘周围的某些部分,几乎就像法线指向内部(示例)。

我怀疑问题出在我的片段着色器或表面法线上,尤其是在它们接近垂直于相机方向的区域。以下是顶点的创建方式:

片段着色器:

其余代码被分解为模块,但简而言之,这就是发生的事情:

  • MeshData顶点和面构成
  • 法线是在 MeshData 内部生成的,基于顶点位置和它们定义相应三角形的顺序
  • 创建并初始化画布和 OpenGL 窗口
  • 网格被绘制为三角形条带

有问题的部分可能是网格三角形的定义。例子:

它最初的目的是为二维函数z=f(x,y)生成三角形并且效果很好,但是在将它应用于参数曲面r(u,v) = [ x(u,v), y(u,v), z(u,v)]。例如,这就是参数v0变为-2pi而不是+2pi的原因(否则法线将指向内部)。

关于可能导致图像中出现故障的任何想法?

(或任何关于更好的三角形生成的建议?)

0 投票
1 回答
289 浏览

python - 如何从vispy中的点击点选择最近的标记?

vispy库中,我有一个显示为标记的点列表,我想更改最接近单击点的点的颜色(或仅获取其索引)。

我可以通过 event.pos 获得点击点的像素,但我需要它的实际坐标来与其他人进行比较(或获取其他标记的像素点来将其与事件位置进行比较)。

我有这段代码来获取最近的点索引。它需要输入一个数组和一个点(单击一个)

但问题是我必须在同一个坐标系中传递它们。打印出event.pos返回像素,如:[319 313]而我的位置,在pos数组中是:

所以我需要将其中一个转换为另一个。转型之类的

打印出[285 140 0 1]--->[ 4.44178173e+04 -1.60156369e+04 0.00000000e+00 1.00000000e+00]离点不远的地方。

0 投票
1 回答
169 浏览

python - 在 Vispy 中标准化可缩放时间序列图的比例

一般来说,我是 Vispy 和 opengl 的新手。我已将 realtime_signals 演示改编为我的数据集。我使用的数据是非平稳的,通常呈现出某种趋势。因此,放大数据通常效果不佳,因为漂移值会超出窗口。

我正在尝试将沿 y 轴的 min-max 归一化添加到示例代码中。这样,无论我的缩放级别是什么,数据都应该保持在窗口的中心。但是,我的解决方案产生了我无法解释的故障。

  1. 我究竟做错了什么?我正在“估计”opengl 外部的可见线选择,并将比例校正参数传递给 opengl 管道。然而,我得到明显的视觉故障以及扭曲的线条
  2. 在 vispy 中有没有更聪明的方法来解决这个问题?也许是解决片段着色器中的标准化或通过相机技巧的一种方法?
0 投票
1 回答
132 浏览

python - 是否可以控制gloo中各行的Line_Width(Python中的webgl)?

在带有gloo后端的VisPy中,通过3D坐标绘制的线条可以通过修改

一次,完全。

有没有办法使用类似颜色的数组来给出线条的宽度/厚度?我应该修改 gloo 还是可以使用某些命令设置 Line_Width?

0 投票
1 回答
165 浏览

python - 如何说服 visuals_at 超越 ViewBox?

我目前正在评估vispy我的交互式绘图需求。虽然它感觉有点像测试版,但我对它的速度印象深刻。从 API 设计的角度来看,它看起来很有希望。

我需要使用的一项功能是用鼠标选择绘图元素。分布 ( 0.6.4) 中的一个示例承诺准确地做到这一点:examples/demo/scene/picking.py. 不幸的是,它对我不起作用。

它显示一个包含多条线图的窗口。我可以与整个情节进行交互,即缩放和移动,但我不能选择单独的线条。

如果我对相关的代码进行猴子调试(打印语句是我的,完整的例子在 github):

<ViewBox at 0x...>无论我点击哪里,我都会得到。fig是一个没有很好记录vispy.plot.Fig的实例。

我怎样才能使这项工作,即visuals_at超越ViewBox并找到实际LinePlot实例?

0 投票
2 回答
652 浏览

python - 如何生成抛物面并使其响应事件

我是 vispy 和计算机图形学的新手。我必须根据某个方程生成抛物面,该方程的中心和参数根据用户输入而变化。我浏览了 vispy 文档和示例,并对软件包有所了解。

我需要生成的抛物面应该具有旋转对称性,如下图所示:

在此处输入图像描述

而我得到的是这里

在此处输入图像描述

我的代码如下。我已经修改isosurface.py了 vispy 示例中的示例。

我的查询如下:

  1. 如何使抛物面看起来像第一张图像(没有边缘被剪掉)
  2. 除了使用等值面之外,有没有更好的方法来绘制抛物面。抛物面的系数应该由用户改变。
  3. 如何使抛物面响应鼠标事件:悬停、拖放等。我从文档中了解到我必须将它耦合到 Node 类。由于我是新手,因此我无法弄清楚执行此操作的确切方法。

编辑:

matplotlib这是用于生成所需抛物面的相应代码。我还可以在 matplotlib 中创建一个抛物线带。

这导致以下结果: 在此处输入图像描述

vispy 和 matplotlib 的表面图之间的区别在于后者通过接受 x 和 y 的二维数组来工作,而 vispy 的 SurfacePlot() 只接受 x 和 y 中的一维向量。

由于柱坐标中的网格并将它们转换为笛卡尔坐标进行绘图,因此无法通过复制一维 x 和 y 向量来生成网格。

更新: 正如@djhoesem 所指出的,等值面不是执行此操作的正确方法。

0 投票
1 回答
1573 浏览

python - 如何使用 VisPy 库实时绘图?

我编写了一个用于模拟流行病演变的脚本(带有图表和散点图)。我尝试了几个库来实时显示结果(8 个国家 x 500 个粒子):

  • Matplotlib(不够快)
  • PyQtGraph(更好但仍然不够快)
  • OpenGL(很好,但我没有找到如何在 2D 中有效地使用它,使用子图、标题、图例......)
  • 散景(很好,但散点图每次变颜色时都会“闪烁”。如果您有兴趣,代码就在这里)

这就是我现在转向 VisPy 的原因。

我正在使用一个类Visualizer来显示结果,并使用app.Timer().connect管理实时端的方法。Pandemic代码在这里

与散景一样,每次粒子变色时,散点图都会“闪烁”。难道我做错了什么?

是否有更有效的实时显示方式,可能使用 vispy.gloo 或 vispy.scene?(目前它比 pyqtgraph.opengl 慢)

0 投票
1 回答
288 浏览

python - 如何在 PyQtGraph 中设置 GraphicsWindow 位置?

使用 VisPy 库,可以通过以下方式设置画布位置:

有没有办法对 PyQtGraph 库做同样的事情?

0 投票
1 回答
128 浏览

python - vispy visual.HistogramVisual

离开examples/basics/visuals/graphy.py,我试图显示一个直方图但失败了:

然而文本视觉效果很好。我知道 histogramVisual 是网格的子类,但是我在 mesh.py 的源代码中没有看到任何有用的东西。我使用 wx 作为我的后端。

0 投票
2 回答
410 浏览

python - Spyder IDE 中的 VisPy

我是 VisPy 的新手,能够通过 Anaconda3 提示符运行示例vispy.test()spectrogram.py问题是当我尝试在 Spyder IDE 中使用它时。

不过,如果我这样做:

因此,现在正在使用PyQt5Spectrogram.py后端,并执行!但是我在执行时遇到了同样的错误vispy.test()

如果示例执行,我想测试可能不是那么重要......

无论如何,如何运行vispy.test()里面的 Spyder IDE?以及关于在 Spyder 中开发 vispy 代码的任何建议?