Creating a 3D image plane

Written by Frank Rueter on .

Many people wonder how to line up a 3D Card in  away that it fits the render camera's frustum perfectly and thus it's texture is unaltered in the render. In other words: How to create an image plane in Nuke?

First make sure that the texture you will be using on the card has the same exact aspect (width / height) as the render camera's film back (haperture / vaperture). This is important because by default the card will adjust itself to the incoming texture's aspect in order to distort it. And only if the card has the same aspect as the camera can it fit perfectly into the camera's frustum.
Here is something you can do to check if the above is true. I'm just using a default Camera and CheckerBoard set to 2k_Super_35(full-ap) format (2048x1556).

The CheckerBoard's label has this in it's label knob:


[expression width/height]
[expression Camera1.haperture/Camera1.vaperture]




The above tcl expression will print the node's image aspect in the first line of the label and the camera's film back aspect in the second line. In this case my film back of 24.576 x 18.672 yields the same aspect as my 2048 x 1556 resolution and we can happily move on.

If the above is not the case you should adjust the camera's haperture and vaperture knob. If you are working on a life action shot the settings should probably reflect the real camera's properties (unless the scanner applied a crop window, in which case this needs to be taken into account as well), so talk to whoever knows which camera was used and find out it's film back (or sensor size in case of a digital camera). If your workflow doesn't require camera exchange of consistent focal length values, you can make up any film back values that return the correct aspect, be aware though, that this will effect the camera's focal length in relation to it's fov resulting in inconsistent focal length values between cameras that don't have the same film back setting.

With all the above taken into consideration, all you have to do now is create a Card node and link the camera's haperture and focal length into it:


We only need the horizontal aperture because the card will get the vertical automatically based on it's input texture.

With the above set you can now use the "z" knob in the Card node to push the card further into the camera's frustum and have it automatically scale to fill it:



This will only work with the Camera in the world's origin (translate = [0,0,0]) and reset rotations (rotate = [0,0,0]).

In order to make the card follow the camera we need to parent the camera to the card's transform. Use a TransformGeo node to do this. Attach it to the Card node and connect it's "axis" pipe to the Camera:


You can now move and rotate the camera in which ever way you like and the card will stick to it as a n image plane.


If you need the card to be lined up to the camera's frustum only on one frame, you could create a snapshot camera and follow the above procedure or just use the ImagePlane gizmo.

If you want to figure out such things the painful geeky way, the CameraTrignometry cheat sheet might help.


0 # Mempfis Rains 2010-09-09 11:28
useful, but It'll be better to add BG projection on the card like it looks in Fusion
-1 # Charles Wang 2011-01-25 09:20
Great! This is exact what I want to know and this really sheds some light on my case.

Just wanna give a complement to it. since my camera has the tracking data so it is not located in 0.0.0

when I follow your tutorial, I also copy Translate and Rotate from the camera to the card and it works.
-1 # Matt Stalker 2011-03-07 08:47
Is it possible to have the viewport update during playback while looking through the camera?

You have no rights to post comments

We have 2704 guests and 68 members online