Page 1 of 1

Arbitrary Surface Projection Mapping - DIY CAVE

Posted: Tue Nov 08, 2016 1:09 am
by zalo
Hello

I thought this would be a good place to share a proof of concept of mine: Arbitrary-Surface Projection Mapping

Inspired by Paul Bourke's article, this project aims to enable the construction of DIY CAVEs using off-the-shelf hardware and game engines. It works by pre-baking the
mapping from projector pixel to world coordinate into the vertex color of a tesellated plane mesh. This world position is then reprojected through the user's viewpoint
camera in a shader, thus warping the projected image to compensate for the perspective/projective distortion of the user's view position.

This technique costs very little (computationally), allows for the use of an on-axis projection matrix, can compensate for curved reflecting surfaces, can trivially be
extended to stereo, and enables the construction/calibration of complex projecting systems using existing VR hardware (Vive and a standard gaming rig).

Here are a couple of pictures (showing what a flat grid pattern looks like before correction, and what it looks like after correction):
Image Image

And here's a short video of poor quality:
https://www.youtube.com/watch?v=IcZejDUULB8

Re: Arbitrary Surface Projection Mapping - DIY CAVE

Posted: Tue Nov 08, 2016 9:26 pm
by cybereality
That's awesome. Even with the potato video quality.

Re: Arbitrary Surface Projection Mapping - DIY CAVE

Posted: Sat May 20, 2017 5:11 am
by Kajos
This is really awesome.
Could you tell a bit more about it?
Such as, what did you use to build the mirror?
Do you use a camera for correction, or convert coordinates manually?

I always assumed this would be a good way to make short throw projectors.

Re: Arbitrary Surface Projection Mapping - DIY CAVE

Posted: Thu Jun 14, 2018 11:40 pm
by brantlew
Cool. Nice project.

Re: Arbitrary Surface Projection Mapping - DIY CAVE

Posted: Fri Aug 10, 2018 9:10 am
by Jabberwock
Have you considered using a 3D scanner, such as Kinect, for geometry mapping?