View Full Version : reverse stabilising footage

05 May 2007, 10:05 AM
Hi folks,
I have a footage stabilized with cumbustion tracker ( move + rotate + scale ). Now I wanna put the cg Object on the original footage using the stabilized data by the destabilzing function ..i am wondering how to Destabize the cg render using the stabilized data.

BTW. I tried reversing the keys by selecting the keys and using the Math Operation 'Negate' function. But the problem is there are only two key channels in tracker data X and Y only. i think they are Transform keys. I donno where Rotation and Scale keys are located.

The whole destabilizing trik is not unfold yet.
Please guide me.

thanks a mill.

05 May 2007, 04:49 PM
Why are you using the tracker to stabilize? You should be using the stabilize operator. Th stabilizer has options to reverse the stabilizng, and I have done it through expressions as well.


06 June 2007, 08:07 AM
Hi Eric,
thanks for the reply :-)

I am using 2 Point Stabilize operator in cumbusion V4.
But in there I couldnt figure out where the motion reverse function is located.
Also, if you could put some light on the expression part, it will be gr8.


06 June 2007, 04:28 PM
1 Point Stabilize (only) has an Invert option, I will check at home or do some math to remember what I did.


06 June 2007, 04:44 PM
Ok try this:
1) Duplicate the Stablizer Operator.
2) Set the Stabilize Point Expression to (Layer Dimension/2)-(Stablized Original Stabilze Point).

Stabilize Point X:
(720/2)-(CB.GetChannelValue( "../../../Stabilize 1 Point/Stabilize Point/X", CB.GetCurrentFrame() ));
Stabilize Point Y:
(486/2)-(CB.GetChannelValue( "../../../Stabilize 1 Point/Stabilize Point/Y", CB.GetCurrentFrame() ));

Hope that helps some,

06 June 2007, 04:32 AM
well thats cool for 1 point operator.

I am stuck in 2 point badly.... and I have also used Rotation and Scale options for stabilizing.
So if there are any expressions then these also should be taken into account, right?

wish there was a option to destabilize in the operator itself.
Any other solution?



06 June 2007, 05:55 AM
Do it for both points then, ie:

Point 1:
(720/2)-(CB.GetChannelValue( "../../../Stabilize 2 Points/Point 1/X", CB.GetCurrentFrame() ));
(486/2)-(CB.GetChannelValue( "../../../Stabilize 2 Points/Point 1/Y", CB.GetCurrentFrame() ));

Point 2:
(720/2)-(CB.GetChannelValue( "../../../Stabilize 2 Points/Point 2/X", CB.GetCurrentFrame() ));
(486/2)-(CB.GetChannelValue( "../../../Stabilize 2 Points/Point 2/Y", CB.GetCurrentFrame() ));

This is how I did it in the past, i believe, and it worked for a simple test I did here.

Edit: seems to only play nice with position information. Not sure what to say. You would have to figure out the math that it is using for the scale/rotation and then work with that too.


06 June 2007, 10:43 AM
yes eric... u are right.

I wonder how the rest of the vfx gurus do 2 point operator destabilize with move, rotation and scale in cumbusion.


06 June 2007, 08:38 PM
I don't use a stabilize node for destabilizing layers. What I'll do is just reuse the track. When you've done the Stabilize track. Export your tracking points. Then later when you have a layer that needs to be matched up use the layer level tracker and import your tracker data again.

If I need layered animation I'll apply the transforms to a dummy and parent the layer to that.

Another trick is to use nulls as your tracker points. Track them conventionally and then later link the new tracker points you need to the nulls.

