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

一种可自定义的室内三维场景编辑方法、装置、系统和存储介质

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


一种可自定义的室内三维场景编辑方法、装置、系统和存储介质

技术领域

本发明属于实时绘制领域,具体涉及一种可自定义的室内三维场景编辑方法、装置、系统和存储介质。

背景技术

室内三维场景编辑是用户根据自身需要对室内三维对虚拟室内三维场景模型中的家具的模型、材质进行编辑的过程。随着机器学习以及电子游戏等领域的发展,对于各种三维场景数据的需求也在不断增长,这些需求激发了大量室内三维场景编辑方面的工作,在近年来一直是一个活跃的研究领域。

由于三维场景的修改和绘制的复杂性,对室内三维场景中的模型和材质进行编辑从而对场景数据集进行增强和修改往往需要专业的建模人员以及动画设计人员的辅助,研究人员常常会在三维场景中模型的简化、修改以及材质的编辑、替换上浪费很多不必要的精力。因此,如何对室内三维场景进行自动化地批量化编辑,并得到具有多样性和差异性的场景数据集就成为了一个亟解决的问题。

常用的三维场景编辑方法有两类:(1)通过三维场景编辑软件对模型和材质进行编辑;(2)基于推荐算法的模型和材质替换方法。

对三维场景进行编辑的一些常规方法是使用一些三维场景建模、编辑软件。近些年来,一些三维建模软件,例如:Blender,3DMax被开发出来用于对三维场景进行编辑,尽管这些三维建模软件通常被设计得十分高效,且能够快速处理具有大量三角形面片的三维场景或模型,但是这些三维建模软件往往只适用于处理单个场景,而不着重于解决大规模室内三维场景的批量化编辑,同时这些软件对用户来说学习成本很高,用户难以快速上手并简单地对场景进行编辑。

此外,随着机器学习的发展,一些通过使用推荐算法辅助编辑的方法也应运而生,常用的辅助编辑算法会通过使用K-Means等聚类方法根据需要修改的模型周围的物体推荐合适的替换模型以供用户进行选择。但是,无论选用何种方案,都需要用户针对特定的场景进行编辑,而由于交互式三维场景编辑的特性,往往需要在用户手动对每一个场景单独进行编辑,同时,这些修改方法缺少对室内三维场景理解等机器学习问题的针对性优化,难以快速生成具有多样性和差异性的室内三维场景。

在这样的背景下,能满足用户灵活控制室内三维场景的编辑过程,且能快速对大批量场景进行并行编辑满足用户需求并得到具有多样性和差异性的室内三维场景已成为一个实际的需求。

发明内容

鉴于上述,本发明的目的是提供一种可自定义的室内三维场景编辑方法、装置、系统和存储介质,通过从数据库中筛选得到用户需要的虚拟室内三维场景后,通过DSL(Domain Specific Language,领域专用语言)生成的批量修改指令对室内三维场景中模型以及材质进行批量修改和替换,为每个场景进行自动化编辑,并最终生成具有差异性和多样性的室内三维场景数据集。

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

第一方面,一种可自定义的室内三维场景编辑方法,包括以下步骤:

基于DSL自定义场景筛选条件、软装产品的模型和材质;

依据自定义的景筛选条件生成筛选指令后通过执行筛选指令从数据库中筛选多个室内三维场景;

依据软装产品的模型和材质生成替换指令后,通过执行替换指令在数据库中检索替换指令中包含的软装产品的模型和材质,并利用检索到的模型和材质进行替换,以实现每个场景中软装产品的批量化编辑,得到室内三维场景数据。

第二方面,一种可自定义的室内三维场景编辑装置,包括:

自定义模块,用于基于DSL自定义场景筛选条件、软装产品的模型和材质;

筛选模块,用于依据自定义的景筛选条件生成筛选指令后通过执行筛选指令从数据库中筛选多个室内三维场景;

