Svitylo 3D Anatomy Atlas
An independent browser library for an interactive 3D atlas of human anatomy: the <svitylo-anatomy>
HTML component, a headless Three.js (WebGL2) core, a versioned package of anatomical data, a demo
page of the full atlas and separate packages for embedding the atlas in notes (Markdown,
Laravel/Livewire). The library itself does not depend on Laravel, accounts, APIs or Svitylo
servers; Svitylo is one of its consumers.
Demo: svitylo.com/3d-anatomy-atlas, the full atlas on
Svitylo.
Status: 1.3.0. The atlas and the note embeds are implemented and covered by tests. The
data is on the preview channel: the licence audit of the included models is pending, and no
anatomical review has been done (see Open items).
What the atlas does
- Empty start: search, the tree of systems and structures, the "Load everything" button; no GLB
requests before the user acts.
- Selection works the same on the model, in the tree and in search: the structure is added to the
selection (only its files are loaded); from the tree and search the camera zooms to it at once,
on the model with a double click; deselecting a structure that was just zoomed to brings the
camera back. Deselecting (a click, the card's ×, "Clear selection", Escape) never changes the
scene: it changes only through explicit actions such as the eye, "Hide", "Reset" and "Load
everything".
- Surroundings level of the selection: 0 = only the selection, 1 = the nearest group of every
selected structure, … the last = the whole body. The stepper shows the level of what is visible; a
level chosen with − / + decides what is shown around the selection and stays for the next
selections. The eye in the tree adds other structures, which stay visible at any level.
- Surroundings transparency: a slider on the camera bar (0–95%). Above 0 everything that is not
selected is translucent and the selection stays opaque. A structure selected from the tree or
search that others cover turns the transparency on (78%).
- "Load everything" with progress, cancelling and a retry of only the failed files; the outer layer
is the skin.
- Rotate, pan, zoom, standard views; mouse, touch and keyboard. The camera bar at the bottom of the
scene: the menu of named views, zoom, "Overall view", the "Surroundings transparency" slider.
"Centre" and "Zoom to" do not put the camera inside other structures.
- A click on a structure adds it to the selection or removes it; a group and its part are never
selected together. The right column holds the actions on the selection: the common block
("Clear selection", "Centre", the "Isolate" and "Hide" toggles, the surroundings level) and a
compact card for each structure (name, Latin name, the "Zoom to", "Isolate", eye and × icons;
position in the tree, "Details"). The side columns collapse; the left one can be resized.
- Svitylo design system styles, light and dark themes (
theme); the scene is always dark.
- Interface and names in English by default; the language control (Ukrainian, English) changes both
the names and the interface, and the "Show Latin names" toggle shows the Latin name on a second
line under the name in the current language. Unreviewed Ukrainian names have a dotted underline
(explained in the legend); when a name is missing, the English one is shown with a language mark.
Search by names and synonyms in all languages works before any model is loaded; the tree of
systems starts collapsed.
- Review statuses, sources, licences, gaps, known issues of the data and the corrections made by the atlas in the structure card.
- A manual economy mode (simplified geometry, lower resolution) that does not hide systems.
- "Share": the state in the URL fragment (versioned codec, limits, no silent truncation, JSON export
for a state too large for a link); "Reset" returns to the state of the link.
- Every link opens in the data the site has now, whatever version made it: structure IDs do not
change between versions, and the structures the data no longer has are listed.
- Phone: the 3D scene takes ≈86% of the height (only the selection strip is under it); the atlas
actions are in the header menu; the information about the selection is in a bottom sheet over
the scene that the user opens; the surroundings level is on the camera bar and the short Svitylo
logo in the top corner of the scene.
- Accessible UI (WAI-ARIA tree/combobox, keyboard, live announcements), a fallback without WebGL2,
the visible Svitylo logo with no built-in option to turn it off (CPAL attribution terms apply).
- Lifecycle management: ResizeObserver, pause in the background, render on demand,
dispose(),
remounting without piling up contexts and listeners, recovery after a lost WebGL context.
This is the beginning of the README. Read the rest at the original. Read the full README ↗