FORUMS: list search recent posts

# S3D motion tracking problem

FAQ   •   VIEW ALL
 S3D motion tracking problem on Sep 2, 2011 at 9:16:45 am

I've got footage of a girl singing to camera, well two cameras, it being stereo 3D.

My problem is it was shot using a flimsy rig which has created shifts in the x and y axes.

What I want to do is track both cameras, and then create an average and apply that to both.

Imagine the nose in the L camera being at position 601, 310 and in the R camera 605, 320. I want them both to move to the average between the two: 603, 315. As the video progresses the subject will still move, but the L and R will be at an average of the two cameras former positions.

I've tried using TrackerAverage http://www.aenhancers.com/viewtopic.php?f=9&t=55&view=next but that was written for AE6 and doesn't seem to work as it should in CS5. Or is it working and I'm just failing to implement it properly..?

rd_AverageTrackers http://www.redefinery.com/ae/view.php?item=rd_AverageTrackers produces a null object that's an average of one keyframe from several trackers, which would get me there, but I need to to do the whole sequence, not just one frame.

It's just arithmetic though, isn't it? A simple expression should do it, but writing expressions is not my strong point.

Anyone able to help?

 Re: S3D motion tracking problemon Sep 3, 2011 at 1:42:29 am

It sounds like what you want to do is -
1) move both positions to an average location
2) then offset one of positions

If A and B represent the positions of the two objects then ((A+B)/2) will give you their average position.

Then, if C=((A+B)/2), C+D will get you the offset, where D = offset value.

This is the mathematical interpretation of your two goals.

We'll start off by creating the assets to assist us. Create a Null and rename it Controller . We will use this layer to contain the Averaged Position and Offset values. Apply an instance of Effect>Expression Controls>Point Control. Rename it, AveragedPosition. Duplicate it and rename the duplicate, OffsetValue.

Select and duplicate both layers that contain the positional values to be averaged. Change their names to INPUT A and INPUT B respectively and switch off their visibility icons. We will only use their positional data for our calculations.

Create an Expression for the AveragedPosition effect on the Null Layer and type in the following -
take note that anything within [ ... ] are instructions

A=[pickwhip to the position property of INPUT A];
B=[pickwhip to the position property of INPUT B];
((A+B)/2)

note - the semicolon is required at the end of each of the first two lines.

The numbers in the AveragedPosition effect now contain the average of both layers. TO see this, create an Expression in the position property of one of the original layers and pickwhip to the AveragePosition value in the Controller layer.

You should have an Expression that reads like the following -
thisComp.layer("Controller").effect("AveragePosition")("Point")

DO the same thing with the second 'original' layer except this time, after pickwhipping to the AveragePosition value, leave the cursor in the Expression Box and type in a + and then pickwhip to the OffsetValue effect's value.

You will have an Expression script that reads like this -
thisComp.layer("Controller").effect("AveragePosition")("Point")+thisComp.layer("Controller").effect("OffsetValue")("Point")

Now all you need to do is to mess about with the OffsetValue of the Controller layer to decide on the actual amount of offset you require.

HTH
RoRK

Intensive AE & Mocha Training in Asia.

 Re: S3D motion tracking problemon Sep 3, 2011 at 8:13:30 am

Roland, Many thanks!

I'll give this a go once I'm back at the coal face on Monday.

Cheers!