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.0fspeed);
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