due to some recent work with homographies, I thought I should give this a try. Given a projector array on a flat surface and a camera, this component should be able to properly calculate the blending between all the projectors.
All projectors should have the same output resolution.
The webcam (I’m using a standard Logitech webcam) must see the whole output canvas.
- Specify the projector Resolution in the Projector Resolution Parameter
- Specify the output Canvas Resolution. My tests here with 3 projectors had a Output Canvas Size of 3840x720
- Specify the Canvas Offset, this is the amount of Pixels the Projector Output starts and is where the Window COMP for the output will be placed. In my case, using a 1920x1200 Monitor as my main Monitor, this was set to 1920x480
- hit “Start Blending” and you should see a sequence of checkboards. After the last screen was shown, TouchDesigner will output the blended result.
- Adjust the output rectangle size with the Output [Left/Right] [Top/Bottom] parameters. These are in unit space.
The technique is rather simple:
- A checkerboard is projected and the openCV function findChessboardCorners tries to detect the corners of the checkerboard.
- From the original checkerboard image and the projected checkerboard a homography is calculated using openCV’s findHomography
- given the 3 homographies and a homogrpahy calculated from the rectangle size parameters, we can now span the image across all projectors.
- the homographies for the 3 projectors is passed into a shader where the blending is calculated.
I’ve had good results here with my test setup but not sure how well this works on larger walls.
Happy to hear how it behaves for others!
ProjectorBlender.tox (10.5 KB)