面向电商家居行业3D室内场景合成中的空间感知(2)

简介: 面向电商家居行业3D室内场景合成中的空间感知



碰撞问题约束


一个家具模型在3D室内场景中的碰撞可以被分为和墙壁或者其他模型的碰撞。我们首先来看一下如何约束不与其他模型碰撞。


碰撞检测这个词通常有两种含义,一种是物理含义,用来判断物体之间是否发生接触,从而模拟物体与物体之间的相互作用力;还有一种是数学含义,用来判断物体之间是否相交,即是否有重合的部分。家装的3D场景中是允许模型之间接触,但是不允许相交,因此本文中的碰撞指的是其数学含义。在自动驾驶运动规划领域经常用到一些碰撞检测方法,其中包括粗略碰撞检测和精细碰撞检测。粗略碰撞检测对物体使用粗糙的包围形,如外接圆形、轴对齐包围矩形(Axis Aligned Bounding Box,AABB),精细碰撞检测则使用转向包围矩形(Oriented Bounding Box,OBB)或者更加精细的凸多边形描述物体轮廓。家具家装领域的模型大多采用OBB表示模型轮廓,对于绝大部分家具都是合适的。

image.png



基于OBB,本文采用分离轴定理(Separating Axis Theorem,SAT)进行碰撞检测。

image.png

分离轴检测

简单来说,就是对于二维平面的两个凸多边形,若存在一条直线将两者分开,则这两个多边形不相交。分离轴算法就是要验证:两个多边形间是否存在这样一条轴,使得这个两个多边形在这条轴上的投影不相交,只要发现这样一条轴,即可判定两个多边形不相交,否则就是相交。这条轴就是分离轴。在二维平面中这样的轴可能有无数条,但幸运的是如果两个凸多边形不相交,两个多边形的每条边的法向量中一定有一条法向量在分离轴集合中。推广到三维空间,验证两个凸多面体是否相交也是相同的道理。
根据OBB检测两个家具是否碰撞就是很简单的事情了。如下图,3D空间中已经放置了一个家具,即其他物体,我们需要建立感知物体和其他物体之间的碰撞约束,我们只需把两个家具分别投影到自身的坐标轴,检测他们的投影区间是否重合。当且仅当,存在至少一对不重合的投影区间时,两个家具不碰撞。

PA_x(B)表示物体B在物体A的x轴上的投影区间那么物体在二维空间不碰撞可以表示为( PA_x(A)  ∩ PA_x(B) = ∅ ) OR ( PA_y(A) ∩ PA_y(B) = ∅ ) OR ( PB_x(A) ∩ PB_x(B) = ∅ ) OR ( PB_y(A) ∩ PB_y(B) = ∅ )家具家装领域的3D场景中,很少有模型围绕x轴或者y轴旋转,因此,对于三维空间中的分离轴检测,只需加上一个世界坐标系z轴投影的区间检测Pz(A)表示物体A在z轴的投影区间z轴的投影区间检测可以表示为Pz(A) ∩ Pz(B) = ∅三维空间中的碰撞检测可以表示为

(Pz(A) ∩ Pz(B) = ∅) OR ( PA_x(A)  ∩ PA_x(B) = ∅ ) OR ( PA_y(A) ∩ PA_y(B) = ∅ ) OR ( PB_x(A) ∩ PB_x(B) = ∅ ) OR ( PB_y(A) ∩ PB_y(B) = ∅ )


原始位置

投影到感知物体的两个轴

投影到其他物体的两个轴


家具和墙壁的碰撞检测也可以是等价到判断两个家具的碰撞。如下图,当判断了蓝色位置的家具模型与红色箭头所示的墙壁是否碰撞时,可以以红色箭头所示的墙壁为边,设置一个虚拟的模型数据,家具和墙壁的碰撞等价于和这个虚拟模型的碰撞。

image.png


漂浮问题约束


我们假设给定的布局信息是正确的,即不存在碰撞和漂浮问题。当放置和调整地面家具时,对齐到3D包围盒的底面中心坐标放置家具是没问题的,但是当放置天花板物体时,由于从模型库里召回的模型尺寸各异,放置到场景中很容易导致漂浮。按照现实世界里我们放置一个家具的行为,例如我们一般会把沙发贴墙放置,把吊灯的顶部对齐天花板的高度(挂上去,自然就对齐了),这就需要有一个放置和调整家具的固定点/对齐点的概念,按照物理规律和常识对齐到原始布局信息。


当放置天花板物体时,3D包围盒的参数化方式如下。虽然3D包围盒的位置是一个未知量,但是3D包围盒的顶部中心是不变的,这样的话,参数化3D包围盒的顶部会一直贴在天花板上,不会出现漂浮问题。


