问题标签 [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 投票
1 回答
812 浏览

opengl - Is possible to draw more than one object in vispy gloo?

I have been trying to render two objects at the same time, but I don't find the right way.

The way I'm proceeding is by creating two different position vector matrix "V1" and "V2" for being able to move them independently inside the timer callback.

Is that possible?, I have tried it in many ways but none of them worked...

0 投票
1 回答
99 浏览

debugging - 通过单位球体中心的平面在 OpenGL ES 2.0 中出现偏移

我正在使用 OpenGL ES 2.0 的 vispy 接口在球体上绘制一些海岸线数据。我正在使用纬度和经度值来计算球体上数据的 3d 坐标并绘制这些坐标。我能够成功地绘制数据,但我只想看到球体侧面的那些数据点,这些数据点可以从视口看到。

我尝试了两种完全不同的方法来创建这种效果,但都导致了同样的问题。首先,我计算了视图方向和数据位置的点积,并只绘制了那些结果为负的点(即仅那些面向视口的点),其次,我简单地绘制了一个通过球体中心的平面,垂直于查看方向。

在这两种情况下,我都观察到了相同的情况——平面似乎稍微偏离了视口,位于球体中心的后面。换句话说,您可以看到数据在球体被平面遮盖之前稍微环绕球体的背面。

我已经检查了我所绘制的点实际上是在单位球面上,我确信从 3d 世界的角度来看,一切都是正确的。作为 3d 图形的相对初学者,我不太自信的是,我是否误解了投影矩阵的某些内容。我已经阅读了一些内容 - 但我的理解使我认为投影不应改变“Z方向”(视口所面对的方向)上的点顺序。

我确信这不是深度测试问题,因为我的第一种方法没有启用深度测试,并且在顶点着色器中完成了遮罩(通过将片段颜色 alpha 设置为 0.0)。除此之外,我找不到任何其他解释这个问题。

这是平面方法的代码:

0 投票
0 回答
246 浏览

python - 当点/线从 OpenGL 中的 OpenStreetMaps 彼此非常接近时,在 VisPy 中渲染点/线

我正在尝试从 OpenStreetMaps 数据中呈现简单的线条。我使用墨卡托投影将我们得到的纬度经度转换为像素坐标,但 Opengl 无法渲染这么近的点。这些是我的一组观点。我可以用 vispy 渲染点,如果它们相距稍远但不远离这些点。例如,代码中的注释行会渲染这些点。那么有没有办法让视锥体对附近的数据敏感。

我们使用的代码来自 vispy 示例来渲染线(python),用于渲染线。

0 投票
1 回答
310 浏览

python - OpenGL 亮度内部数据类型

我正在创建一个 2D 纹理,并且对我的纹理实际存储的数据类型感到困惑。我的输入是一个 2D 32 位浮点数组,现在归一化为 0-1。我正在使用类似于以下的调用创建纹理:

并用类似这样的东西推送数据:

我知道,由于我使用亮度,数据被限制为 0 到 1 作为浮点数(这就是我对其进行归一化的原因)并且在 GLSL 中作为 vec4(L、L、L、1)提供给我。但是实际使用什么数据类型来存储该浮点数?它是否存储为单个 32 位浮点数,然后使其看起来像 GLSL 中的 vec4?

我问是因为如果我要切换到 GL_R32F 或类似的东西,我的纹理会占用与亮度相同数量的视频内存吗?有没有办法不将亮度数据从 0 钳位到 1。除了添加 alpha 来执行“填充”值(指示不应渲染纹素的值,如 NaN 或 -9999.0 之类的东西)之外,还有其他常见的方法吗)?

谢谢你的帮助。我正在使用包装 pyopengl 的 vispy python 包。

0 投票
0 回答
946 浏览

pyside - 使用 Python Qt 快速更新热图

我一直在寻找一种在基于 python 的 UI 中快速绘制大型热图的方法。过去,我使用了可用于 matplotlib 的 contourf、pcolor 和 pcolormesh 的后端。我没有使用 imshow,因为我的典型数据位于极平面(雷达)上。在 matplotlib 我会以下

