Code Monkey home page Code Monkey logo

projectionmapping's Introduction

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}
}

projectionmapping's People

Contributors

pkurth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

rabblerousy

projectionmapping's Issues

Missing .dlls after successful build

I am trying to get this project running because I might want to use it as a base for a similar research project.
I created a fork, cloned it, ran the generate.bat, opened the VS solution and built the application (Release, x64).
The console says Build: 2 succeeded, 0 failed, 2 up-to-date, 0 skipped, so far so good.
But when I try to run the generated ProjectionMapping.exe, I get 4 error messages telling me it's missing the following dlls:
k4a.dll, realsense2.dll, ceres.dll, glog.dll
I also tried building in Debug Mode, which gives me 1 failed build out of 4, and also .dll errors when trying to run the app.

Am I missing something?
Sorry if this is a stupid question, but I have little experience with building C++ projects.
I would appreciate any help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.