Adding particle effects to models?

I was curious, what do most people do to add some particle effects to their models? For example, say you have a .3ds model, with the parts body, wings, engine and so on. Now, if you want to add smoke comming out from the engine, what would be the best way to achieve this?

I am guessing the best way to do this, is to have a quad, that would be part of the (rear)engine, and then have your particle routine use that quad for all the effects using GL_BLEND, mode or something. Is this what they do with games like homeworld? Or do they just play around randomly placing the particle effects on the model until you get lucky and find the right spot? (somehow I doubt this…but that is what I am doing now. )
If I implement the first way, that means I would have to read in the model into an array (or something) instead of the current way I am reading it and then dumping it out via glverte3f() calls…

Would that be the best way to do it instead of my 2nd method?

Generally, you just use a single triangle, marked with a special material. The placement of this undrawn triangle is used to determine where the particle effect appears. Also, in a related matter, a secondary 3d model could be attached to a tag, if it too has an identical tag. Matching up the tags on the models then mates the secondary model to the main model. Ideal for turrets and ejectable parts.

A good way is to place a dummy object (I use a quad) and give it a particular name, while loading the 3ds file if you find a dummy object with that name (Es.: PART_1) you create a particle emitter at the centre of that quad, that emits particles in the same direction of the normal of the quad.

If you have a good particle system (with gravity and/or phisics) creating/placing particles trails, flames or wathever is really simple…

A good way is also giving the emitter a name that contains also info on the particle system you should create : P_100_10 (example) for an emitter with 100 particles at speed 10 …

hope to be helpfull

bye, rIO

I use prefix conventions in object names. an example would be “PT_objname” to name a particle system, “FC_objname” for a force like gravity, DF_objname for a deflector, etc.
Maybe to encode parameter it would be best to encode them in the size of the object, having 3 parameters (x,y,z). Anyway, this are all tricky ways.

Better yet is to have an intermediate step where you define an internal format.
A half way solution, easy to implement, would be a separate text file to match object names to engine specific parameters, like

3DsObj1 {
type = mesh
}
3DsObj2 {
type = mesh
}
3DsObj3 {
type = partsys
param1 = …

}
etc…