mcpField
T
threejs-controls

threejs-controls

github.com/full-stack-skillsDevelopment10376 installsUpdated 4w ago
Repository

About threejs-controls

A reference skill for agents working with three.js controls, covering camera navigation and object manipulation. It focuses on official addon usage patterns, lifecycle, and common interaction pitfalls.

Key features

  1. 01Orbit, map, and fly camera controls
  2. 02Transform, drag, and pointer-lock controls
  3. 03Damping updates and control constraints
  4. 04Coordinate transform and orbit interactions
  5. 05Dispose controls during teardown

Use cases

  1. 01Set up damped OrbitControls navigation
  2. 02Limit camera distance and polar angles
  3. 03Pause OrbitControls while transforming objects
  4. 04Implement pointer-lock first-person navigation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/full-stack-skills/threejs-skills --skill threejs-controls

After installing, type/threejs-controlsin Claude Code to confirm it loaded.

Bundled filesagents/openai.yamlexamples/workflow-orbit-damping.md

Details

From the project README

When to use this skill

ALWAYS use this skill when the user mentions:

  • Orbiting/panning/dolly around a target, inertia/damping, min/max distance/polar angles
  • Map-like pan (MapControls) or flying (FlyControls)
  • Transform gizmo translate/rotate/scale with TransformControls
  • Dragging objects in plane (DragControls), pointer lock FPS (PointerLockControls)

IMPORTANT: controls vs webxr

ContextSkill
Desktop/browser camera navthreejs-controls
XR controller posesthreejs-webxr

Trigger phrases include:

  • "OrbitControls", "TransformControls", "MapControls", "PointerLockControls"
  • "轨道", "变换控制器", "漫游"

How to use this skill

  1. Import from addons path (threejs-dev-setup).
  2. Construct with (camera, domElement); for TransformControls also attach to renderer events.
  3. Animation loop: when enableDamping, call controls.update() each frame.
  4. TransformControls: wire dragging-changed to disable Orbit temporarily; sync with selection from threejs-objects.
  5. Constraints: set min/max distance/angles to avoid flipping or underground views.
  6. Dispose: controls.dispose() when tearing down.

See examples/workflow-orbit-damping.md.

Doc map (official)

Docs sectionRepresentative links
Controlshttps://threejs.org/docs/OrbitControls.html
Controlshttps://threejs.org/docs/TransformControls.html
Controlshttps://threejs.org/docs/MapControls.html
Controls (index)https://threejs.org/docs/#Controls

Scope

  • In scope: Official addons controls usage patterns.
  • Out of scope: Full physics character motor; mobile gesture frameworks.

Common pitfalls and best practices

  • Forgetting update() with damping enabled causes drift never settling.
  • TransformControls fighting with Orbit—pause one while using the other.
  • Pointer lock requires user gesture and exit handling.

Documentation and version

Controls are under Controls (Addons) in three.js docs. API details (enableDamping, events) evolve—link OrbitControls / TransformControls pages for the user’s three.js version.

Agent response checklist

When answering under this skill, prefer responses that:

  1. Link the specific controls class from the docs.
  2. State controls.update() when damping is on, every frame.
  3. Coordinate TransformControls with selection / threejs-objects raycasting.
  4. Separate desktop navigation from threejs-webxr locomotion.
  5. Call dispose() on controls when unmounting canvas.

References

Keywords

English: orbitcontrols, transformcontrols, mapcontrols, damping, camera controls, three.js

中文: OrbitControls、轨道、TransformControls、变换控制器、阻尼、three.js

Comments

Markdown supported