Workshop application
Serve shell/index.html through static HTTP. The application imports the runtime and optional object packages; it is not part of the engine. All UI, routes and choreography are local to shell.
| Scene | Purpose | Controls |
|---|---|---|
| Model studio | Load, inspect and interact with portable object packages | Add/replace/remove, package loading, drag/scroll, properties and actions |
| Courtyard | Architecture, water, birds, fabric and lighting | Drag/scroll, time and water controls |
| Spatial lab | Height-aware motion around raised geometry | Guided initially; WASD/arrows, R/F elevation; drag/scroll |
| Flight | Fighter/cockpit, generated landscape, structures, vegetation and shared environment | Guided initially; W/S pitch, A/D roll, Q/E yaw; throttle; V pilot/chase; G gear |
| Beach | People, activities, umbrellas, lake waves and ground-level inspection | Drag/scroll; location presets; shared weather, wind and time controls |
Flight and cockpit
Pilot view uses the aircraft's 3D camera mount. Drag to look around; Home recentres. Click tagged cockpit switches or use the corresponding panel controls. Electrical power, avionics, lighting, throttle, gear and canopy commands change the object and instruments. Displays show sampled speed, altitude, heading, attitude, climb/descent and terrain clearance. This is a representative F/A-18E-inspired cockpit, not an operationally exact avionics simulation.
Throttle controls a simple desired speed with acceleration and wind drift. The app supplies steering; MotionBody/SpatialWorld integrate full 3D motion and approximate sphere contacts. The single 7 m contact sphere approximates the fuselage region and does not precisely cover every wing/nose/tail position. This is not detailed aerodynamics, mesh-exact aircraft collision or a crash simulation. The 8 km finite region resets the aircraft at its boundary/altitude envelope. The guided route follows the river corridor and queries terrain clearance.
Explore selects beach, airfield, mountains, river, village or woodland. This temporarily holds the aircraft and activates an orbit camera. Choose chase/pilot or guided flight to return. The separate Beach scene provides much closer people/activity inspection. Its Explore panel links to a body/joint fixture with down, sideways and overhead poses and skinny/regular/bigger builds.
Flight and Beach load the bundled authored people through an application-owned asset cache. The body/joint link opens the authored-person fixture. Beach uses close shadow coverage; flight restores wider coverage when leaving ground-level inspection. Model Studio uses object-owned definitions and starts with an authored person; the older Courtyard retains its original modeling examples. See MODEL_STUDIO.md for loading future packages.
The beach choreography schedules nearby visible people every frame. At High quality, visible people beyond 35 m update at a staggered 18 Hz and offscreen people at 6 Hz; Medium and Low use shorter full-rate ranges and lower distant rates. Explicit walking targets stay at full rate. Paused inspection refreshes all people immediately, and props/environment continue using their shared wind state. This policy belongs to the shell; each object class still performs its full update whenever called. The engine supplies the final world-matrix update before rendering.
Environment and display
- Clear, sunrise, sunset, overcast, approaching-rain-front and night presets interpolate over 12 seconds. Rain begins after the cloud front advances.
- Wind strength/direction controls shared responsive objects. Time and explicit wind changes override only those fields of an ongoing transition.
- Pause freezes time but allows view/inspection redraws. Reset reconstructs the scene.
- Quality changes rendering, shadows, reflection and vegetation detail; population remains deterministic.
- Exposure adjusts brightness. Cast shadows and postprocessing can be toggled independently.
- Reduced motion freezes cosmetic motion; use Pause to stop simulation movement.
The diagnostics show median recent CPU frame work and rendering/resource counts. They are not FPS or completed GPU timing. Shadow/reflection work is included; compilation may inflate startup values. Multiple simultaneously rendering browser fixtures can affect observed performance.
Maintenance
UI belongs in app.js; scenes and world composition belong in shell/scenes and shell/world. Shared services belong in engine/src. Object geometry/state/actions belong in independent objects/<package> folders. The application-side legacy-api bridge is limited to older fixtures such as Courtyard and is not an engine API. Model Studio uses the engine API directly and consumes package-local studio.js definitions.
Camera and controller input (0.2.2)
Model Studio supports mouse/keyboard pan and fixed-position free look. Standard Xbox-style controllers operate Studio camera/model transforms and Flight steering, throttle, views, gear, flaps and lights. The controller panel reports readiness and exposes mappings, sensitivity, deadzone and pitch reversal. Menu/Space pause; camera controls remain available while paused. See CAMERA_AND_CONTROLLER.md and FLIGHT_CONTROLLER.md.