May 22, 2012, 05:59:15 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: Please report any bugs or issues that you might be encountering with the Beta in the Support System so that we can better keep track of any oustanding issues that may come up.

GameCore Support System
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: FX Editor Features  (Read 1536 times)
Squat
Hero Member
*****
Posts: 592


View Profile
« on: December 02, 2008, 07:33:22 PM »

Here's my wishlist on what I currently see missing from the FX editor that would give us greater flexibility with the effects we can create.

1) Random particle start size.

2) Random particle velocity.

3) Gravity over time scale.

4) Gravity values beyond 1.

5) Air Resistance over time scale.

6) Align to path trajectory.

7) Non-Uniform size over time scale.

8.) Particle spawn radius with x,y,z. (== random offset)

9) Step or difference options for random range values
        example
        (0/3/0) outputs as 0.0000, 0.0001, 0.0002... ...0.2999, 3.0000
        and
        (1/3/0.5) outputs as 1.0, 1.5, 2.0, 2.5, 3.0
        and
        (2/3/1) outputs as 2, 3

        Syntax
        (Min/Max/Increment)

10) x,y,z rotation speeds for non-billboards.

11) Max/Min rotation values with Loop/PingPong/Stop options.

12) Physical container wrap for emitted emitters to attain gravity. (see #22)

13) "Do Not Follow Parent" to work for emitted emitters.

14) Rigid body emitter with vector/angle/velocity and disabled size.

15) Scale rate to emitter velocity option to increase a contrail thickness for faster objects.

16) Noise frequence and phase for emitted trails to slow it down, but retain large motion.

17) A viewport grid.

18) Ability to load in a template object for size reference (might do this already).

19) Freelook camera mode.

20) Particle luminosity over time scale.

21) Particle collision. Readable if possible.

22) Turn particles into emitters that we can start based on collision or decay.

23) Sprite animation sequence images with support for cycle speed and termination options.

So that's a nice list? Some are a little nutty.

Some of the things that I can't do right away are things like an explosion with a contrail piece of debris that leaves an arcing trail of smoke that's not too unsimilar to this image:



If somebody has a way to achieve that, please let me know. Basically I wanted to shoot out a sphere and have that spawn particles and have those exibit no motion in world space. That would cover it.

I tried to emit an emitter and that actually works, but is only good for something like fireworks or a spark explosion as the emitters don't have any parameters available once they're spawned on their vector and told what velocity. They're not open to take the other movement parameters such as gravity, so they only travel in perfectly linear paths.

That means that really the only way I can see this happening is for me to create a static smoke effect that will just emit puffs in place and then attach that to a phyics object and write a script to send it on its way. That's harder than if we could have each particle act as an emitter.

I can acheive absolute flawless effects of literally any nature should most of the above get addressed and put into the engine. They really are great features that will help us all and many of them are quite standard even for real-time fx.

Quite soon I'm going to be focusing on creating a standard set of explosions, fires, puffs of smoke/dust/grass, waterfalls, fountains, drips, leaves, rain, snow, bugs...etc aswell as a series of splashes and bullet impact effects of several surfaces like wood, metal, cloth...etc. These I will make freely available in a package for all GC devs. Right now I only have a couple of them done as I get familiar with it, but so far it's easy enough. I can do gibs too. I won't be requiring it, but I will be delivering an effect of great bloody magnitude and gore just because I really enjoy making it. Some of what I've done is silly, like rising spirits out of graves, but most all are visually impressive in that the fx editor is actually quite robust as it stands. It's not perfect, but it's dang close and there's a short list of things it's missing in retrospect to make it so.

Here's my pipedreams just in case:

1) Emission of objects retaining UV animation aswell as skeletal animation.

2) Particle attraction, flocking and other robust behaviors.

3) Particle born crowd simulations with goal values.

4) Particle follow path option with the ability to generate a flight path.

5) Emit particles from the surface of a mesh.
« Last Edit: December 02, 2008, 08:18:40 PM by Squat » Logged
grubert
Full Member
***
Posts: 183


Everybody is very nice, but my jacket disappeared.


View Profile WWW
« Reply #1 on: December 04, 2008, 10:05:44 PM »

