用 AI 搭建 3D 家具目录:从配方到资产

大部分「AI 生成家具」指的是一个模型直接产出一个网格——同时继承了不透明、
不可编辑几何体所带来的一切局限。Flur 的 /catalog/create 走的是一条不同的路:
模型负责描述这件家具,由一套确定性引擎负责构建它。
从照片到 AssetRecipe
流程从一张家具照片开始。一个视觉语言模型读取这张照片, 写出一份结构化的 AssetRecipe——一份涵盖尺寸、比例、材质选择与形态的描述, 而不是像素,也不是网格。这个模型的全部工作就是描述: 把一张照片转化成一份足够精确的规格说明,让另一个环节可以据此正确构建出来。
这份工作比听起来要窄,而这种「窄」是刻意的。模型并不是被要求 凭一段提示词去想象一件说得过去的家具长什么样——它是被要求 足够精确地描述一件具体、真实存在的物品,让一个独立的确定性步骤 可以把它重现出来。把模型的角色限制在「描述」上, 正是让输出结果始终与真实事物绑定、而不是一个生成式猜测的关键。
从配方到资产
一套确定性的 Three.js 流程接收这份配方,据此构建出实际的网格—— 按照配方的尺寸与比例构建几何结构,按照配方的材质选择应用材质。 这一步没有任何东西是生成式或概率性的;同一份配方每次都会构建出同一件资产, 这正是让输出结果可预测、可检查,而不是一个你要么接受、要么重新生成 然后寄望结果不同的一次性结果的原因。
这种确定性也让调试成为可能,这是生成式方式做不到的。 如果一件资产出来不对,配方就摆在那里可供检查——一个错误的尺寸 或者一个标错的材质是可见、可以直接修正的,而不是一个黑箱输出里 一个不透明的属性,连一个可以指出问题所在的中间步骤都没有。
为什么这能让资产保持可编辑、比例精确、可订购
一个直接生成的网格是一整块不透明的东西——里面没有「腿」「座面」「坐垫」 之类的东西可供操作,也没有任何可靠的尺寸可以查询。一件基于配方构建的资产, 从构建方式上就正好相反:构建它所用的尺寸事后依然附着在它身上, 所以问一句「这个有多宽」能得到一个真实答案,而不是一个猜测; 修改一种材质或者一个比例,意味着编辑配方并重新构建, 而不是手动重做一个已经完工的表面。
正是同样的这种结构,让一件资产做到比例精确、可订购, 而不只是「大致像家具」。因为配方指定的是真实尺寸, 而不是一个生成模型对「家具通常长什么样」的最佳猜测, 出现在场景里的东西在尺寸上是可信的——而这一点, 在一次可视化结果成为真正采购这件家具依据的那一刻,直接变得重要。

朝向/旋转分类体系
正确的尺寸和正确的位置本身依然不够——一件资产还必须朝向正确, 才能在房间里读起来是对的。床头板应该靠着一面实墙,而不是悬在房间中央; 书桌应该面向可用的地面空间,而不是面向角落;衣柜门前需要留出净空, 这意味着它的朝向必须考虑到究竟是哪一侧真正会打开。这些都不是 一条能够普遍适用的单一规则——而是一套按类别划分的分类体系, 每种家具类型都带有自己的朝向逻辑,与它在那个位置的实际使用方式绑定。
这也是基于配方的构建方式第二次发挥价值的地方。因为配方描述的是 这个物体是什么——一张床、一张书桌、一个衣柜——而不是一个 不区分类别的网格,这个类别就可以自动驱动一条朝向规则。 一个没有附带类别信息的生成网格,根本没有任何东西可以让朝向规则挂靠—— 这套分类体系不是额外附加在配方方式之上的一个步骤, 而是配方在几何结构存在之前,就已经知道自己在构建什么类型物体的直接结果。
这和其他 AI 3D 生成方式有什么不同
文本转 3D 和图像转 3D 的网格生成模型,一次生成过程就直接输出几何结构, 中间没有任何结构化描述——速度快,但结果事后是不透明的。 辐射场重建捕捉的是一个已存在的真实场景的观感, 解决的是一个完全不同的问题:观看已经存在的东西,而不是创造 一个必须可编辑、可摆放的新东西。这里用到的基于配方的方式, 和这两者都不同:单件产出比一次性网格生成慢,因为构建配方和 执行构建是两个分开的步骤,但每件资产在构建完成之后很长一段时间里, 依然保持可检查、可编辑,朝向也保持正确——而这正是一件家具 真正要落进一个真实房间、经受住一次编辑、并被真正订购出来时, 而不只是在单张渲染图里看起来令人信服时,真正重要的那个特性。
立即开始
想了解这种基于配方的方式与当下其他 AI 3D 生成技术相比如何,可以参考 AI 3D 生成模型:究竟是什么在生成 3D 房间。 想了解朝向分类体系在一件资产进入场景之后,如何与更广泛的摆放逻辑衔接,可以参考 AI 如何在 3D 房间里摆放家具。 而想了解目录家具在一次完整房间搭建中处于什么位置,可以参考 3D 模型搭建流程完整解析。