Orbit Lab
Move the Moon, follow its shadow, and discover why eclipses need both the right order and the right orbital plane in a spatial lesson for SPECS.
Inspiration
Two flat eclipse diagrams can be easy to memorize without understanding the spatial relationship. They also leave a question: if the Moon circles Earth each month, why are eclipses uncommon? Orbit Lab gives curious beginning astronomy learners a small model they can manipulate and inspect from different viewpoints.
What it does
Start reveals an illustrated Sun, Earth, Moon and virtual tabletop in world space. Move the Moon with an orbit slider or precise step buttons, follow the violet shadow outline, and check the arrangement. Three short challenges cover a solar eclipse, a lunar eclipse and orbital tilt. Feedback explains the current pose, progress tracks the challenges, and Replay or Reset restores the initial lesson.
The central insight is that the order of the bodies and their orbital plane both matter. Sizes, distances, shadow lengths and the teaching tilt are deliberately exaggerated; the Lens is an illustration, not an astronomical prediction tool.
How it was built
The design brief and demo plan were developed in the Devpost Learn workflow. Codex used CLAD skills and Lens Studio MCP to author TypeScript, import assets, construct the scene through VirtualScene, and inspect runtime behavior. MeshBuilder generates the procedural model. SIK and SpectaclesUIKit provide standard controls and layout. Locally generated sound effects and quiet ambient music support feedback. The running lesson is offline and uses no AI service.
The coordinator connects passive UI modules, a single lesson-state owner, model rendering and audio. Five LEAF scenarios exercise actual controls rather than setting the lesson state to solve challenges.
Challenges and lessons from the build
Imported package artifacts initially compiled but failed at runtime. Supported package unpack and compatible helper versions restored execution. Preview captures also exposed a control card touching the edge of the view, which was corrected before the final test run.
The build demonstrated why compilation, fresh runtime logs, visual inspection and integration tests each matter. World-space layout needs framing and viewpoint checks as well as working logic.
Verification
Five LEAF scenarios passed in SPECS 27 Interactive Preview: Start/wrong answer, slider/solar alignment, lunar alignment, tilt/Replay/Reset, and indirect IK pinch Start/Reset. The full-flow test passed again after the final layout adjustment. The final saved scene compiled and started without runtime errors. The model kept its world position when the preview viewpoint moved. QA helpers are detached from the saved lesson scene.
The public demo shows the working preview through simulated pinch input, including a wrong answer, all three challenges, completion and Replay.
Try it
Open SpecsLens.esproj in Lens Studio 5.23.2 or a compatible newer version, select SPECS 27 Interactive Preview and a room environment, then pinch/click Start. Solar alignment is at 0 degrees; lunar alignment is at 180 degrees. In the tilt challenge, choose Flatten orbit, Check alignment and Next. The repository contains the project, planning documents, assets and detailed QA instructions.
Limitations and next steps
Real glasses comfort, hand tracking, physical reach, additive display appearance and device performance remain untested. IK coverage verifies indirect targeting, not direct physical reach. Future work would validate those on a device and refine the educational model with learner feedback.
Repository: https://github.com/Youssef123ya/orbit-lab-specs
Built With
- clad
- codex
- leaf
- lens-studio
- meshbuilder
- specs
- spectacles-interaction-kit
- spectaclesuikit
- typescript
Log in or sign up for Devpost to join the conversation.