Forge Universe

Overview

Forge Universe (universe.forgesdlc.com) is a proof-of-concept for a declarative 3D scene model that multiple renderers consume in the browser without a build step per demo.

Capabilities

World model

  • Scene JSON v1 — versioned document with nodes, camera, and an optional sim block for in-browser rigid-body physics.
  • Six solid types — tetrahedron, hexahedron (cube alias), octahedron, dodecahedron, icosahedron, sphere.
  • Pose math — translation plus Euler rotations (rx, ry, rz in degrees) applied consistently across renderers.
  • Wireframe geometry — Platonic edges derived from vertices; sphere uses configurable great-circle and latitude rings.

Render paths

Path Technology Use case
2D projections SVG Orthographic and perspective math views (Up2)
Static gallery SVG wireframes + CSS 3D cube Lightweight catalog (Us3)
Solid flyout WebGL dronie + SVG XYZ panels Inspect one primitive (Ufl)
Drone flythrough Three.js WebGL + FPS HUD Multi-solid cinematic orbit (Udr)
Sim bounce Three.js WebGL + UniverseSim Gravity, ground, sphere/AABB contacts (Usb)
Construction assets Three.js ES modules + GLTFLoader Omniverse GLB + kinematic articulation (Uca)

Simulation

  • UniverseSim — semi-implicit Euler integrator with gravity, ground plane, and sphere/AABB contact resolution.
  • Pose sync — each step writes body positions into linked node.pose so renderers need no duplicate state.
  • Scene-drivensim.bodies entries reference nodeId; shapes default from node type (sphere vs aabb).
  • DocsSimulation; limits vs NVIDIA Omniverse in Universe vs Omniverse.

Governance

  • KS-style hashes — three-letter codes (Ute, Us3, …) on visual roots via hash and data-ks-hash.
  • Oracles — JSON scenarios verified with Playwright (tools/universe-verifier/).
  • Unit tests — Node test runner on universe-world.js (tools/universe/tests/).

Architecture

assets/scenes/*.json
        │
        ▼
  UniverseWorld  ── validate, pose, wireframes, projection
        │
        ├── UniverseProject2D      (SVG ortho / perspective)
        ├── UniverseStaticCss      (gallery cards)
        ├── UniverseSolidFlyout    (dronie + XYZ panels)
        ├── UniverseDynamicGl      (WebGL + dronie camera)
        ├── UniverseSim            (rigid-body integrator)
        ├── UniverseSimGl          (WebGL + sim stepping)
        └── forge-universe-assets  (GLB + articulation ES modules)

All modules are plain IIFE scripts loaded by static HTML pages. Three.js is vendored for WebGL only.

Hash registry (PoC)

Hash Slug Role
Uwv universe-viewport Family roll-up
UteUps primitives Per-solid gallery roots
Up2 projections-2d 2D demo page
Us3 static-3d Static gallery
Ufl solid-flyout Detail flyout dialog
Udr dynamic-drone WebGL flythrough
Usb sim-bounce WebGL + rigid-body sim

Out of scope (PoC)

  • Server-side or distributed simulation (all physics runs in the browser).
  • OpenUSD, RTX, Omniverse Kit, or multi-user live sync — see Universe vs Omniverse.
  • Kitchen Sink submodule integration.
  • Authentication or multi-user state.