This doesn?t help much, but you can make this particle system "by hand".
I?ve done once a trail of bullets being spit by an airplane?s mounted gun. I didn?t use the fx system, because the emiited particles didn?t inherit the airplane?s world velocity, so they disappeared behind the plane as soon as they were spit, like the plane being faster than the bullet. I handcrafted a simple system of my own.
Just some ideas to put in your code (in pseudo-code etc):

- At explosion event, add a XXX amount of planes with a texture+alpha (put to be billboarded/always facing camera) to the world.
(Or load them at world load time/ Init() function, them later unhide them).

- Make a function to throw each billboard at a random angle, in a range of 180 degrees (or less), up to the sky, to avoid going into ground, with a [speed+random value].

- At each game loop, each of these billboards, stored in an array, will add another object at its position. An object that will inherit only XXXX percent of its velocity and decreasing at each game loop (just to make a little visual inertia to the smoke puffs in the trail).

- The main object leaving the trail also has to add a percentage of a (0, -1, 0) vector (= a vector going down in Y) to its direction, to fake some gravity, and the length of the vector has to decrease by XXXX percent at each game loop also, until stopping in the air.

- Each new emitted puff in the trail also should be added to the world with a scale XXXX percent smaller than the previous puff, to look like in the image you?ve posted.

- And do other function that loops on all instances (= puffs in the trails) lowering their opacity, after a determined amount of time, determined in your variables.



Just ideas. Hope it helps! It fakes physics in its most but I believe it should work, with some corrections and debugging.

Cheers.



Edit:
- Just a note to help understand: the "speed" variable should be multiplied by the length of the random direction vector you apply to each leading puff/debris. So, this speed should decreased a little at each game loop, until halting, to look like those smoke trails like in the image you?ve posted.

At the end you could also add a wind direction vector created by you to the puffs, to make the smoke appear to be dragged by the wind a little as they go disappearing.
« Last Edit: December 04, 2008, 10:12:27 PM by grubert » Logged

my portfolio and weekly posting:
http://athossampaio.blogspot.com
Spaz
Full Member
***
Posts: 109


View Profile
« Reply #2 on: December 11, 2008, 12:43:01 PM »

You can also use the physics equations for change in height and distance over time, given an initial velocity.

V = initial velocity
alpha = angle projectile leaves at
deltaT = time since firing projectile
g = gravitational constant = 9.81 or 32.2 depending on your units (metric or english)

y = V*deltaT*sin(alpha) - 1/2*g*(deltaT^2)

x = V*deltaT*cos(alpha)

Of course these are just 2D equations.  Shouldn't take much to add the z-component so you get crap flying in all directions, though. Wink
Logged
Spaz
Full Member
***
Posts: 109


View Profile
« Reply #3 on: December 11, 2008, 12:58:00 PM »

Oh, now that I think about it wasn't there a post on the old BV forums that had to do with "squibs" that had a working example already made?  I think I downloaded that sucker.  If I can find it I'll re-post it.

Edit: 
Found it.  It doesn't seem to work in GC, but if you look at the images in the "Screenshots" folder you can see how it used to work in BV.  If you look at the gsl files you can see he's using a function called AddAreaForce to throw chunks of earth around.  If one of you can get this thing to work would you mind reposting it?

You can download it here.   (~6 MB zip file)
« Last Edit: December 11, 2008, 02:09:24 PM by Spaz » Logged
gekido
Guest
« Reply #4 on: December 24, 2008, 02:35:08 AM »

you can have more than one emitter in an effect - so you can do the 'central explosion with seperate trails' types of things.

Logged
Squat
Hero Member
*****
Posts: 592


View Profile
« Reply #5 on: January 01, 2009, 07:41:54 PM »

Nah, that's impossible because the emitter that's emitted doesn't get affected by gravity. So sure, you can make a nice shower of sparks or some SERIOUSLY sweet ass fireworks with that, BUT you absolutely and in no way can accomplish THIS!

God I love me sometimes. j/k.

New Year I gotta adopt a less self-depricating attitude because it's getting me nowhere. I'm really quite friggin good at things. This took me about 5 hours of playing.

Anyway, I plan to build what I'm going to call my "Custom Destruct Script" even though I'm aware of a DestructableObject.gsl core script. However, I have not examined it at all since I don't need it quite yet and I'm up for the practice and besides, this is the effect, not the reason it blew up.

