Skip to content

几何系统

从 BlockBench .bbmodel 到运行时几何缓存的完整烘焙管线,支持 5 种几何原语和工业级 EarCut 三角化。

烘焙管线

几何原语

系统支持 5 种几何原语,覆盖从简单方块到自由曲面的所有建模需求:

原语说明典型用途
BedrockCuboid轴对齐盒体,6 面独立 UV/材质标准方块骨骼、盔甲片
BedrockTriangleSurface刚体三角面片网格BlockBench Mesh 几何
BedrockSkinnedTriangleSurface带骨骼权重的三角面片蒙皮网格、柔体变形
BedrockBillboard始终面向相机的四边形光环、标签、粒子挂点
BedrockPath样条曲线几何触手、绳索、轨迹线

Cuboid

标准 Bedrock 方块几何。每面独立 UV 映射,支持 Box UV 和 Per-Face UV 两种模式。

  • 6 个 BedrockQuad(WEST / EAST / NORTH / SOUTH / UP / DOWN)
  • 支持 inflate 参数膨胀几何
  • 支持 pivot + rotation 局部变换
  • 每面独立材质分配

Triangle Surface

自由网格几何,由 BlockBench Mesh 烘焙而来。

  • 三角面片数组 BedrockTriangle[]
  • 单材质绑定
  • 支持平滑法线(Newell 方法累积)和平面法线
  • pivot + rotation 局部变换

Skinned Triangle Surface

带骨骼蒙皮的三角面片,用于跨骨骼的柔体变形。

  • 顶点携带 BedrockVertexInfluence[](关节索引 + 归一化权重)
  • 归属骨骼追踪(ownerBoneName
  • 无独立 pivot/rotation(继承归属骨骼变换)

Billboard

始终面向相机的四边形,支持 4 种朝向模式:

模式行为
LOOKAT完全面向相机位置
LOOKAT_Y仅 Y 轴旋转面向相机
ROTATE跟随相机旋转
ROTATE_Y仅 Y 轴跟随相机旋转

Path

样条曲线几何,用于绳索、触手等线性结构。

  • 控制点 + 切线 + 法线数组
  • 线宽数组(sizes
  • 连接标记(connections)控制分段断开
  • 累积长度用于参数化采样

EarCut 三角化

对于顶点数 ≥ 5 的多边形面,系统使用 EarCut 算法进行三角化:

顶点数 = 3  → 直接输出三角形
顶点数 = 4  → 硬编码四边形分割 (0,1,2) + (0,2,3)
顶点数 ≥ 5  → 投影到 2D → EarCut 三角化

投影流程:

  1. 使用 Newell 方法计算面法线
  2. 构建正交基(面法线为 Z 轴)
  3. 将 3D 顶点投影到 2D 平面
  4. 调用 Earcut.earcut() 生成三角形索引
  5. 校验绕序一致性(orientTriangle

骨骼层级

骨骼系统核心概念:

  • Bone: 带变换的层级节点,可挂载几何原语
  • Locator: 无几何的定位点,用于挂载粒子/物品/子模型
  • Armature: 完整骨架描述,包含 IK 链定义
  • IK Chain: 反向运动学链,定义目标骨骼和链长度

材质系统

每个几何原语绑定一个 BedrockMaterialRenderMode

模式说明
CUTOUTAlpha 测试(不透明 + 镂空)
CUTOUT_NO_CULLAlpha 测试 + 关闭背面剔除
TRANSLUCENTAlpha 混合(半透明)
EMISSIVE自发光(忽略光照)