ImagePlane v1.2

This location is for Registered Users Only.
Perhaps you need to login or register.
Contributor: Frank Rueter
Use a camera to match or stabilise a shot
6.0 or later
Linux, Mac, Windows
17 Aug 2010
The ImagePlane gizmo can be used like the Tracker node for matching or stabilising, except it will use a match move camera to provide the required animation:

Technically, the imagePlane gizmo turns the incoming image into an image plane of a snapshot of the used camera at the given reference frame.

import chan file  use to import a chan file for using an internal camera (instead of connecting one). When this is used the imported values will live in the CameraKnobs tab. 
 use input if checked, the connected camera will be used, otherwise the values from the CameraKnobs tab will be used (imported chan file) 
 output chose to match or stabilise the incoming image based on the camera 
 refFrame frame to keep unmodified 
 distance distance of the internal 3D card to the camera. Use to control the amount of parallax applied to the image
 output parameters to control the output format 

Please login in order to download these files.


0 # Danny Duchesneau 2010-08-13 09:44
When I add this node to my script I get this message:

Obsolete_knob import_chan call is wrong, probably a missing NULL for script argument

But it works... and I like it!


0 # Frank Rueter 2010-08-17 17:27
I thought I fixed that a while ago. Must have uploaded an old file. I will dig up the update...
+1 # Frank Rueter 2010-08-17 17:29
ok, just updated the gizmo file. does the error go away with this one for you?
0 # djati waskito 2010-08-20 09:30
thanx a ot frank
0 # Hamish Schumacher 2010-11-08 15:53
best ever,

thanks Frank
0 # Charles Taylor 2011-02-23 23:10
0 # Salvador Zalvidea 2011-05-10 05:39

I have this set up :

Original plate -> Image Plane1 set to "stabilize", Camera1 as input, ref frame 1 -> Image Plane2 set to "match", Camera1 as input, ref frame 1

Original plate and output of Image Plane2 match at the ref frame, but do not match anymore at frame 100. Am I doing something wrong here ?


0 # Salvador Zalvidea 2011-05-10 06:01
Solved. Distance was wrong. Actually, adding a difference node between original and stablised-match ed plate is a good solution to set the distance.
0 # Salvador Zalvidea 2011-05-10 07:09
Not solved in fact. I'd like to be able to stabilise one particular element of the shot and that only works with the distance. I don't understand why stablising and the matching doesn't give me back the same plate as the original. Any help is wlcome.

0 # Frank Rueter 2011-05-10 14:54
ImagePlane only puts a card into 3D space and makes it look at camera at your reference frame, as well as fill the camera frustum so nothing changes at that point. From then on the motion depends on the camera. If it's not a nodal camera and the object you are trying to match has volume to ity (i.e. there is parallax in involved), ImagePLane will not get you all the way there. It's best for nodal cameras and things that are far enough away so parallax can be neglected.

Also, lens distortion can be a factor for mismatch.
0 # Salvador Zalvidea 2011-05-10 15:34

One solution would be to generate a corner pin with the ImagePlane node, so I can reverse it.

Thanks anyway, I find you gizmo very useful.

0 # Frank Rueter 2011-05-11 14:47
that's what the output mode is for. one will match, one will stabilise
0 # Salvador Zalvidea 2011-05-11 16:42
Then that's what I don't get : why, if I connect two ImagePlane nodes one after the other, the first set to stabilise and the other to match, don't I get the same frame at all frames ? Isn't one option doing the exact opposite of the other ?

Maybe is it because I've tried on non nodal camera movements, but am I wrong in thinking that shouldn't be a problem ?

0 # Frank Rueter 2011-05-11 18:16
it does do that for me. Are you sure you are using the same distance and reference frame for the stabilising and the matching? is your output resolution matching the input resolution and does the image aspect match your cameras filmback aspect?
0 # Salvador Zalvidea 2011-05-12 02:38
Here is a test script with the problem I'm talking about, at frame 1 of course everything's fine, at frame 100 original and stabilised-matc hed plates do not match :

