However, the problem has always been the same with them: They all look like a ton of blocky particles coming out of the jet engine. Whereas, I would like to to look like a single “trail” of the jet engine.
Part of the problem here is particle transparency. I am creating the particle in a J3M and J3O file, and currently it has a black border around it as pixels with a low alpha are not discarded:
I was at one point using alpha blending, which hid this issue, but then the particle colour depended on the colour behind it, which is of course another issue…
I guess the question is, how can I make these effects look less blocky and more realistic, using the material editor and the SceneComposer?
If I remember , for solving this transparency issue i used Unshaded.j3md as Material Definition instead of Particle.j3md and I set Blend mode to alpha .
Your texture doesn’t seem to have an alpha channel. The black area are supposed to be the transparent ones. In that case you shoudl use the Additive blend mode. (color are added together, so a black value 0,0,0 doesn’t have any contribution).
However the darker the opaque area are, the more trasparent tey will be, and it’s usually not what you want.
So the solution is to use Alpha, as a blend mode sure, as @Ali_RS pointed, but also your texture shoudl have an alpha channel (you have to edit de file to make the dark areas transparent)
Yes, alpha channel missing. Can easily be added via Gimp: Color → transparency from color → (click either the white or the black area) → adds an alpha channel for you → you have now a gray+alpha .png ( File → export → .png)
That’s also what I’m using when I scan and colorize the comics and 2d images that I draw with pencils. Only a few more extra steps are needed (but that’s quite off topic).
This is because the particleEmitter also use vertex color and that the default start color has an alpha of 0.5.
If you set the start color to opaque white in the ParticleEmitter you’ll have the exact same render.
Alright, so I noticed that I had set the particles end colour to be an alpha of 0.0. So, I changed it to 1.0.
Then, I noticed that the blockiness still existed:
So, I disabled DepthWrite. This seemed to solve the problem:
However, the particle trail disappears when the background is the sky. Take a look at this GIF:
Ignoring the jumpiness (which was caused by the GIF creator), you can quite obviously see that when the particle background is sky, the particles cannot be seen. Whereas, if the ground is behind, you can see it.
Both the sky and the ParticleEmitter are in the translucent bucket filter. I cannot change either of them or else I will cause problems elsewhere in my game.
Also, if I go in front of a white background, the particles seem to disappear as well:
Is this just because the background looks a similar colour to the particle, or is there some wizardry going on here that I’m not aware of?
If you are using the WaterFilter, you must use the TranslucentBucketFilter.
But it could also be that your colors are too similar to the sky (additve applied to white background doesn’t change anything). I would never use Additive blending for particles - even for flames or magic sparcles. Additive is bad and looks odd (like not adding anything if already white as background - “feels” just wrong to me).
To be honest, I think I prefer the extra “see-through-i-ness” with particle.j3md, as unshaded seems to make the individual particles much more noticeable.
I don’t think the material is the problem now, I think it’s transparency and that sort of thing.
The problem is that the sky is rendered in the translucent bucket, to avoid being overwritten by the FogFilter. I believe the likely issue is that the sky is rendering after the particles, somehow removing them.
So yes, without the Sky and just with fog, the issue disappears:
And by “disappears”, I mean that the trail does not disappear or get rendered over. That said, the trail does fade, because of the white-ness behind it, which is another issue that I still have not solved.
And so yes, without the FogFilter or a skybox, the issue is completely gone:
Except of course, for the issue where the trail on a white background (aka snowy mountains), where the trail still fades.
Edit: Just to confirm, the issue with the trails fading in white, and the issue with the sky, are two different issues. If I render with NO blending, the white mountains no longer become an issue (indicating blending is the issue here), but particles are still over-written if the background is the sky.
Just to confirm, you could disable both the WaterFilter and the TranslucentBucketFilter and see if sky is a problem in that case.
The problem with yellow particle on white background is the ‘additive’ blending with particles - additive (often used for translucent) means that it adds to the color channels - and white is already added everything to the maximum - so it won’t change if you add yellow to it).
Shouldn’t the sky be in the QueueBucket.Sky bucket?
I experienced strange artifacts after using the WaterFilter and/or TranslucentBucketFilter, because these post processing things are messing with how I’m used to handle 3D graphics in games.
There is an answer to this problem which I will be using soon - it’s the old jME 2 water made by MrCoder and ported to jME 3 by someone else. Instead of using post processing filters it uses a mesh for the body of water.