Letting the cat out the bag on Fuse 3: Tweening, Physics & 3D
{Note: You can see the gears turning here that led to the Go concept outlined in the following post.}
To forewarn the fanbase, this is not a release announcement, no major progress to announce at this time.
I've been holding my cards close since I came up with these concepts around January of this year but it's time I layed 'em on the table.
Fuse 3 (if built) will be a combination Physics + Tweening Engine with 2D + 3D animation & sequencing capabilities.
The idea is that all details are registered with a central class (probably FuseCentral) that monitors and prevents overlap between various handlers during runtime.
Imagine "binding" a target object's properties to Fuse, then applying physics motion and canned animations without having to worry about the complexities under the hood.
As with Fuse 2, everything could be sequenced in a simple declarative format. But we're also planning for such 'dialects' to be add-ons to a standard OO library, so there could be MXML flavors, etc.
Imagine a runtime-generated titles sequence: Each letter fades up and animates in (tweens+3D), then drops to the ground with a bounce (physics+3D), then fades out (tweens), all in a naturalistic overlapping sequence like it was all done on a timeline. The setup for this sequence might include "binding" physics handlers to a 3D engine such as PaperVision. But the end product would greatly simplify the process of defining the sequential instruction set, and would lift the burden of having to work with a huge pile of libraries just to get a simple animation built.
As long as it's fast this system might be a game-author's dream as well, for example imagine writing a 'Mario Fuse' with a blend of canned and physics animations.
I should mention that although I've done some work on a futuristic tween engine, I'm not opposed to working with Tweener, APE, or any other existing solution, although no decisions have been finalized yet. This architecture essentially provides an umbrella for various 'plugins' to be able to function seamlessly together, while retaining Fuse 2's mix-and-match style.
If I could have my druthers, I would build Fuse 3 as an extremely clean codebase that's portable to C++ or other languages. I think that After Effects could benefit from such a system! There are some great people on our team, so even if we don't shoot the moon perhaps we'll be able to produce something that's at least as helpful (dare I say groundbreaking?) as Fuse 2 was in its time.
This map (fuse-map2.pdf) shows the pieces of the puzzle. We welcome your comments, and again if you're a top-flight coder interested in helping us create Fuse 3 don't hesitate to drop me a line.
Before I wrap this up I should answer some Fuse 3 FAQ's:
Q: What about filesize?
It's true that I've thrown this concern out the window a little although I always shoot for keeping it reasonable. There are other 'lite' tweening solutions out there, and my priority for now is on new functionality & ease of use. The mix & match approach of Fuse 2 will be continued which enables pieces of the kit to be used as standalone utilities.
Q: Why not just port Fuse 2 or put out an AS3 sequencer for now?
First there is really no point in porting Fuse2, which was put out as an all-in-one kit (vs. extensible) and was built in some strange hacky ways specifically to combat the speed limitations of AS2. In other words there's really nothing in Fuse 2 that is appropriate for AS3. Fuse 3 should be a clean, fully extensible OO codebase without all the compromises.
Q: What progress has been made?
One barrier to progress is the simple fact that the plans for Fuse3 are so ambitious!
As you've gathered we don't have any usable code to release yet. It's been a busy year though, including the procuring of our first official Fuse Project Sponsors
(thanks sponsors!), looking seriously at options of longer-term financial backing for the project and a (somewhat rocky) go at forming a private Fuse thinktank group with some really awesome people. I had to put that group on hold when a demanding Flex project ended up taking over my life for a while — a man's gotta put bread on the table.
Q: When's your birthday?
A: Why, it's today, thanks for asking!
August 27th, 2007 at 6:56 pm
thanks for the update moses. will be cool when f3 floats down from the clouds and into our workflow.
one burning question….will it run on the iphone?
(ha. hilarious.)
August 27th, 2007 at 6:58 pm
Happy birthday mate!
I’m glad to see Fuse 3 isn’t totally dead. I’ve been working on my own super light AS2 tween engine lately, getting warmed up for working on AS3 and Fuse 3. So does this mean the Fuse 3 list is going to be active pretty soon?
August 27th, 2007 at 6:59 pm
first come ^_^
August 27th, 2007 at 7:11 pm
Incredible news Moses. Also, Happy Birthday!!
August 28th, 2007 at 2:53 am
great!
and happy bday mate.
August 28th, 2007 at 3:41 am
Great news ! Fuse and 3D great !!!
August 28th, 2007 at 4:44 am
Fuse 3 sounds like it could be the holy grail for flash designers! It will be totally awesome if you can pull it together with your team.
Fuse 2 is already helping me out so much!
Thanks a bunch and happy birthday!!!
August 28th, 2007 at 5:06 am
hummm,
i would like to see fuse3 as extremely flexible, lightweight whitebox, capable to “fuse” different plugins or modules easily together through IoC or related mechanisms.
re-emphasizing a lighweight core, where all tweening, physics or 3D and those other stuff youve mentioned are seperated and therefore whiteboxes, too.
after reading this article twice, i tend to think that you were trying to say exactly that, but on first read, i only saw the big-all-in-one-blob-fuse, which is definitly a bad idea, as time and experience in developing showed.
nonetheless, i REALLY enjoyed fuse2 and expecting a even greater fuse3!
thumbs up!
ps: happy birthday from berlin!
August 28th, 2007 at 5:14 am
i almost forgot to praise your new blog, although i definitly HATE the crosshair-cursor on the links
August 28th, 2007 at 7:25 am
Great news Moses, cheers for the update! I can’t wait to get my hands on this, and if its half what you just described then my job is gonna get a hell of a lot more exciting, keep up the good work and Happy birthday mate!!!
August 28th, 2007 at 1:20 pm
Yeah Moses! Exciting stuff. Thanks for the shout and let me know if you need any help:) Happpy bday again!
August 28th, 2007 at 2:35 pm
Awesome! Looking forward to what you (guys) cook up next! And happy belated birthday!
August 28th, 2007 at 5:00 pm
Thanks for the comments so far folks. Japanitrat: yes, what’s up with that crosshair thingy? Must be part of the template I used.. haven’t gotten around to fixing it up yet.
I made a post to the Tweener list and have been getting some really great responses there. I would encourage people interested in this discussion to join both the Fuselist and the Tweener list to keep up, we’ll be bouncing it back and forth between those two venues.
August 28th, 2007 at 5:20 pm
Happy Birthday man!!! \m/
August 28th, 2007 at 6:29 pm
Fuse 2 is awesome. Fuse 3 sounds… perfect? (happy b-day!)
August 28th, 2007 at 7:32 pm
This sounds really cool!
I’m working on Papervision and ‘ASCollada’ ( http://code.google.com/p/ascollada/).
Collada (http://www.collada.org/) describes both animations and physics quite well I believe. So it may be worth looking at.
Anyway: happy bday!
August 29th, 2007 at 1:19 am
I’m useless, lol, Just want to say Happy! Happy!
August 29th, 2007 at 1:38 am
Great Stuff Moses, More bounce to the ounce
August 31st, 2007 at 6:50 am
I’ ve seen that many times in the production workflow there was a need for an AUTOMATIC MASKING SYSTEM, something like this
import mx.transitions.*;
import mx.transitions.easing.*;
function maskIt (whatMovie:MovieClip, time:Number){
whatMovie._visible = false
var activateTimer:Number = setInterval(loadImage, time);
function loadImage(){
TransitionManager.start(whatMovie, {type:Wipe , direction:Transition.IN, duration:1, easing:Regular.easeOut, startPoint:4});
//επιτρέπει μόνο μία φορά να παίξει
clearInterval( activateTimer );
}
}
function demaskIt (whatMovie:MovieClip, time:Number){
whatMovie._visible = false
var activateTimer:Number = setInterval(loadImage, time);
function loadImage(){
TransitionManager.start(whatMovie, {type:Wipe , direction:Transition.OUT, duration:.5, easing:Regular.easeOut, startPoint:4});
//επιτρέπει μόνο μία φορά να παίξει
clearInterval( activateTimer );
}
}
maskIt(label_mc, 2000);
demaskIt(label_mc, 4000);
Also it would be very nice if there was a much more descriptive examples in the future documentation for advanced features of fuse (like removeTarget, shift, slice etc) in order to understand when we can use them. Thank you Moses and all the other team for you remarkable libraries!
September 4th, 2007 at 4:06 pm
this is a more advanced example of what I mean
http://mirko.highbox.net/labs/effector/
September 7th, 2007 at 2:53 pm
Dude… if you were here right now, I’d hug you.
Thanks for everything Moses!
October 23rd, 2007 at 1:49 am
[...] MosesSupposes might release a Fuse 3 still (built from Go?) but that is still in an private beta stage ( for Go- not Fuse) fairly recently and seems a bit unsure as to whether it will be released or not per the blog. To forewarn the fanbase, this is not a release announcement, no major progress to announce at this time. [...]