XM Magdalena 3D print, GGeorgy (3D)
LC #42 Pipers Alley

View Full Version : reverse stabilising footage

05-31-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-31-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-01-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-01-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-01-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-04-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-04-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: Hmmm...it 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-04-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-09-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-26-2008, 09:47 PM
I did finally find an answer that actually works for this at VFXTalk (http://www.vfxtalk.com/forum/showpost.php?p=24734&postcount=2). 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-27-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-14-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 : postreal@hotmail.com (http://forums.cgsociety.org/postreal@hotmail.com)


10-14-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-16-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 videocopilot.com tutorial. I hope this screenshot helps :)

www.verseproductions.fi/cgtalk/sample_of_wp.jpg (http://www.verseproductions.fi/cgtalk/sample_of_wp.jpg)


10-16-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-16-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.