谁能给我一个很好的例子,说明从哪里开始在libGDX中制作粒子系统?我查看了libGDX源代码中的测试示例,但我仍然无法理解它.也许只是对它的一个很好的解释将有所帮助.我想我想用大量的彩色颗粒进行某种爆炸.任何帮助是极大的赞赏!
我试图改变粒子的不透明度作为它们与平面的距离的函数.
这个问题描述了我的问题,一年前的答案基本上是"你不能".不透明度显然是材料的参数,而不是元素,因此单个粒子的不透明度是不可能的.
有什么改变,有什么办法可以实现吗?如果单个粒子着色是可能的,我想这不是遥不可及的.
干杯
到目前为止,我的问题很难解决.
我应该和我的同事一起开发一个Android应用程序,它在iOS上做同样的事情.
在开发结束时,我们应该提供两个做同样事情并且看起来很相似的应用程序(可以放心,没有像iOS指南那样强制在Android上使用,反之亦然),这样体验就是一样的,身临其境.
提供的顶级功能之一是一个漂亮的白色空圆圈动画,在圆圈内发出雪状粒子.圆圈可以通过滚动或简单的弹跳/滑动动画来移动.
因此,想象一个带有白色边框的圆圈和白色颗粒离开那个白色的膜.所有这些粒子都被吸引到中心,它们的速度基础是变化的(但没有加速!).假设最快的粒子在到达中心之前"死亡".可以通过设置终身和速度轻松设置的东西.
我的伙伴,像我这样的大三学生,正在使用iOS'CAEmitterLayer,她在一两天内获得的结果非常华丽,非常接近我们应该达到的目标.
在我身边,我真的很挣扎.像她一样,我对任何动画和UI/UX都没有任何经验.在Android上寻找粒子生成器/发射器时,我偶然发现了这个漂亮的库:https://github.com/plattysoft/Leonids,它似乎可以提供我想要的东西.
但是我使用这个库有一些未解决的问题:
正如我所说,我的iOS同事解决了这些问题.即使是动人的部分:我们正在和我们的经理谈话,他们告诉我们"如果圆圈移动怎么办?" 她立刻在我们面前试了一下.我被吹走了......
她告诉我,我应该寻找一种方法将我的粒子包含在一个容器内(有意义^^),并且我的圆形视图应该用图层剪裁,这样粒子就不会离开圆圈,特别是如果整个东西都在移动.
这是我通过前面提到的Android库实现的目标:
height
和width
)和奇怪的原因,我的圈画上面说基于平方的观点.我希望我能找到另一个图书馆,但如果当前的图书馆正在运作,为什么不呢?试试我的运气^^
谢谢您的帮助 !
我在互联网上搜索有关粒子系统和火焰效果的信息,但我没有找到任何好的答案.
有些游戏有一些电影显示为火,这是非常好的,但不适合接近观众的火灾.
如何在游戏中制作逼真的火焰和烟雾效果?我正在寻找好的示例代码或说明如何执行此操作.
我一直在使用带有Alpha的24位.png,来自Photoshop,只是尝试了一个与OpenGL ES配合得很好的.psd,但是Metal没有看到Alpha通道.
SceneKit中粒子绝对最高效的纹理格式是什么?
如果需要,这是一张要测试的表.
它看起来是白色的......右键单击并保存为空白区域.这是一套阿尔法重的戒指.如果你眯着眼睛看屏幕,你可能几乎不能把它们弄出来:
夸张的示例用例:
https://www.dropbox.com/s/vu4dvfl0aj3f50o/circless.mov?dl=0
//任何人的附加点都可以猜出视频中左右环之间的差异.
之前5.5粒子系统变量可以通过ParticleSystem访问并进行读/写.现在它们是通过ParticleSystem.MainModule访问的,因此很多代码已经过时了.该API更新一直没有能够解决大部分的问题.我已经阅读了新文档,但我无法弄清楚应该如何使用新的变量类型.例如,在JetParticleEffect.cs中,此行会引发警告:
// set the original properties from the particle system
m_OriginalLifetime = m_System.startLifetime;
Run Code Online (Sandbox Code Playgroud)
警告声明:'ParticleSystem.startLifetime'已过时:'不推荐使用startLifetime属性.请改用main.startLifetime或main.startLifetimeMultiplier.
我尝试过以下方法:
m_OriginalLifetime = m_System.main.startLifetime;
// error: Cannot implicitly convert type 'UnityEngine.ParticleSystem.MinMaxCurve' to 'float'
Run Code Online (Sandbox Code Playgroud)
我相信答案与minMaxCurve 常量变量有关,因为这会编译:
m_OriginalLifetime = m_System.main.startLifetime.constant;
Run Code Online (Sandbox Code Playgroud)
但是文档中几乎没有解释.任何人都可以对此有所了解吗?
此外,新的乘数适合哪里?我假设你以前可以做到这一点:
particle.startSize *= myMultiplier
Run Code Online (Sandbox Code Playgroud)
......你现在应该这样做吗?
particle.main.startSizeMultiplier = myMultiplier
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序,对粒子进行一些基本的重力物理模拟.我最初使用标准Javascript图形(带有2d上下文)编写程序,我可以通过这种方式获得大约25 fps w/10000粒子.我在WebGL中重写了这个工具,因为我假设我可以通过这种方式获得更好的结果.我也使用glMatrix库进行矢量数学运算.然而,通过这种实现,我只获得了大约15fps的10000粒子.
我目前是EECS本科生,我有一定的编程经验,但从来没有使用图形,我对如何优化Javascript代码几乎没有任何线索.关于WebGL和Javascript如何工作,我有很多不明白的地方.使用这些技术时,哪些关键组件会影响性能?是否有更有效的数据结构来管理我的粒子(我只是使用一个简单的数组)?对于使用WebGL的性能下降有什么解释?GPU和Javascript之间的延迟可能?
任何建议,解释或帮助一般将不胜感激.
我将尝试仅包含我的代码的关键区域以供参考.
这是我的设置代码:
gl = null;
try {
// Try to grab the standard context. If it fails, fallback to experimental.
gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
gl.viewportWidth = canvas.width;
gl.viewportHeight = canvas.height;
}
catch(e) {}
if(gl){
gl.clearColor(0.0,0.0,0.0,1.0);
gl.clearDepth(1.0); // Clear everything
gl.enable(gl.DEPTH_TEST); // Enable depth testing
gl.depthFunc(gl.LEQUAL); // Near things obscure far things
// Initialize the shaders; this is where all the lighting for the
// vertices and so forth is established.
initShaders();
// Here's where …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OpenGL和CUDA为云和烟雾模拟制作一个简单的粒子系统.
如何使粒子系统中的粒子表现为真实的云或烟雾会在一些低湍流风中表现?
我现在遇到的一些问题是:
我已经完成了粒子的渲染,所以我对那个区域感到满意.
SpriteKit
在a的overlaySKScene
属性中运行粒子系统SCNView
会导致应用程序与下面的堆栈跟踪一起崩溃.
基于堆栈跟踪,似乎所有系统代码都在运行,所以你应该如何调试崩溃,更重要的是,确定它是否是SceneKit/SpriteKit的错误或应用程序中的错误?
对于它的价值,下面是添加粒子系统的函数,但它没有在堆栈跟踪中引用.
fileprivate func animateFireworks(scnPoint: CGPoint, color: UIColor) {
// Set emitter properties
let particleBirthRate = CGFloat(150)
let maxParticles = 50
let numEmitters = 5
// SceneView point -> SpriteKit point
let skOverlayPoint = skOverlay.convertPoint(fromView: scnPoint)
// Create emitters
for _ in 0..<numEmitters {
let fireworksEmitter = SKEmitterNode(fileNamed: ExplosionEmitterFilename)!
// Set particle size
let particleSize = CGSize(width: 20, height: 20)
fireworksEmitter.particleSize = particleSize
// Set color for emitter
fireworksEmitter.particleColorSequence = nil
fireworksEmitter.particleColor = color …
Run Code Online (Sandbox Code Playgroud) 我想使用Z坐标在3D中渲染粒子效果.我试图使用Decals而不是Sprites来实现自己的ParticleEffect而没有成功.
有没有其他方法使用Z坐标渲染ParticleEffect?也许通过操纵SpriteBatch的转换矩阵?
更新:
工作代码
// update projection each frame since my camera is moving
spriteBatch.setProjectionMatrix(camera3d.projection);
for (ParticleEffect effect : effects){
spriteBatch.setTransformMatrix(camera3d.view);
spriteBatch.getTransformMatrix().translate(x,y,z); // different for each effect
spriteBatch.getTransformMatrix().scale(0.1f,0.1f,0.1f); //optional
spriteBatch.begin();
effect.draw(spriteBatch, delta);
spriteBatch.end();
spriteBatch.getTransformMatrix().idt();
}
Run Code Online (Sandbox Code Playgroud) particle-system ×10
particles ×3
android ×2
java ×2
libgdx ×2
scenekit ×2
3d ×1
animation ×1
c# ×1
cuda ×1
deprecated ×1
ios ×1
javascript ×1
opengl ×1
performance ×1
point-clouds ×1
sprite-kit ×1
swift ×1
three.js ×1
updates ×1
webgl ×1