模型和材质替换模块,用于依据软装产品的模型和材质生成替换指令后,通过执行替换指令在数据库中检索替换指令中包含的软装产品的模型和材质,并利用检索到的模型和材质进行替换,以实现每个场景中软装产品的批量化编辑,得到室内三维场景数据。

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

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

与现有技术相比,本发明实施例提供的技术方案具有的有益效果至少包括:

通过基于DSL自定义场景筛选条件、软装产品的模型和材质后,生产包含自定义内容的筛选指令和替换指令,通过执行替换指令对筛选得到的室内三维场景进行软装产品的快速批量替换模型和材质,以生成具有差异性和多样性的室内三维场景数据集。这样在最大程度上保证了用户操作的灵活性的基础上,能够针对场景做自适应的编辑,降低了对场景编辑的复杂度;同时能够对场景进行批量操作快速编辑大量场景;生成的结果不包含明显违反物理规则的结果,可以直接用于大多数机器学习任务的训练当中。

附图说明

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

图1是本发明实施例提供的可自定义的室内三维场景编辑方法的流程图;

图2是本发明实施例提供的可自定义的室内三维场景编辑装置的结构示意图。

具体实施方式

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

为了实现对室内三维场景的批量编辑,以生成差异性和多样性的室内三维场景数据。图1是本发明实施例提供的可自定义的室内三维场景编辑方法的流程图。如图1所示,实施例提供的可自定义的室内三维场景编辑方法包括以下步骤:

步骤1,基于DSL自定义场景筛选条件、软装产品的模型和材质,依据自定义的景筛选条件生成筛选指令,依据软装产品的模型和材质生成替换指令。

DSL(Domain Specific Language,领域专用语言)是一种描述某个领域的行业规范用语的构架。实施例中,DSL建立在Python语言的技术栈上,通过Python的赋值、算数、循环以及函数这些基本机制,并结合实体组件系统(Entity-Component System,简称ECS)架构实现场景筛选和软装产品的编辑。具体来说,通过创建了一个基类EntityProcessor类,用户可以通过继承该类,并通过实现其中的Process方法来控制室内三维场景模型、材质编辑的过程。

实施例中,采用ECS的设计模式作为系统内部组织和表示三维场景的数据结构,包含了室内三维场景中让软装产品的模型以及材质相关的具体组件,具体实体组件系统包括模型组件(Model Component)、材质组件(Material Component)、位置组件(TransformComponent)以及软装产品组件(Furniture Component)。

其中,所述模型组件包含软装产品的模型在模型数据库中的索引;所述材质组件包含材质的索引和模型的三角面片组到材质文件之间的映射关系;所述位置组件包含位置信息,包括平移、放缩、旋转等信息;所述软装产品组件保存软装产品的属性信息,包括软装产品的品类、大小、包围盒等信息。

通过实体组件系统构架并结合JavaScript的DSL为用户提供了编辑接口,用户通过该接口可以编辑自定义的场景筛选条件、软装产品的模型和材质。实施例中,对于场景筛选来说,常见的需求是:有的研究人员可能需要筛选符合大小以及类型要求的室内三维场景,例如:客厅,餐厅等。场景筛选条件包括场景类型和大小,通过自定义筛选条件来控制筛选结果。

软装产品的模型是指可以被替换的三维模型,一般是与原模型属于相同品类的三维模型,材质是指软装产品的纹理材质。实施例中,软装产品一般指设置在室内三维场景中可以被移动的家具等。

用户通过基于DSL编辑的包含场景筛选条件、软装产品的模型和材质的DSL代码注册到系统中以生成筛选指令和替换指令。具体地,DSL代码注册到系统的过程包括:

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

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

在定义场景筛选条件、软装产品的模型和材质时,还可以对应的每个筛选指令、替换指令的优先级,依据优先级执行相应指令,实现场景筛选和模型和材质的替换。当不定义执行指令的优先级时,按照指令的注册顺序执行指令,当定义优先级时,则按照优先级顺序执行指令,定义的执行指令的优先级由0~1000变换,其中,0表示最低,1000表示最高。

