Skip to content

Steam Controller 2026: per-button mesh GLB for press / stick highlighting #13

@petegordon

Description

@petegordon

What

Currently the Steam Controller 3D model is a single solid body (bodyMeshes: ['node_0']) sourced from Valve's CAD release. Buttons, sticks, dpad, and triggers don't visually animate on press — only whole-body gyro rotation works. The buttonMap, triggerMap, stickMap in controller-profiles.js → 'steam-controller' are all empty.

DualSense / Xbox / Switch Pro have separated per-button meshes in their GLBs so the visualizer can highlight + offset each mesh on press / tilt (see controller-overlay.js for how it animates them). The Steam Controller should get the same treatment.

Why

After landing #11 + #12 the Steam Controller works fully — sticks / triggers / buttons / d-pad all parse correctly, all 3 IMU axes track motion, lizard-mode is suppressed. The only thing missing for visual parity with the other controllers is per-button animation. The Button HUD shows button state (it has labels via hudLabels) but the 3D model stays static.

Acceptance criteria

  • GLB sourced or modeled with separated meshes: face buttons (A/B/X/Y), shoulders (LB/RB), triggers (LT/RT), dpad (up/down/left/right), sticks (L stick + R stick, each as base + ring + cap), trackpads (L/R), system buttons (View/Menu/Steam), back paddles (L4/L5/R4/R5)
  • controller-profiles.js → 'steam-controller' updated: buttonMap, triggerMap, stickMap, bodyColorMeshes, accentColorMeshes populated
  • Field-tested: each button press visibly translates its mesh; each stick tilt rotates its stick group; each trigger pull rotates its trigger

Options for sourcing the GLB

  1. Blender pass on Valve's STEP CAD release (gitlab.steamos.cloud/SteamHardware/SteamController). Manual mesh splitting in Blender, ~3 hours. Best fidelity.
  2. Photogrammetry capture like GameSir Super Nova got — same caveat (monolithic mesh).
  3. Hand-modeled approximation in Blender. Faster but lower fidelity.

See docs/OPTIMIZING-GLB.md for the conversion + optimization pipeline.

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions