mcpField
T
threejs-controls

threejs-controls

github.com/full-stack-skills开发10376 次安装4 周前更新
代码仓库

关于 threejs-controls

面向使用 three.js 控制器的 Agent,介绍相机导航与对象操作。内容侧重官方插件的使用方式、生命周期管理及常见交互问题。

主要功能

  1. 01轨道、地图与飞行相机控制
  2. 02变换、拖拽与指针锁定控制
  3. 03阻尼更新与控制约束
  4. 04协调变换与轨道交互
  5. 05拆除时释放控制器

适用场景

  1. 01设置带阻尼的 OrbitControls 导航
  2. 02限制相机距离和极角
  3. 03变换对象时暂停 OrbitControls
  4. 04实现指针锁定的第一人称导航

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/threejs-controls确认已加载。

附带文件agents/openai.yamlexamples/workflow-orbit-damping.md

详细介绍

何时使用此技能

用户提到以下内容时,务必使用此技能:

  • 围绕目标进行轨道旋转/平移/推拉、惯性/阻尼、最小/最大距离/极角
  • 类似地图的平移(MapControls)或飞行(FlyControls)
  • 使用 TransformControls 变换控件进行平移/旋转/缩放
  • 在平面上拖动对象(DragControls)、指针锁定 FPS(PointerLockControls)

重要:controls 与 webxr 的区别

上下文技能
桌面端/浏览器摄像机导航threejs-controls
XR 控制器姿态threejs-webxr

触发短语包括:

  • “OrbitControls”、“TransformControls”、“MapControls”、“PointerLockControls”
  • “轨道”、“变换控制器”、“漫游”

如何使用此技能

  1. 从 addons 路径导入(threejs-dev-setup)。
  2. 使用 (camera, domElement) 构造;对于 TransformControls,还要附加到渲染器事件。
  3. 动画循环:启用 enableDamping 时,每帧调用 controls.update()。
  4. TransformControls:将 dragging-changed 连接到临时禁用 Orbit;与 threejs-objects 中的选择状态同步。
  5. 约束:设置最小/最大距离/角度,以避免视角翻转或进入地下。
  6. 释放资源:拆除时调用 controls.dispose()。

参见 examples/workflow-orbit-damping.md。

文档索引(官方)

文档部分代表性链接
Controlshttps://threejs.org/docs/OrbitControls.html
Controlshttps://threejs.org/docs/TransformControls.html
Controlshttps://threejs.org/docs/MapControls.html
Controls(索引)https://threejs.org/docs/#Controls

范围

  • 范围内: 官方 addons 控件的使用模式。
  • 范围外: 完整的物理角色控制器;移动端手势框架。

常见问题与最佳实践

  • 启用阻尼后忘记调用 update(),会导致漂移一直无法停止。
  • TransformControls 与 Orbit 相互冲突——使用其中一个时暂停另一个。
  • 指针锁定需要用户手势,并需处理退出逻辑。

文档与版本

控件位于 three.js 文档的 Controls(Addons)中。API 细节(enableDamping、事件)会不断变化——请链接到与用户所用 three.js 版本对应的 OrbitControls/TransformControls 页面。

Agent 回答检查清单

使用此技能回答时,优先做到以下几点:

  1. 链接文档中对应的控件类。
  2. 说明启用阻尼时,每帧都要调用 controls.update()。
  3. 将 TransformControls 与选择状态/threejs-objects 射线检测协调起来。
  4. 区分桌面端导航与 threejs-webxr 移动方式。
  5. 卸载画布时,对控件调用 dispose()。

参考资料

关键词

English: orbitcontrols、transformcontrols、mapcontrols、阻尼、摄像机控件、three.js

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

评论

支持 Markdown