I was trying to find information about how can I do projection mapping with blender on real surfaces/objects. Found some tutorials but they didn't help much. Most of them were talking about creating objects/animation and then project them to a surface using other tools like HeavyM, MadMapper, etc. I found out Blam and fSpy and I was wondering if I can use these. Is it possible to use only Blender (with Blam) for matching my objects/animations or anything to a real surface?
Sure you can, and it works like a charm. Follow Robin's link. If you want to use fSpy (because its better). You need an extra step. Based on the the example in the previously mentioned link by stuffmatic, the workflow is as follows:
CREATE A PLACEHOLDER IMAGE: Use any drawing software that allows you to work in full screen mode. This is a must. For example Blender:
- Open Blender, set the render size to match projector.
- Go to Blender-> UV/Image Editor, create a new image matching the projector and render size, enter paint mode, set radius to 1 and paint stroke to line (choose high contrast background/line), and draw diagonals precisely to mark center and corners. -While still in the UV/Image Editor; go to View -> Duplicate Area into New Window. -Drag that window into the second display (the projector). -Enter full screen with the following commands alt+F9 and alt+F11.
DRAW GEOMETRY ON THE PLACEHOLDER IMAGE: The idea is to place yourself inside the projector so you can obtain an image of what the projector "sees". Now you must draw lines that will help you understand the scene when you import the image into fSpy. While watching the real, scene that should now have the placeholder image projected on it, trace as many straight lines as you can. Keep in mind that you need to define 2 or 3 sets of vanishing points (lines that are parallel in reality but that would eventually converge when projected to 2D perspective. Save the image.
CALIBRATE IN fSpy: Open the image and use fSpy to calibrate focal length, camera position, center point. Keep in mind the number of vanishing points you have, different options will give you different results. Save the fSpy.
IMPORT CALIBRATION INTO BLENDER: You have to install the plugin for your version of Blender. Once you import the fSpy file you should have a new calibrated camera in the scene looking at the center of the scene (which should correspond to the center point as you placed in fSpy).
RECREATE GEOMETRY: Set your placeholder image as a background image and. Model the surfaces you want to have mapping content, and create your motion graphics content.
MAPPING: Go crazy using realtime or rendered video output for sweet open source mapping. The best part is that if anyone moves your projector, you can simply repeat the calibration and match the scene with no need to alter the content.