仓库:https://github.com/elliottdehn/foxel

注意:不要期望一下就能得到一个精美的资产。要预期能够迭代模型、纹理、骨骼和动画。

试试

如果你使用 Claude Code,两条命令就可以安装它作为一个技能:
/plugin marketplace add elliottdehn/foxel
/plugin install foxel@foxel

之后,你就可以问它生成一个 voxel 资产了(例如,“给我一个 voxel 小人” -》“rig它” -》“给它一个走路动画”)。agent会克隆工具链并开始工作。

不是使用 Claude Code 的人?一切都是纯 Python:
克隆仓库并指向 AGENTS.md

背景

使用 agent 进行 3D 模型、骨骼、纹理和动画的开发非常令人沮丧和困难。通常会被迫使用原理来创建资产,这个风格有一个独特的“看法”,没有人真正喜欢。它可能是某些游戏中可爱的,但作为一个风格来说,它确实很伤人。

我创造了一种语言,agent 可以理解并与人类在循环中一起工作。虽然它们还不能完全完成资产,但你可以使用 Foxel 来逐步构建资产并在时间内取得进展。这比使用 agent 进行 3D 开发要好得多,后者在迭代中几乎没有进展。

如何工作

一个模型是一个纯文本文件(.fxl)。你可以将其写成一个 ASCII 层的堆栈,从下到上。每个层是一个地板计划,每个字符是一个 voxel,. 是空白:

t = 8B4513 # 树干,棕色
l = 22CC22 # 叶子,绿色
trunk: ..... ..t.. ..... ---
*trunk 2 # 打印一个命名的层两次
--- .lll. lllll .lll. ---
..l.. .lll. ..l..

这是整个树。层可以命名并重复,调色板将字符映射到颜色。让它看起来好而不是像 Minecraft 的秘密在于每个调色板颜色的 alpha 通道是一个 密度场,并且渲染器使用行进立方体(I ported goxel 的方法)将其与之结合。一个 voxel 的 alpha 值为 255 是一个硬立方体;alpha 值为 192 是稍微更细的;alpha 值为 96 不会成为自己的表面,但会 拉动邻居的表面向外。因此,你可以在形状周围绘制低于阈值的“光环” voxel,它们会呈现出圆润和有机的外观,或者你可以跳过它们并获得锐利的边缘。同样的语言,两种外观:我的骨骼的头骨是光滑的,而其肋骨和牙齿保持锐利,仅凭借 alpha 值。

骨骼 在同一个文件中发生。关节被声明为调色板,并使用战舰样式边界符号放置:一个标记在层的边缘行中给出 x,一个标记在行的边缘给出 z,层给出 y。骨骼连接关节,父母式:k = 关节 knee_l +z # +z:膝盖喜欢向前弯曲
a = 关节 ankle_l
shin_l = 骨骼 k a

动画 是我围绕 agent 设计的部分:它是 CSS-keyframes 形式的,你只写 位置。从来不写旋转,从来不写角度。你说手或脚应该在哪里,稀疏的 IK (FABRIK)填充每个关节每个中间帧的每个关节,骨骼长度保留: anim wave 1.6s 循环: 0%: wrist_r +0 +0 +0 40%: wrist_r +11 +24 +4 100%: wrist_r +0 +0 +0

关键帧一个关节也会 固定: pin 胸部和手臂动作会停止弯曲脊柱。剩余的自由度,即位置无法表达的那些变成了小的申明性事实代替数学:关节获得弯曲提示(+z = 膝盖向前弯曲,+x-y = 肘关节向下和向外),骨骼获得一个方向(手_r = 骨骼 W F -x+z 保持掌心朝向)。一个 agent 被要求使步行“更加 swagger”会编辑约 10 个关键帧行(腰部摆动,胸部反摆动,头部点头)并将其转换为髋部滚动和膝盖弯曲。工具链约有 1,500 行的依赖关系自由 Python(仅使用 numpy): render.py:解析 FXL,运行行进立方体,渲染静态图像或动画循环(APNG)及其自己的微小软件光栅器 fxl2gltf.py:将 mesh + skeleton + 动画导出到 .glb,它 直接进入 Godot,其中包含一个 Skeleton3D 和一个 AnimationPlayer,其中包含你的命名动画* png2mp4.py:动画预览转换为 MP4

为什么 agent 可以这样做

整个循环都是文本输入,图像输出。agent 编辑一个文本文件,渲染一个 PNG,查看它,并自我批评。每个失败模式都是可见的,每个修复都是一个小的 diff:“脸像面具一样” -》步骤脸颊层后退 z“步行僵硬” -》膝盖需要一个弯曲提示,一个标记“手被旋转了 90°” -》手骨骼的朝向声明“髋部脱离脊柱” -》求解规则,修复一次对于每个动画没有东西被隐藏在二进制块或 GUI 状态中。 diff 可以被审查,人类可以在 艺术指导* 级别保持在循环中,而不是调试四元数。

我建造了什么

一个约 7,400 个 voxel 的骨骼,手绘头骨(30 个 ASCII 层),红色发光的眼睛,20 个关节/19 个骨骼的骨骼和三个动画:静止(呼吸,膝盖软,脚底平坦),swagger 步行和波浪。行进立方体的 mesh 来自 14,212 个三角形,跨 7,102 个顶点,平滑着色,具有折线检测,并且每一个都可以追溯到一个可修改的文本文件。所有这些都由 agent 在一天的“渲染,查看,调整”中完成,而我只提供艺术指导。导出到 .glb 并在 Godot 中播放,零手动清理。

限制

看啊,它是 voxel 艺术。低多边形的风格化,而不是雕刻。agent 不能一次性完成它。价值在于迭代 收敛:每个批评都产生一个小的、目标化的、可审查的修改。.roll 是隐含的,除非你瞄准叶子关节或声明一个朝向。这是旋转语言的代价,你恰好在那里(手)渲染器是一个预览工具,而不是产品渲染器。.glb 是真正的输出。