1
$\begingroup$

How do I create a smooth particle system in BGE for moving objects? Normal methods work fine for candles and volcanoes, but when it's a moving object all you see is one particle at a time spaced out from one another. It doesn't look like smoke, it looks more like bullets coming out the back.

I have a simple file here that uses the same method as what I have in my game. This way you can see how I'm making smoke. What I want is for each sphere to overlap one another so that it forms a trail. I have yet to figure out how to do this, even on relatively slow objects. In my actual game, it moves between 2.5 to 7.5 in terms of the motion thingy.

The ONLY way I've been able to accomplish this, is by adding a motion to the smoke object, but it looks really bad when you go to steer. It's also inconsistent when you change speeds. Playing with the frequency or the "skip" doesn't do a whole lot but make it look really bad.

$\endgroup$
0

1 Answer 1

1
$\begingroup$

I cannot think of a solution that does not require coding. One simple-ish solution is to stretch the sphere based on the velocity, so that it is forced to join with the ones infront/behind.


Consider using an object that deforms. This means that there are no particles that spawn far enough apart to be distinguished. This method is used in some AAA titles such as Tomb raider:

There is an small analysis of this effect (where I pulled this image from) over here.

Unfortunately there is no built-in method for doing this, but I have done it successfully in the past. For example, the trails in this video are done using a python script to manually move the vertices: https://youtu.be/l1PHHe-kz4k?t=1m2s
Monster has made a demo of a similar system available here.

It may be possible to do something here with an IK armature and some physics object that 'lag' behind the target, but I have not tried it.


I have also seen demonstrations of GPU based solutions using a custom vertex shader. This should offer a lot more performance but is beyond my current GLSL programming skills.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .