particle system

Community Forums/Showcase/particle system

AdamStrange(Posted 2014) [#1]
here is a look at something i'm working on:


This shows a single 2d quad particle at right-angles to the cube cutting through it.
What is interesting is there is no visible 'cut' where the particle dissects the cube
The particle itself is made up from a single 3d quad, plus particle texture frames. the first 2 frames are combined into a single colour frame with the third being added or subtracted from the result (a complex blend).

I'm currently working on the editor for the particle system

The debug text shows the status of my entity system, heads and tails of lists etc.
the seven listed things are the entities themselves, with three live models (base plane, cube and single particle)


Hardcoal(Posted 2014) [#2]
Looks promising Goodluck dude


AdamStrange(Posted 2014) [#3]
Thanks, the editor is where i'm spending time now the basic mechanics is working. Here's shots of the editor with the three particle sub editors:

The first is the particle sprite selection - these are fixed, but you have 64 to play with and a particle is made from three of them


Next up is the colour editor - there are two and these work across the life of the particle


Last up is the graph, where you can control range values over time including repeat from a simplified UI


and the result. these were the first things created once the graph was functioning so they are just tests.




But you get an idea of the complex interactions of the multi drawn particles.

I'm just about to start work on the emitter side of things. In the above you can see a single emitter (its the flat square thing with the arrow in cyan). The arrow shows the direction the emitter is pointing. After that is the spawner.

So an emitter emits particles and the spawner control how they emit. an particle system is a combination of the three :)

Last thing (if you haven't noticed) The system is totally in 3d. Also the particles can be 2d facing the user, 3d or even 3d objects. Current CPU usage is stable at 10% - but most of that is the UI and opengl back system and multiple buffers.


degac(Posted 2014) [#4]
Nice GUI and nice effects!

What engine3d are you using? I just noticed the 'shadows'/ambient occlusion..


AdamStrange(Posted 2014) [#5]
BlitzMax + openGL + custom shaders.

Shadows are not quite right, but nothing that I'm too concerned about yet as the code is simple enough.

The 3d object comes from my 3d editor:
http://www.blitzbasic.com/Community/posts.php?topic=98715#1189948

Particles are independent from the objects, there is a complex entity system also working away in the background (I suppose a bit like blitz3d on steroids)


Hardcoal(Posted 2014) [#6]
hope you can make it operate also under xors3d althow i know people concider this as a dead engine.


Steve Elliott(Posted 2014) [#7]
I think the xors people deserve no favors, do your own thing Adam. Looks good :)


Hardcoal(Posted 2014) [#8]
what favors. its no favor its a wish.
whats bothering you jump like that mr steve.


Steve Elliott(Posted 2014) [#9]
Seems they took people's money and abandoned the xors engine.


AdamStrange(Posted 2014) [#10]
Here's a couple more now that the emitter is all sorted it can emit at very different rates and directions.

One thing to note is the smooth shading where particles intersect geometry.

some sort of evil cloud


basic fire and smoke with floating embers


you want nuts? Let's got nuts...



Hardcoal(Posted 2014) [#11]
Your right Steve about Xors team Attitude
Ive based my Engine on xors so for now im working on it as it is.
when ill finish my Engine I will replace Xors.
So the effects aint that important.

No one said any Word to adam for a month since this post.
So I wanted to cheers him up.
The Xors Issue was just a side Matter.

Does guys should at lease release it so others can keep improving it
to be a usable Tool.


Kryzon(Posted 2014) [#12]
Hello Adam, I like the overall dark theme of the GUI.
How are you drawing the yellow graphs for the curves?


AdamStrange(Posted 2014) [#13]
i have a range function defined with 17 different curve types:

'npos 0..1
Function GetRange:Float(nMin:Float, nRange:Float, nPos:Float, nType:Int, nReturn:Float = 0)


it returns a value within the range nMin to nMin+nRange. You feed it a position of 0 to 1, to get multiple curves just give it a different set of position data.

It's not that well optimised as i'm still using standard cos and sin internally.


Kryzon(Posted 2014) [#14]
Are you using something like Core Plot to draw the graphs or are you using Max2D directly?


AdamStrange(Posted 2014) [#15]
its max2d and opengl

just checked and it straightforward: pseudocode...
drawbg
setcolor
setalpha
for loop
  drawline
next


only visible ui elements are drawn on each frame request. Its a custom ui i developed a while back and the drawing is agnostic - it has some primitives, but everything is custom created

I have a complete window manager that sits in the background intercepting all window controls:
Method ProgMain()
	If AppFullScreen Then ToggleFullScreen(AppWindow)
		
	EnablePolledInput()
		
	While Not AppQuit
		AppQueue = PollEvent()
		If AppQueue = 0 Then
			Delay(2)
		Else
			Select EventID()
				Case EVENT_APPTERMINATE, EVENT_WINDOWCLOSE 
					AppQuit = True
			End Select
		End IF
	Wend
End Method


I then handle all events; mouse, keyboard, timers, touch, etc. The app is then built on top of this. At the lowest level is the control structures which handle all the UI.

In the Particle editor there are about 20 controls (+ the core ones). The 3d editor has about 160 and the audio editor about 270