当前位置:   article > 正文

苦于实现3D空间自动布局的同学,请参考:3D室内空间布局自动化算法分析(含源码)_空间排布算法

空间排布算法

如何实现3D物品自动摆放,构建一个宜居的家居空间,这篇文章将告诉你答案!文末给出相关资料~

一、生成步骤

分两步生成给定房间的家具布置:

第一步:根据美学和功能规则,优化房间中家具对象的选择和布置。此过程通过【贪婪成本最小化算法】快速探索家具布局的无限跨维空间

根据室内设计规则形成的成本函数优化全局家具布局和对象选择。在此优化过程中,家具布置会因特定动作而随机改变,并且只有当新配置的成本低于原始室内设计的成本时,才接受新配置。

第二步:【程序方法】以随机方式局部应用以生成重要的场景细节

最终的设计通过较小的物体进行局部增强,以生成重要的场景细节。为此,我们使用一套程序,每个程序都针对特定的局部布置,例如桌子上的盘子、开口处的窗户等。

最后,通过材料优化实现统一的设计和和谐的色彩分布。

二、室内布局自动化

自动室内设计方法结合了优化和程序方法,为给定的虚拟房间生成宜居的室内设计。首先,大型家具对象的最优布局是通过贪婪成本优化算法生成的。在第二步中,使用程序方法来局部布置小物体(即房间装饰)。

贪婪成本优化和程序装饰的好处是我们的方法实现了全自动室内设计的交互速度。

1.空间组件布置优化

此过程使用贪婪成本最小化算法,在优化过程中用数据库中的家具对象填充虚拟房间。此优化的主要目标是为给定房间找到成本函数最小的家具布置。

成本函数的最小化工作原理如下:

  • 首先,使用给定房间的适当对象随机生成家具布局。

  • 然后,计算该布局的成本函数。

  • 接下来,家具布局将通过一组移动(突变)进行更改。

  • 最后,如果新配置的成本低于之前的配置,则可以接受。

  • 通过迭代执行对成本函数的评估和新设计的生成,以达到最佳的家具布局。

1.1 类别组件属性定义

为了更好的应用算法执行如上过程,我们对家具定义成对象或组件,算法需要有关用于自动布局的组件的属性和关系的信息。为了简化向系统中添加新组件的过程,我们使用组件类别的概念并按类别存储所需的属性。然后,每个组件只需要表明它属于哪个类别,这些类别对应于组件的类型,例如“衣柜”或“桌子”。

来自一类的所有组件共享用于计算成本函数的相同属性。这些属性对应于专业设计实践中使用的测量和关系。我们的方法中针对每个类别的组件使用以下属性:

组件

属性类型

属性

说明

建议参数

举例

类型

常量

间隙约束

前、后、左、右。间隙约束指定组件周围的舒适使用所需的空白空间。

  

靠墙站立的概率

指定了一个物体站在墙附近的重要性

[0,1]

 

可能的父母

包含组件类别列表,这些组件类别可能是当前组件的父对组件。此外,使用到父组件的最小和最大距离,并指定朝向父组件的方向(正面或侧面)。

objlist

 

有父母的概率

表示组件与其他组件处于组关系中的重要性

[0,1]

 

房间重要性

说明组件对于特定空间的重要性。

[0,1]

卧室中必须有一张床,因此该房间的重要性为 1.0。

所需计数

每个类别都包含特定空间中该类别的最小要求和最大允许数量

spacetype - [min, max]

起居室最多可以放置一台电视机。

变量

位置

空间坐标

  

形状

可以是3D包围盒

  

朝向

地平面中的 2D 矢量

  

1.2 空间属性定义(特殊组件)

空间

属性

说明

建议参数

举例

类型

位置

世界坐标

  

形状

TODO:具体表示方式,调研中

  

1.3 组件布局调整策略

1. 随机改变组件的位置。

2. 随机改变组件的方向。

3. 将组件对象与最近的组件对齐。

4. 将组件与最近的墙壁对齐。

5. 将组件捕捉到最近的组件。

6. 将组件固定到最近的墙壁上。

7. 将组件与可能的父组件之一连接。

8. 向父组件添加新的子组件。

9. 将新组件添加到布局中。

10. 从布局中随机移除组件。

每一次迭代,如上策略的调整都以特定的概率下执行。在我们的实验中,使用以下经验值设置这些概率:

  • 1至5:适用于每个组件,概率为0.3
    • 6:对每个对象执行,概率为特定组件靠墙站立概率值

    • 7:具有为特定属性组件定义有父对象及对应的概率值

    • 8:父组件添加新子组件概率为0.6

    • 9:添加组件到布局概率为0.5

    • 10:从布局中随机删除的概率0.1

特别说明:动作8和9往布局中添加过程中,使用特殊启发式方法来实现子组件围绕父组件的对齐(例如:桌子周围的椅子)。此启发式将子组件定位到父中间件的相对侧,并根据其计数属性值对齐它们。且只接受不会导致组件相交的布局。

c794e52bd3394641a812a38f443f2257.png

室内设计的成本计算均使用设计指南条款的加权和,该算法迭代地优化家具布局

基于遗传算法的处理策略:

  1. 选择(Selection):
  2. 我们的遗传算法优化通过从当前群体创建新一代家具布局来推进每次迭代。为了选择能够生存到下一代的设计个体,我们使用锦标赛选择。在比赛选择中,每个存活下来的个体都通过两个步骤来确定:首先,从岛上的子种群中随机选择 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
    推荐阅读
    相关标签