固定点:模型3D包围盒的顶面中心坐标 top_center

未知量:length width height

模型位置:top_center - length

模型正方向:direction

与模型正方向垂直:tangent

二维平面的四个点表示为:

top_center+ (direction*width/2, tangent*length/2)

top_center+ (-direction*width/2, tangent*length/2)

top_center+ (direction*width/2, -tangent*length/2)

top_center+ (-direction*width/2, -tangent*length/2)


  • 功能约束


一个合理的室内3D场景不仅要满足物理规律,还要符合人的使用习惯,比如要包含充足的通行区域,每个家具都需要一定的访问空间等,这里还要根据室内设计准则继续补充。


通行区域

在3D室内场景合成中,通行区域的保护也可以等价到检测两个家具的碰撞问题上。我们只需提前检测出关键的通行区域,如门、门洞等区域,见下图中的方框,并在这些区域内设置一个虚拟的模型数据,即可在空间感知约束中添加禁止与通行区域碰撞的约束。


image.png

通行区域


家具访问空间


在3D室内场景合成中,家具访问空间的保护也可以等价到检测两个家具的碰撞问题上。我们只需在场景感知中将其他物体的3D包围盒放大,即可在空间感知时保证新添加的模型不会侵占其他模型的访问空间。下图,参考布局中沙发和茶几之间间距很近,甚至产生了一些碰撞,通过设置了家具的访问空间,保证检索得到的模型放置到3D场景中后,可以给沙发和茶几留出充足的访问空间。


布局设计
3D室内场景结果1
3D室内场景结果2


  • 美学认知


整洁与秩序


参数化表达一个家具时,我们需要建立参数化家具和3D室内场景的联系,否则就会像无根之萍,无法对应到场景的具体位置。这种联系就是前文提到的固定点。以3D包围盒的底面中心或者顶面中心作为固定点去参数化模型对于不靠近墙壁的模型来说是没有问题的。但是如果在布局设计中,一个家具是靠墙的,那么根据底面中心或者顶面中心得到的参数化模型位置不变,召回得到的真实模型尺寸各异时,真实模型放置到场景中后会和墙壁存在或大或小的缝隙。对于绝大部分的设计风格来说,这些不同大小的缝隙可能打破了空间的整体连贯性,导致视觉上的混乱感。并且这些缝隙空间不能被高效利用,是一种对室内空间的浪费。


因此在参数化墙壁附近的某些贴墙家具时,将家具的中心在墙壁上的投影作为固定点(相当于对齐墙壁摆放),参数化方式如下,模型的靠墙部分不变,模型位置随着模型的尺寸变化。靠墙参数化示意图如下。

固定点:模型靠墙边的中心点back_center未知量:length width height模型位置:p: back_center +  direction*width/2模型正方向:direction与模型正方向垂直:tangent二维平面的四个点表示为:p+ (direction*width/2, tangent*length/2)p+ (-direction*width/2, tangent*length/2)p+ (direction*width/2, -tangent*length/2)p+ (-direction*width/2, -tangent*length/2)

image.png

靠墙参数化


符合室内设计的空间感知顺序


空间感知顺序可以理解为家具摆放顺序。室内设计规范并不一定有一个固定的家具摆放顺序,因为设计取决于空间功能、个人品味、设计风格等因素。但是,室内设计的基本原则和实践提示我们,家具摆放顺序遵循着某些规律,一个合理的摆放顺序可以得到一个舒适和美观的室内设计。

  1. 摆放之前首先要进行区域规划,如餐厅区、客厅区等,并确保每个区域的家具摆放满足其功能需求。不过这部分工作并不在空间感知的范畴内,而是产生布局设计时应该考虑的问题。
  2. 大型家具先行:通常大件家具如沙发、床、餐桌等应该首先摆放。因为它们通常是空间中的主要元素,其位置会影响到其他家具的摆放。
  3. 高耸家具:接着摆放高耸或占用垂直空间的家具,如书架、橱柜等,以确保它们不会挡住光线或视线。
  4. 次要家具与配件:小件家具如茶几、床头柜以及装饰件如地毯、灯具等应在大件家具后摆放,以补充和增强家居设计的整体感和平衡。
  5. 装饰性物品:如画作、植物、抱枕等最后摆放,用来增添个性化的触感和装饰空间。

目前,我们在空间感知顺序上还没有做太多的探索,但是未来可能会作为一个优化方向。


写在后面


 为Agent操作3D场景软装提供空间感知能力


