EPS V2.0 Alpha Demo : Particules Engine

Blitz3D Forums/Blitz3D Programming/EPS V2.0 Alpha Demo : Particules Engine

Eole(Posted 2003) [#1]
Hi !

Eole Particule System V2.0 is finished soon. While waiting for the completion, here small demo engine.

Attention, the interface requires much resource if you have an old graphics card... (It s not the EPS who is slow).

All features are not yet inplement . . .

The EPS will be FREE . . .


To download it copy/Paste this link in a new broswer :
http://n-eole.chez.tiscali.fr/download/EPS2/EPS2Alpha.zip

A Little screen shot



Chgros(Posted 2003) [#2]
hehehehe

that's so good eole

many many congratulations :-)

SUper taff mon coco ^_^


Eole(Posted 2003) [#3]
I found a little bug in the alpha, don't stop the emitter with lifespan of emitter >0 if the particule window is open . . .


sswift(Posted 2003) [#4]
"Internal Ray" "External Ray"

I haven't played with the demo yet, but I think you mean RADIUS?

Also, a suggestion. It would be nice to be able to type in values manually in a box next to each slider, and have that change rather than the slider displaying the number as you slide the slider.


sswift(Posted 2003) [#5]
Also, it's spelled "Particle" not "Particule".


And what does "delta" on each of the options do? As far as I know, if you define a start and an end value for something, and a life span, then that's all you need to linearly interpolate between the two values...

So I don't see what Delta does.


Eole(Posted 2003) [#6]
Yes, it's the radius (sorry for my english). I don't understand that you say about "Particule" and "Particle"

The delta change the start value.

exemple of the calcul with delta :
Lifespan_particule = 10 s
SizeStart = 1
SizeDelta = 1.5
SizeEnd = 5

Realsizestar = SizeStart + rnd#(0.0,1.0) * SizeDelta
Size_step = SizeEnd - RealSizeStart / Lifespan_particule


sswift(Posted 2003) [#7]
Okay, I understand what delta does now.
I'm not sure delta is a good word to use though. It's confusing.

Unfortunately, I can't think of a better word to use right now.
Hm... SizeRandom? SizeStartRandom? SizeRandomFactor? SizeRandomMultiplier?

I don't think any of the above is the perfect word to use, but SizeRandom is probably better than SizeDelta. Delta means "change", but not random change.

Hm... SizeDifference? SizeRandomDifference? Hm. Anyone have any suggestions?


Eole(Posted 2003) [#8]
thank you, to help me for the translation of the EPS. .


sswift(Posted 2003) [#9]
I looked at your particle demo now. I'm very impressed with it!

It's better than my old particle system, and it's even better in most ways than the new "Firestorm" particle system which I was working on to replace my old particle system.

The fact that it has this editor also adds tons of value to it. And the ability to save your particle settings... You guys are just crazy. :-)

I'm not even sure if I should bother working on that Firestorm particle system any more now! :-) I'd have to do better than this, and that would be really hard. :-)

Honestly, I'm surprised it's this good!

My first particle system which I wrote for Dark Basic didn't have emitters.

My second particle system, the "Swift Particle System" for Blitz had emitters, and emitters of different shapes, but it used start and end angles and polar coordinates to define what directions particles emitted in. Which was the wrong thing to do.

Only in my third particle system incarnation did I realise that I should use a vector pointing in a direction to define the direction the particles emit in, and then an angle of offset from that, instead of using starting and ending angles.

You on the other hand seem to have done everything right right off the bat. :-) Did you base your particle system off those found in software like 3D Studio Max? I never looked at the particle systems in that when writing my own stuff, to get ideas, but I probably should have!


sswift(Posted 2003) [#10]
I have a question about how the particle system works. Are you using sprites, or are you moving polygons around in a single mesh with a single surface per emitter? Or are you using entities?

The second may be the fastest method. But as you have all these view modes, I suspect that you are using sprites rather than having implemented all the view modes yourself.

However I recently heard Mark say that sprites in Blitz are sorted by the surface properties or something for maximum rendering speed. I have not really seen this to be the case though. The FPS when you have lots of particles moving around in your system doesn't seem any better than it would be if they were inidividual entities. I wonder if Mark can answer why that is.

Because you're using sprites, there is one thing my old particle system does better than your system. My old system can use any 3D object as a particle. That allows you to do some effects you can't do with this system, like solid expanding rings. But my new entity animation system I realsed a little while ago can do those sorts of effects in a simple manner.


Eole(Posted 2003) [#11]
thank ,

The EPS, is base on a free particules engine write in C++, and I add a lot of feature on it.

this is the link to the original source code
www.gamedev.net/reference/articles/article1043.asp


sswift(Posted 2003) [#12]
Here is a list of things for you to fix:

"Axe X" should be "X Axis"

You might want to change the name of the "Fixed" view mode to "Face Camera" so that it's more clear what it does.

It would be nice if in the "spherical" emitter mode, you could set it to emit only in one direction in addition to both directions at once as it does now.

In ring mode, I notice the starting location is pointing in the direction of the positive X axis. In the spherical mode, the starting location is the positive Y and negative Y axis. And in cylindrical, the cylinder is pointing up the Y axis.

I would argue that this is the wrong way to do it.

Imagine that you attach an emitter to a guy's arm/gun. Wherever that arm/gun points, that is where it's Z axis points. So emitters should emit down the Z axis, so that you can attach an emitter to something like a gun, and point the gun a direction, and have the emitter emit particles in that direction.

So the cylynder should have a circle which is on the XY plane, emitting down the Z axis. And the plane should also be on the XY axis. And the start of the ring should be where it is now, but the ring should be on the XY axis, and the angle should increase in a counterclockwise direction. And lastly, the sphere should emit in a positive Z and negative Z direction, unless the user selects that they just want to emit in the positive Z direction.

Also if the sphere has the ability to emit in both positive and negative directions, then why not the cylinder and plane as well? The ring too, could emit particles both outward and inward.


Here's some other spelling mistakes I noticed:

"somke" for the particle images should be "smoke".
"stopp" on the bottom of the screen should be "stop"


One last thing I would like to see is the ability to open a file browser on the partile texture menu and select a particle texture to load. When generating the code you'd probably want to leave the path out of the code though since you don't want that when you stick the code into a game you're gonna distribute.

I like the ability to select images from a list too. Maybe you could have the image list look for all images in an image directory under the EXE and put those on the list of images you can select from automatically so that folks can add the particles they use a lot to that directory for easy browsing?


darklordz(Posted 2003) [#13]
wow...

just wow....


Eole(Posted 2003) [#14]
The EPS base on Sprite, I tryed to use single mesh surface, but the FPS result is the same, and I read that the sprite are more faster . . .

Yes, It 's a good ideas to use it with 3d Object . . . :-)


You must know, all the feature are not implement in the interface ( I rotation of particule not yet implement :-), and it wery good like i think it) Surprise . . . .


sswift(Posted 2003) [#15]
Oh and one last set of requests:

1. You do have the ability to attach an emitter to an entity, don't you? That's a very useful feature.

2. When you create an emitter, can you specify the direction it emits in with a vector? I would like this ability, because when you have an explosion when something hits a wall, you can take the collision normal and use that to tell it which direction is away from the wall so that you only emit particles in a direction away from the wall, and don't send any back through the wall.

3. Can you make it so that the user can specify a collision radius, and a collision type for the particles when they are created so that users can make particles collide with the world? Obviously you won't want to do this with thousands of particles at once, but there's times when you want sparks to fly up in the air, and then hit the ground.

4. Can you make it possible to get a particle's current speed/direction vector, by passing the pointer to the particle to the system, and then allow us to change a particle's speed/direction vector? I'm thinking that a user might want to make a particle bounce when it is detected hitting the ground by Blitz's collision system, so we'd need to be able to adjust that.

5. I notice the "effects" and "rotation" tabs on the particle window don't work. What will go under effects?


TartanTangerine (was Indiepath)(Posted 2003) [#16]
Help, The link is not working for me..


Eole(Posted 2003) [#17]
Ok, it s just the alpha :-), and some request will add to the interface

To emit in a specific direction, you have just to turn the center of the emitter . . . An emitter must have a Pivot or an object to be valid.

So, if you want a circle effect in xy, just turn the pivot of the emitter on x axe ... not yet implement in the demo


Eole(Posted 2003) [#18]
Flynn,

Copy and paste the link in a new Internet explorer. I don't know why but Tiscali don't accept direct download link in a forum


sswift(Posted 2003) [#19]
" Help, The link is not working for me.. "

Open new browser, copy and paste link into URL bar. It fools the server on the other end as to the origin of where you are clicking the link from.


Speaking of FPS Eole... can we get an FPS display?

Also, it would be nice if you would save the display settings, and also warn the user that changing them will reset everything.

And when you change the color depth the display doesn't reset to that color depth until you change the resolution.


"So, if you want a circle effect in xy, just turn the pivot of the emitter on x axe"

Well does that affect the direction the emitter will emit in? Because I realise you can do that in your game, but if you say use pointentity to point one entity at another, or if you just attach the emitter to a gun, you'll have to then add a pivot between the emitter and the gun to rotate it to face the Z axis cause the gun or the object you point will point it's Z axis, not the Y axis.


sswift(Posted 2003) [#20]
Oh and your particle system is much better than that C one. :-)


Eole(Posted 2003) [#21]
The emitter, always emit on Y axis of his center ...

I don't really understand the problem, just turn the pivot emitter before attach to the gun . . . if you turn the gum the pivot keep his orientation and always emit in the direction of the gun


Eole(Posted 2003) [#22]
Sswift if you want, you can donwload the V1.0 of EPS on my web site (menu realisation), there is the source code . . .

becarfull, there is 2 link one with source the other just exemple . . .

The V2.0 is the 1.0 with more fonctionnalite and optimisation ...


Eole(Posted 2003) [#23]
I will try to put all you request in real release . . I don't put FPS, because the GUI requires very much resource and if you see the FPS with the GUI, you can think that the EPS is slow . . . this why, but I can ...


sswift(Posted 2003) [#24]
"I don't put FPS, because the GUI requires very much resource and if you see the FPS with the GUI, you can think that the EPS is slow."

I understand. You don't want people thinking your particle system is slow. People could close all the windows except the top one to get a better idea of the FPS, but obviously that doesn't mean that people will know to do that.

Maybe you could make a button to check the fps which closes all the windows except for one little button in the corner of the screen to bring everything back?


Eole(Posted 2003) [#25]
For sswift, it s a good idea !

Are you download the EPS V1.0 ?


sswift(Posted 2003) [#26]
Why do you want me to download 1.0?


Eole(Posted 2003) [#27]
With the effect tab you will able to set then entityFx of the sprite, and in the rotation you will able to set the speed rotation on any axe off the particule, and the new fonctionnality of V2.0 is:

All particule is attach to a pivot, and you will able to set the distance between the particule and her pivot, so the particule will turn arround of her pivot, like the moon arround the earth


for Sswift

I ask you if you have download it because the principe of the particule direction its the same in the 1.0, because I think , i don't understand all you say about Attachement particule direction. . .

And there is exemple of fonctionnality (attraction) who not yet implement in interface of V2.0


dangerdave(Posted 2003) [#28]
C'est tres bien, Eole!!

Cannot wait for the next release!


Mathieu A(Posted 2003) [#29]
Does you preview to put your source code available to the community? Because it's an excellent particule engine. The best I've ever seen!!


Eole(Posted 2003) [#30]
Yes of course

L'EPS is Free, and when the beta will be out, the source code will be include . ..


Mathieu A(Posted 2003) [#31]
great thanks eole!

I 'm making a complete editor with blitz I will certainly be inspired by your great work!!