Skip to main content

Dr.TVAM

Logo

ACM Transactions on Graphics (Proceedings of SIGGRAPH Asia), December 2024.
Baptiste Nicolet · Felix Wechsler · Jorge Madrid-Wolff · Christophe Moser · Wenzel Jakob

Paper PDF Project Page Project Documentation



Abstract

Tomographic Volumetric Additive Manufacturing (TVAM) is an emerging 3D printing technology that can create complex objects in under a minute. The key idea is to project intense light patterns onto a rotating vial of photo-sensitive resin, causing polymerization where the cumulative dose of these patterns reaches the polymerization threshold. We formulate the pattern calculation as an inverse light transport problem and solve it via physically based differentiable rendering. In doing so, we address long-standing limitations of prior work by accurately modeling and correcting for scattering in composite resins, printing in non-symmetric vials, and supporting unusual printing geometries. We also introduce an improved discretization scheme that exploits the ray tracing operation to mitigate resolution-related artifacts in prints. We demonstrate the benefits of our method in real-world experiments, where our computed patterns produce prints with an improved fidelity.

About this project

Dr.TVAM is a high-performance inverse rendering framework for tomographic volumetric additive manufacturing. It is based on the Mitsuba renderer, and uses physically-based differentiable rendering to optimize patterns for TVAM. In particular, it supports:

  • Printing in scattering media.
  • Printing with arbitrary container geometry (round, square, ...), or occluding objects (e.g. overprinting), with correct handling of the light transport.
  • Printing with a variety of projection models, and an arbitrary container motion.
  • Optimizing patterns for TVAM with our surface-aware discretization.

For more details we refer to this publication.

Overprinting

We have recently extended this project to describe also a variety of overprinting scenarios. See Overprinting with Tomographic Volumetric Additive Manufacturing.

⚠️ Sign up for online workshop on 6th of May 2026 at 6pm CEST

  • Please sign up here to receive the details: here

Installation

Installing Dr.TVAM can be done via pip:

pip install drtvam

or the current development version

pip install git+https://github.com/rgl-epfl/drtvam

Basic Usage

We provide a convenience command-line tool drtvam to run simple optimizations. You can run it as:

drtvam path/to/config.json

Please refer to the documentation for details on the configuration file format. Dr.TVAM will run multi-threaded on your machine but will also use your CUDA GPU and your RT cores if supported by your hardware.

You can also choose to run optimization on Apple Silicon GPU by specifying the metal backend

drtvam --backend=metal path/to/config.json

If you want to use your CPU, use:

drtvam --backend=llvm path/to/config.json

Advanced Usage

Dr.TVAM provides a set of useful abstractions to implement a wide variety of custom TVAM setups. We show examples in the documentation to get you started.

Documentation

The full documentation for this project, along with jupyter notebooks explaining the basics of implementing your own optimizations in our framework, can be found on readthedocs.

Benchmarks

We have done some simple benchmarks:

  • RTX3060 12GB (2020): Entry-level consumer hardware GPU
  • L40S 48GB (2022): Professional graphics card used primarily in server clusters

Test Subjects

  • Dr. TVAM: Tested on RTX3060 12GB and L40S 48GB.
  • Benchy boat as target:
    • Size: 10mm
    • Pixel size: 25µm
    • Resolution on DMD: 400x400 pixels
    • Angles: 400
    • 40 iterations with gradient-based L-BFGS optimizer

Computation Performance

Configuration Rays per Pixel Time (RTX3060) Time (L40S)
Julia Radon based 1 0h 3m 17s
Dr. TVAM index-matched 1 0h 2m 2s 0h 0m 20s
Dr. TVAM cylindrical 1 0h 2m 10s 0h 0m 23s
Dr. TVAM square 1 0h 2m 15s 0h 0m 20s
Dr. TVAM cylindrical scattering 16 1h 40m 0s 0h 14m 10s
Dr. TVAM square scattering 16 1h 40m 0s 0h 14m 20s
Dr. TVAM square scattering (surface-aware loss, disable black pixels) 16 0h 25m 0s 0h 3m 45s

Teaser video

Can be found on YouTube:

Issues or support needed

In case you run into issues or you do need support, do not hesitate to open an issue such that we can help you using Dr. TVAM! As an academic user, this is completely free to use. Please reach out to us in case you need support!

License

This project is provided under a non-commercial license. Please refer to the LICENSE file for details.

Citation

When using this project in academic works, please cite the following paper:

@article{nicolet2024inverse,
    author = {Nicolet, Baptiste and Wechsler, Felix and Madrid-Wolff, Jorge and Moser, Christophe and Jakob, Wenzel},
    title = {Inverse Rendering for Tomographic Volumetric Additive Manufacturing},
    journal = {Transactions on Graphics (Proceedings of SIGGRAPH Asia)},
    volume = {43},
    number={6},
    year = {2024},
    month = {12},
    doi = {10.1145/3687924}
}

@article{wechsler_overprinting_TVAM,
   title={Overprinting with tomographic volumetric additive manufacturing},
   author={Wechsler, Felix and Sgarminato, Viola and Rizzo, Riccardo and Nicolet, Baptiste and Jakob, Wenzel and Moser, Christophe},
   rights={2026 The Author(s)},
   ISSN={2041-1723},
   url={https://www.nature.com/articles/s41467-026-73477-3},
   DOI={10.1038/s41467-026-73477-3},
   journal={Nature Communications},
   publisher={Nature Publishing Group},
   year={2026},
   month=jun,
   language={en}
}

Release

See the release notes to keep up with the changes.

Metadata

Release files for drtvam 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for drtvam 0.9.0
File Interpreter ABI Platform
drtvam-0.9.0-py3-none-any.whl Python 3 none any Details

Release files / drtvam-0.9.0-py3-none-any.whl

Download URL drtvam-0.9.0-py3-none-any.whl
Size 42.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a8f2c3487fd992adbbee07493eff5ba9f2dd6b10b45dece7cbd52adb3548205
BLAKE2b-256 checksum
How to use checksums
761a7168a79890c90318081f68df0c4ea6445cba2590d281dba832348301d83f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.9.0 This release

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page