生成式 AI 的浪潮赋予了机器无尽的创造力,我们已亲眼见证它在文字与图像世界 “点石成金” 的魔力。然而,当这股浪潮涌向更复杂的三维空间,挑战也随之升级。过去的 3D 生成 AI 如孩童堆积木,成果粗糙模糊;如今,它渴望成长为一名 “数字建筑师”,去建造结构精巧、可被编辑改造的虚拟世界。
为了实现这一目标,一种流行的方法是让 AI 学习定义 “内外” 的边界来隐式地塑造物体。这种方法虽能生成外形平滑的物体,但其成果好比一座 “固化” 的雕塑 —— 一个不可分割的静态外壳,很难像玩乐高一样拆解重组。对于艺术家而言,这座雕塑的表面覆盖着一张杂乱的 “渔网”(无序三角网格),而非规整的 “布料”,任何微调都如同对整片网进行重新编织,极其困难,难以融入专业的创作流程。
受到以上启发,我们不再满足于生成杂乱的网格,而是渴望一种更原生、更结构化、更符合设计师与工程师直觉的表征方式 —— 代码。如何让模型像程序员一样,用逻辑和参数构建三维世界?如何让生成的物体不仅形似,更能被理解、被编辑、被二次创作?带着这些思考,我们团队推出了MeshCoder。它是一条探索 3D 程序化生成的新路径,其核心思想是训练一个强大的多模态模型,直接将三维输入(如点云)翻译成结构化、可执行的 Blender Python 代码。
我们工作的亮点在于,MeshCoder 生成的不是一个 “死” 的模型,而是一套 “活” 的程序。它具有以下鲜明优势:
1.分零部件生成:如下视频所示,MeshCoder 能理解物体的语义结构,将椅子、桌子等自动分解为椅背、椅腿、桌面等独立部件进行代码生成,逻辑清晰。
2.拓扑良好的四边面:如下图所示,MeshCoder 生成的代码直接构建出高质量的四边面(Quad Mesh)网格,这对于后续的编辑,展 UV 上材质至关重要。
下图是使用传统常用的 Marching Cube 算法从分界面中提取网格的结果,可以看到得到的是杂乱无序的三角面网格。与这些网格相比,上图中 MeshCoder 得到的 Mesh 具有规整的四边面。
3.易于理解和编辑:如下图所示,MeshCoder 生成的 Python 代码具备高可读性,用户可以通过修改参数(如尺寸、位置)或函数调用,轻松实现对三维模型的编辑。
4.可控的网格密度:如下图所示,通过调整代码中的分辨率等参数,用户可以自由控制生成网格的精细程度,在细节与性能之间找到平衡。
我们相信,这只是探索的开始。我们选择将 MeshCoder 开源,衷心期待它能引发更多有价值的讨论,并希望能与社区的研究者一起,继续推动三维生成技术的演进。
我们是如何做到的?
MeshCoder 的实现路径清晰,其核心是一个强大的代码库与一套创新的数据构建流程。
第一步:构建零部件数据集并训练零件代码推理模型
万丈高楼平地起,我们首先需要让模型具备理解基础几何的能力。
第二步:构建物体数据集并训练最终物体代码推理模型
在初代模型掌握了 “识部件、懂代码” 的技能后,我们利用它以及规则来 “教会” 最终模型如何理解和搭建完整的复杂物体。
下图是形状编码器 (Shape Tokenizer) 的网络结构。
强大的重建、编辑与理解能力
MeshCoder 的真正实力,不仅在于创新的理念,更在于坚实的实验数据。我们在多个维度上对其进行了严格的测试,结果证明了其卓越的性能。
一、高保真重建:精度大幅领先
我们将 MeshCoder 与当前的两种 Shape-to-Code 方法(Shape2Prog 和 PLAD)在Infinigen Indoor数据集上进行了比较。该数据集涵盖了从椅子、台灯到浴缸、马桶等 41 个常见室内物体类别,极具挑战性。














