Pygame水波纹效果

2024-03-25

我已经用 Google 搜索过它,但没有现成的脚本 - 与 Flash 上的相同效果相反。我已经检查过算法水效应解释 http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/the-water-effect-explained-r915并还测试了柏林噪音 http://twistedmatrix.com/users/acapnotic/wares/code/perlin/,它很好地模拟了平坦表面上的波浪末端。我正在寻找基于鼠标悬停/悬停操作的几个 Flash Effects 上的相同实现。这是针对交互式楼层库,我希望在这个问题上远离 Flash,特别是为了避免如此简单的代码逆向工程 - 是的,我知道它可以只使用一些现成的 Flash 代码,但我只会将其作为最后的手段。

有没有人见过 Pygame 的这种效果的合适实现(是否使用 OpenGL)?

EDIT: 任何人都可以使用 OpenCV/OpenGL 和 Pygame 提供此效果的合适实现吗?

这里的罪魁祸首是(代码)接口,用于传递将从外部解释器(跟踪器 - 但不是 TUIO)通过 Python 发送的值列表。我已经尝试了好几天,但 Pygame 无法像纯粹的 C/C++ 代码(如用于 OpenGL 中的着色器)一样快地生成任何内容,而且我对 C/C++ 的了解为零。因此,我们的目标是至少从 Python 代码中获得这些内容。

一个很好的例子,与 Flash 效果不同,但仍然很好是使用 Java 小程序进行水模拟 http://neilwallis.com/projects/java/water/index.php.

(赏金显示答案没有足够的细节,因为这最接近“OP 无法创建他想要的代码,因为他缺乏基本技能,这个答案可能对几个人有用”)。


在做完作业(又名研究)并尝试将问题上发布的 Java 代码参考直接转换为 Python 后,在尝试让 Python/Numpy 根据像素颜色的位置更新巨大的像素颜色数组时,经历了非常非常悲伤的经历涟漪效应的涟漪(抱歉,我的第一语言不是英语),因此为效果计算的每次传递解析几个(x,y)位置并将其传输到屏幕上的显示表面(随后出现surfarray),我得出的结论——得到了其他评论者的支持——Pygame 只是won't足够强大,能够实际遍历整个像素阵列并将计算结果以至少 24 fps 的速率应用到屏幕上的每个像素(对于低于平均水平的体验)。

引用背后的开发者的话最后的光芒制作公司 http://www.cs.unm.edu/~imallett/site/和前者几何工程 http://geometrian.com/programming/projects/index.php,伊恩·马利特:

PyGame 不太适合像素推送。除了 GPU 之外,什么都不是。

然后搜索结果是搜索Alkahest http://en.wikipedia.org/wiki/Alkahest- 一些东西永远不会被真正找到 - 并且基于波纹图像的相同想法,但这次通过使用透明度来看穿Pygame 表面的几层,我发布了问题Pygame 圆形裁剪/遮罩 https://gamedev.stackexchange.com/questions/18923/pygame-circular-cropping-masks关于游戏开发。这选择的答案 https://gamedev.stackexchange.com/questions/18923/pygame-circular-cropping-masks/18941#18941实际上证实了我已经担心 Pygame 永远不会成为现实的事实macho足以胜任这份工作。

一天后,我回到之前的开发思路,发现Ogre3D http://www.ogre3d.org/。事实证明,(1) Ogre3D 和示例是开源的,(2) 其中一个示例是与移动物体交互的 3-D 水模型,这与我尝试在 2-D 中实现的效果完全相同,但是以更专业的方式。

由于我对 C/C++ 的了解为零,所以我决定询问如何定制Ogre3D水演示 https://gamedev.stackexchange.com/questions/18921/ogre3d-customize-water-demo为了一睹从哪里开始寻找,其中一个答案向我指出了 Touchscape 提供的软件,其中提供了 SDK(请参阅这个答案 https://gamedev.stackexchange.com/questions/18921/ogre3d-customize-water-demo/18937#18937).

Ogre3D 几乎把它包起来了。水波纹效果,OpenGL(它可能可选地 http://www.ogre3d.org/tikiwiki/Hardware基于硬件的使用)、游戏引擎和 Python 包装器Python-Ogre http://www.python-ogre.org/- 所以我对我自己的问题的回答,

任何人都可以使用 OpenCV/OpenGL 和 Pygame 提供此效果的合适实现吗?

基本上是

是的。检查 Ogre3D 的水演示,随 SDK 一起提供 - 并将其插入 Python 通过Python-Ogre http://www.python-ogre.org/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame水波纹效果 的相关文章

随机推荐