/Caustic_Designer

An application to create caustic lenses based on input images

Primary LanguageTypeScriptMIT LicenseMIT

Poisson-Based Continuous Surface Generation for Goal-Based Caustics

Overview

This application implements the method described in the paper Poisson-Based Continuous Surface Generation for Goal-Based Caustics.

Result simulated with Blender using LuxRender: Alt text

Features

  • Implementation of the Poisson-based continuous surface generation algorithm.
  • exports a solidified .obj
  • the only c++17 non-standard dependancy is libpng
  • can export the the inverse transport map
  • multithreaded poisson solver

Installation

Portable builds for Windows x64 and Unix can be found under Releases.

Usage

  1. load your image Alt text
  2. edit parameters Alt text
  3. run algorithms Alt text

Sample Output

input_image parameterization inverted parameterization 3d_model simulation
Lena Lena Parameterization Lena Parameterization Lena Inverted Parameterization Lena 3D Model Lena Simulation
Siggraph logo Lena Parameterization Siggraph Parameterization Siggraph Inverted Parameterization Siggraph 3D Model Siggraph Simulation
Hello World Lena Parameterization Siggraph Parameterization Siggraph Inverted Parameterization Siggraph 3D Model Siggraph Simulation

transport from an image to an almost uniform distribution:

Alt text

Prototype

Machined acrylic prototype: Machined acrylic lens

Shadow of the machined prototype: Resulting Caustic Lens

Future plans

  1. updated height solver -> this will allow more freedom in the lens design
  2. reflective caustics -> is currently not that usefull because of the limited freedom in the height solver
  3. circular lenses
  4. create portable builds for Win/Linux in releases
  5. GUI application

Contributing

Contributions are welcome! If you'd like to contribute to this project, please follow these steps:

  1. Fork the repository
  2. Create a new branch (git checkout -b feature)
  3. Make your changes
  4. Commit your changes (git commit -am 'Add new feature')
  5. Push to the branch (git push origin feature)
  6. Create a new Pull Request

License

This project uses the MIT License.

Acknowledgements

Thank you to Yue et al for their awesome research paper.

I would also like to thank Matt Ferraro for providing their informative article about the paper.