Skip to content

juhyeonkim95/MitsubaOHD

Repository files navigation

Mitsuba0.6 OHD Renderer

visualization

This repository is the official Mitsuba0.6 implementation of "A Monte Carlo Rendering Framework for Simulating Optical Heterodyne Detection" by Juhyeon Kim, Craig Benko, Magnus Wrenninge, Ryusuke Villemin, Zeb Barber, Wojciech Jarosz, Adithya Pediredla (SIGGRAPH 2025, journal paper, 🏆 Honorable mention).

Install

You can compile it just same as standard Mitsuba0.6. If you are not familiar with Mitsuba0.6 renderer, please follow the original Mitsuba compliation guide at here or Chapter4 of Mitsuba0.5 document.

Or, you can follow below code for compile and run tutorials. (tested for Ubuntu 22.04)

git clone --recursive https://github.com/juhyeonkim95/MitsubaOHD

###############################
# For Mitsuba Compile
###############################

# Create python2 env for Mitsuba0.5 compile
conda env create -n mitsuba0.5python2 -f environment_mitsuba_compile.yml
conda activate mitsuba0.5python2

# install required packages (check original document for details)
sudo apt-get install -y --no-install-recommends \
    build-essential \
    scons \
    mercurial \
    libilmbase-dev \
    libpng-dev \
    libjpeg-dev \
    libxerces-c-dev \
    libboost-all-dev \
    libopenexr-dev \
    libglewmx-dev \
    libxxf86vm-dev \
    libgl1-mesa-dev \
    libglu1-mesa-dev \
    freeglut3-dev \
    libeigen3-dev \
    libfftw3-dev
  
# compile Mitsuba 0.5
scons -j 16

# set Mitsuba0.5 path
source ./setpath.sh

###############################
# For tutorial running
###############################

conda env create -n mitsubaohd -f environment_tutorial.yml
conda activate mitsubaohd

cd ohd_tutorial
# then run tutorial codes in several folders.

Install with Docker

Or, you can install with Dockerfile:

# build and run docker
docker build -t mitsubaohd .
sudo docker run --rm -it -v "$PWD":/work mitsubaohd

# compile
conda activate mitsuba0.5python2
scons -j 16
source ./setpath.sh

# run tutorial
conda activate mitsubaohd
cd ohd_tutorial

Parameter Explanation

New integrators are added in src/integrators/fmcw folder, for OHD rendering. Two types of laser are typically used for OHD rendering, standard laser with constant frequency and swept-frequency laser with a chirp. FMCW (frequency-modulated continuous-wave) use swept-frequency laser with up and down chirp. Since FMCW is the most general case of OHD, we named integrator as fmcw.

Integrator Types

  • fmcw_psd: frequency-domain PSD (Power Spectral Density) rendering, corresponding to Algorithm1 in the paper. It outputs [H x W x 2M] where M is histogram bin number. 2M is for (up, down) chirp each.
  • fmcw_field: time-domain rendering with field sampling and random phase addition, corresponding to Algorithm2 in the paper. It outputs [H x W x 4M] where M is FFT sample number. 4M is for (up, down) chirp x (real, complex) term each.

Detailed Parameters

  • wavelength : Laser wavelength in nanometer (default : 1550)
  • f_0 : Laser frequency in GHz. If wavelength is also defined, we use wavelength first (default : 193,414)
  • T : Sweep time for one chirp in microsecond (default : 10)
  • B : Signal bandwidth in GHz (default : 1)
  • M : Number of time stamps used for FFT or histogram bin (default : 4096)
  • use_collimated : Ignore light setting and use collimated laser (default : false)
  • fov_error : Additional parameter to change laser FOV. If set to $a$, instead of uniform sample from whole pixel, we sample centered square-area with $2a$ (default : 0.5).
  • use_random_phase : Whether to use random phase addition for fmcw_field. (default : true)

Also, now object velocity property (translational only) could be added as:

<shape type="rectangle">
  <transform name="toWorld">
    <matrix value="-4.37114e-008 1 4.37114e-008 0 0 -8.74228e-008 2 0 1 4.37114e-008 1.91069e-015 0 0 0 0 1" />
    <scale value="10" />
  </transform>
  <ref id="Floor" />
  <vector name="velocity" x="0.0" y="2.0" z="0.0" />
</shape>

Usage

We included exhaustive examples in ohd_tutorial folder at here. You can simulate various experiments in the main paper including below interactive PSD visualization. interactive_fmcw_psd

Citation

If you find this useful for your research, please consider to cite:

@article{kim2025ohd,
  author = {Kim, Juhyeon and Benko, Craig and Wrenninge, Magnus and Villemin, Ryusuke and Barber, Zeb and Jarosz, Wojciech and Pediredla, Adithya},
  title = {A Monte Carlo Rendering Framework for Simulating Optical Heterodyne Detection},
  year = {2025},
  issue_date = {August 2025},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  volume = {44},
  number = {4},
  issn = {0730-0301},
  url = {https://doi.org/10.1145/3731150},
  doi = {10.1145/3731150},
  journal = {ACM Trans. Graph.},
  month = jul,
  articleno = {56},
  numpages = {19}
}

About

This is the official Mitsuba0.6 implementation of "A Monte Carlo Rendering Framework for Simulating Optical Heterodyne Detection" (SIGGRAPH 2025)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors