"克隆https://github.com/elliottdehn/wam并让我创建一个我可以看到的[你想要的模型]"这个视频的帖子中,我做了:"克隆https://github.com/elliottdehn/wam并让它创建一个我可以看到的 Eldritch 恐怖"这就是整个提示。 回来的结果是一个rigged、动画、纹理化的glTF,而不是一个需要清理的网格,也不是一个需要从图像中建模的图像。 你不需要一个终端来做这件事。它在Claude或ChatGPT的网页上都可以正常运行,因为它们都可以克隆一个仓库并在沙盒中运行Python,并且在片段中创建的恐怖完全是通过这种方式创建的,在一个浏览器标签中。 终端和IDE代理也可以工作:Claude Code、Codex、Cursor、Cline、Aider等你已经喜欢的任何代理。唯一的要求是它可以克隆、写文件并调用一个脚本。 编译器是纯Python,语言在SPEC.md中文档化,所以这没有任何特定的模型特征,我真诚地希望看到其他模型如何处理相同的提示。

什么是WAM

一个文本语言和编译器,用于LLM-authored低多边形人物。约150行可读的源代码,输出:mesh、骨骼、皮肤权重、动画和一个过程化的纹理图集。它还带来一个无依赖的软件渲染器,所以模型可以在每次编译时渲染自己到一个四视图PNG图集,LLM可以看到它创建了什么。 设计理念是图像生成和网格生成都在打败错误的战役。模型在离散的命名决策上很擅长,但在保持一个空间框架跨50个编辑上很差。所以语言只允许你做前者: 骨骼角度作为方向词加角度,永远不用矩阵 体质量作为骨骼链上的横截面环 对称性作为一个mirror块,作者只写左边,编译器就能生成右边 道具作为一个group在一个干净的局部坐标系中写好并在一个方向上挂上 膜作为一个web在一根骨骼的扇形上写好 表面附着作为on=<part>,它会在最接近的点上粘合并沉入*

编译器会生成每个顶点、法线、边界和皮肤权重。如果作者发现自己在推导世界坐标,他们正在滥用语言,因为有一个可以消除数学的构造。

我想pitch你什么

不是几何学。检查部分。每个模型都带有一个在同一个文件中携带的回归套件,在一个约40个函数的词汇中覆盖比例、间隙、质量、rig质量和动画覆盖:

assert height / len(skull) in 6.5..9.5 
assert bottom(foot.l) < 0.02 
assert influences(cape) >= 2 # 1意味着刚性地焊接 
assert slide(hoof.l, walk) < 0.02 # 月球行走检测器 
noclip # 没有任何东西相互穿透 

为什么这比它听起来更重要:**渲染是一个投影,会丢弃深度、皮肤和时间。**这些正是rigging错误的栖息地。 在恐怖跑的时候,检查发现了一根 tentacle 的顶点都被焊接到了一个骨骼上,这在每个静态视图中都一样,一个noclip扫描发现了48mm的肩膀质量被埋在了头骨中。 相互穿透是从外面看起来不可见的定义,因为穿透的几何体坐在了它穿透的表面后面。 还有一个 lint 报告了一个部分完全被另一个部分包围。 它在三个没有渲染任何东西的眼睛上触发了三次。 没有任何数量的凝视可以发现这个。

点击回车后会发生什么

一个提示,没有后续提示,没有我的纠正。但这不是一次性在内部:模型编译、读取自己的 lint、看自己的渲染、编辑,总共五次左右。 大致如下:1. 骨骼和大致的质量,然后编译并看。读成一个弯腰行走的生物,这是块状的目的。2. 翅膀作为一个web、面部 tentacle、散落的眼睛、纹理堆栈。 tentacle 替身向上卷曲了而不是向下弯曲,所以那一个需要一个渲染才能捕获。3. 重建 tentacle 作为真正的骨骼链使它们可以独立蠕动,这意味着重新调整段长为环分数的手动。4. 修复所有noclip发现的内容通过移动几何体而不是松弛检查。5. 动画:静止、行走和片段中的咆哮。静止使用mirrorphase 38%,使两侧脱序时 tentacle 蠕动出相位。 最终:4,084个三角形、7个材料、零 lint 警告、30个检查通过。 这些迭代中的任何一个都没有到达我。 可见输出是:一个提示进入,一个完成的模型出来。

实用部分

  • 输出是标准的glTF 2.0,皮肤和动画。直接放入Blender、三.js、Godot、Unity。
  • 每次编译也会写一个查看器 JSON,并且有一个独立的 WebGL 页面可以将其丢入进行旋转、线框、骨骼和播放。
  • 需要Python 3和numpy。没有其他任何要求。
  • 任何可以克隆、写文件并调用python3 -m wam.cli的代理都可以工作。将其指向SPEC.md并让它迭代。
  • 如果你在 Claude Code 中,它也打包为一个插件:/plugin marketplace add elliottdehn/wam,然后/plugin install wam@wam。 这会将一个技能与作者的规则和编译-渲染-迭代循环捆绑在一起,这会让代理免于重新发现它们。
  • 还有一个区域编译器,涵盖地形、河流、道路、生成桥梁、种子播种和散布,如果你想创建环境而不是人物。

MIT,除了 numpy 之外没有任何依赖,欢迎 PR。 我很好奇人们如何使用没有是怪物的提示,因为道具和机器比生物更难测试语言。