I plan to make settings for one to tune an explosion effect to hopefully their exact liking. What you see in the image is random and there's 2 more images I put in my gallery if you want to see different spreads of it. The effect is a temporary dustpuff and the object used as debris is a physics sphere with the material set to transparent.

The whole thing's based on adding physics objects and popping them out with a force. It's not properly optimized as too many appear at once and cancel out the force sometimes, so there's a large cloud in the middle. I merely need to delay each one, but that's where I'm realizing maybe I need more ideas on what others would want to control. Here's my list of parameters that are planned:

1) ObjectDebrisFileName -- Users can enter as many debris pieces as they wish and they will be randomly ejected.

This can be done in SO many ways. It can read meshes named "debris" in an export scene or you can make a file for each individual object, I'm not sure what would work best. The first version will require separate debris objects.

2) MaximumDebris -- This will allow any number of debris pieces. It will randomly cycle what debris piece is used until the limit is reached. Note: Many pieces will duplicate and others may not show up.

3) Min/MaxForce -- in X,Y,Z Note: Negative values in the Y will cause debris to be fired downwards, usefull for space/air/water explosions.

The Min currently isn't working in the image because I have to recode how it's done. Right now it too often allows for pieces to go nowhere due to the fact that I'm not aiming the force, I'm randomizing the world X and Z from -n to +n...which passes over 0. If I aim the force, I can randomize the amount along a positive scale. I just need to look at the pushball some more.

The debris object's physics MASS setting will affect the distance it travels.

4) FXTrail -- Obviously, this is the .fxt file to use for the trail.

Particles in this effect should not exhibit any drastic motion for fire trails with smoke. Just transition the color from white to red to orange to black or white and keep it in place. However, there's a million options for sweet trail effects if you do get creative. One simple possibility is for the debris piece to shower water using just gravity. Not sure if we have a "follow parent percentage" or if it's on/off.

5) TimeToEmit -- The max length of time for each debris piece to emit the trail.

Overuse of this can obviously cause a nasty hit to performance, though I've noticed at least 10k particles running clean and the explosion causes zero loss in performance until it's everywhere.

The shape of the trail after a collision will be based entirely on the physics setup for each debris piece. You may need to tune those settings instead of this one. If you're getting a nice arc, but a stupid line drawn along the ground after, try making the piece bouncier.

6) MinSpeedtoEmit -- The minimum speed the debris must travel to trigger the effect in X,Y,Z.

This is usefull to shut off the trails after a collision. Gets shut off anyway after TimeToEmit is reached.

7) DebrisTimetoLive -- The actual time for the debris to stay alive.

Plans for future versions to include more options on debris death, such as fading out, sinking into the ground, fading out, using a material transition and finally blowing up a second time into a whole new extravaganza before deleting itself. Could cause a permanet-loop if not careful.

Cool FXMeat -- The .fxt file to play at the core of the explosion.

This might be called elsewhere, probably by the core script.
Logged
gekido
Guest
« Reply #6 on: January 28, 2009, 09:12:38 PM »

lol you're hilarious.  looks great and sounds very cool.

the destructible object script is more for simple objects that can be lit on fire and burn etc - what you have mentioned here is more of an 'add-on' and definitely complementary to what the default script provides.

cool explosion btw - never knew the lego dude had such a pyro streak in him ;}
Logged
Squat
Hero Member
*****
Posts: 592


View Profile
« Reply #7 on: June 13, 2009, 10:35:41 PM »

I'd like to put out another request for the following FX Editor features. I cannot do some things without this.

1) Gravity values beyond 1. All we can do right now is float them down at -1, when we need -9.8.

2) Random Offset X,Y,Z. All we can do is emit from one point in space. We need lines and areas. Radial offset would be nice too.

3) Non-Billboard Rotation Angle and Speed. We currently have to build the effect on its side and parent to an object for something such as water wakes.
Logged
Pages: [1]
  Print  
 
Jump to:  

 
Powered by MySQL Powered by PHP bluBlur Skin © 2006, hbSkins
Powered by SMF 1.1.14 | SMF © 2006-2011, Simple Machines LLC
Valid XHTML 1.0! Valid CSS!