问题标签 [python-moderngl]
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.
python - 进出 ModernGL 缓冲区的 Numpy 数组(使用 cv2 打开和保存)
我想要:
- 通过 cv2而不是 ModernGL 的
load_texture_2d方法从图像中打开纹理。 - 通过 cv2 而不是 Pillow保存生成的图像(在
write方法中)。
我目前有以下代码:
目前,当代码按原样运行时,不会保存任何图像。窗口只是挂起,没有任何反应。我不确定我的代码是否有问题或数据类型是否错误。
枕头代码(如果您取消注释)可以保存它,但请注意:虽然我可以从 Pillow 转换为 numpy 数组,但我不希望在我的用例中这样做。
澄清:窗口加载并显示图像结果很好,但没有在write方法中正确保存。
python - AWS Lambda:使用moderngl / glcontext时找不到libGL.so包
我已经尝试了很多类似问题的解决方案,但我发现它们不够具体或者它们已经过时(或者我可能不够敏锐!)
我正在打包一些 Python 代码以在 AWS Lambda 上运行,它使用了许多包,包括 Numpy、Pillow、moderngl 和 glcontext。我能够将 Python 包打包为层,并且可以导入所有内容,但一直遇到此错误:
它只是“libGL.so”,直到我将代码中的以下行从
至
基于此。
还:
从moderngl文档中我看到了这一行:
请注意,libGL.so 由后端动态加载。
我认为这是我理解这里发生的事情以及如何告诉 Lambda 寻找这个库的关键,但是我仍然无法让它工作!我尝试过更新函数中的环境变量,用 Docker 打包层,用包含 libGL.so 文件的代码打包一个 lib 文件,这样的例子不胜枚举。
如果有人可以通过向我指出解决方案或帮助我了解正在发生的事情来帮助我,我将不胜感激!谢谢!
完全例外:
python - Moderngl:带角度的投影照片
我正在尝试以某个角度投影照片。
如果照片是在相机直视前方时拍摄的,则相机角度 ( yaw, pitch, roll) 都为零。
现在让我们说相机有点向上看,假设用pitch=1 radians,那么照片实际上是在捕捉梯形而不是矩形:
现在让我们来看看代码——这是一个简单的程序,它使用moderngl-window 投射没有角度的照片:
当你运行这个程序时,你会看到这个窗口:
现在,如果我们编辑render函数以添加角度:
那么投影的照片仍然是矩形的(只是纵横比发生了变化)而不是梯形。
我错过了什么?
python - 在 macOS Big Sur 上运行 simple_3dviz 脚本得到modernGL错误
我尝试运行simple_3dviz脚本,但总是收到以下错误:
我已经安装了PyOpenGLand PyOpenGL-accelerate,但错误仍然存在。
我的 Python 脚本:
python - 如何在执行其他脚本/功能时调整窗口大小/移动窗口?现代gl窗口和pyglet
我的目标:
编写一个类,在创建窗口后绘制一些东西,并且vao.render(mode=moderngl.PATCHES)仅在update()调用方法时使用,以便更新动态 VBO。imshowmatplotlib 太慢了。
问题:
基于这些 Github 问题#114、#216和这个例子,我创建了一个没有run()方法的自定义窗口设置。相反,顶点数组对象(VAO)是类的实例属性,在类初始化时会渲染一次。然后使用一个update(inputs)方法来改变一个动态顶点缓冲对象(VBO),也是一个实例属性,通过使用self.vbo.write(inputs)和重新渲染VAO,然后swap_buffers()调用。
但是当其他 python 代码正在运行时,我无法调整窗口大小/移动/关闭窗口。
问题:
有没有一种简单的方法来“解决”这个问题?
到目前为止我所做的
以 matplotlib.pyplot.show() 为灵感,虽然最终掺杂了这个想法,但我创建了一个字典作为类属性。
对于从我的类创建的每个新对象,int都会添加一个 distinct 作为该字典的键,相应的值是对象本身的别名。
然后我创建了一个静态方法,render()它无限期地打开这个类的所有对象,直到最后一个被关闭。
问题是它有点反应迟钝......
下面是我编写的想法的示例:
编辑1:上面的代码确实有效。对于单个或多个对象。但该myViewerClass.show_all()方法似乎有点滞后。操作一个窗口(例如调整其大小)后,其他窗口开始闪烁。单击它们后闪烁停止。
并且点击某个窗口的关闭按钮后,如果有多个窗口打开,它会冻结而不是关闭,而其他窗口继续运行。假设我最初有 3 个窗口打开和关闭其中两个,它们冻结,但第三个继续工作。只有在关闭第三个窗口后,所有窗口才会同时关闭。
python - 哪种算法可以对具有奇异性的代数曲面进行三角化?
我想用 Python 编写一些软件来可视化具有奇异性的隐式代数曲面(比如 Barth Sextic,例如)。我正在考虑在 Python 中计算原始三角形,然后将它们提供给通过 ModernGL 连接的着色器用于输出图形。
由于我发现的大多数文献都很古老,我在这里问的是,具有奇异点的代数曲面三角化的最先进算法实际上是什么?我对该主题了解不多,但我了解到该标准Cutting Cube可能Marching Method行不通。




