三维场景编辑方法、系统、设备及存储介质与流程

未命名 09-22 阅读:99 评论:0
1.本说明书一个或多个实施例涉及计算机软件
技术领域
:,尤其涉及一种三维场景编辑方法、系统、设备及存储介质。
背景技术
::2.随着互联网快速发展,三维图形技术(web3d技术)在互联网上得到了延伸,在电子商务、联机娱乐休闲与游戏、科技与工程的可视化、教育、医学、地理信息、虚拟社区等领域应用前景广阔。3.相关技术中的一种三维场景编辑方案是:服务端存储有三维场景模型,并按需提供接口。web编辑器从服务端拉取数据做内容展示,当用户需要对三维场景模型进行编辑时,web端调用服务端接口,完成数据变更。该方案至少存在以下问题:(1)用户的每次数据变更操作都需要调用服务端接口,弱网环境体验差,无法离线作业;(2)每次三维场景模型描述的场景有变更时,都需要针对三维场景模型新开发crud(增加(create)、读取(read)、更新(update)和删除(delete))接口,并进行前后端联调,开发灵活性差,前后端对接成本高。技术实现要素:4.有鉴于此,本说明书一个或多个实施例提供一种三维场景编辑方法、系统、设备及存储介质。5.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:6.根据本说明书一个或多个实施例的第一方面,提出了一种三维场景编辑方法,应用于web端,所述web端能够与服务端通信连接,所述服务端用于通过数据表结构来存储一个或多个三维场景模型;所述方法包括:7.响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型;其中,所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象;8.响应于用户编辑指令,对所述对象模型进行编辑处理。9.可选的,所述基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型,包括:10.从所述服务端获取所述目标三维场景模型的数据表、所述数据表包含的字段以及所述数据表存储的所述目标三维模型的元组;11.根据所述对象关系映射模板,将所述数据表映射为对象模型中的类、将所述数据表包含的字段映射为类的属性、将所述数据表存储的所述目标三维模型的元组映射为类的对象、以及将元组中的字段值映射为对象的属性值。12.可选的,任一三维场景模型用于描述至少一个三维场景;任一三维场景包括一个或多个实体;任一实体携带有三维位置信息以及任一实体包括一个或多个用于描述实体特性的组件;任一组件能够引用一个或多个视觉资源;13.所述服务端通过三维场景表、实体表、组件表和视觉资源表来存储所述一个或多个三维场景模型。14.可选的,所述方法还包括:15.响应于保存指令,根据在本次保存指令之前的编辑操作确定所述对象模型的变更数据,将变更数据同步给所述服务端,以使所述服务端基于所述变更数据对所述目标三维场景模型进行存储更新处理并返回存储结果。16.可选的,所述将变更数据同步给所述服务端,包括:17.启动同步线程,以由所述同步线程将变更数据同步给所述服务端;其中,所述同步线程和编辑线程并行运行,所述编辑线程用于响应于用户编辑指令,对所述对象模型进行编辑处理;和/或18.若所述变更数据的数据量大于预设阈值,将所述变更数据划分为至少两份子数据,以向所述服务端分片传输每份子数据。19.可选的,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:20.响应于对象新增指令,在所述对象模型的对应类中新增目标对象,并为新增的目标对象添加本地创建标记;21.所述方法还包括:22.若所述存储结果指示存储成功,将所述新增的目标对象的本地创建标记更改为服务端导入标记,所述服务端导入标记用于指示新增的对象已同步至所述服务端。23.可选的,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:24.响应于对象删除指令,为所述对象模型对应类中的目标对象添加删除标记;25.所述方法还包括:26.若所述存储结果指示存储成功,将携带有删除标记的目标对象删除。27.可选的,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:28.响应于属性值更新指令,记录所述属性值更新指令指示的目标对象的属性更新值;29.所述方法还包括:30.若所述存储结果指示存储成功,将所述目标对象的属性值修改为所述属性更新值。31.可选的,所述服务端存储的一个或多个三维场景模型包括可编辑模型和只读模型;32.所述方法还包括:33.响应于web端关闭指令,若所述目标三维场景模型为可编辑模型,删除所述对象模型;若所述目标三维场景模型为只读模型,将所述对象模型存储在web端所在设备的本地存储空间中;34.所述响应于目标三维场景模型加载指令,基于对象关系映射框架将服务端中的目标三维场景模型同步到所述web端,得到对象模型,包括:35.响应于目标三维场景模型加载指令,若所述目标三维场景模型为只读模型且web端所在设备的本地存储空间未存储、或者所述目标三维场景模型为可编辑模型,基于对象关系映射框架将服务端中的目标三维场景模型同步到所述web端,得到对象模型;36.所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:37.若所述目标三维场景模型为可编辑模型,响应于用户编辑指令,对所述对象模型进行编辑处理。38.根据本说明书一个或多个实施例的第二方面,提出了一种三维场景编辑系统,包括web端和服务端;所述web端能够与服务端通信连接;39.所述服务端用于通过数据表结构来存储一个或多个三维场景模型;40.所述web端用于执行第一方面任意一项所述的方法。41.根据本公开实施例的第三方面,提供一种电子设备,包括:42.处理器;43.用于存储处理器可执行指令的存储器;44.其中,所述处理器执行所述可执行指令时,用于实现第一方面所述的方法。45.根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。46.本公开的实施例提供的技术方案可以包括以下有益效果:47.本公开实施例中,在将服务端中的目标三维场景模型同步到所述web端时,可以基于对象关系映射模板将服务端中的目标三维场景模型映射为对象模型,以适用于web端的编辑场景,从而方便web端可以在离线或者在线场景下,均可以响应于用户编辑指令,对在本地的对象模型进行编辑处理,给用户带来流畅的web端编辑体验。且无需设置用于编辑三维场景模型的服务端接口,有利于降低开发成本。48.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明49.图1是一示例性实施例提供的一种三维场景编辑系统的结构示意图。50.图2是一示例性实施例提供的一种三维场景模型的架构示意图。51.图3是一示例性实施例提供的三维场景表、实体表、组件表和视觉资源表分别包含的字段以及字段的数据类型的示意图。52.图4是一示例性实施例提供的一种对象模型的结构示意图。53.图5是一示例性实施例提供的一种三维场景编辑方法的流程示意图。54.图6是一示例性实施例提供的一种设备的结构示意图。具体实施方式55.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。56.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。57.相关技术中的一种三维场景编辑方案是:服务端存储有三维场景模型,并按需提供接口。web编辑器从服务端拉取数据做内容展示,当用户需要对三维场景模型进行编辑时,web端调用服务端接口,完成数据变更。该方案至少存在以下问题:(1)用户的每次数据变更操作都需要调用服务端接口,弱网环境体验差,无法离线作业;(2)每次三维场景模型描述的场景有变更时,都需要针对三维场景模型新开发crud接口,并进行前后端联调,开发灵活性差,前后端对接成本高。其中,crud是指在做计算处理时的增加(create)、读取(read)、更新(update)和删除(delete)几个单词的首字母简写。58.针对于相关技术中的问题,请参阅图1,本说明书实施例提供了一种三维场景编辑系统,包括web端100和服务端200;web端100能够与服务端200通信连接。web端100所在设备包括但不限于智能电话/手机、平板计算机、个人数字助理(pda)、膝上计算机、台式计算机、媒体内容播放器、视频游戏站/系统、虚拟现实系统、增强现实系统、可穿戴式设备(例如,手表、眼镜、手套、头饰)、遥控器、或者任何其他类型的设备。服务端200可以安装于服务器、云服务器或者其他计算设备中。服务端200可以与若干个web端100通信连接。59.服务端200用于通过数据表结构来存储一个或多个三维场景模型。60.web端100用于在启动之后,可以响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端200中的目标三维场景模型同步到web端100,得到对象模型;所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象;进而可以响应于用户编辑指令,对所述对象模型进行编辑处理。61.本实施例实现基于对象关系映射模板将存储在服务端200中的目标三维场景模型映射为web端100中的对象模型,以适用于web端的编辑场景,从而方便web端可以在离线或者在线场景下,均可以对在本地的对象模型进行编辑处理,用户可以在web端100本地进行流畅的场景数据编辑操作;且无需设置用于编辑三维场景模型的服务端接口,有利于降低开发成本。62.其中,orm(objectrelationalmapping,对象关系映射)是一种将关系型数据库(如mysql、oracle、postgresql等)和对象(如java、python、c#等)之间进行映射的技术。它将数据库表的结构和数据映射到对象模型中,使开发人员可以使用面向对象的方式来操作数据库,而不需要直接编写sql查询语句。orm框架的主要功能是将数据库中的表和记录映射到编程语言中的对象和类,使得开发人员可以使用面向对象的方式操作数据库,而不必直接编写sql查询语句。它提供了一种抽象层,隐藏了底层数据库的细节,简化了数据库操作的编码过程。63.其中,数据表中的元组指示数据表中的一行数据(即数据库中的每条记录)。64.在一些实施例中,服务端200存储的任一三维场景模型用于描述至少一个三维场景。请参阅图2,图2中的n为大于1的整数;任一三维场景包括一个或多个实体;实体和实体之间可以嵌套,用来表征空间位置关系。任一实体携带有三维位置信息、以及任一实体可以包括一个或多个用于描述实体特性的组件。任一组件具有属性信息,该属性信息用于描述该组件所提供的功能,比如显示功能、移动功能、或者旋转功能等等,但不限于此;并且任一组件还能够引用一个或多个视觉资源;任一视觉资源用于描述纹理、材质、3d可视化数据或者其他可复用的视觉资源。65.服务端200通过三维场景表、实体表、组件表和视觉资源表来存储所述一个或多个三维场景模型。示例性的,请参阅图3,图3示例性示出了三维场景表、实体表、组件表和视觉资源表分别包含的字段以及字段的数据类型。66.三维场景表中的字段包含{uuid、name、extra},uuid用于唯一标识一个场景;name为场景名,extra用于描述场景的其他信息,比如与业务相关的信息等。三维场景表中的每个元组包含有上述字段的字段值,且每个元组用于描述一个场景。67.实体表中的字段包含{uuid、scene、parent、position、extra},uuid用于唯一标识一个实体,scene指示实体所属的场景,parent指示实体嵌套的其他实体,position用于描述实体的三维位置信息,extra用于描述实体的其他信息,比如与业务相关的信息等。实体表中的每个元组包含有上述字段的字段值,且每个元组用于描述某个场景下的一个实体。68.组件表中的字段包含{uuid、scene、type、entity、attr},uuid用于唯一标识一个组件,scene指示组件所属的场景,type指示组件所属类型,entity指示组件所属的实体,attr用于描述组件所提供的功能的实现逻辑。组件表中的每个元组包含有上述字段的字段值,且每个元组用于描述某个场景下某个实体的组件。69.视觉资源表中的字段包含{uuid、type、meta、data},uuid用于唯一标识一个视觉资源,type指示视觉资源所属类型,meta指示视觉资源的名称、data用于描述该视觉资源包含的显示数据。视觉资源表中的每个元组包含有上述字段的字段值,且每个元组用于某个视觉资源。70.在一个示例中,以交通场景为例,例如三维场景表中的一个元组{uuid=1,name=“十字路口”,extra=“交通”}用于描述一个交通场景。该交通场景中包含交通信号灯,例如实体表中一个元组{uuid=1、scene=1、parent=2、position=(x,y,z)、extra=交通信号灯}用于描述一个交通场景下的交通信号灯。交通信号灯需要具备红灯、绿灯和黄灯交替显示功能,例如有组件表中的一个元组{uuid=1、scene=1、type=1、entity=1、attr=“交通信号灯显示逻辑以及引用的视觉资源等信息”}用于描述一个交通场景下的交通信号灯的显示功能。交通信号灯具备相关的显示样式,例如有视觉资源表中的一个元组{uuid=1、type=1、meta=“交通信号灯”、data=“交通信号灯3d显示模型”}用于描述一个交通信号灯的显示数据。71.在另一个示例中,以室内家居场景为例,例如三维场景表中的存在一个元组用于描述一个室内家居场景。该室内家居场景中包含洗手台,例如实体表中存在一个元组用于描述一个室内家居场景下的洗手台。洗手台具有遥控出水功能,例如有组件表中的一个元组用于描述一个室内家居场景下的洗手台的出水控制功能。洗手台具备相关的显示样式,例如有视觉资源表中的一个元组用于描述一个洗手台的显示数据。72.在一些实施例中,外部搭建的三维场景模型如果也是按照上述内容构建的,也可以导入到服务端中。73.在一些实施例中,在web端100启动之后,用户可以根据实际需要进行目标三维场景模型的加载操作,web端100可以根据用户的加载操作生成目标三维场景模型加载指令,进而响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端200中的目标三维场景模型同步到所述web端100,得到对象模型;实现通过对象关系映射模板完成面向对象的变成语言到关系数据库的映射,所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象。74.示例性的,在web端100启动之后,可以响应于目标三维场景模型加载指令,从所述服务端获取所述目标三维场景模型的数据表、所述数据表包含的字段以及所述数据表存储的所述目标三维模型的元组;根据所述对象关系映射模板,将所述数据表映射为对象模型中的类、将所述数据表包含的字段映射为类的属性、将所述数据表存储的所述目标三维模型的元组映射为类的对象、以及将元组中的字段值映射为对象的属性值。75.具体来说:76.数据表映射为对象模型中的类:每个数据表通常对应一个类,在orm框架中,这个类被称为实体类(entityclass)或模型类(modelclass)。类定义了对象的属性和行为,对应于数据表中的列。77.数据表包含的字段映射为类的属性:数据表中的每个字段通常映射为类的一个属性,属性的名称和数据类型对应于字段的名称和数据类型。属性定义了对象的特征或状态。78.数据表存储的所述目标三维模型的元组(每一行记录)映射为类的对象:数据表中的每一行记录都可以映射为类的一个对象实例。每个对象实例都表示了数据表中的一条记录。79.元组中的字段值映射为对象的属性值:元组中的每个字段值通常映射为对象实例的相应属性的值。这样,对象的属性值可以从数据库中读取,并且可以通过对象的方法来修改属性值并持久化到数据库。80.通过这种映射关系,orm框架可以通过操作对象来实现对数据表的增删改查操作,而无需直接编写sql语句。开发人员可以使用面向对象的方式来处理数据,通过操作对象的属性和方法来操作数据库,并且orm框架负责将这些操作转换为相应的数据库操作。这样简化了数据访问层的开发,并提供了更好的抽象和封装性。81.可以理解的是,对象模型中的类与数据表可以是一一映射关系、或者对象模型中的一个类可以对应多个数据表、或者一个数据表也可以对应对象模型中的多个类,本实施例对此不做任何限制,可依据实际应用场景进行具体设置。82.举个例子,以实体表为例,实体表(entity)中的字段包含{uuid、scene、parent、position、extra},预设的对象关系映射模板指示可以通过@table来创建与实体表对应的类,以及通过@field创建与实体表中的字段对应的属性,例如根据实体表中的字段和预设的对象关系映射模板可以进行如表1所示的创建过程,得到对象模型中的类dbentity和类中的属性。83.表1[0084][0085]在一个例子中,请参阅图4,图4示出了对象模型包含的类,基类dbobject和dbmanager提供数据库表的注册管理工作,并提供annotation(注解)工具方法,请参阅表1,子类dbentity可以通过关键字“extends”继承类dbobject,子类dbentity与实体表对应;同理,其他数据表也可以通过上述方式映射为对象模型中的类,示例性的,图4中的子类dbscene与上述的三维场景表对应,子类dbasset与上述的视觉资源表对应,子类dbcomponent与上述的组件表对应。[0086]在一些实施例中,web端100在将目标三维场景模型映射对象模型之后,可以将对象模型存储在web端100所在设备的本地存储空间,用户可以根据实际需要对所述对象模型进行编辑。web端100可以响应于用户编辑指令,对所述对象模型进行编辑处理,即用户在web端100对场景数据的编辑都是直接影响到本地的对象模型。[0087]示例性的,用户根据实际需要新增对象,则web端100可以响应于对象新增指令,在所述对象模型的对应类中新增目标对象,并为新增的目标对象添加本地创建标记;其中,所述对象新增指令指示了待新增的目标对象所属的类。举个例子,请参阅表1,比如用户在目标三维场景中新建了一个实体,就是在对象模型的子类dbentity中添加一个新的目标对象,且该新增的目标对象会标记为本地创建。[0088]示例性的,web端100可以响应于对象删除指令,为所述对象模型的对应类中的目标对象添加删除标记;其中,所述对象删除指令指示了待删除的目标对象所属的类。举个例子,请参阅表1,比如用户在目标三维场景中删除了某个实体,就是删除了对象模型的子类dbentity中的某个对象,就会为该待删除对象标记关键字“deleted”。[0089]示例性的,web端100可以响应于属性值更新指令,记录所述属性值更新指令指示的目标对象的属性更新值。举个例子,请参阅表1,比如用户在目标三维场景中更改了某个实体的位置,就是更改了对象模型的子类dbentity中某个对象的属性值,则可以先记录该目标对象的属性更新值。[0090]在一些实施例中,在用户对其编辑操作进行保存的时候,web端100可以响应于保存指令,根据用户在本次保存指令之前的编辑操作确定所述对象模型的变更数据,将变更数据同步给所述服务端200,从而告知服务端200哪些对象是新创建的,哪些是更新的数据,哪些是删除的对象。[0091]示例性的,web端100在确定所述对象模型的变更数据之后,还可以基于对象关系映射框架将所述对象模型的变更数据映射为服务端200能够直接读取的数据,再将其同步给所述服务端200,以方便服务端200操作。[0092]示例性的,为了不影响用户接下来的编辑操作,可以由编辑线程(主线程)主要负责响应用户编辑指令,对所述对象模型进行编辑处理;并且web端100可以启动同步线程,以由所述同步线程将变更数据同步给所述服务端200;其中,所述同步线程和编辑线程并行运行,从而实现在将变更数据同步给服务端200时不抢占编辑线程的运行资源,给用户带来流畅的web端100编辑体验。[0093]示例性的,在所述变更数据的数据量大于预设阈值的情况下,为了提高数据同步的成功率,可以进行分片传输处理,即web端100可以将所述变更数据划分为至少两份子数据,以向所述服务端200分片传输每份子数据,从而保证变更数据能够成功同步给服务端200。其中,预设阈值可依据实际应用场景进行具体设置,本实施例对此不做任何限制。[0094]服务端200在接收到变更数据之后,可以基于所述变更数据对所述目标三维场景模型进行存储更新处理;如果是新增了对象,则在对应的数据表中新增元组;如果是删除了对象,则在对应的数据表中删除元组;如果是修改了对象的属性值,则在对应的数据表中修改元组的字段值。服务端200还用于在存储更新处理完成之后,向web端100返回存储结果,使得web端100可以基于存储结果完成相关的同步操作,确保web端100数据和服务端200数据同步。[0095]示例性的,在所述存储结果指示存储成功的情况下,对于服务端200保存的新增的数据(例如携带有本地创建标记的目标对象),web端100可以将新增的目标对象的本地创建标记更改为服务端200导入标记,所述服务端200导入标记用于指示新增的对象已同步至所述服务端200,从而确保web端100数据和服务端200数据同步。[0096]示例性的,在所述存储结果指示存储成功的情况下,对于服务端200保存的删除的数据(例如携带有删除标记的目标对象),web端100可以将携带有删除标记的目标对象删除,从而确保web端100数据和服务端200数据同步。[0097]示例性的,在所述存储结果指示存储成功的情况下,对于服务端200保存的更新的数据(例如记录的目标对象的属性更新值),web端100将所述目标对象的属性值修改为所述属性更新值。[0098]示例性的,如果所述存储结果指示存储失败,则web端100对服务端200保存失败的数据不做任何变更,方便后续再次进行保存。[0099]在一些实施例中,所述服务端200存储的一个或多个三维场景模型,可以分为可编辑模型和只读模型。考虑到可编辑模型可能会被其他用户再次编辑更改,而只读模型只允许浏览而不允许更改,为了实现加载资源的综合利用,实现以下方案:[0100]在web端100启动之后,响应于目标三维场景模型加载指令,确定待加载的目标三维场景模型的类型。[0101]如果所述目标三维场景模型为只读模型,进一步检测web端100所在设备的本地存储空间是否有存储该目标三维场景模型,在确定所述目标三维场景模型为只读模型且web端100所在设备的本地存储空间未存储的情况下,基于对象关系映射框架将服务端200中的目标三维场景模型同步到所述web端100,得到对象模型;在所述web端100展示所述对象模型。[0102]如果所述目标三维场景模型为可编辑模型,基于对象关系映射框架将服务端200中的目标三维场景模型同步到所述web端100,得到对象模型。并且可以响应于用户编辑指令,对所述对象模型进行编辑处理。[0103]响应于web端关闭指令,若所述目标三维场景模型为可编辑模型,删除所述对象模型;即在再次启动web端100之后,用户需要编辑或查看可编辑模型时,web端100需要从服务端200重新加载可编辑模型,以保证可编辑模型的数据最新。[0104]响应于web端关闭指令,若所述目标三维场景模型为只读模型,可以将所述对象模型存储在web端100所在设备的本地存储空间中;在web端100再次启动之后,如果用户需要查看该只读模型,则可以直接从web端100所在设备的本地存储空间读取并进行显示即可,无需重复从服务端200获取,实现对加载资源的综合使用,也有利于实现只读资源的快速显示。[0105]以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本说明书公开的范围。[0106]相应的,请参阅图5,本说明书实施例还提供了一种三维场景编辑方法,应用于web端,所述web端能够与服务端通信连接,所述服务端用于通过数据表结构来存储一个或多个三维场景模型;所述方法包括:[0107]在s101中,响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型;其中,所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象。[0108]在s102中,响应于用户编辑指令,对所述对象模型进行编辑处理。[0109]本实施例中,在将服务端中的目标三维场景模型同步到所述web端时,可以基于对象关系映射模板将服务端中的目标三维场景模型映射为对象模型,以适用于web端的编辑场景,从而方便web端可以在离线或者在线场景下,均可以响应于用户编辑指令,对在本地的对象模型进行编辑处理,给用户带来流畅的web端编辑体验。且无需设置用于编辑三维场景模型的服务端接口,有利于降低开发成本。[0110]在一些实施例中,所述基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型,包括:从所述服务端获取所述目标三维场景模型的数据表、所述数据表包含的字段以及所述数据表存储的所述目标三维模型的元组;根据所述对象关系映射模板,将所述数据表映射为对象模型中的类、将所述数据表包含的字段映射为类的属性、将所述数据表存储的所述目标三维模型的元组映射为类的对象、以及将元组中的字段值映射为对象的属性值。[0111]在一些实施例中,任一三维场景模型用于描述至少一个三维场景;任一三维场景包括一个或多个实体;任一实体携带有三维位置信息以及任一实体包括一个或多个用于描述实体特性的组件;任一组件能够引用一个或多个视觉资源;所述服务端通过三维场景表、实体表、组件表和视觉资源表来存储所述一个或多个三维场景模型。[0112]在一些实施例中,所述方法还包括:响应于保存指令,根据在本次保存指令之前的编辑操作确定所述对象模型的变更数据,将变更数据同步给所述服务端,以使所述服务端基于所述变更数据对所述目标三维场景模型进行存储更新处理并返回存储结果。[0113]在一些实施例中,所述将变更数据同步给所述服务端,包括:启动同步线程,以由所述同步线程将变更数据同步给所述服务端;其中,所述同步线程和编辑线程并行运行,所述编辑线程用于响应于用户编辑指令,对所述对象模型进行编辑处理;和/或若所述变更数据的数据量大于预设阈值,将所述变更数据划分为至少两份子数据,以向所述服务端分片传输每份子数据。[0114]在一些实施例中,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:响应于对象新增指令,在所述对象模型的对应类中新增目标对象,并为新增的目标对象添加本地创建标记。所述方法还包括:若所述存储结果指示存储成功,将所述新增的目标对象的本地创建标记更改为服务端导入标记,所述服务端导入标记用于指示新增的对象已同步至所述服务端。[0115]在一些实施例中,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:响应于对象删除指令,为所述对象模型对应类中的目标对象添加删除标记。所述方法还包括:若所述存储结果指示存储成功,将携带有删除标记的目标对象删除。[0116]在一些实施例中,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:响应于属性值更新指令,记录所述属性值更新指令指示的目标对象的属性更新值;所述方法还包括:若所述存储结果指示存储成功,将所述目标对象的属性值修改为所述属性更新值。[0117]在一些实施例中,所述服务端存储的一个或多个三维场景模型包括可编辑模型和只读模型。所述方法还包括:响应于web端关闭指令,若所述目标三维场景模型为可编辑模型,删除所述对象模型;若所述目标三维场景模型为只读模型,将所述对象模型存储在web端所在设备的本地存储空间中。所述响应于目标三维场景模型加载指令,基于对象关系映射框架将服务端中的目标三维场景模型同步到所述web端,得到对象模型,包括:响应于目标三维场景模型加载指令,若所述目标三维场景模型为只读模型且web端所在设备的本地存储空间未存储、或者所述目标三维场景模型为可编辑模型,基于对象关系映射框架将服务端中的目标三维场景模型同步到所述web端,得到对象模型。所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:若所述目标三维场景模型为可编辑模型,响应于用户编辑指令,对所述对象模型进行编辑处理。[0118]上述方法的实现过程具体详见上述系统中的描述,在此不再赘述。[0119]图6是一示例性实施例提供的一种设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。[0120]三维场景编辑装置可以应用于如图6所示的设备中,以实现本说明书的技术方案。其中,该三维场景编辑装置可以包括:[0121]模型同步模块,用于响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型;其中,所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象。[0122]编辑模块,用于响应于用户编辑指令,对所述对象模型进行编辑处理。[0123]上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。[0124]在一些实施例中,本说明书实施例还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现上述中任一项所述的方法。[0125]在一些实施例中,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。[0126]示例性的,所述电子设备集成一计算机程序产品,该电子设备执行该计算机程序产品时实现本说明书实施例提供的三维场景编辑方法。[0127]需要说明的是,本说明书所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。[0128]上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。[0129]在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。[0130]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。[0131]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。[0132]还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。[0133]上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。[0134]在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。[0135]应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。[0136]以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。当前第1页12当前第1页12
技术特征:
1.一种三维场景编辑方法,其特征在于,应用于web端,所述web端能够与服务端通信连接,所述服务端用于通过数据表结构来存储一个或多个三维场景模型;所述方法包括:响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型;其中,所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象;响应于用户编辑指令,对所述对象模型进行编辑处理。2.根据权利要求1所述的方法,其特征在于,所述基于对象关系映射模板将服务端中的目标三维场景模型同步到所述web端,得到对象模型,包括:从所述服务端获取用于存储所述目标三维场景模型的数据表、所述数据表包含的字段以及所述数据表存储的所述目标三维模型的元组;根据所述对象关系映射模板,将所述数据表映射为对象模型中的类、将所述数据表包含的字段映射为类的属性、将所述数据表存储的所述目标三维模型的元组映射为类的对象、以及将元组中的字段值映射为对象的属性值。3.根据权利要求1或2所述的方法,其特征在于,任一三维场景模型用于描述至少一个三维场景;任一三维场景包括一个或多个实体;任一实体携带有三维位置信息以及任一实体包括一个或多个用于描述实体特性的组件;任一组件能够引用一个或多个视觉资源;所述服务端通过三维场景表、实体表、组件表和视觉资源表来存储所述一个或多个三维场景模型。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于保存指令,根据在本次保存指令之前的编辑操作确定所述对象模型的变更数据,将变更数据同步给所述服务端,以使所述服务端基于所述变更数据对所述目标三维场景模型进行存储更新处理并返回存储结果。5.根据权利要求4所述的方法,其特征在于,所述将变更数据同步给所述服务端,包括:启动同步线程,以由所述同步线程将变更数据同步给所述服务端;其中,所述同步线程和编辑线程并行运行,所述编辑线程用于响应于用户编辑指令,对所述对象模型进行编辑处理;和/或若所述变更数据的数据量大于预设阈值,将所述变更数据划分为至少两份子数据,以向所述服务端分片传输每份子数据。6.根据权利要求4所述的方法,其特征在于,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:响应于对象新增指令,在所述对象模型的对应类中新增目标对象,并为新增的目标对象添加本地创建标记;所述方法还包括:若所述存储结果指示存储成功,将所述新增的目标对象的本地创建标记更改为服务端导入标记,所述服务端导入标记用于指示新增的对象已同步至所述服务端。7.根据权利要求4所述的方法,其特征在于,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:响应于对象删除指令,为所述对象模型对应类中的目标对象添加删除标记;
所述方法还包括:若所述存储结果指示存储成功,将携带有删除标记的目标对象删除。8.根据权利要求4所述的方法,其特征在于,所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:响应于属性值更新指令,记录所述属性值更新指令指示的目标对象的属性更新值;所述方法还包括:若所述存储结果指示存储成功,将所述目标对象的属性值修改为所述属性更新值。9.根据权利要求1所述的方法,其特征在于,所述服务端存储的一个或多个三维场景模型包括可编辑模型和只读模型;所述方法还包括:响应于web端关闭指令,若所述目标三维场景模型为可编辑模型,删除所述对象模型;若所述目标三维场景模型为只读模型,将所述对象模型存储在web端所在设备的本地存储空间中;所述响应于目标三维场景模型加载指令,基于对象关系映射框架将服务端中的目标三维场景模型同步到所述web端,得到对象模型,包括:响应于目标三维场景模型加载指令,若所述目标三维场景模型为只读模型且web端所在设备的本地存储空间未存储、或者所述目标三维场景模型为可编辑模型,基于对象关系映射框架将服务端中的目标三维场景模型同步到所述web端,得到对象模型;所述响应于用户编辑指令,对所述对象模型进行编辑处理,包括:若所述目标三维场景模型为可编辑模型,响应于用户编辑指令,对所述对象模型进行编辑处理。10.一种三维场景编辑系统,其特征在于,包括web端和服务端;所述web端能够与服务端通信连接;所述服务端用于通过数据表结构来存储一个或多个三维场景模型;所述web端用于执行权利要求1至9任意一项所述的方法。11.一种电子设备,其特征在于,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1至9中任一项所述的方法。12.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1至9中任一项所述方法的步骤。

技术总结
本说明书一个或多个实施例提供一种三维场景编辑方法、系统、设备及存储介质。Web端能够与服务端通信连接,所述服务端用于通过数据表结构来存储一个或多个三维场景模型;所述方法包括:响应于目标三维场景模型加载指令,基于对象关系映射模板将服务端中的目标三维场景模型同步到所述Web端,得到对象模型;其中,所述对象关系映射模板用于将所述目标三维场景模型的数据表映射为所述对象模型中的类、以及将所述数据表中存储的所述目标三维场景模型的元组映射为所述对象模型中的对应类的对象;响应于用户编辑指令,对所述对象模型进行编辑处理。实现给用户带来流畅的Web端编辑体验。验。验。


技术研发人员:王任
受保护的技术使用者:阿里云计算有限公司
技术研发日:2023.06.13
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