AI 如何在 3D 房间里摆放家具

比起生成周围的几何结构,把一件家具摆进 3D 房间听起来像是简单的部分。其实不然。 位置只是最不重要的一环——真正难的问题是功能、朝向与碰撞, 只要其中任何一个出错,一个原本正确的房间就会明显显得是摆拍出来的, 而不是真的有人住在里面。
从平面图读取房间功能
家具摆放的第一步,是知道一个房间「是什么」,而不只是它的边界。 一张解析后的平面图带有分区标签——卧室、浴室、衣柜、阳台—— 每种分区类型都对应一套预期的家具组合,其比例要匹配房间的实际尺寸。 一个卧室分区会得到一张与其面积相称的床,而不是一个通用默认值; 一个浴室分区会得到卫浴设施,而不是座椅。这一步一旦出错, 后面的一切都会跟着受影响——即使精度再高,摆放了错的家具组合仍然是错的。
在此之前,比例必须先对,才能进行任何其他事情。一张标准双人床和一张加大双人床 所占的面积有明显区别,而房间的实际尺寸决定了应该选哪一种—— 或者说,一张床能不能和预期家具组合的其余部分一起放得下。 从平面图读取功能,不只是选一个家具类别,而是为正在搭建的这个具体房间, 选出该类别对应的正确尺寸版本。
占地面积与净空约束
每一件家具都占据一块占地面积——地面上的一块 2D 区域—— 每一次摆放,除了不能与另一个物体的占地面积重叠之外, 还必须遵守通道净空与门的开合弧线。一张沙发单从面积上看摆放正确, 却挡住了浴室门的开合弧线,即便静止状态下没有任何物理重叠, 这仍然是一次摆放失败。随着房间逐渐被填满,这些约束会不断叠加: 早期的摆放还有较多空地可用,而后面的摆放就要在剩下的空间里, 在不违反已摆放物件周边净空的前提下找到位置。
净空也不是一个固定数字——一条通道所需的宽度, 和一扇衣柜门前所需的空间是不同的,床头柜可以比五斗柜更靠近床, 但五斗柜就不能那么靠近门的开合范围。把每一处间隙都当成同一个最小距离处理, 要么过度保守、浪费可用地面面积,要么产出一个在静态渲染里看起来还行、 但在真正建成的房间里根本走不通的布局。
为什么朝向才是难点
位置和占地面积能让一个房间的布局大致正确。而朝向,才是让它读起来正确的关键—— 而且它比听起来要难得多。一张床相对于门被推到错的那面墙, 或者一件柜类家具朝向角落而不是朝向房间开阔处,即使房间其余部分摆放得完美无缺, 这种错误也会立刻打破真实感。解决办法不是一条全局规则, 而是一套逐个资产的朝向分类体系,每种家具类型都带有自己的朝向逻辑—— 床头要靠实墙,书桌要面向可用地面空间,衣柜门前需要留出开合净空。 单靠位置,从来就不可能编码这些信息。
在空间网格上做碰撞检查
每一个候选摆放,在被接受之前,都会对照一个追踪已占用状态的空间网格进行检查—— 占地面积、门的开合弧线、通道净空。任何一次会与现有家具冲突、 挡住门口,或者侵占所需通道宽度的摆放都会被拒绝并重新尝试, 逐个房间进行,而不是指望单一一轮摆放就能一次把每件家具都放对。
这也正是让家具摆放能够与之后的编辑相互兼容的原因。当一次对话式编辑 要求移动某件家具时,验证原始摆放的同一套碰撞检查,也会用来验证新的摆放—— 网格不需要为「编辑」和「初次摆放」分别设一套规则,因为两者都只是 针对同一片已占用空间进行检查的摆放请求而已。

为什么真实目录胜过占位方块
通用的占位几何体——一个大致按沙发尺寸做的灰色方块——足以在抽象层面 证明一个布局是可行的,但它完全无法告诉你真实家具放不放得下、 看起来对不对,而且它没法被订购。一个真实、比例精确的目录能弥合这道差距: 放进场景里的东西,尺寸上与真实产品完全一致,所以一个在可视化结果里 看起来正确的布局,也会是一个当有人真正要为这个房间置办家具时依然行得通的布局。 这个区别恰恰在可视化结果成为采购决策依据的时候最为关键—— 而对酒店或零售项目的实际建设来说,情况通常正是如此。一个基于占位方块 签字确认的布局,仍然可能在真实家具运到现场之后出问题; 而一个基于比例精确目录家具签字确认的布局,把这种风险压得低得多, 因为被批准的东西,就是最终被订购的东西。
立即开始
想了解家具摆放在整体搭建流程中处于什么位置,可以参考 如何将 2D 平面图转化为 3D 房间。 想了解摆放目录家具与用 AI 生成全新家具之间的区别,可以参考 AI 3D 生成模型:究竟是什么在生成 3D 房间。 而想了解同一套摆放逻辑如何应用于一套完全不同的约束条件,可以参考 AI 平面图可视化如何加速零售货架规划的 5 种方式。