我一直在研究 OPENGL 库,我喜欢用 vispy 目睹的温和介绍。归根结底,我想找到最简单的方法来定义一组 2D 顶点,并能够改变与它们相关的颜色,并填充其间的像素;以线性渐变或实心多边形方式。虽然我没有完全掌握纹理,但我可以想象定义许多三角形及其颜色,但这似乎效率低下。必须有一种直接的方法来定义点及其颜色,并在它们之间进行填充。

就像是

我为简短的代码道歉 - 来自电话,但我的目标是最终在这个线程中完成一个完整的课程,以帮助我自己和参与数据科学的其他人理解较低级别的图形以加速渲染。

提前致谢,如果我遗漏了文档中明显的内容,我深表歉意。

0 投票
1 回答
1233 浏览

python - 如何使用来自 kivy 的 glumpy 或 vispy?

我是glumpy(或相关的vispy)的粉丝,这是一个用于科学可视化的 python 框架。不幸的是,它没有太多的用户界面(按钮等)。我也是kivy以及它如何处理用户界面元素的粉丝。这两个框架似乎都有自己的绘图、窗口创建等例程。谁能指出我如何在同一个(桌面)应用程序中使用这两个工具的正确方向?

0 投票
2 回答
2142 浏览

python - 如何从 Vispy 中的屏幕坐标获取世界坐标

我不知道如何从屏幕坐标到世界坐标。我正在使用 VisPy,我想在 3D 中实现光线追踪和拾取能力。

我准备了一些基于多维数据集示例的代码。下面的代码通过改变 z 值通过屏幕发送粗射线并打印 3D 坐标(在 ''on_mouse_press'' 方法中)。然而结果并不正确。如果我单击沿射线某处的立方体的右上角应该打印(3,3,3),但事实并非如此。有人可以帮我吗?

0 投票
1 回答
1176 浏览

python - 来自 Anaconda 的 py2exe“没有名为“站点”的模块”

我正在尝试使用 py2exe 在带有 Anaconda(Python 3.4)的 64 位 Windows 7 上为我的一个依赖于许多库的项目构建可执行文件。一些更复杂的包括 vispy (pyopengl)、PyQt4、numba 和 scipy。我一直在逐步解决各种错误以尝试获得一个有效的可执行文件,但是遇到了一个没有明确前进方向的路障。目前,py2exe 命令已完成,但在运行 exe 时出现以下错误:

C:\Anaconda3\envs\sift_py2exe\Lib我可以通过在我的主脚本中添加目录来做一个小的解决方法sys.path,但我怀疑这对我以后会有帮助。更不用说在那之后我有更多的 scipy DLL 问题。

以下是我的 setup.py 的相关部分:

我尝试在 setup.py 中添加“Lib”目录,然后包含“site”,但它没有找到该模块。有任何想法吗?谢谢。

旁注:我使用来自 llvmlite 的 Microsoft DLL 作为快速解决方法,因为我无法让它以任何正常方式工作。

0 投票
1 回答
1652 浏览

matplotlib - 在 VisPy 中高效地绘制多条线

从我在 VisPy 库中看到的所有示例代码/演示中,我只看到人们绘制多行的一种方式,例如:

我的问题是我有很多线要绘制(每条线几十万点)。Matplotlib 太慢了,因为绘制的点总数为数百万,因此我切换到了 VisPy。但是,当您绘制数千条线时,VisPy 会更慢,每条线都有数千个点(当您有数百万个点时会加快速度)。

根本原因在于画线的方式。当您创建一个绘图小部件然后绘制一条线时,每条线都会呈现到画布上。在 matplotlib 中,您可以明确声明在内存中绘制所有线条之前不显示画布,但在 VisPy 中似乎没有相同的功能,使其无用。

有没有办法解决?我需要绘制多条线,以便我可以交互地更改属性,因此将所有数据点展平到一个绘图调用中是行不通的。

(我正在使用 PyQt4 将绘图嵌入到 GUI 中。我也考虑过 pyqtgraph。)

0 投票
1 回答
613 浏览

vispy - 在 VisPy 中删除行

如何从 PlotWidget 中删除视觉效果(例如线条)?

当您调用 plot() 时,我尝试从 PlotWidget 添加 Line 对象的任何地方显式删除 Line,但这不会改变显示画布上的任何内容。