01 January 2008, 09:47 PM
I did finally find an answer that actually works for this at VFXTalk ( Basically do your 2 point stabilization, add a switcher below it, add a static image with easy track points (the user there suggested a checker box, but just a box works fine) as the second input, set the static image as active (This results in a destabilized box), add a second Stabilize 2 point at the top (with the same Positon, Scale, Rotation options enabled), stabilize it, switch back to your original footage.

Edit: Turn off the first Stabilize 2 Point and switch to your CG footage. This will result in the destabilized CG Footage.


01 January 2008, 06:46 AM
To do this with expressions you need to take the value on the first frame (frm1) from the original stabilze operator and add it to the result of the first frame value (frm1) from the original stabilize operator minus the current frame (frmCur) value, ie frm1+frm1-frmCur or simply (2*frm1)-frmCur.The Expressions to handle it would be something like this:
Point 1 X:
(2*CB.GetChannelValue( "../Stabilize 2 Points/Point 1/X", 0 ))-CB.GetChannelValue( "../Stabilize 2 Points/Point 1/X", CB.GetCurrentFrame() );

Point 1 Y:
(2*CB.GetChannelValue( "../Stabilize 2 Points/Point 1/Y", 0 ))-CB.GetChannelValue( "../Stabilize 2 Points/Point 1/Y", CB.GetCurrentFrame() );

Point 2 X:
(2*CB.GetChannelValue( "../Stabilize 2 Points/Point 2/X", 0 ))-CB.GetChannelValue( "../Stabilize 2 Points/Point 2/X", CB.GetCurrentFrame() );

Point 2 Y:
(2*CB.GetChannelValue( "../Stabilize 2 Points/Point 2/Y", 0 ))-CB.GetChannelValue( "../Stabilize 2 Points/Point 2/Y", CB.GetCurrentFrame() );Where Stabilize 2 Points is the name of the initial Stabilize 2 Points and 0 is the first frame. You should be able to easily create a Capsule to handle this for you.


10 October 2008, 10:16 AM
Thanks! very interesting subject. I tried this expression. I kind of understand it, but I dont know how to get it working. Could you please make simple tutorial on this...a step by step list how to achieve this? You can also mail me : (


10 October 2008, 10:05 PM
It shouldn't be that difficult.

Duplicate the Stabilize 2 Points. On the Duplicate (Stabilize 2 Points(2)), you need to add the expressions. The expressions need to reference the Original (Stabilize 2 Points) so, Link the Channel from the Duplicate (Stabilize 2 Points(2)) to the same channel on the Original (Stabilize 2 Points). Example:

Operator Tree:
Stabilize 2 Points(Duplicate)
Stabilize 2 Points(Original)

In the workspace select Stabilize 2 Points(Duplicate), Point 1, X Channel. Press [Link(..)] and Pick Stabilize 2 Points(Original), Point 1, X Channel. This will result in an expression similar to these.

Original Link Expression:
CB.GetChannelValue( "../../../Stabilize 2 Points(Original)/Point 1/X", CB.GetCurrentFrame() );

Modified Expression (Red/Yellow characters have been added to the expression):
(2*CB.GetChannelValue( "../../../Stabilize 2 Points(Original)/Point 1/X", 0 ))-CB.GetChannelValue( "../../../Stabilize 2 Points(Original)/Point 1/X", CB.GetCurrentFrame() );

CB.GetChannelValue( "../../../Stabilize 2 Points(Original): This will always be different based on the Workspace.
0: This is the first frame of the Stabilize 2 Points(Original) Operator. The math works by calculating the change from the first frame of the Operator to the current frame.

Repeat for Point 1 Y and Point 2 X/Y. Beyond what I just posted there is nothing a tutorial will do, because Expressions are Workspace dependent. If it still doesn't work post a screenshot of your workspace panel showing the Expressions and the Original Stabilize 2 Points Operator.


10 October 2008, 05:08 PM
Still no luck...

I did everything as you described, but it doesn´t work. Here is a sample image of my workspace. Footage is from tutorial. I hope this screenshot helps :)



10 October 2008, 07:29 PM
Yeah it is creating some offset. On top of that you can't recover cropped data so you need to do a negative crop on the footage to give some padding. On top of that the first Stabilize 2 Points can't have Resize Image enabled. I will have to see what is causing the shift and if there is math that will work to fix it.


CGTalk Moderation
10 October 2008, 07:29 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.