Table of Contents
Optiland is a Python-based, open-source lens design and analysis framework. With a simple and intuitive Python interface, Optiland enables the design, optimization, and analysis of complex optical systems, from paraxial and real raytracing to polarization, coatings, and wavefront analyses. It supports 2D/3D visualization, comprehensive tolerancing, local and global optimization, and freeform optics, among other features. Built on the speed of NumPy and SciPy, Optiland delivers computational efficiency and flexibility across a wide range of optical tasks.
Get started immediately with Optiland Tutorial #1, see the extensive Learning Guide, or read the full documentation at Read the Docs.
Python code to generate this 3D visualization:
from optiland.samples.objectives import ReverseTelephoto
lens = ReverseTelephoto()
lens.draw3D()
The full documentation for Optiland is hosted on Read the Docs.
Explore the Example Gallery for a wide range of lens designs and analyses created with Optiland.
You can install the package using pip. To do so, follow these steps:
-
Open a terminal or command prompt.
-
Run the following command to install the package:
pip install optiland
- Lens entry
- 2D/3D visualization
- Paraxial and aberration analyses
- Real and paraxial ray tracing, including aspherics and freeforms
- Polarization ray tracing
- Real analysis functions (spot diagrams, ray aberration fans, OPD fans, distortion, PSF, MTF, etc.)
- Glass and material catalogue (based on refractiveindex.info)
- Design optimization (local and global)
- Wavefront and Zernike analysis
- Tolerancing, including sensitivity analysis and Monte Carlo methods
- Coating and surface scatter (BSDF) analysis
- Zemax file import
The code itself is in constant flux and new functionalities are always being added.
This guide gives a step-by-step approach to learning how to use Optiland.
- Introduction to Optiland
- Tutorial 1a - Optiland for Beginners
- Lens entry
- Material selection
- Aperture, field and wavelength selection
- Drawing a lens in 2D and 3D
- Tutorial 1b - Determining Lens Properties
- Focal length
- Magnification
- F-Number, Entrance/Exit pupil sizes & positions
- Focal, Principal, and Nodal points, etc.
- Tutorial 1a - Optiland for Beginners
- Real Raytracing & Analysis
- Tutorial 2a - Tracing & Analyzing Rays
- How to trace rays through a system
- Analyzing ray paths & properties
- Tutorial 2b - Tilting & De-centering Components
- Tracing rays through misaligned components
- Tutorial 2c - Monte Carlo Raytracing Methods
- How variations in lens properties impact lens performance
- Tutorial 2d - Aspheric Components
- Modeling even aspheres
- Tutorial 2a - Tracing & Analyzing Rays
- Aberrations
- Tutorial 3a - Common aberration analyses/plots
- Spot diagrams
- Ray fans
- Y-Ybar plots
- Distortion / Grid distortion plots
- Field curvature plots
- Tutorial 3b - 1st & 3rd-Order Aberrations
- Calculation of seidel, 1st & 3rd-order aberrations
- Tutorial 3c - Chromatic Aberrations
- Achromatic doublet to reduce chromatic aberrations
- Tutorial 3a - Common aberration analyses/plots
- Optical Path Difference (OPD), Point Spread Functions (PSF) & Modulation Transfer Function (MTF)
- Tutorial 4a - Optical Path Difference
- OPD fans and plots
- Tutorial 4b - PSF & MTF Calculation
- Geometric MTF
- FFT-based PSF/MTF
- Tutorial 4c - Zernike Decomposition
- Decomposing wavefront using Zernike polynomials
- Coefficient types: Zernike standard, Zernike fringe, Zernike Noll
- Tutorial 4a - Optical Path Difference
- Optimization
- Tutorial 5a - Simple Optimization
- Operand and variable definition
- Local optimization
- Tutorial 5b - Advanced Optimization
- Global optimization
- Tutorial 5c - Optimization Case Study
- Complete process of designing a Cooke triplet
- Tutorial 5d - User-defined Optimization Metrics
- Customized optimization
- Tutorial 5a - Simple Optimization
- Coatings & Polarization
- Tutorial 6a - Introduction to Coatings
- Simple coatings in Optiland
- Impact of coatings on system performance
- Tutorial 6b - Introduction to Polarization
- Basics of polarization in Optiland
- Analyzing polarization performance
- Tutorial 6c - Advanced Polarization - Update in progress (target completion: Jan. 2025)
- Waveplates, polarizers, and the Jones matrix
- Jones pupils
- Tutorial 6a - Introduction to Coatings
- Advanced Optical Design
- Tutorial 7a - Lithographic Projection System
- Optimizing and Analyzing a Complex Lithography System
- Tutorial 7b - Surface Roughness & Scattering
- Lambertian and Gaussian scatter models
- Tutorial 7c - Freeform Surfaces
- Designing non-standard optical systems with freeform surfaces
- Tutorial 7a - Lithographic Projection System
- Tolerancing
- Tutorial 8a - Introduction to Tolerancing
- Sensitivity studies
- Tutorial 8b - Advanced Tolerancing
- Monte Carlo-based Tolerancing
- Tutorial 8a - Introduction to Tolerancing
- Lens Catalogue Integration
- Tutorial 9a - Edmund Optics Catalogue
- Reading Zemax files
- Reading and analyzing an aspheric lens
- Tutorial 9b - Thorlabs Catalogue
- Reading and analyzing an achromatic doublet pair lens
- Tutorial 9a - Edmund Optics Catalogue
- Extending Optiland
- Tutorial 10a - Custom Surface Types
- Adding new surface types
- Tutorial 10b - Custom Coating Types
- Adding new coating types
- Tutorial 10c - Custom Optimization Algorithms
- Creating a "random walk optimizer" to optimize an aspheric singlet
- Tutorial 10a - Custom Surface Types
- Machine Learning in Optical Design
- Tutorial 11a - Reinforcement Learning for Lens Design - Update in progress (target completion: Jan. 2025)
Optiland is continually evolving to provide new functionalities for optical design and analysis. Below are some of the planned features and enhancements we aim to implement in future versions:
- GUI (based on Qt Quick)
- Multiple Configurations (Zoom Lenses)
- Thin Film Design and Optimization
- Diffractive Optical Elements
- Jones Pupils
- Apodization Support
- Additional Freeforms (Superconic, Zernike, etc.)
- Image Simulation
- Huygens PSF & MTF
- Interferogram Analysis
- Additional Tutorials/Examples
- Insert your idea here...
We welcome suggestions for additional features! If there's something you'd like to see in Optiland, feel free to open an issue or discussion.
Distributed under the MIT License. See LICENSE for more information.
Kramer Harrison - kdanielharrison@gmail.com