Oct 22nd 2009

Fusion 6 added a Color Matrix tool that lets you enter your own matrix by hand, but the biggest problem with it is the lack of any methods to modify it with.  You can’t even assign controllers to it.

Fuses, however,  let you use handy methods to modify a matrix.  I’ve used some of them to create an RGB equivalent of the 3D Transform tool.  It has a similar UI, just as 3TT does, but this modifies RGB, not XYZ or UVW.

Color Matrix Tranform fuse

Color Matrix Transform fuse

Read the rest of this entry »

1 Comment »
Oct 22nd 2009

Two more Fuses, this time some really simple ones that convert multi-channel images to mono-channel and back again.   Color is overrated, in general, and I find myself getting a lot of use out of these.

Color to Mono

Color to Mono

Mono to Color

Mono to Color

Read the rest of this entry »

No Comments »
Sep 22nd 2009

The latest builds of Fusion (>475) allow fuses to work with canvas color and ROIDS.  I thought I’d try that out on my Invert fuse, and it seems to work just fine.  You now have the option of whether or not to invert the canvas color.  The ROIDS support makes what was a pretty fast fuse into something even faster under most situations, and it won’t break a nice DoD-managed comp.

As time permits, I’ll go through my other fuses and add similar functionality.

Download Invert fuse 1.5Download Invert fuse

2 Comments »
Sep 2nd 2009
Absolute Values
Absolute Value Fuse

Absolute Value

I’m often trying to find the magnitude of something, regardless of sign.  Commonly done for things like normals or velocity or distance.  You would expect there to be a built in tool for that sort of thing, but there isn’t.

Previously,  I did it with a CT or a Fuse operating on a per-pixel basis.  An f.Color.rgb = abs(f.Color.rgb) sort of thing, which is pretty slow in Fusion as a CT or Fuse, but is plenty fast in Cg.  More on that later.

Today I had an idea on how to do it with a matrix.   The basic idea is to scale the the image by .5, and by -.5 and find the difference of the two.  So |x| = (.5*x)-(-.5*x)

This method is much faster.  The resulting Fuse runs about 40% faster than a CT, and several times faster than the old Fuse I had made which operated pixel by pixel.  Unfortunately, ROI isn’t supported yet for Fuses, so if you have a tiny ROI, the CT or the CMx’s will both run faster.   EDIT: ROIDS can be supported in Fuses…  I’ll need to add it to the Fuses I’ve posted so far.  Stay tuned…

So here’s the Fuse, a Cg ViewShader that lets you view the absolute value in a Viewer, and an example comp showing the CT, Fuse, and CMx methods, as well as the ViewShader.

Download FAbsolute Fuse 1.05Download FAbsolute Fuse

Download Absolute Value Viewshader 1.01Download Absolute Value Viewshader

Download Example Comp (Absolute Fuse) A01Download Example Comp (Absolute Fuse)

It would be interesting to see if the disparity between the speeds  of processing the matrix vs per-pixel goes away when you compile a c++ plugin…

2 Comments »
Dec 19th 2008
Invert?

Ok, so this one was just to see if I could make a fuse that was faster than the tool it was replacing, in this case Bol.

Download Invert fuse 1.5Download Invert fuse

It scales better than Bol does, so on small images, they run at about the same speed, but on really large images, the fuse runs several times faster.

It’s not all about speed, though.  Having a tool called “Invert” that inverts just makes sense to me.  What I loved about Shake was that the tools did so little; each was a little atomic thingy, like IAdd, SetAlpha, IMax, etc.  It made it very easy to “read” a comp just by looking at the flow.  With Fusion, I just see ChannelBool…,  ChannelBool…, ChannelBool…, etc.  Who can read that?

Duiker Research must have had a similar thing in mind when they made their drUtilSuite for Fusion.

3 Comments »
Dec 9th 2008
Normalize fuse

Download Normalize Fuse 1.1Download Normalize Fuse

Here’s a fuse I made to normalize an image from one range to another.  The math is simple, but it gave me a chance to try out ColorMatrix() for the processing as well as SetSource() for the UI elements. It’s pretty fast, but Matt might take a crack at converting it to a C++ plugin just to see what is involved in the conversion process and see how useful fuses are for prototyping.

1 Comment »