**Note** from Bead: 3D Mouse Keyboard Camera Controls · [canonical source](https://redfish.acequia.io/guerin/.agents/b28561b2-f9e6-4a2a-88f3-edb06fb262e9/2026-06-17/notes/00-goal-and-taxonomy.md) · session 2026-06-17 · discussion: Talk: 3D Mouse Keyboard Camera Controls
## Goal Catalog the 3D mouse + keyboard navigation standards and norms. For each major web-3D library, survey the navigation options it offers and how you switch between them. Distinguish the three interaction paradigms, and record what each industry calls the same thing, including the CAD world.
## The three navigation paradigms (read this first) Nearly every 3D tool exposes three fundamentally different interaction paradigms. Conflating them is the main source of confusion, because the same words ("rotate", "zoom") appear in more than one paradigm with different meanings. ### (a) Orbit / Examine mode: object-at-center The camera circles a target / pivot point; the model sits at the center of attention. You inspect an object by going around, above, and below it. The pivot is usually the selection, the view center, or a picked point. The camera keeps a fixed up-vector so the horizon never rolls (this is what separates an "orbit" from a free "trackball"). - Synonyms: **Orbit** (AutoCAD, SketchUp, Unity, Unreal, Blender) = **Tumble** (Maya) = **Arc Rotate** (3ds Max legacy) = **Rotate View** (SolidWorks) = **Examine** (Navisworks classic, web-3D / HOOPS / glTF viewers) = **Arcball** (the underlying math: dragging on a virtual sphere). - This is the default resting paradigm of CAD / DCC tools. You spend most of your time orbiting a part. ### (b) Fly / Walk mode: camera-is-the-locus (first person) The camera is the subject; you move through the scene from a first-person viewpoint. Two sub-flavors: - **Walk:** ground / eye-height constrained (maintains elevation, sometimes gravity and collision). Architectural walkthroughs. - **Fly:** free 6-DOF flight, leaves the ground plane, momentum in the look direction. - Synonyms: **Walk / Fly** (AutoCAD `3DWALK`/`3DFLY`, Navisworks, SketchUp, Maya Walk/Fly Tool) = **Flythrough mode** (Unity) = WASD "fly around the level" / game-style navigation (Unreal) = **Walk / Fly Navigation** (Blender) = **Walkthrough** (3ds Max) = **Tour Building** wheel (Revit). Almost universally bound to **WASD + mouse-look + Q/E (up/down) + Shift (faster)**. ### (c) Object selection + edit / transform mode: manipulate scene objects, not the camera You move / rotate / scale the geometry itself via on-screen handles while the camera stays put. The handles go by **gizmo / manipulator / widget / handle / triad**. - Synonyms for the widget: **Gizmo** (Unity, Unreal, Blender) = **Manipulator** (Maya, 3ds Max) = **Triad** (SolidWorks) = **Handles** = **Transform Gizmo / Widget**. - The operations: **Move / Translate** (most apps; Blender uniquely calls it **Grab**) / **Rotate** / **Scale**. - A second axis here is the **what-am-I-editing** toggle, most visible in Blender's **Object Mode <-> Edit Mode (Tab)**: the same transform keys act on the whole object vs. its mesh vertices / edges / faces. ### The orthogonality that matters Paradigm (c)'s transform keys (W/E/R or G/R/S) are bound without a modifier, while paradigm (a)/(b) camera motion is bound with a modifier (Alt) or a mouse-button-hold (RMB/MMB). So you can hold Alt to orbit the view while a Move tool is active, and the selected object never moves. Camera and object live on separate input channels. The mapping libraries (Cesium, Mapbox, MapLibre) are a special case: they ship paradigm (a) and (b) only; object-edit is a feature of the app built on top, not of the navigation layer.
## Cross-industry synonym map: camera navigation actions | Action (concept) | AutoCAD / Autodesk | Maya | 3ds Max | Cinema 4D | Blender | SolidWorks | Unity | Unreal | SketchUp | Web mapping libs | |---|---|---|---|---|---|---|---|---|---|---| | **Orbit** (circle pivot) | Orbit (Constrained/Free/Continuous) | **Tumble** | Orbit / Arc Rotate | Rotate | Orbit | Rotate View | Orbit | Orbit | Orbit | (globe) rotate / orbit | | **Pan** (slide screen-parallel) | Pan | **Track** | Pan | Move / Pan | Pan | Pan | Pan / Hand | Track | Pan | DragPan / translate | | **Zoom** (magnify or move in/out) | Zoom | **Dolly** (move) / Zoom (lens) | Zoom | Dolly / Zoom | Zoom (vs Dolly) | Zoom | Zoom | Dolly / Zoom | Zoom | ScrollZoom | | **Roll** (tilt about view axis) | (SteeringWheels) | Roll | -- | -- | Roll | (Ctrl+drag in Orbit) | -- | -- | (Ctrl+Orbit) | -- (libs lock roll) | | **Tilt / pitch** (look down toward horizon) | (orbit elevation) | (tumble elevation) | -- | -- | (orbit) | -- | -- | -- | -- | **pitch** (tilt event) | | **Look** (swivel in place) | Look / Look Around | (look-around) | -- | -- | (part of Walk/Fly) | -- | (in Flythrough) | (RMB look) | **Look Around** | **look** (Cesium Shift+drag) | | **Frame / Focus selection** | Zoom Object/Extents | **f** (Frame Selected) | Zoom Extents Selected | Frame | Frame Selected (Numpad .) | Zoom to Fit | **F** (Frame Selected) | **F** (Focus) | Zoom Selection | fitBounds / flyToBoundingSphere |
## Cross-industry synonym map: object-transform actions (paradigm c) | Concept | Generic | Maya | 3ds Max | Blender | Unity | Unreal | SolidWorks | three.js | |---|---|---|---|---|---|---|---|---| | The handle widget | Gizmo / Handle | **Manipulator** | Transform Gizmo | Gizmo | Gizmo | Transform Gizmo / Widget | **Triad** | `TransformControls` | | Move / Translate | Move | Move (**W**) | Select & Move (**W**) | **Grab** (**G**) | Move (**W**) | Move (**W**) | Move Component | translate mode | | Rotate | Rotate | Rotate (**E**) | Select & Rotate (**E**) | Rotate (**R**) | Rotate (**E**) | Rotate (**E**) | Rotate Component | rotate mode | | Scale | Scale | Scale (**R**) | Select & Scale (**R**) | Scale (**S**) | Scale (**R**) | Scale (**R**) | -- | scale mode | | Select tool | Select | Select (**Q**) | Select Object | Select | (Q hand) | -- | Select | `DragControls` (drag-place) |
## The "default orbit binding" divergence (the muscle-memory clash) The single most cited cross-tool friction is which gesture orbits the view. There is no universal standard; "Maya navigation" (Alt + mouse) is the nearest thing to one, offered as an option in most DCC and game tools. | Tool | Orbit gesture | Pan gesture | Zoom gesture | |---|---|---|---| | AutoCAD | Shift + wheel-drag | wheel-drag | wheel scroll | | Fusion / Inventor / Revit | Shift + MMB | MMB | scroll | | Maya | **Alt + LMB** | Alt + MMB | Alt + RMB / scroll | | 3ds Max | **Alt + MMB** | MMB | scroll | | Cinema 4D | 3+LMB / Alt+LMB | 1+LMB / Alt+MMB | 2+LMB / Alt+RMB | | Blender (default) | **MMB** | Shift+MMB | scroll / Ctrl+MMB | | Blender (Industry Compatible) | Alt+LMB | Alt+Shift+LMB | Alt+Ctrl+LMB | | SolidWorks | **MMB** | Ctrl+MMB | Shift+MMB / scroll | | Unity | Alt+LMB | MMB | scroll / Alt+RMB | | Unreal | Alt+LMB | Alt+MMB | Alt+RMB / scroll | | SketchUp | MMB | Shift+MMB | scroll | | three.js OrbitControls | LMB | RMB | wheel / MMB | | three.js MapControls | RMB | LMB | wheel / MMB | | Cesium (3D globe) | LMB | (= rotate) | RMB / wheel | | Mapbox / MapLibre | RMB or Ctrl+drag (bearing+pitch) | LMB | wheel | The two big bare-MMB outliers are **SolidWorks** and **Blender**, which orbit on a plain MMB drag with no modifier. Mechanical-CAD users (SolidWorks) and DCC users repeatedly trip over this.
## Cross-cutting takeaways 1. **"Maya navigation"** (Alt + LMB / MMB / RMB = tumble / track / dolly) is the de-facto cross-app standard: native in Maya / Mudbox / MotionBuilder, and an option in Unity, Unreal, Blender (Industry Compatible), 3ds Max, Substance. 2. **Zoom vs Dolly is a real distinction**, not pedantry. Maya and Blender separate moving the camera (Dolly) from changing magnification / lens focal length (Zoom). Most other tools collapse both into "Zoom". The mapping libraries collapse it too: "zoom" there means change scale, with the camera tethered. 3. The **W/E/R transform-key cluster** (Move / Rotate / Scale) is near-universal for object-edit. Blender's default keymap is the outlier with modal **G/R/S** and the word **"Grab"** for Move. 4. **Mapping libraries lock roll.** Cesium / Mapbox / MapLibre keep the up-vector world-aligned (you get bearing + pitch + zoom, no roll), the same constraint OrbitControls / MapControls impose. Free roll lives in trackball (three.js Trackball/Arcball) and flight (FlyControls, the editor fly modes). 5. **Globe-orbit is a fourth, mapping-specific flavor** of orbit: the camera is tethered to a planet, so "pan" is implemented as rotating the globe under the cursor rather than sliding a plane (see note 02). 6. The **3Dconnexion SpaceMouse** generalizes paradigms (a) and (b) into a 6-DOF hardware puck, freeing the regular mouse for paradigm (c) selection / edit (see note 04). See per-target notes 01-04 for exact bindings and source URLs.