在本发明中,用户可以通过在DSL中实现EntityProcessor类的派生类的方式来指定需要进行编辑对象,并实现对场景中各个软装产品的模型以及材质的批量自动化修改。

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

实施例中,基于MongoDB数据库后端实现了一个服务调用,利用数据库的$where方法接口来让用户以JavaScript查询代码作为输入对场景进行筛选,满足场景筛选条件的场景数据集会以场景描述文件的形式返回给系统以便进一步编辑。

步骤3,通过执行替换指令在数据库中检索替换指令中包含的软装产品的模型和材质,并利用检索到的模型和材质进行替换,以实现每个场景中软装产品的批量化编辑,得到室内三维场景数据。

实施例中,可以通过替换指令对多个室内三维场景进行并行处理,根据DSL代码的注册顺序和优先级对场景中软装产品的模型和材质进行自动化地批量修改。由于将所有室内三维场景的处理统一以DSL的形式定义,因此对于每一个筛选出来的室内三维场景都会创建一个进程进行处理,来实现对场景的并行处理,并到达批量处理场景的目的。在每一个进程中,按照注册顺序或手动指定的优先级进行执行用户自定义的场景编辑DSL。

由于本发明的设计目标是支持大规模的室内三维场景的批量化编辑,因此为每个场景人工模型和材质是不现实的,需要一种自动化的批量编辑方法,且对于模型和材质的编辑需要是随机的,能够满足系统编辑后的室内三维场景数据集的差异性和多样性。因此,用户可以在DSL通过模型和材质采样函数调用自动化模型和材质替换功能,在每个DSL的执行过程中,系统根据定义的DSL对场景中用户指定的模型和材质进行自动化编辑。

在一种可能实施方式中,针对软装产品的材质替换,依据包含材质信息的替换指令,从材质数据库搜索到原始材质的替换材质,并将替换材质的索引以材质列表的形式返回,然后从材质列表中均匀采样替换材质后,将软装产品的材质组件中的原材质的索引替换为采样的替换材质的索引,所述替换材质包括预定义的纹理材质、或与纹理坐标无关的过程式材质(Procedural Material)。

对于材质来说,替换有复杂纹理的材质常常会导致一些观感上的问题。因此在材质替换时,选择使用无纹理材质或具有重复模式的纹理材质进行替换。具体实施时,可以基于MongoDB数据库后端实现了一个服务调用,利用数据库的$where方法接口对材质进行查询,查询同一材质的预设替换材质、无纹理材质以及具有重复模式的纹理材质,并将查询得到的材质索引以列表的形式通过JSON文件返回,当执行纹理材质替换时,对材质列表中的材质进行均匀采样,然后将之前家具的材质组件中的相关材质的索引进行替换。

在一种可能实施方式中,针对软装产品的模型替换,依据包含模型信息的替换指令,从模型数据库中搜索到原模型的替换模型,并将替换模型的索引以模型列表的形式返回后,依据对替换模型的渲染图与原模型的渲染图的相似度筛选替换模型进行替换。

实施例中,针对某个软装产品的原模型实现相同品类的模型替换,针对每个替换模型依据图像特征相似匹配后被选择来替换原模型。在一个可能的实施方式中,依据对替换模型的渲染图与原模型的渲染图的相似度筛选替换模型进行替换包括:

渲染替换模型和原模型得到对应的渲染图后,提取渲染图的多通道的特征图,依据多通道的特征图确定模型的特征向量;

依据替换模型的特征向量和原模型的特征向量之间的欧式距离作为相似度后,根据相似度从模型列表中进行模型的重要度采样,将软装产品的模型组件中的原模型的索引替换为采样的替换模型的索引。

实施例中,可以采用各类型渲染器对替换模型和原模型进行渲染,得到渲染图后,利用使用ImageNet预先训练好的神经网络模型(如VGG网络模型)提取多通道的特征图,并计算特征图的Gram矩阵作为比较相似度的特征向量,其中,特征向量的计算方式为计算两个特征图的内积,即G

