关于 threejs-math
threejs-math 是面向 Agent 的技能,用于解答 three.js 数学类型和空间查询问题。它区分基础数学、拾取与动画工作流,并提供相关文档和实践指引。
主要功能
- 01介绍向量、矩阵和四元数
- 02说明包围体与相交检测
- 03指导射线、平面和视锥查询
- 04指向附加组件中的数学结构
适用场景
- 01分析局部与世界变换
- 02检查对象边界和包含关系
- 03测试射线与几何体的相交
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ full-stack-skills/ threejs-skills --skill threejs-math安装后在 Claude Code 中输入/threejs-math确认已加载。
附带文件agents/openai.yamlexamples/workflow-ray-aabb.md
详细介绍
何时使用此技能
用户提到以下内容时,始终使用此技能:
- 向量/矩阵运算顺序、
applyQuaternion、lookAt、世界变换与局部变换 - 包围体
Box3/Sphere、包含/相交测试 Ray与Plane、Frustum测试(不涉及完整的拾取流程)
重要:数学 vs 对象 vs 动画
| 需求 | 技能 |
|---|---|
| 原始数学类型 | threejs-math |
Raycaster + 图层拾取 | threejs-objects |
| QuaternionKeyframeTrack 播放 | threejs-animation |
触发短语包括:
- "Vector3"、"Matrix4"、"Quaternion"、"Box3"、"Ray"、"Frustum"
- "向量"、"矩阵"、"四元数"、"包围盒"
如何使用此技能
- 约定:按照 three.js 示例,在左侧乘以矩阵;进行世界空间查询前调用
updateMatrixWorld(threejs-objects)。 - 包围体:使用
Box3().setFromObject(object)获取粗略边界;再根据需要细化。 - 碰撞类检查:根据文档使用
ray.intersectBox、sphere.containsPoint等。 - 附加组件结构:用于游戏的
Octree/OBB——引用附加组件页面,避免在此处复制完整的 API 表格。 - 颜色:
Color转换与材质/纹理有关——添加交叉链接。 - 随机采样:使用
MeshSurfaceSampler在网格上分布点。
参见 examples/workflow-ray-aabb.md。
文档索引(官方)
| 文档部分 | 代表性链接 |
|---|---|
| 数学 | https://threejs.org/docs/Vector3.html |
| 数学 | https://threejs.org/docs/Matrix4.html |
| 数学 | https://threejs.org/docs/Quaternion.html |
| 数学 | https://threejs.org/docs/Ray.html |
范围
- 涵盖内容: 核心数学类型;附加组件数学条目作为指引。
- 不涵盖内容: 超出类型引用范围的关键帧轨道求值(动画技能)。
常见问题和最佳实践
- 欧拉角万向节死锁——任意旋转优先使用四元数。
- 在高频循环中复用临时向量可减少 GC 抖动。
- 视锥体剔除辅助工具各不相同——请针对你的 three 版本进行验证。
文档和版本
核心数学类型列在 Math 下;附加组件实用工具(Octree、OBB 等)位于 three.js 文档 的 Addons → Math 下。Global 也列出了有时需要与材质搭配使用的常量(例如包裹、混合)。
Agent 回复检查清单
使用此技能回答时,优先采用以下做法:
- 从文档链接到具体类型(
Vector3、Matrix4、Quaternion等)。 - 对于按时间采样的情况,将
AnimationMixer/ 轨道数学问题交由 threejs-animation。 - 目标为交互时,将
Raycaster拾取流程交由 threejs-objects。 - 在比较涉及数值稳定性时,提及 epsilon。
- 用户需要面向游戏的结构时,指向 Addons → Math,了解空间加速结构。
参考资料
- https://threejs.org/docs/#Math
- https://threejs.org/docs/MathUtils.html
- https://threejs.org/docs/Ray.html
关键词
英文: vector、matrix、quaternion、euler、box3、sphere、ray、frustum、three.js
中文: 向量、矩阵、四元数、欧拉角、包围盒、射线、three.js
评论
支持 Markdown