-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial First Review Session
← Home
You're an art director reviewing a model from a contractor. You need to leave a few targeted notes, the artist will revise and re-export, and you'll come back to verify the revisions and close out outstanding markers. This tutorial walks the full loop end-to-end - including the moment when a re-export shifts the geometry and you have to re-anchor a stale marker.
By the end you'll understand the Review System's anchor-stability contract - the practical rule for when markers survive a re-export and when they need a deliberate human re-placement.
- Goal
- Setup
- Step 1: Enter review mode and place your first marker
- Step 2: Use the four categories deliberately
- Step 3: Reply to a marker, resolve one
- Step 4: Save the sidecar
- Step 5: Re-export the model and re-open
- Step 6: Re-anchor a stale marker
- Verify
- What you learned
- Where to go next
Run one complete review cycle, including a re-export, and finish with every marker either Complete or freshly re-anchored to Open.
You need:
- Solarxy installed (the Quickstart walks through it).
- A model with at least two distinct meshes. The Khronos
FlightHelmetasset works well - it has visor, lens, leather, and shell as separate meshes, so we can practice re-anchoring across multiple meshes.
Grab the asset (its textures sit alongside the .gltf so use the directory
form):
curl -LO https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/main/Models/FlightHelmet/glTF/FlightHelmet.gltf
# Plus its textures - cloning the repo is easier than wgetting each file.Or, for a single-file alternative, use the DamagedHelmet.glb from the
Quickstart. Then open it:
solarxy -m FlightHelmet.gltfPress Shift+R. Three things happen:
- The
Reviewlabel in the menu bar gains an amber dot:● Review. - The Review Panel opens (docked at right by default).
- Your next click on the model surface will create an annotation.
Click on the visor. The annotation popup opens at the cursor:
- Leave the category as Question - this is the default; review conversations are usually questions first.
- Type: "Should this glass be more reflective?"
- Press
Cmd/⌘+Enterto save.
The marker stays at the exact triangle you clicked, even as you orbit.
Each annotation category communicates intent. The glyph and colour are consistent between the in-viewport marker and the row in the Review Panel:
| Category | Glyph | Meaning |
|---|---|---|
| Info | i |
A neutral observation. Use it for "good to know" notes. |
| Warning | ! |
A concern that may or may not need action. |
| Question | ? |
An open question for the artist. Default. |
| Change | ✎ |
A requested modification - the action item. |
Place one of each category on different parts of the helmet:
- A Change on the strap: "Tighten this stitch row by ~20%."
- A Warning on the lens edge: "This edge is sharper than the silhouette needs - watch for shading artefacts at glancing angles."
- An Info on the inner shell: "Inner shell matches reference well."
The Review Panel groups markers under Open and Complete. Category filter chips at the top of the panel let you hide categories you don't want to think about right now.

Click the Info marker on the inner shell to select it. A cyan ring surrounds the marker; the inline editor appears at the bottom of the Review Panel.
- Click Reply to add a threaded follow-up: "Approved - lock this surface before final bake." The reply renders indented under the parent in the panel; it has no 3D marker of its own (threading is one level deep by design).
- Click Complete on the Info marker. It moves into the Complete section of the panel. Completed markers stay visible in the viewport but render dimmed.
"Complete" is a display label. On disk the field is
resolved: true. The panel and editor read "Complete" because that reads better for an asset-review workflow.
Press Cmd/⌘+S while review mode is active. Solarxy writes
FlightHelmet.solarxy-review.json next to the model.
In-session saving is manual on purpose - you control when you commit a checkpoint. As a safety net, Solarxy also flushes unsaved annotations to the sidecar when you quit the app, so closing the window mid-review never silently drops work.
You can stop the review here, hand the sidecar to the artist, and resume later. Real reviews often span several sessions.
For this tutorial, simulate the artist's revision by re-saving the model with a small tweak that doesn't change the mesh topology. The easiest way is to open the source asset in your DCC tool, nudge a non-mesh value (scene transform, light, material parameter), and re-export.
If you don't have a DCC tool handy and just want to exercise the sidecar reload, skip the re-export and re-open the model in Solarxy as-is - all markers should stay in Open, demonstrating the anchor-stability contract.
To force the stale-anchor path so we can practice re-anchoring, deliberately re-topologize one mesh (a decimate pass, a remesh, or "optimize / weld vertices" in your DCC). Save over the original file.
Close and re-open the model in Solarxy. When the sidecar loads, Solarxy re-hashes each mesh and compares against the hashes recorded in the sidecar.
If a mesh's hash changed, every marker on that mesh moves to the Needs re-anchor section of the Review Panel. The markers render dimmed at their world-space fallback position, so you can still see roughly what they referred to. A stale marker is never deleted.
If the re-export preserved mesh order, face indexing, and vertex order within each face - the common "fix material, re-export" loop - all markers stay Open. The contract is documented in Review System → Anchor stability.

For any marker that landed in Needs re-anchor:
- Click Re-place on its row in the Review Panel. The row pulses amber - Solarxy is in the re-anchor sub-mode for that marker.
- Click the geometry on the model where the marker should now sit. Solarxy commits a fresh anchor against the current mesh, clears the stale flag, and the marker returns to Open.
To cancel the re-anchor sub-mode without committing, press Esc.

Solarxy never auto-re-anchors. The nearest face on a re-topologized mesh isn't necessarily what you meant; re-placement is always a deliberate human action.
By the end of the cycle your Review Panel should show:
- All markers in either Open or Complete.
- Zero markers in Needs re-anchor.
- The sidecar file checked into Git alongside the model so the next reviewer picks up where you left off.
The sidecar's JSON shape (open it in any text editor):
{
"format_version": 1,
"model_hash": "...",
"mesh_hashes": ["...", "...", "..."],
"annotations": [
{
"id": "01HF7Z3N9K...",
"category": "question",
"text": "Should this glass be more reflective?",
"anchor": {
"mesh_index": 0,
"face_index": 1234,
"barycentric": [0.5, 0.3, 0.2],
"world_pos_fallback": [1.2, 0.8, -0.3]
},
"author": null,
"resolved": false,
"reply_to": null
}
]
}- The click ladder. A left-click in review mode walks a priority chain: re-anchor pending wins, then marker hit-test (within ~20 px), then new- annotation popup.
-
The anchor. Each marker stores
(mesh_index, face_index, barycentric)plus a world-space fallback. A re-export is anchor-safe when mesh order, face indexing, and vertex order within each face are preserved. - Stale never deletes. A stale marker is always recoverable from its fallback position; Solarxy demands a human re-placement rather than guess.
- Threading is one level deep. Replies have no 3D marker of their own; they live indented under their parent in the panel.
For the full contract, see Review System.
- Tutorial: Inspect a glTF for delivery - the artist-side QA loop that complements this reviewer-side flow.
- Review System - the full feature reference.
- Validation Reference - the nine geometry / material checks that auto-surface alongside markers in the Properties panel.
See also: Review System · Quickstart · Keyboard Shortcuts · Tutorial: Inspect a glTF for delivery
Solarxy - A lightweight, cross-platform 3D model viewer and validator built with Rust and wgpu.
GitHub Repository · Releases & Downloads
© 2026 Marko Koljancic · MIT License
Getting Started
Tutorials
Using Solarxy
Reference
Help
Project