SimProj ScreenshotRecently i had to make some plans for an MT table, but i found the shockwave calculator (“rearproject”) too slow and memory sucking. Besides, changing projection width/height ratio is impossible…

So i started a new project in Processing, the aim being having a similar simulator but faster and maybe with more options.

Currently it’s only in 2D, unlike the rearproject. But i’ve release the sources now, so feel free to make some improvements ! Please notify me if you’re modifying it, so i can follow the progression of it.

The software is now downloadable as an application (see attached file) and is crossplatform. However, the minor updates will be firstly /only online.

View the project online (java required) :

Download the application (All platforms, sources included) : SimProj 0.95 (23/07/2010)

This application uses the controlP5 library : you can download it here :


In this version, you can :
- add/remove as many mirrors as you want
- add/remove as many projectors as you want

- change the position/orientation of the projection screen
- change the width/height ratio of the projector
- see all the dimensions/distances you could possibly imagine
- choose your measures display factor
- lock the wanted size of the projected screen and adjust the dimensions to fit in.


The blue screen is the projection surface. The others are mirrors.

- Proj X/Y : Position of the projector (Depth coming with 3d support, in future release)
- Proj Width / Height : Dimensions of the projector (Depth coming with 3d support, in future release)
- Proj rotation : I think it’s self explanatory
- Proj alpha : Transparency of the projector (in small configurations, it allows to make the scene look a bit cleaner)
- Projoffset : Offset of the projection angle of the projector.

- Throw ratio : The ratio between the image width and the distance between the projector and the screen (1.6 meens 1.6 meters/feet/whatever of screen<->proj distance to get an image with a width of 1meter/foot/whatever). You can usually find this information on the spec sheet of your projector.

- Distance factor : Tweak the distances displaying to fit your needs. That way, there is no metrics constraints, the units you’re seeing are whatever you want. It’s based on original pixel distances, so value of 1 means “1 unit = 1 pixel”.

- Lock Projection To + target Width : Lock the projected image of the 1st projector (“p1″ when “proj infos” is checked) an ajust the distance factor in function. /!\ When this option is checked, the distance Factor will be constantly recaculated so you won’t be able to tweak it. Instead, use the target width to choose the final projected image width.

- Dimensions Precision : Adjust the precision of the decimals when displaying dimensions (1, 2 or 3 numbers after the comma)

- Mirror dim : Hide/Show dimensions of the mirrors, width, height and actual length.
- Mirror angles : Hide/Show angles informations of the mirrors.
- Mirrors handles : Hide/Show the green points on the mirrors that you can use to tweak the position/length/rotation of the mirrors.

- Proj infos : Hide/Show the rotation / throw ratio of the projector, and the sketch of the projected images with eventual distortion (Needs more work to make it really accurate, integration of sample image in it is planned in future version) –> each sketch is coloured and positionned in relation with the color and index of the projectors

- Bounding box : The main box that contains all the ‘active’ elements involved in the projection simulation (if a mirror is not reflectinf the 2 rays casted by the projector, it isn’t considered as active). Even if the option is checked, the bounding box is only showed if the projection surface is “active”

- Advance BBox : hide / show more informations when the bounding box is active, like distance between the mirrors and the left/top/right/bottom of the box.

- Change colors : Change randomly the colors of the projectors, if the first colored are not visible or, well, if you just don’t like them. Doable infinitely.

- Mirrors : the number of mirror you want

- Projectors : the number of mirror you want

- Reflection max : The maximum reflections a ray can have. If you have a lot of mirrors in your scene, you may want to tweak value, so you can understand where the rays are casted.

- 16/9, 16/10,4/3,custom ratio : the width/height ratio of the projected image. if custom is checked, then it’s the “custom ratio” slider who controls the value. others options are presets.

- show height (side view) : this controls simulate the rotation of 90° of the projector. When this is checked, you’re viewing your setup as a “side view”. This will automatically show you the target height in dimensions of the projected area. You can always see the target width & height of your projected image in the proj infos feedback. This is useful when accomplishing setups with 2 mirros, because the projector is often put that way. /!\ If lock projection and this options are checked together, the dimension feeback you’ll see on the projection surface (the colored number) will be the height, so don’t panic if it’s not the same number as what you put in the target width slider.

- projector : Right-click = ROTATE
Right-click + CTRL / SHIFT = Change width / height
Middle click = change throw Ratio

- mirror : Left click + SHIFT/CONTROL = Constraint x/y while moving
Right click on middleHandle = ROTATE

- two views support, then full 3d support
- camera simulation with ray collision support

- many things I don’t have thought of yet…

If you have any comment, suggestions to make, i will be glad to hear them !

There is a topic on the nuigroup forum, you may find interesting thoughts and answers there :

Currently it’s only in 2D, unlike the rearproject, but soon i’ll release the sources so everybody can improve it.

The software is now downloadable as an application (see attached file) and is crossplatform. However, the minor updates will be firstly /only online.