实施例中,对每一个替换模型对应的特征向量进行与原模型对应的特征向量的相似度检索,从而得到模型之间的相似度,可以采用两个模型的两个特征向量之间的欧式距离作为相似度,即

当执行模型替换时,根据模型的相似度进行重要性采样,将采样的替换模型的索引替换模型组件中原模型的索引,以实现模型替换。

实施例中,在对模型组件中的模型索引进行更新的同时,对软装产品组件中的模型对应的软装产品的大小、包围盒以及品类进行更新。这样能够保证替换模型即是对软装产品的更新。

为了保证在对模型进行编辑之后室内三维场景中不出现明显违反物理的情况,还需要对场景中的模型的位置进行调整。基于此,在一个实施方式中,利用替换模型替换原模型时,基于碰撞检测对替换模型进行位置调整以防止替换模型在室内三维场景中出现违反物理的情况。

优选地,基于碰撞检测对替换模型进行位置调整包括:

将替换模型与户型墙壁进行碰撞检测,若发生碰撞时则将替换模型沿墙壁反向平移移动;

比较替换模型的包围盒和原模型的包围盒的大小,若替换模型的包围盒大于原模型的包围盒,则比较原模型的包围盒和场景中其他的软装产品的包围盒是否发生碰撞,若是则放弃此替换模型,重新采样获得替换模型进行下一轮替换;

将替换模型的包围盒底面与原模型的包围盒底面对齐。

按照步骤3的替换过程,对每一个需要进行编辑的是室内三维场景按照用户编写的DSL代码对软装产品的模型和材质进行替换之后,即得到批量编辑后的室内三维场景数据集。后续可以利用该室内三维场景数据集生成一连串的绘制图像用于机器学习任务中。

上述实施例提供的可自定义的室内三维场景编辑方法,用户可以用于从数据库中筛选得到用户需要的虚拟室内三维场景,并且通过DSL对室内三维场景中模型以及材质进行批量修改。系统会根据用户编写的DSL对场景进行并行处理,在数据库中查找同类的模型和材质进行替换,为每个场景进行自动化编辑,并最终生成具有差异性和多样性的室内三维场景数据集。该方法在最大程度上保证了用户操作的灵活性的基础上,能够针对场景做自适应的编辑,大大降低了对场景编辑的复杂度;同时能够对场景进行批量操作快速编辑大量场景;生成的结果不包含明显违反物理规则的结果,可以直接用于大多数机器学习任务的训练当中。

图2是本发明实施例提供的可自定义的室内三维场景编辑装置的结构示意图。如图2所示,实施例还提供了一种可自定义的室内三维场景编辑装置200,包括:

自定义模块210,用于基于DSL自定义场景筛选条件、软装产品的模型和材质;

筛选模块220,用于依据自定义的景筛选条件生成筛选指令后通过执行筛选指令从数据库中筛选多个室内三维场景;

模型和材质替换模块230,用于依据软装产品的模型和材质生成替换指令后,通过执行替换指令在数据库中检索替换指令中包含的软装产品的模型和材质,并利用检索到的模型和材质进行替换,以实现每个场景中软装产品的批量化编辑,得到室内三维场景数据。

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

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

步骤1,基于DSL自定义场景筛选条件、软装产品的模型和材质;

步骤2,依据自定义的景筛选条件生成筛选指令后通过执行筛选指令从数据库中筛选多个室内三维场景;

步骤3,依据软装产品的模型和材质生成替换指令后,通过执行替换指令在数据库中检索替换指令中包含的软装产品的模型和材质,并利用检索到的模型和材质进行替换,以实现每个场景中软装产品的批量化编辑,得到室内三维场景数据。

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

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。

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

相关技术
  • 一种可自定义的室内三维场景编辑方法、装置、系统和存储介质
  • 可视化、自定义全景编辑方法、系统、存储介质及设备
技术分类

06120113006473