问题标签 [particle-system]

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 回答
1382 浏览

ios - Are there any iOS Particle System Libraries

Does anyone know of any (opensource would be nice) Particle / Emitter libraries for iOS? I know of cocos iphone but couldn't find any others.

If all else fails I'll get my hands dirty and learn OpenGL but any helper libraries would be handy :)

0 投票
1 回答
376 浏览

iphone - 实时调整粒子文件(.plist)

我有一个正在处理的 cocos2 项目,我想知道是否有办法实时调整我的粒子系统 .plist 文件中的变量。即调整 x 重力以与玩家的速度等相关。我最初使用粒子设计器制作文件。

任何建议或方向将不胜感激。

0 投票
2 回答
3736 浏览

objective-c - 如何在 iPhone OpenGL ES 粒子系统中绘制 1000 多个粒子(带有独特的旋转、缩放和 alpha)而不减慢游戏速度?

我正在使用 OpenGL ES 1.1 为 iPhone 开发游戏。在这个游戏中,我有角色在被射击时会发出的血颗粒,因此屏幕上随时可以有1000多个血颗粒。问题是当我要渲染超过 500 个粒子时,游戏的帧速率会急剧下降。

目前,每个粒子都使用glDrawArrays(..)渲染自己,我知道这是速度变慢的原因。所有粒子共享相同的纹理图集。

那么减少绘制许多粒子的速度的最佳选择是什么?以下是我找到的选项:

  1. 将所有血液粒子组合在一起,并使用一个glDrawArrays(..)调用来渲染它们——如果我使用这种方法,有没有办法让每个粒子都有自己的旋转和 alpha?或者当使用这种方法时,它们是否都必须具有相同的旋转?如果我不能用独特的旋转来渲染粒子,那么我就不能使用这个选项。
  2. 在 OpenGL ES 2.0 中使用点精灵。 我还没有使用 OpenGL ES 2.0,b/c 我需要在我设定的截止日期之前在 App Store 上发布我的游戏。使用 OpenGL ES 需要初步研究,遗憾的是我没有时间进行。我将在以后的版本中升级到 OpenGL ES 2.0,但首先,我只想使用 1.1。

这是每个粒子本身的渲染。这是我最初的粒子渲染方法,它导致游戏在渲染 500 多个粒子后帧速率显着下降。

然后我使用了方法 1,但粒子不能使用这种方法(我知道)具有唯一的旋转、缩放或 alpha。

我将重申我的问题:
如何渲染 1000 多个粒子而不会大幅降低帧速率,并且每个粒子仍然可以具有唯一的旋转、alpha 和缩放?

任何建设性的建议都会非常有帮助,我们将不胜感激!

谢谢!

0 投票
2 回答
3563 浏览

c++ - 2D 粒子系统 - 性能

我已经基于“构建高级粒子系统”(John van der Burg,Game Developer Magazine,2000 年 3 月)中概述的想法和概念实现了 2D 粒子系统。

现在我想知道我应该从这个系统中获得什么性能。我目前正在我的简单(未完成)SDL/OpenGL 平台游戏的上下文中对其进行测试,其中所有粒子每帧都会更新。绘制如下

其中一个纹理用于​​所有粒子。

它可以平稳运行多达约 3000 个粒子。老实说,我期待更多,特别是因为这意味着要在屏幕上与多个系统一起使用。我应该希望平滑显示多少粒子?

PS:我对 C++ 和 OpenGL 也比较陌生,所以很可能是我在某个地方搞砸了!?

编辑使用POINT_SPRITE

根本看不到使用GL_QUADS的任何性能差异!?

编辑使用VERTEX_ARRAY

使用 VA 对上述性能产生了影响。然后我尝试了 VBO,但真的没有看到那里的性能差异吗?

0 投票
0 回答
381 浏览

dynamic - 使用 SPH 对流体-固体相互作用进行建模

我是这里的新手,所以如果我的问题看起来很奇怪,我深表歉意。这是关于我的 SPH 模拟器,它还不能处理流体-固体相互作用。我的模拟器可以很好地模拟流体,但是当我想在模拟过程中添加一个实体时我感到困惑。

看了很多论文,心里有几个结论,有不对的地方请指正,

  1. 固体和流体物体均采用单粒子系统建模,每个物体粒子都有自己的参数值,如质量、质量密度、人工粘度等。
  2. 在每个时间步中,SPH 循环过程在两个对象中都照常计算,这意味着如果每个粒子对象在半径为 h 内,则可以对另一个粒子对象做出贡献,无论该粒子是什么类型。
  3. 与仅包含流体粒子的系统的区别在于,在流体-固体系统中,存在仅在固体对象之间计算的弹性力。不为流体粒子计算此力。

