掌桥专利:专业的专利平台
掌桥专利
首页

一种可编程定义的室内场景生成方法、装置、系统和存储介质

文献发布时间:2023-06-19 11:39:06


一种可编程定义的室内场景生成方法、装置、系统和存储介质

技术领域

本发明属于家装设计领域,具体涉及一种可编程定义的室内场景生成方法、装置、系统和存储介质。

背景技术

自动化室内场景生成是一个为房间生成合适室内场景布局的过程。随着虚拟现实技术的发展,以及对开放世界游戏的需求的不断增长,激发了大量自动化室内场景合成方面的工作,在近年来一直是一个活跃的研究领域。对于程序化场景生成问题,由于三维场景的修改和绘制的复杂性,对于三维场景进行修改从而对数据进行增强往往需要专业的建模人员以及动画设计人员的辅助,如何快速生成满足用户需求且具有多样性和差异性的场景就成为了一个待解决的问题。

近年来各种不同方法已经被提出。其中很大一部分的工作都集中在以自动化或者半自动化的方式布置家具。这些方法可以分为三种不同的类别:(1)数据驱动方法,(2)基于优化方法,以及(3)概率规划生成方法。其中,数据驱动的方法则需要使用大量数据来学习场景布局,如公开号为CN109360232A的专利申请公开了一种基于条件生成对抗网络的室内场景布局估计方法和装置。再如公开号为CN104050722A的专利申请公开了一种图像内容驱动的室内三维场景布局与颜色迁移生成方法。这种方法需要大量的数据,数据的质量会影响布局结果,且数据成本也高。同时难以对生成布局的过程添加人工约束。基于优化的方法缺点在于算法所使用优化方法的计算代价比较高,导致生成室内场景布局的速度较慢,而且并不能保证收敛到一个比较好的室内场景布局上;而使用概率规划生成方法常常用于生成符合特定分布的场景布局,在大规模场景下对于不同类型的房间分布手动设置一组分布往往是不现实的。

在这样的背景下,能满足用户灵活控制室内场景生成的过程,且能快速自动化地生成大批量满足用户需求且具有多样性和差异性的室内场景已成为一个实际的需求。

发明内容

鉴于上述,本发明的目的是提供一种面向大规模虚拟室内场景数据增强的可编程定义的室内场景生成方法、装置、系统和存储介质,用户可以通过DSL(Domain SpecificLanguage,领域专用语言)控制场景筛选条件和随机采样的对象。系统根据用户编写的DSL对场景进行并行处理,在场景数据库中筛选出符合其需要的室内场景,再通过为家具位置构建成本函数,并采用贪心最小化对成本函数求解来优化家具位置,对场景中的家具布局进行随机采样从而达到大规模场景批量生成的目的。

为实现上述发明目的,本发明提供以下技术方案:

第一方面,一种可编程批量室内场景生成方法,包括以下步骤:

通过DSL自定义场景筛选条件、随机采样软装产品对象、软装产品状态;

依据场景筛选条件生成筛选指令后通知执行筛选指令从数据库中筛选多个场景;

依据随机采样软装产品对象生成采样指令后通过执行采样指令并行在多个场景内设计软装产品布局;

依据软装产品状态生成调整指令后通过执行调整指令并行调整场景内软装产品的状态;

采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值,并通过贪心最小化求解成本函数以优化软装产品位置,直到所有软装产品位置优化结束获取最优软装产品布局。进而生成室内场景,从而达到场景批量生成的目的。

第二方面,一种可编程定义的室内场景生成装置,包括:

自定义模块,用于通过DSL自定义场景筛选条件、随机采样软装产品对象、软装产品状态;

指令生成模块,用于依据场景筛选条件生成筛选指令,依据随机采样软装产品对象生成采样指令,依据软装产品状态生成调整指令后;

场景筛选和布局模块,用于通知执行筛选指令从数据库中筛选多个场景,通过执行采样指令并行在多个场景内设计软装产品布局,通过执行调整指令并行调整场景内软装产品的状态;

优化模块,用于采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值,并通过贪心最小化求解成本函数以优化软装产品位置,直到所有软装产品位置优化结束获取最优软装产品布局,进而生成室内场景。

