How to calculate projector lense specs for projection mapping?


i was wondering if there is a more or less precise way to calculate the specs of a Projector lense ?

This is all i have from the projectors manufacturer:

Projection Lens: F = 1.5, f = 13.92mm Manual Focus
Projection Screen Size (Diagonal): 30" ~ 100" (76cm ~ 254cm)
Projection Distance: 3.0’ (0.9m) ~ 9.9’ (3.0m)
Throw Ratio: 66"@2m (1.40:1)

Also, i noticed, as with many other projectors, the lightbeam doesn’t come straight out of the center of the lense and the beam points up …

How do i get the FOV of the projector ?

Do i need to compensate for the ‘beam shift’ somehow ?

i’ve been reading everything i could find but can’t figure this out …

thx for any help with this

if you are using the Projector (EX9) node (you shuould) there you have all the necessary info to fill, it should be enough.
Calculate the x or y shift just consider that y shift == 0 the beam is straight from the lens, and the whole height of the projection is == 1
So in the case you show in the image shift-y == .5

couple of starting places

people still using the old projector node?
i give up…

(otherwise, i think this is a link to the new projector node we presented at NODE10 )

Hi Elliot
I don t see any difference … what do you mean with “old projector node” ?

I assume this was meant light heartedly.

Never knew there was a ‘new’ projector node. Shame this isn’t part of the core release. So yeah… just looked at it, what does it do differently to the old node?

I am curious too, what is the difference?

and if we are to have a new projector node, wouldn’t it be a good idea to replace the 16:9 input, with something like projector aspect and have two inputs. I mean I come across a 16:10 projector more often than a 16:9 projector.

the ‘new projector node’ was homography + position (i.e. no other inputs are necessary, no aspect ratio, no throw ratio, no lens offset, no rotation, etc)
most importantly, it was meant to be the end of ‘in a bit, left a bit, out a bit, up a bit’


  • most recently, we’ve got CalibrateProjector which uses OpenCV to do the calibration (wraps CalibrateCamera)
  • before that there was Padé which worked similar to the OpenCV routine, but Padé wasn’t so reliable for some users, and had to be applied in vertex shader.
  • before that was the new projector node (homography+position)
  • before that was the old projector node

plenty of people swear by the projector node,
in general i find it inaccurate and time inefficient
but considering its such widespread usage/support, i can’t deny its worth considering
and that it does get results
even if i’m emotionally opposed to it

the file linked before could be a demo of the old projector node

perhaps these links:
(i’m in osx at the moment)

be great to get a youtube video of page explaining the methods.


@ Elliot - Is ‘CalibrateProjector’ part of your new emguCV plugin pack?

I fully hate it! more on CalibrateProjector please… Mmmmmmmmmmm…

Calibrate projector is described at

  • there’s downloads there of an old EmguCV package.

CalibrateProjector is also included in the new EmguCV, but things have changed a little (+OpenNI is a separate download)

I should put together a static mesh mapping demo as well which may be easier applied / a clearer learning tool.

Also it should be simple to wrap that into yet another ‘projector node’ which takes simple inputs and gives simple view and projection outputs (currently the transforms come out in pixel space rather than normalised space, and a separate module corrects it. this could be combined

more simply:
Aka 1:1.4 means that the image base will be one meter width at 1,4 meter distance. the eigth must be calculated depending from your output size ( 19201080, 1024768 ) wich is not the same depending of format. Angle of projector is modifying a lot and this should be don on plans or maquette to calculate you opening.

about center of the image, you have a shift lens option usually.
by experience you should avoid to count on max ratio lenses, and stay around 10% down of max ratio to avoid surprises of opening.

@elliot - arh ok - yeah saw CalibrateProjector and guessed only worked with Kinect. Yeah I now see how this could be used without the Kinect and would effectively replace the projector node although you would still have to use a camera with the setup right?

I invite everyone interested in Projection Mapping to study these tools Elliot is talking about, they are amazing!


Tx Elliot…saves a lot of time ;)

I think these have now been superceeded by the opencv stuff.

Will confirm when I ever get round to testing them :)

Yes as mentioned in Elliot’s post ;)

they call me sherlock…

more like Miss Marple

I tried to get the “projector node example_V1.2” ( working but it is not possible to move the source points in the source window.

Moving the target points works fine.

Can anybody help?

Thanks, Gerrit

in this one you’ll have to set your source points by :
-Set manually the source ID.
-Middle mouse click in the source renderer to make it active
-Left click to select your point.

Of course this can be enhanced. Like selecting source IDs with keyboard.