SimProj Project : A Multitouch setup simulator
- June 2nd, 2010
- Posted in NUI . Processing
- Write comment
Recently 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) : http://benjamin.kuperberg.fr/simproj
Download the application (All platforms, sources included) : SimProj 0.95 (23/07/2010)
This application uses the controlP5 library : you can download it here : http://www.sojamo.de/libraries/controlP5/
FEATURES :
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.
EXPLANATIONS :
The blue screen is the projection surface. The others are mirrors.
CONTROLS :
- 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.
SHORTCUTS :
- 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
FEATURES PLANNED :
- 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 : http://nuigroup.com/forums/viewthread/9723
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.
Can you publish the source code?
I have to clean up the code and add some comment before publishing the sources, i’ll try to get it done soon, but got a lot of work for now…
Edit : Ok, the sources are now online ! Have fun
what I was looking for, thanks
I’m really struggling to work stuff out!
I have a Mitsubishi XD70U that I want to use for rear projection with a screen size of 305cm diagonal, 244cm Wide, 183cm high. Projection Distance for this without mirrors is 3.17m – Would you/someone be kind enough to work that out for me? I want to get the space behind the screen to as close to 1m as possible! Thanks
It’s great!
WoW! It’s great! Big Thanks!
Hey Ben,
Very useful application. I am actually using it to try to figure our other camera positions.
One thing i find hard to do is precise controls, the mouse is not so great. Could you make the control sliders allow input from the keyboard?
Thank you
Can you publish the source code?
I also need the source code. thank you
Hi,
the whole project with sources is available for download on this page.
The link is this one : http://benjamin.kuperberg.fr/download/SimProj%2023-07.rar
I am just looking for this. it is a big help to me. thank you very much.
WoW! It’s great! Big Thanks!
I do not understand.- -
Hello, I can’t install it and get error from Java VM launcher “could not find the main class. Program will exit”. Please help. Your software is what I was looking for during a week. Great job!
@Sabasov Hi, i just fixed my page error on the first link, can you try it online ? http://benjamin.kuperberg.fr/simproj
or if you want to use it locally, what OS are you using ?
@Ben Kuper Hi, Ben. Thanks for fixing the links. I’d prefer to have local versio for Win7 Pro. Thanks in advance. Great product!
Awesome tool!
Awesome! Thanks.
hi just downloaded this app its very cool, just trying to figure out the distance numbers are they in inches, centimeters, feet, meters?
Hey there, Thx buddy that tool is pretty much useful, i would like to get in touch with ya @FB.