那是。最后,问题。

SPH 特定参数(如平滑长度、粒子半径等)呢?在计算每个粒子的力时,固体和流体之间有区别吗?在计算这两种粒子的力时,真正正确的方法是什么?它只是在单循环中计算吗?

我读过的论文告诉了我公式,但我认为我首先需要基本的想法。

谢谢。

0 投票
1 回答
2502 浏览

opengl-es - 用于粒子系统的 GLSL PointSprite

我正在使用带有 PointSprites 的 ParticleSystem(受 Cocos2D Source 启发)。但我想知道如何重建 OpenGL ES 2.0 的功能

这些在使用 OpenGL ES 2.0 上下文时会生成 BAD_ACCESS。我应该简单地使用每个 PointSprite 的 2 个三角形吗?但这可能不是很有效(额外顶点的开销)。

编辑:所以,我对建议的解决方案的新问题来自: https ://gamedev.stackexchange.com/questions/11095/opengl-es-2-0-point-sprites-size/15528#15528

可以在批处理调用中传递许多不同的大小。我想过使用属性而不是统一,但是我需要始终将 PointSize 传递给我的着色器——即使我没有绘制 GL_POINTS。那么,也许是第二个着色器(仅用于 GL_POINTS 的着色器)?!我不知道在绘制例程中每帧切换着色器的开销(因为如果使用粒子系统,我自然也希望在没有 pointSize 的情况下渲染常规 GL_TRIANGLES)......对此有什么想法吗?

0 投票
2 回答
1764 浏览

iphone - 如何在 Cocos2D-iPhone 中暂停/恢复 CCParticleSystem?

我目前正在用 Cocos2D 制作游戏,我需要暂停/恢复一些粒子系统以进行优化。

我怎样才能做到这一点?

我知道我可以使用 [particleSystem unscheduleUpdate] 和 [particleSystem scheduleUpdate],但是如何检查是否已经安排了更新?

我想暂停所有不在屏幕上的粒子系统,并在它们重新出现时恢复它们,所以当我移动我的视口时我正在循环我的粒子系统。

particleSystem.active 似乎没有给我所需的标志来检查系统是否正在更新......

我在这里想念什么?

0 投票
1 回答
1082 浏览

visual-c++ - OpenGL示例粒子模拟不显示粒子

我从这个来源为喷泉创建了一个简单的粒子模拟。我还想使用 C++ 类来实现它。因此,尝试将上述部分逻辑放入此的类中(这是一个非常好的框架)。我只需要继承类并重新定义我想要的功能。

我定义了display()我调用 my的函数DrawObjects()。我遇到了以下问题:

  1. 我将粒子数初始化为低至 50 或 100 或 500。什么都看不到。
  2. 我正在尝试BMP为我的粒子加载纹理()。由于某种原因它失败了。我尝试了相对路径和绝对路径。然后尝试加载RAW纹理(使用IrfanViewer)但没有运气。还尝试删除纹理代码以使它们成为简单的 OpenGL 基元。再次没有运气。
  3. 我写了一个简单的DrawAxis()函数,它实际上需要用红色字符串绘制青色轴。然而,灰色的基元出现了。我检查了配置使用的代码,但没有这样的事情。grayscale

注意:在 Windows VC++ 2010 上工作。代码可以在NippyZip.

最小代码

主文件

GlutFramework.cpp

粒子模拟.h

粒子模拟.cpp

0 投票
1 回答
1141 浏览

xna-4.0 - 粒子系统:XNA Framework HiDef 配置文件不支持 Vector4 纹理上的 alpha 混合

我发现了这个关于在 XNA 中制作粒子系统的很棒的教程:http: //www.catalinzima.com/tutorials/4-uses-of-vtf/particle-systems/

问题是它是为旧版本的 xna 和 xna 4.0 编写的。

在 DoPhysicsPass 方法中,我得到了这个异常:

XNA Framework HiDef 配置文件在使用渲染目标格式 Vector4 时不支持 alpha 混合或 ColorWriteChannels。

这是爆炸的方法

这是randomTexture的初始化:

谁能提供一些建议如何解决这个问题?

0 投票
1 回答
1418 浏览

performance - CAEmitterLayer (ios5) 与 CCParticleSystem (cocos2d) 性能对比

我要创建一个有很多粒子效果的应用程序,我打算使用 cocos2d 框架。但就在最近,我才知道在 ios5 中可以创建粒子系统。

我想知道 UIKit 粒子系统与 cocos2d 粒子系统相比的表现如何。

有人试过和测试过吗?