set cut_paste_input [stack 0]
version 6.2 v2
push $cut_paste_input
Camera2 {
translate {{curve x1 -252.1427307 x100 -256.1075745} {curve x1 118.1848984 x100 118.5657959} {curve x1 116.8148804 x100 108.8629684}}
rotate {{curve x1 8.585992813 x100 8.783430099} {curve x1 158.0074463 x100 171.6047974} {curve x1 -0.8503982425 x100 1.075308681}}
focal {{curve x1 12.60000038 x100 12.60000038}}
haperture 11.25220013
vaperture 6.324599743
near 0.009999999776
far 600000
file /jobs/pt/users/ rebeccam/bs_077 _0010/published /trackCamera/bs _077_0010_rm_tr ackcamera_right _v001.fbx
fbx_take_name {{1} Default "Take 001"}
fbx_node_name {{7} "Producer Perspective" "Producer Top" "Producer Bottom" "Producer Front" "Producer Back" "Producer Right" "Producer Left" bs_077_0010_pl0 1_v01_right_1_2 }
name Camera2
selected true
xpos -1785
ypos -198
set N77b7aa0 [stack 0]
push $N77b7aa0
CheckerBoard2 {
inputs 0
name CheckerBoard2
selected true
xpos -1600
ypos -298
ImagePlane {
inputs 2
name ImagePlane6
selected true
xpos -1600
ypos -197
knob ""
output stabilize
format 0
crop false
focal 12.6
haperture 11.2522001
vaperture 6.32459974
label_1 ""
ImagePlane {
inputs 2
name ImagePlane7
selected true
xpos -1600
ypos -77
knob ""
format 0
crop false
focal {{parent.parent .ImagePlane6.CA M_ANIM.focal.ri ght i}}
haperture {{parent.parent .ImagePlane6.CA M_ANIM.hapertur e.right i}}
vaperture {{parent.parent .ImagePlane6.CA M_ANIM.vapertur e.right i}}
label_1 ""
0 # Frank Rueter 2011-05-12 16:29
ah, sorry, yes, this is because your camera isn't nodal and your cards are close enough to pick up parallax, therefore introducing distortion that cannot be compensated for by a simple card trick.
0 # Nic v 2011-10-06 17:25
Almost perfect Mr Frank. :-) Anyway to get it to not "clip to format"?, as in not lose the image that goes offscreen when its stabilized and then matchmoved again?

0 # Ned Wilson 2011-10-10 11:39

Well done! How difficult would it be to add some sort of "Remove Jitter" function?
0 # Frank Rueter 2011-10-11 01:36
I can implement the expressions mentioned here when find some time:

Though I would assume it's preferable to dejitter your incoming camera in case you need to use it for other setups as well.
0 # Addison Petrie 2016-12-03 15:06
0 # Frank Rueter 2016-12-04 00:11
There is plenty of info on this in the docs and online. try this one:
0 # Cory Banks 2017-10-28 00:12
Hi Frank, I love this tool! Is there a way I can make the refFrame the frame the node was created on? Thoughts?
0 # Frank Rueter 2017-10-28 00:28
Sure. Just add this line to your
nuke.addOnUserCreate(lambda:nuke.thisNode()['ref'].setValue(nuke.frame()), nodeClass='Imag ePlane')
0 # Cory Banks 2017-10-28 02:30
Thanks for the fast reply, unfortunately I am using it as a toolset, not a gizmo. Does that limit my ability to do this?
0 # Frank Rueter 2017-10-29 02:56
You mean you are using it as a group? Yes, if you use groups instead of gizmos you are missing out on these sort of simple workflow things. You could write another script that checks is a created group is an ImagePlane group based on assumptions, but such simple one-linersd wont' work as you don't have the custom node class.
0 # Ian Northrop 2020-09-04 19:06
This is really cool and very useful. Thank you, Frank.
0 # Guillermo Algora 2022-07-20 14:43
It's working great. Thanks! :)

You have no rights to post comments

We have 2517 guests and 75 members online