Documentation

Start here

The interface

Photonica is one window: a 3D bench in the middle, panels you can toggle around it, and a menu bar across the top. Nothing is hidden more than one click deep.

The Photonica window, with the Build panel on the left, Measurement on the right and a lens selected in the viewport
The Build panel (left), Measurement (right), and a selected lens showing its move arrows and rotation rings.
MenuWhat is in it
FileNew bench, open, save, save as, open from a link, import a .zmx lens, copy the raw JSON report.
EditUndo and redo, with a count of what is queued.
DemosSeventeen ready-made experiments.
ViewPanel toggles, snap-to-beam, focus on selection, the ray inspector, the planet-scale light calculator, the help overlay, and the switch that allows assistant control.
CommunityBrowse benches other people shared, or share your own.
HelpAbout, and a link to chaii.wtf.

The panels

The tabs on the right of the menu bar switch panels on and off. Any combination can be open at once.

PanelWhat it gives you
BuildAdd optics, set the light source, and edit whatever is selected — geometry, glass, coating, rotation. See parts.
MeasureThe instrument readout: focus per colour, spot sizes, the detector, Monte-Carlo path statistics. See measurement.
ExperimentFive challenges to solve on the bench, with hints.
WavesWave mode for the screens, the diffraction limit (PSF, Strehl, MTF), light in flight, and the planet-scale calculator. See waves and time of flight.
DesignThe optimiser and tolerancing. See lens design.
PhotoPhotoreal rendering settings. See photo mode.
RenderThe camera timeline and video export. See rendering video.

The viewport

The bench is an optical table with a 25 mm hole grid, exactly like a real one. Parts stand on posts. The beam is drawn as a set of ray lines, one per beam line, coloured by wavelength.

Select anything by clicking it. A selected part shows a transform gizmo: three arrows to slide it along an axis, and three rings to turn it. The small toolbar above the viewport toggles Move and Rotate handles and switches between Global and Local axes — local means along the part's own optical axis, which is usually what you want for moving a lens along the beam.

The status bar

Along the bottom: the project name, the frame rate, how many million photons per second the screens are collecting, and how far the current screen image has converged. When an assistant is connected over MCP, that is shown here too.