第三方面,一种可编程定义的室内场景生成系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上执行的计算机程序,所述处理器执行所述计算机程序时实现上述可编程定义的室内场景生成方法。

第四方面,一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理执行时实现上述可编程定义的室内场景生成方法的步骤。

与现有技术相比,本发明具有的有益效果为:

本发明实施例提供的一种可编程批量室内场景生成方法、装置、系统和存储介质,用户可以通过DSL控制场景筛选条件和随机采样的对象。系统根据用户编写的DSL对场景进行并行处理,在场景数据库中筛选出符合其需要的室内场景,再通过为家具位置构建成本函数,并采用贪心最小化对成本函数求解来优化家具位置,对场景中的家具布局进行随机采样从而达到场景编辑的目的,大大提升了室内场景布局的多样性和差异性,同时贪心最小化算法求解优化过程中计算代价低,速度快。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。

图1是本发明实施例提供的可编程批量室内场景生成方法的流程图;

图2是本发明实施例提供的可编程批量室内场景生成装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。

本发明实施例提供了一种面向大规模虚拟室内场景数据增强的可编程定义的室内场景生成方法。用户可以通过DSL控制场景筛选条件和随机采样的对象。系统根据用户编写的DSL对场景进行并行处理,在场景数据库中筛选出符合其需要的室内场景,再通过为家具位置构建成本函数,并采用贪心最小化对成本函数求解来优化家具位置,对场景中的家具布局进行随机采样从而达到场景编辑的目的。图1是本发明实施例提供的可编程批量室内场景生成的流程图。如图1所示,实施例提供的可编程批量室内场景生成,包括以下步骤:

步骤1,通过DSL自定义场景筛选条件、随机采样软装产品对象、软装产品状态,并生成筛选指令、采样指令以及调整指令。

对于场景筛选来说,常见的需求是:有的研究人员可能需要筛选符合大小以及类型要求的场景,例如:客厅,餐厅等。因此在本发明中,用户可以用过编写基于JavaScript的DSL来描述场景筛选条件,从而控制筛选的结果。其中,场景筛选条件包括房间类型和大小等。具体来说,实施例中在MongoDB数据库后端实现了一个服务调用,利用数据库的$where方法接口来让用户以JavaScript查询代码作为输入对场景进行筛选,获得的场景会以场景描述文件的形式返回并呈现给用户以便进一步编辑。

软装产品对象是指需要放置到场景内如沙发等各种软装产品,软装产品状态是指软装产品的位置和姿态等。

实施例中,为了降低使用门槛,提高开发效率,设计的领域专用语言选择建立在Python语言的技术栈上,通过使用了Python的赋值、算数、循环以及函数等的基本机制,并结合实体组件系统(Entity-Component System,简称ECS)架构实现场景筛选条件、随机采样软装产品对象、软装产品状态的自定义和场景内软装产品布局生成过程。

具体来说,实施例创建了一个基类SceneProcessor类,用户可以通过继承该类,并通过实现其中的Process方法来控制室内场景编辑的过程。系统将不同的属性组合抽象成不同类型的组件,包括了:位置组件(Transform Component)、模型组件(ModelComponent)、材质组件(Material Component)、语义组件(Semantic Component)、家具组件(Furniture Component)、建筑组件(Architecture Component)、光源组件(LightComponent)、摄像机组件(Camera Component)。具体来说,用户可以通过在DSL中实现Processor类的派生类的方式来实现对场景随机采样目标和过程的控制。

在实施例中,将用户自定义编写的DSL注册到系统中并对每一个场景并行处理的步骤包括:

首先,系统读取用户自定义的领域专用语言代码,并将用户编写的DSL代码文件作为一个本地模块(Module)导入,Python解释器会查找导入的DSL文件是否存在,并将该文件作为一个自定义的模块引入到当前的工作空间中,并可以在系统中调用用户自定义的代码;

然后,根据类的继承关系检索所有SceneProcessor(实体处理器)类的子类来获得用户的控制室内场景生成过程的代码,将所有SceneProcessor类的子类实例化为对象注册到系统(World)中,用户的其他辅助类由于继承关系的不同虽然可以在系统中访问,但是不会被作为自定义场景生成代码的注册到系统中干扰执行。

