用途:该技能面向 three.js 中 GPU 就绪的三角形数据编写,即几何体层。当用户提到构建或修改 BufferGeometry、属性、索引缓冲、绘制范围,通过 InstancedBufferAttribute 做实例化(网格包装部分归 threejs-objects),沿路径挤出 Shape、TubeGeometry、LatheGeometry、ExtrudeGeometry,或文字与贴花附加几何体时使用。注意区分:几何体负责 GPU 三角形数据,threejs-math 负责 Box3、Sphere、Ray 等不依赖网格拓扑的测试。
主要能力:内置图元几何体、BufferGeometry 核心、曲线/形状/挤出工作流,以及部分附加几何体。自定义网格需创建 BufferGeometry,设置 position、normal、uv 和可选 index,并计算包围体用于剔除。实例化属性需与 threejs-objects 中 InstancedMesh 的 divisor/count 模式对齐。2D 轮廓先构建 Shape/Path 再挤出或旋转。
使用方式:优先使用合适的内置图元,再考虑自定义缓冲。附加的 NURBS 节点参考 Addons Curves 文档,避免照抄完整 API。替换网格时调用 dispose() 释放几何体,避免泄漏。变形若由时间驱动,指向 threejs-animation;合并/拆分仅按名称与文档链接引用 BufferGeometryUtils。
限制与常见问题:缺少法线会破坏光照;绕序错误会翻转面,需检查 side/culling;属性数量过大需要 LOD 或简化。范围外:物理碰撞网格烘焙、完整 CAD 导入管线。文档与版本:图元与 BufferGeometry 见 three.js 文档 Geometries 与 BufferGeometry 章节,曲线、形状与挤出 API 见 Extras 与 Geometries,附加 Curves/Geometries 记录 NURBS 与文字网格。
参考:https://threejs.org/docs/#Geometries、https://threejs.org/docs/BufferGeometry.html、https://threejs.org/docs/ExtrudeGeometry.html。