当前的3D场景合成中,首先由LLM产生一套静态的布局设计。这套布局设计需要经过空间感知、模型检索等步骤,逐个“实例化”场景中的每个家具(即为布局中的每个位置选择一个真实的商品模型),但这会导致一些问题:在场景中“实例化”的家具尺寸和布局设计中的尺寸不一定完美契合。下图可以看到,在布局设计中的沙发与灯很近,先实例化沙发模型时不会考虑后面模型的位置,灯没有地方摆放,导致了布局丢失的问题。


image.png


通过空间感知,我们可以模拟软装设计师测量尺寸并放置家具的过程。再基于可通过文本、尺寸、图片等信息检索模型的检索系统高,我们可以模拟软装设计师步骤中的测量尺寸、采购和安装的全过程。这可以为LLM提供一个操作室内3D场景软装的API,基于该API,LLM的设计方案可以实时地添加、删除或者更改当前3D室内场景内的软装,并可以根据当前的场景继续下一步设计,我想这对LLM来说是一个自然的设计过程。


image.png


 展望


3D室内场景的合成是一个复杂任务,同时面向电商平台的3D室内场景合成又要求3D场景中的是真实商品模型,因此端到端生成一个电商平台的3D室内场景场景不太现实。我们可以分步骤合成一个3D室内场景大概是户型合成->硬装合成->软装合成,目前我们大部分工作基于一个有硬装的空场景,在其中布局设计、软装搭配,未来可能会涉及到其他部分,向从零开始合成一个3D室内场景努力。希望通过持续努力,逐渐成长。


参考文献


  1. Yang M, Chen BQ. A survey of indoor scene generation algorithms [J]. Journal of Integration Technology, 2022, 11(1): 40-51.
  2. Weiss, Tomer, et al. "Fast and scalable position-based layout synthesis." IEEE Transactions on Visualization and Computer Graphics 25.12 (2018): 3231-3243.
  3. Zhang, Yunfan, et al. "Style-Consistent 3D Indoor Scene Synthesis with Decoupled Objects." arXiv preprint arXiv:2401.13203 (2024).
  4. Patil, Akshay Gadi, et al. "Advances in Data‐Driven Analysis and Synthesis of 3D Indoor Scenes." Computer Graphics Forum. Vol. 43. No. 1. 2024.
  5. https://zhuanlan.zhihu.com/p/508757803
相关文章
|
7月前
|
人工智能 自然语言处理 搜索推荐
基于参考物体的AIGC图像生成技术在家居导购领域的应用
基于参考物体的AIGC图像生成技术在家居导购领域的应用
227 3
|
7月前
|
传感器 智能硬件
未来家居:智能窗帘的设计与实现
【5月更文挑战第31天】本文将探讨智能窗帘的设计和实现,包括其工作原理、主要组件以及如何通过智能家居系统进行控制。我们将详细介绍智能窗帘的硬件和软件设计,以及如何将其集成到现有的智能家居系统中。
|
5月前
|
机器学习/深度学习 自然语言处理 算法
面向电商家居行业3D室内场景合成中的空间感知(1)
面向电商家居行业3D室内场景合成中的空间感知
137 9
|
运维 监控 自动驾驶
基于数字孪生的智能杆
基于数字孪生的智能杆
89 0
|
算法 自动驾驶 安全
高精地图、车路协同与自动驾驶是什么关系?
如何看待当前的纯视觉的、不依赖于高精度地图的自动驾驶解决方案?
375 0
高精地图、车路协同与自动驾驶是什么关系?
|
搜索推荐 物联网 人机交互
海尔智能互联展示投影人机交互技术,未来或成智慧家庭中心
海尔智能互联展示投影人机交互技术,未来或成智慧家庭中心
299 0
海尔智能互联展示投影人机交互技术,未来或成智慧家庭中心
|
传感器 算法 物联网
双霍尔精准计数,智能蓝牙跳绳器为智能健身再添新体验
应用速递栏目:应用速递是面向IoT厂商推荐芯片开放社区(OCC)上的典型应用案例,便于IoT厂商精准获取方案,快速实现产品落地。
405 0
双霍尔精准计数,智能蓝牙跳绳器为智能健身再添新体验
|
人工智能 达摩院 算法
阿里AI上岗双11服装车间,能识别头发丝直径十分之一的瑕疵
达摩院算法专家楚之表示,“AI已经成为传统行业降本增效的重要方法,过去几年,阿里针对不同场景研发了适用于各行各业的AI算法,目前已经广泛应用工业、交通、医疗、教育等领域。”
10013 4
阿里AI上岗双11服装车间,能识别头发丝直径十分之一的瑕疵