由于将所有场景的处理统一以DSL的形式定义,因此对于每一个筛选出来的场景都会创建一个进程进行处理,来实现对场景的并行处理,并到达批量处理场景的目的。系统会根据用户编写的DSL对场景中的物体进行增删,并由是否调用了sample_room方法来决定是否对场景进行重新采样,对于需要进行编辑的场景,系统会对场景使用场景贪心最小化生成算法进行重采样从而达到自动化的场景批量生成的目的。

在定义场景筛选条件、随机采样软装产品对象、软装产品状态时,还可以定义对应的每个筛选指令、采样指令、调整指令的优先级,依据优先级执行相应指令,实现场景筛选、软装产品布局以及软装产品状态调整。

当不定义执行指令的优先级时,按照指令的注册顺序执行指令,当定义优先级时,则按照优先级顺序执行指令,定义的执行指令的优先级由0~1000变换,其中,0表示最低,1000表示最高。

步骤2,通过执行筛选指令从数据库中筛选多个场景。

筛选的场景可以是室内空场景和包含有部分软装产品的室内场景。对于室内场景来说,除了墙体之前,还包括如嵌入到墙体里面的柜子的硬装产品,和可移动设置的沙发的软装产品。由于硬装产品已经固定了,所以在本发明中,只对软装产品生成室内空场景中,即室内空场景包含固定有硬装产品的室内场景。因此,需要对室内场景中的物体分类,分为软装产品和硬装产品,只对软装产品进行布局。

步骤3,通过执行采样指令并行在多个场景内添加软装产品以设计软装产品布局。

在室内空场景中初始化软装产品时,将软装产品的三维模型简化为包围盒进行位置初始化,这样将三维问题降为二维问题,降低计算量,缩短计算时间。

在一种实施方式中,在多个场景内设计软装产品布局时,依据软装产品的投影面积,初始化所有软装产品的重要度并排序后,依据重要度排序结果依次将软装产品添加到室内场景。即将软装产品加入一个数组将软装产品根据面积的大小进行排序,以确定采样的优先级,依据优先级添加软装产品,这样可以软装产品初始化时速度更快。在定义的所有软装产品都添加到场景内时则停止添加,否则按照采样指令顺序添加软装产品。

步骤4,通过执行调整指令并行调整场景内软装产品的状态。

实施例中,采用以下几种方式中的至少一种对软装产品进行状态调整:

方式一:改变软装产品的位置;

方式二:改变软装产品的朝向;

方式三:移动软装产品以使与其最近的软装产品对齐;

方式四:移动软装产品以使与其最近的墙体对齐;

方式五:移动软装产品至与其最近的软装产品处;

方式六:移动软装产品至与其最近的墙体处。

用户通过DSL自定义软装产品的位置和摆放角度等,在对调整时,按照定义的位置和摆放角度调整软装产品。为了位置扰动时更加顺畅,在软装产品进行位置扰动前,预先设定每种扰动方式的扰动概率;位置扰动时,依据扰动概率选择扰动方式对软装产品进行位置扰动。实施例中,根据经验设置每种扰动方式被执行的概率为0.2,其中移动软装产品以使与其最近的墙体对齐的扰动操作的执行概率则根据不同类别的软装产品靠墙的概率p

步骤5,采用成本函数计算软装产品当前位置的总成本值。

一个好成本函数能够比较好的反映出专业设计师在实践中的设计准则,因此,本发明中,采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值,即成本函数计算包含如下四方面因素的成本函数值:(a)空隙因素(b)群体关系因素(c)分布均匀因素(d)对齐因素,并对4方面成本函数值加权求和,权重均为1.0。

实施例中,采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值时,采用公式(1)计算软装产品当前位置相对于空隙因素的成本值g

其中,b

采用公式(2)计算软装产品当前位置相对于群体关系因素的成本值g

其中,

采用公式(3)和公式(4)计算软装产品当前位置相对于分布均匀因素的成本值g

其中,d表示中央位置

采用公式(5)~公式(7)计算软装产品当前位置相对于齐关系因素的成本值g

其中,

成本值g

