mcpField
G
game-transform-systems

game-transform-systems

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

关于 game-transform-systems

game-transform-systems 是一项技能,用于让游戏逻辑、渲染、物理和工具中的变换代码明确且易于测试。它提供变换组合、求逆和验证的约定与检查方法。

主要功能

  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-transform-systems

安装后在 Claude Code 中输入/game-transform-systems确认已加载。

详细介绍

游戏变换系统

使用此技能,让变换代码明确、可组合、可测试,并在游戏玩法、渲染、物理和工具之间保持一致。

主要来源:Oleksandr Kaleniuk 所著的《Geometry for Programmers》 (https://www.manning.com/books/geometry-for-programmers),经改写和转述,尤其是第 4 章。补充来源:Khronos glTF 2.0 规范中的变换和坐标系约定 (https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html)。

核心工作流

  1. 列出涉及的所有坐标空间:模型、本地、父级、世界、视图、裁剪、屏幕、纹理、网格或场空间。
  2. 统一定义约定:左右手系、上轴、单位、行向量/列向量、矩阵内存布局、乘法顺序、角度单位和四元数顺序。
  3. 按方向为变换命名,例如 local_to_world 和 world_to_view。
  4. 在一个地方组合变换,并缓存会重复使用的组合矩阵。
  5. 使用逆变换将查询移入更简单的空间,尤其适用于拾取、SDF、场和对象本地碰撞。
  6. 明确构建摄像机:位置、目标或前向向量、上向量、视野、宽高比、近平面/远平面。
  7. 在调整游戏玩法行为之前,通过往返测试和调试坐标轴进行验证。

设计规则

  • 将变换视为一等数据,而不是隐藏在辅助方法中的副作用。
  • 优先使用一条规范的变换链来处理渲染和游戏玩法。在引擎或资源边界处添加适配器。
  • 当平移、投影和矩阵组合必须纳入同一流水线时,使用齐次坐标。
  • 对普通的旋转、平移、缩放和错切,使用仿射变换。
  • 当问题涉及透视、投影或平面扭曲时,使用射影变换。
  • 对 SDF 或场的输入应用逆变换,而不是针对每种对象变换重写场的公式。
  • 如果可能存在非均匀缩放或错切,使用逆转置变换法线。

摄像机和投影检查

  • 摄像机需要足够的约束来确定朝向。仅有位置和目标仍无法确定滚转角,还需要上/右/下向量或等效信息。
  • 近平面和远平面应覆盖可游玩范围;设置不当会损害深度精度。
  • 应使用已知点测试投影和反投影,包括屏幕中心、视口角落、近平面和远平面上的点。
  • 必须记录屏幕空间中 y 轴的方向和像素中心约定,以用于拾取和 UI/游戏交互。

变换调试清单

  • 绘制所选对象的本地坐标轴。
  • 绘制摄像机视锥体和近平面/远平面。
  • 在变量名中标明变换方向。
  • 在提交给渲染或物理系统之前,断言矩阵值均为有限数。
  • 测试单位变换、仅平移、仅旋转、仅缩放、父子变换,以及逆变换往返。
  • 如果法线、碰撞或子对象变换会受到影响,则测试非均匀缩放。

常见错误

  • 将行优先内存布局与行向量数学假设混用。
  • 按看似合理但实际错误的顺序相乘变换。
  • 在紧密的逐点循环中重复计算逆矩阵。
  • 忘记在齐次坐标中,w = 0 表示方向,而 w = 1 表示点。
  • 对 SDF 输出应用对象变换,而不是对查询点应用逆变换。
  • 通过更改资源朝向来修复摄像机滚转问题,而不是完善摄像机约束。

评论

支持 Markdown