I cannot seem to use a bloom effect, and a particleEmitter at the same time

Hi All, I’m still very new to jme3 and the 3d world generally, so any help appreciated.



my issue at the moment is that I cannot seem to use a bloom effect, and a particleEmitter at the same time, although they each work perfectly independently.



I have this to add a glow effect to a few line mesh’s I have attached to the rootnode :

[java]

FilterPostProcessor fpp=new FilterPostProcessor(assetManager);

BloomFilter bf=new BloomFilter(viewPort.getCamera().getWidth(), viewPort.getCamera().getHeight(), BloomFilter.GLOW_OBJECTS);

bf.setBloomIntensity(-2.3f);

bf.setExposurePower(10.03f);

bf.setBlurScale(1.44f);

fpp.addFilter(bf);

BloomUI bui=new BloomUI(inputManager, bf);

viewPort.addProcessor(fpp);

[/java]



when I add this the bloom effect vanishes:

[java]

ParticleEmitter shockwave = new ParticleEmitter(name, Type.Triangle, 1 * COUNT_FACTOR);

shockwave.setFaceNormal(Vector3f.UNIT_Z);

shockwave.setStartColor(ColorRGBA.White);// new ColorRGBA(.48f, 0.17f, 0.01f,1f));

shockwave.setEndColor(new ColorRGBA(1f, 1f, 1f, 0f));

shockwave.setStartSize(0f);

shockwave.setEndSize(800f);

shockwave.setParticlesPerSec(0);

shockwave.setGravity(0);

shockwave.setLowLife(1.0fspeed);

shockwave.setHighLife(1.0f
speed);

shockwave.setStartVel(new Vector3f(0, 0, 0));

shockwave.setVariation(0f);

shockwave.setImagesX(1);

shockwave.setImagesY(1);

Material mat = new Material(assetManager, “Common/MatDefs/Misc/Particle.j3md”);

mat.setTexture(“m_Texture”, assetManager.loadTexture(“Effects/Explosion/shockwave.png”));

shockwave.setMaterial(mat);

shockwave.setLocalScale(100);

shockwave.setCullHint(CullHint.Never);



shockwave.update(0);//need this to prevent null mesh exceptions

[/java]

ah, after hunting about in here I found what I needed.

I dont really understand why it fixes this issue, but it has helped a lot.

if I call Application().enqueue(…) and call rootNode.detachChild(wave); inside the callable, then suddenly everything renders properly.

I didn’t realise that I wasn’t supposed to be modifying anything in the scene except in the render thread.



now my next question - when the particle emitter is active, it eliminates the bloom effect on the items behind the particles (only the parts of the items directly behind are affected). I read somewhere else in here that in order to bloom only certain things I should run the bloom in a separate render cycle. how do I do that? and will it help?

It’s a known issue yeah, i noticed this in the tastwalkingChar when i tried to a glow effect.

In fact it’s not only the bloom , any filter does not render properly when using a particle effect (sometimes it’s very nasty).

I noticed that playing with the setCullHint method of the emitter fix the problem…but the emitter does not render anymore.



about your question…I think it might by a side effect of your workaround.



I’m gonna look into it and keep you informed

nehon, can you explain it to me? What does the particle effect do to the filter?

@momoko I’m gonna commit a test case that you can check.

I don’t really know what’s going on, but the shockwave.setCullHint(CullHint.Never); make the filters not display or display pixel soup…

Like an incomplete buffer or some sort…



I wanted to show you a screen shot but particle effect seems broken