架构规范
统一几何数据源
必须遵循单一数据流架构:
Config(参数对象)→ 纯函数渲染 → 几何中间表示(IR)→ 2D 画布 / 3D 视图 / 导出文件
3D 视图必须与 2D 画布、导出文件消费同一份几何 IR,不得在 3D 侧单独实现一套几何计算逻辑。独立实现将导致预览与导出结果不一致。
坐标系约定
各渲染空间的坐标系约定如下,必须在文档化的位置统一维护:
| 空间 | 单位 / 原点 / 轴向 |
|---|---|
| IR(规范空间) | mm,中心 (0,0),Y 轴向下(二维,无 Z) |
| 3D(three.js) | mm,Y 轴向上,Z 为厚度方向 |
轮廓在 XY 平面构建、沿 +Z 挤出,零件正面朝相机。IR 翻成 Y-up 用镜像不用旋转——整个 content group 设一次 group.scale.y = -1;改用旋转会把厚度换到另一根轴上。
翻错地方的两种表现:
- 某个零件上下颠倒且是镜像的,周围都对——是这个 mesh 自己又设了一次
scale.y。它已经继承了 group 的翻转,再翻一次就抵消。 - 每个面都渲染成内外颠倒——翻的是几何体(
geometry.scale(1, -1, 1))。three.js 只在物体级别按matrixWorld行列式补偿绕序,几何体级别没有补偿。
路径转换
文字及复杂图形的 SVG 路径必须通过 new SVGLoader().parse() 与 SVGLoader.createShapes() 转换为 THREE.Shape(该方法按填充规则正确处理镂空与字腔),再经 ExtrudeGeometry 挤出。不得自行实现 SVG 路径解析。