步骤6,通过贪心最小化求解成本函数以优化软装产品位置,直到所有软装产品位置优化结束获取最优软装产品布局。

实施例中,通过贪心最小化求解成本函数以优化软装产品位置时,计算软装产品当前位置的成本值,当成本值低于原位置对应的成本值时则将布局更新为新布局,否则保持布局不变。重复过程,直到达到设定的迭代次数阈值,位置优化结束获得最优软装产品布局。本实施例中,迭代阈值设置为20次。

步骤7,依据最优软装产品布局生成室内场景。

当优化结束后,即获得最优软装产品布局,依据该软装产品布局,将对应软装产品添加到场景中,以确定最终位置生成室内场景。

实施例提供的可编程批量室内场景生成方法,系统根据用户编写的DSL,在场景数据库中筛选出符合其需要的室内场景并行处理,根据美学、设计、人体工程学对应的成本函数来计算成本函数,从而选择较优的软装产品布局,最终得到具有差异性和多样性的室内场景布局,从而达到场景生成的目的。通过使用贪心最小化求解优化问题,减少计算所需要的时间,提升用户体验。

图2是本发明实施例提供的可编程定义的室内场景生成装置的结构示意图,如图2所示,实施例提供的室内场景生成装置200,包括:

自定义模块210,用于通过DSL自定义场景筛选条件、随机采样软装产品对象、软装产品状态;

指令生成模块220,用于依据场景筛选条件生成筛选指令,依据随机采样软装产品对象生成采样指令,依据软装产品状态生成调整指令;

场景筛选和布局模块230,用于通知执行筛选指令从数据库中筛选多个场景,通过执行采样指令并行在多个场景内设计软装产品布局,通过执行调整指令并行调整场景内软装产品的状态;

优化模块240,用于采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值,并通过贪心最小化求解成本函数以优化软装产品位置,直到所有软装产品位置优化结束获取最优软装产品布局,进而生成室内场景。

优化模块240中,采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值,即成本函数计算包含如下四方面因素的成本函数值:(a)空隙因素(b)群体关系因素(c)分布均匀因素(d)对齐因素,并对4方面成本函数值加权求和,权重均为1.0。

实施例中,采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值时,采用公式(1)计算软装产品当前位置相对于空隙因素的成本值g

其中,b

采用公式(2)计算软装产品当前位置相对于群体关系因素的成本值g

其中,

采用公式(3)和公式(4)计算软装产品当前位置相对于分布均匀因素的成本值g

其中,d表示中央位置

采用公式(5)~公式(7)计算软装产品当前位置相对于齐关系因素的成本值g

其中,

成本值g

需要说明的是,实施例提供的可编程定义的室内场景生成装置在进行自动生成时,应以上述各功能模块的划分进行举例说明,可以根据需要将上述功能分配由不同的功能模块完成,即在终端或服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,实施例提供的室内场景生成装置与室内场景生成方法实施例属于同一构思,其具体实现过程详见室内场景生成方法实施例,这里不再赘述。

实施例还提供了一种可编程定义的室内场景生成系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上执行的计算机程序,所述处理器执行所述计算机程序时实现上述可编程定义的室内场景生成方法的步骤,即实现如下步骤:

步骤1,从数据库中筛选得到用户需要的场景;

步骤2,注册用户自定义的场景修改相关的DSL到场景处理模块中,并对每一个场景并行处理;

步骤3,获取室内空场景和预设在室内空场景的所有软装产品;

步骤4,将软装产品初始添加到室内空场景;

步骤5,对添加到室内空场景的软装产品进行位置扰动;

步骤6,采用成本函数计算软装产品当前位置相对于空隙因素、群体关系因素、分布均匀因素以及对齐关系因素的成本值,并通过贪心最小化求解成本函数以优化软装产品位置,直到所有软装产品位置优化结束获取最优软装产品布局;

步骤7,依据最优软装产品布局生成室内场景。

实施例还提供了一种计算机可读存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由终端中的处理器执行以完成上述可编程定义的室内场景生成方法的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

相关技术
  • 一种可编程定义的室内场景生成方法、装置、系统和存储介质
  • 一种可自定义的室内三维场景编辑方法、装置、系统和存储介质
技术分类

06120113006483