Skip to content

Projection mapping system supporting large networked projector setups

License

Notifications You must be signed in to change notification settings

pkurth/ProjectionMapping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projection Mapping

This project implements an open-source projection mapping system, which supports a large number of projectors illuminating one or more target objects. The objects are tracked in real-time using a depth camera. The system corrects the brightness of all images sent to the projectors to ensure a consistent illumination on the object surface and mitigates common artifacts stemming from incorrect calibrations. In order to support many projectors, you can employ multiple computers, which communicate over a simple network protocol.

The code includes all parts necessary to get a projection mapping system up and running, including a high-quality calibration routine, a depth-camera based object tracker, the actual brightness solver, and the networking.

The source code is based on this project: https://github.com/pkurth/D3D12Renderer

Build Instructions

I have tried to keep the build process as simple as possible. Therefore you will not need any build tools installed on your machine. The project uses Premake, but all you need comes with the source.

  • Clone the repository and make sure to clone with submodules.
  • Double-click the generate.bat file in the root directory to generate a Visual Studio 2019 solution.
  • Open the solution and build. This should work directly. Visual Studio sometimes reports an "Unspecified error" when building. In that case either restart Visual Studio or re-generate the project (generate.bat) and you are good to go.
  • If you add new source files (or shaders), re-run the generate.bat file.

The assets seen in the screenshots above are not included with the source code.

System Requirements

This project uses Direct3D 12 as the only rendering backend and thus the only supported platforms are Windows 10 or higher. The project is only tested with Visual Studio 2019, and only on NVIDIA GPUs, but should work fine on AMD.

You will probably need a GPU which supports shader model 6.1 or higher. You can try setting this to something lower (top of premake5.lua), but there might be shader compilation errors, because for shader models lower than 6, Visual Studio switches to another shader compiler (FXC).

The project files are currently generated with the AVX2 instruction set. If your processor does not support this, set another instruction set (again, top of premake5.lua).

All other dependencies (external libraries) either come directly with the source code or in the form of submodules.

Cite this Project

If you use this project in a publication, cite this paper:

@article{kurth_ContentAwareBrightness_2022,
  title = {Content-{{Aware Brightness Solving}} and {{Error Mitigation}} in {{Large-Scale Multi-Projection Mapping}}},
  author = {Kurth, Philipp and Leuschner, Markus and Stamminger, Marc and Bauer, Frank},
  year = {2022},
  journal = {IEEE Transactions on Visualization and Computer Graphics},
  pages = {1--11},
  issn = {1077-2626, 1941-0506, 2160-9306},
  doi = {10.1109/TVCG.2022.3203085}
}

and this paper for the calibration:

@article{kurth_AutoCalibration_2018,
  title = {Auto-{{Calibration}} for {{Dynamic Multi-Projection Mapping}} on {{Arbitrary Surfaces}}},
  author = {Kurth, Philipp and Lange, Vanessa and Siegl, Christian and Stamminger, Marc and Bauer, Frank},
  year = {2018},
  month = Nov,
  journal = {IEEE Transactions on Visualization and Computer Graphics},
  volume = {24},
  number = {11},
  pages = {2886--2894},
  issn = {1077-2626, 1941-0506, 2160-9306},
  doi = {10.1109/TVCG.2018.2868530}
}

About

Projection mapping system supporting large networked projector setups

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published