mcpField
G
game-mesh-voxel-conversion

game-mesh-voxel-conversion

github.com/lvtd-llc开发162 次安装7 周前更新
代码仓库

关于 game-mesh-voxel-conversion

这项游戏开发技能用于规划网格、场与体素表示之间的转换,帮助开发者选择分辨率、提取算法和属性规则,并验证几何结果与游戏行为。

主要功能

  1. 01规划源表示与目标表示
  2. 02依据误差和资源限制选择分辨率
  3. 03按形状需求选择提取算法
  4. 04跟踪几何与游戏属性
  5. 05验证转换后的几何和行为

适用场景

  1. 01修复或合并复杂网格
  2. 02从场生成渲染或碰撞几何
  3. 03对游戏形状执行体素操作
  4. 04规划大型或流式世界的转换

安装

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

$npx skills add https://github.com/lvtd-llc/skills --skill game-mesh-voxel-conversion

安装后在 Claude Code 中输入/game-mesh-voxel-conversion确认已加载。

详细介绍

游戏网格与体素转换

当游戏需要以一种表示形式执行操作,并以另一种形式交付或渲染结果时,使用此技能。将转换设为明确的工作流,并规定分辨率、误差和属性规则。

主要来源:Oleksandr Kaleniuk 著《Geometry for Programmers》 (https://www.manning.com/books/geometry-for-programmers),经改写和转述,尤其是第 10—12 章。其他来源:Lorensen 和 Cline 的《Marching Cubes》(https://dl.acm.org/doi/10.1145/37402.37422),以及 Ju、Losasso、Schaefer 和 Warren 的《Dual Contouring of Hermite Data》(https://dl.acm.org/doi/10.1145/566654.566586)。

核心工作流

  1. 说明源表示形式和目标表示形式。
  2. 说明转换的原因:修复、渲染、碰撞、编辑、布尔运算、偏移、破坏、简化、平滑或导出。
  3. 根据可见误差、游戏玩法容差、内存和流式加载限制,选择工作网格或采样分辨率。
  4. 有意保留或重新生成属性:法线、UV、材质、蒙皮、碰撞层、游戏玩法标签和 LOD 元数据。
  5. 根据形状需求选择提取算法:平滑的有机场使用行进立方体/行进方形,锐利特征使用双重轮廓,曲线输出重要时使用自定义轮廓算法。
  6. 转换后验证几何体和游戏玩法行为。

转换模式

网格 → SDF → 网格

当网格操作不稳定,但可以接受近似输出时使用:

  • 修复孔洞、裂缝、折叠或反向三角形。
  • 近似地将模型挖空或偏移。
  • 合并或减去复杂形状。
  • 从隐式设计步骤生成干净的碰撞网格或渲染网格。

预期会丢失精确拓扑,并可能丢失原始 UV/材质。

场 → 网格

以下情况使用行进立方体/行进方形:

  • 场平滑且形状有机。
  • 无需精确保留角点。
  • 网格边上的线性插值已足够。

以下情况使用双重轮廓:

  • 锐利特征很重要。
  • 可用 Hermite 数据、梯度或法线。
  • 每个活跃单元一个顶点是合适的输出形式。
体素操作

当稳健性比精确的表面细节更重要时,使用体素或图像掩码:

  • 膨胀会扩大填充区域。
  • 腐蚀会移除边界材料。
  • 先腐蚀再膨胀,以去除小噪点。
  • 先膨胀再腐蚀,以闭合细小裂缝。
  • 在对齐的网格上,布尔并集、交集和差集都很简单。
  • 连通分量标记可统计独立部分的数量。

分辨率和误差规则

  • 每次网格转换都有误差预算。实现前先明确预算。
  • 更高的分辨率能提升视觉细节,但会迅速增加内存和处理成本,尤其是在 3D 中。
  • 距离和邻居规则必须考虑各向异性体素或非均匀世界缩放。
  • 随数据一同存储网格原点、单元大小、轴顺序和符号约定。
  • 世界规模较大时,使用多分辨率或分块。

属性保留检查清单

  • 法线:重新计算、转移还是保留?
  • UV:投影、烘焙、丢弃还是重新生成?
  • 材质:按最近表面、体积标签还是程序化规则转移?
  • 游戏玩法标签:按源图元、体积区域还是查询转移?
  • LOD:现在生成还是稍后生成?
  • 碰撞:使用与渲染相同的网格、简化网格、SDF 还是体素代理?

常见错误

  • 只转换顶点位置,后来才发现材质或游戏玩法标签才是真正重要的资产。
  • 对主要价值在于锐利边缘的形状使用行进立方体。
  • 将体素网格当作精确几何体,而不是采样后的占用数据。
  • 运行网格修复工作流,却不进行修复前后的有效性测试。
  • 根据截图而非游戏玩法容差和内存来选择分辨率。

评论

支持 Markdown