-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
eb4d3e6
commit b4a5ffc
Showing
4 changed files
with
83 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,65 @@ | ||
# SwissVAMyKnife.jl | ||
|
||
[Volumetric Additive Manufacturing](https://www.nature.com/articles/s41467-020-14630-4) is a novel 3D printing technique | ||
[![CI](https://github.com/EPFL-LAPD/SwissVAMyKnife.jl/actions/workflows/CI.yml/badge.svg)](https://github.com/EPFL-LAPD/SwissVAMyKnife.jl/actions/workflows/CI.yml)[![codecov](https://codecov.io/gh/EPFL-LAPD/SwissVAMyKnife.jl/graph/badge.svg?token=JZYHT3P3B7)](https://codecov.io/gh/EPFL-LAPD/SwissVAMyKnife.jl)[![Documentation for stable version](https://img.shields.io/badge/docs-stable-blue.svg)](https://roflmaostc.github.io/SwissVAMyKnife.jl/stable) [![Documentation for development version](https://img.shields.io/badge/docs-main-blue.svg)](https://roflmaostc.github.io/SwissVAMyKnife.jl/dev) | ||
[Tomographic Volumetric Additive Manufacturing](https://www.nature.com/articles/s41467-020-14630-4) is a novel 3D printing technique | ||
which is based on a tomographic principle. | ||
Light is illuminated from different directions onto a glass vial which contains a photosensitive resin. | ||
Once a voxel in the resin receives enough light, polymerization is triggered. | ||
Light is illuminated from different angles onto a glass vial which contains a photosensitive resin. | ||
Once a voxel in the resin receives enough light, polymeristartss. | ||
|
||
This toolbox is developed to solve the optimization challenge around VAM. | ||
What are the required patterns on the projector such object voxels polymerize and not-object voxels | ||
stay unpolymerized. | ||
|
||
This package is developed in [Julia Lang](https://julialang.org/) and features CUDA and CPU support. CUDA can accelerate reconstruction typically 10-20x times. | ||
|
||
It runs on Windows, Linux and macOS! | ||
|
||
|
||
# Features | ||
* 3D parallel Radon transform for ray optical simulation | ||
* rigorous simulation of absorption and vial refraction | ||
* CUDA acceleration hence high performance | ||
* 3D coherent wave optical optimization (see this [paper](https://arxiv.org/abs/2402.06283) for details and limitations). Note this has been only theoretical demonstrated and experimentally not validated. | ||
|
||
|
||
# Installation | ||
We recommend the most recent Julia version: | ||
```julia | ||
julia> ]add github.com/EPFL-LAPD/SwissVAMyKnife.jl | ||
``` | ||
julia> using Pkg | ||
|
||
# Features | ||
julia> Pkg.add(url="github.com/EPFL-LAPD/SwissVAMyKnife.jl") | ||
``` | ||
|
||
* [x] several optimizers (such as L-BFGS provided by [Optim.jl](https://github.com/JuliaNLSolvers/Optim.jl)) | ||
* [x] based on automatic differentiation | ||
* [x] CUDA acceleration | ||
* [x] 3D parallel inverse (exponential) Radon for ray optical simulation | ||
* [x] 3D coherent wave optical optimization (see this paper for details and limitations). Note this has been only theoretical demonstrated and experimentally not validated. | ||
* [x] absorption can be included | ||
* [x] refraction of glass vial is included | ||
# Examples | ||
You can also run the [examples](https://github.com/EPFL-LAPD/SwissVAMyKnife.jl/tree/main/examples) locally. | ||
Download this repository and then do the following in your REPL: | ||
```julia | ||
julia> cd("examples/") | ||
|
||
julia> using Pkg; Pkg.activate("."); Pkg.instantiate() | ||
Activating project at `~/.julia/dev/SwissVAMyKnife.jl/examples` | ||
|
||
# Examples | ||
julia> using Pluto; Pluto.run() | ||
``` | ||
|
||
|
||
# Other packages | ||
There is the Python based [VAM Toolbox](https://github.com/computed-axial-lithography/VAMToolbox) and [LDCD-VAM](https://github.com/facebookresearch/LDCT-VAM/). In terms of functionality, they also offer a ray based method including absorption. | ||
There is the Python based [VAM Toolbox](https://github.com/computed-axial-lithography/VAMToolbox) and [LDCD-VAM](https://github.com/facebookresearch/LDCT-VAM/). | ||
In terms of functionality, they also offer a ray based methods including absorption. | ||
Wave optical methods are not offered. | ||
|
||
# Development | ||
File an issue on [GitHub](https://github.com/EPFL-LAPD/SwissVAMyKnife.jl) if you encounter any problems. | ||
|
||
|
||
# Citation | ||
If you use this software in academic work, please consider citing: | ||
```bibtex | ||
@misc{wechsler2024wave, | ||
title={Wave optical model for tomographic volumetric additive manufacturing}, | ||
author={Felix Wechsler and Carlo Gigli and Jorge Madrid-Wolff and Christophe Moser}, | ||
year={2024}, | ||
eprint={2402.06283}, | ||
archivePrefix={arXiv}, | ||
primaryClass={physics.optics} | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,7 @@ PropagationScheme | |
ParallelRayOptics | ||
VialRayOptics | ||
WaveOptics | ||
Polarization | ||
``` | ||
|
||
# Optimization | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters