Skip to content

LMKit

Ever since I got it, I've wanted the experience of landing on the Moon from inside the lunar module on my Vision Pro.

Core trick

Exports Blender cabin models as RealityKit assets with moving controls split into separately addressable parts.

Tags

Description

Ever since I got it, I've wanted the experience of landing on the Moon from inside the lunar module on my Vision Pro. I have already been working toward that with a moon terrain simulation and a LM dynamics simulator and Apollo Guidance Computer simulation. But the inside of the cockpit was a huge missing piece. At this hackathon, I utilized the incredible 3D capabilities of Astra to build LMKit, the cockpit interior that connects to them. LMKit contains editable Blender models of the cabin, instruments and controls, packaged for RealityKit. Switches, keys, needles and other moving parts stay separate so the app can drive them. Each component keeps its reference material and build scripts, with approximate dimensions marked as such. The submission is LMKit. LM and AGC are pre-existing support for the demo. The development log shows what the parallel Codex tasks built, the corrections they made, and what still needs work. https://lm-astra-flight-log.positronio.chatgpt.site/
zac/LMKit★ 00 forksPythonCreated Sep 8, 2026 · last push Sep 9, 2026

README excerpt

# LMKit

Reusable lunar-module models and independently addressable cockpit components for RealityKit. LMKit owns model authoring and packaged geometry; the LM application owns presentation/input bindings, AGC owns computer behavior, and LMCore owns flight dynamics. This package has no AGC or LMCore dependency.

## Pilot station and systems hardware

The consuming LM app can reuse the FDAI asset for an independently addressed pilot instrument at `Panel2__FDAI`. LMKit supplies one reusable model; attitude-source selection and live state remain app responsibilities.

| Component | Resource APIs | Placement / qualification |
|---|---|---|
| Mission and event timers | `missionTimerURL`, `eventTimerURL`, `missionTimerControlsURL`, `eventTimerControlsURL`, `timersInterfaceURL` | Readouts at Panel1__Timers; event controls at Panel3__TimerHeaters. Mission controls remain uninstalled because Panel5__Timer is blocked. A runtime clock is not automatically launch GET. |
| Engine buttons and contact lamps | `engineButtonsURL`, `lunarContactURL`, `engineControlsInterfaceURL` | Engine guard shares Panel5__Engine with DES RATE; contact lamps use explicit commander/pilot mounts. Crew engine commands require an authoritative API; probe contact is distinct from footpad contact. |
| Propulsion displays | `propulsionInstrumentsURL`, `propulsionInstrumentsInterfaceURL` | Panel1 upper cluster and T/W scale; addressable needles/digits ship neutral. No inferred pressures, quantities or warning signal

Team