mcpField
G
game-sdf-and-field-modeling

game-sdf-and-field-modeling

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

关于 game-sdf-and-field-modeling

面向游戏开发者和游戏构建 Agent 的技能,用标量场、向量场或有符号距离场表示玩法与内容,而非显式三角形。内容涵盖场的组合、坐标变换、距离有效性,以及将场用于玩法或渲染数据的方法。

主要功能

  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-sdf-and-field-modeling

安装后在 Claude Code 中输入/game-sdf-and-field-modeling确认已加载。

详细介绍

游戏 SDF 与场建模

当游戏系统用空间上的函数表示比用显式三角形表示更合适时,使用此技能。将场视为游戏玩法和内容工具,而不只是渲染技巧。

主要来源:Oleksandr Kaleniuk 的《Geometry for Programmers》 (https://www.manning.com/books/geometry-for-programmers),经改编和转述,重点涉及第 2、8、10 和 11 章。其他来源: NVIDIA GPU Gems 3 第 34 章,“Signed Distance Fields Using Single-Pass GPU Scan Conversion of Tetrahedra” (https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-34-signed-distance-fields-using-single-pass-gpu), 以及 Perry、Frisken 和 Jones 的“Designing with Distance Fields” (https://merl.com/publications/TR2006-054)。

核心工作流

  1. 定义场的签名:输入的空间中的点,以及输出的值,还有符号约定的含义。
  2. 选择函数必须是真正的距离场,还是只需类似符号的隐式函数。
  3. 先构建基本图元场,再通过变换、布尔运算、混合、偏移或形变场进行组合。
  4. 使用物体变换的逆变换来变换输入点。不要为每次平移、旋转或缩放都重写图元。
  5. 记录哪些操作会保留或破坏真正的距离含义。
  6. 决定如何将场转化为游戏玩法或可渲染数据:直接采样、光线步进、网格提取、体素化、粒子、贴花或碰撞探测。
  7. 添加可视化调试:切片、等值线、梯度箭头、采样点和符号颜色。

场类型

  • 标量场:在每个点返回一个数值。用于地形高度、影响力、热量、雾、危险度、有符号距离或密度。
  • SDF:返回内部为负值、边界为零、外部为正值;当它仍是真正的 SDF 时,数值大小表示距离。
  • 向量场:在每个点返回一个向量。用于风、洋流、转向、力场、形变和流动。
  • 形变场:返回与建模物体处于同一空间中的位移向量。
  • 隐式近似场:返回类似符号的值,但不是真正的距离。虽然有用,但不适用于需要距离大小的操作。

SDF 操作

  • 并集:取两个场中的较小值。
  • 交集:取两个场中的较大值。
  • 差集:将第一个场与第二个场的取反场求交集。
  • 对真正的 SDF 进行膨胀/腐蚀:根据项目的符号约定,加上或减去一个常量。
  • 中空化:使用绝对距离和壳层宽度,将边界带转换为壳层。
  • 平滑混合:适用于有机形状,但可能破坏精确的距离语义。

距离有效性规则

  • 真正的 SDF 可支持可靠的偏移和基于梯度的移动。
  • 布尔组合通常会保留符号行为,但并非处处都能保留精确距离。
  • 元球、双纽线、密度函数和许多程序化公式都是隐式场,而非真正的 SDF。
  • 距离有效性丢失后,在执行依赖精确距离的算法之前,需重新初始化或重新计算距离。
  • 对含噪或采样得到的场求梯度时,需要进行滤波或使用稳健的有限差分。

游戏用途

  • 程序化岩石、洞穴、团块、护盾、区域、贴花和有机道具。
  • 在转换为网格或体素之前,可破坏或可编辑的体积。
  • 用于 AI 的影响图、危险场、雾密度、风、水流和力场。
  • 当网格拓扑不可靠时,对体积进行快速的内部/外部测试。

常见错误

  • 将每个隐式函数都当作真正的 SDF。
  • 布尔运算后进行偏移,却不检查距离有效性。
  • 在高负载路径中,每次采样都重新计算变换或执行开销高昂的邻近搜索。
  • 以过低的分辨率采样场,却将问题归咎于提取算法。
  • 发布场逻辑时没有切片或等值线调试视图。

评论

支持 Markdown