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

基于Unity引擎的动态加载方法、装置、计算机设备

文献发布时间:2023-06-19 09:29:07


基于Unity引擎的动态加载方法、装置、计算机设备

技术领域

本发明涉及Unity技术领域,尤其涉及一种基于Unity引擎的动态加载方法、装置、计算机设备。

背景技术

近年来,Unity3D(三维游戏引擎)引擎得到了越来越广泛的应用,其良好的扩充性和跨平台性,使得许多行业的应用开发更加方便。

但是,Unity3D的设计初衷是一款游戏引擎,因此它的各种制程大都是为游戏开发所设计的,尤其是3D模型资产这部分管理,只能使用预先导入工程的方式使用,不能在运行时动态加载3D模型。对于游戏来说,资源都是预置的,不会有太大问题,但对于工业等其他行业应用,就会碰到一些问题例如3D模型格式多种多样,而Unity3D只能导入有限的几种3D模型,例如3D模型往往需要用户自行放入,不能预置到unity3D工程之中。

于是,我们只能使用第三方所制作的Unity3D插件,来扩展3D模型加载能力,然而运行时加载3D模型非常耗费性能,对于比较大型的3D模型而言,加载一个3D模型经常要数分钟甚至更久;更麻烦的是,动态加载3D模型会消耗大量内存,在一些性能相对较弱的平台上运行,经常会发生内存超过限制而导致程序崩溃的问题。

另一方面,Unity3D提供了一种允许动态加载的存储格式,称为AssetBundle(可动态加载资源),可以将3D模型等资源制作成AssetBundle,这种资源可以在运行时加载,速度比较快,占用资源也比较小。但是AssetBundle只能通过预先导入工程的静态资源来制作,第三方所制作的Unity3D插件加载的3D模型无法制作AssetBundle,导致用户无法自行在各种平台动态加载3D模型,无法满足用户自行导入3D模型并在各种平台使用的需要。

发明内容

有鉴于此,本发明的目的在于提出一种基于Unity引擎的动态加载方法、装置、计算机设备,能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

根据本发明的一个方面,提供一种基于Unity引擎的动态加载方法,包括:将3D模型上传到云端;在所述云端接收到所述3D模型后,将所述3D模型传输给预设的3D模型处理机;通过所述云端使用远程调用的方式,启动所述3D模型处理机上的游戏引擎Unity,并打开所述3D模型处理机的3D模型处理程序;通过所述3D模型处理程序,使用插件读取所述3D模型;将所述经使用插件读取后的3D模型存储于内存之中,需要先将所述经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源;用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

其中,所述将所述经使用插件读取后的3D模型存储于内存之中,需要先将所述经使用插件读取后的3D模型存储到硬盘上形成一个Unity可用的资源,包括:创建一个Unity的预设文件文件,作为所述经使用插件读取后的3D模型的存储主体;和将所述经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成所述存在到硬盘的关联纹理的映射表;和将所述经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据所述生成的关联纹理的映射表,将所述全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息;和将所述全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件;和将所述经使用插件读取后的3D模型的主体信息存储在所述创建的预设文件,形成一个Unity可用的资源。

其中,所述将所述经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成所述存在到硬盘的关联纹理的映射表,包括:将所述经使用插件读取后的3D模型中所有的关联纹理加载到内存之中;和创建一张与所述加载到内存之中的所述关联纹理尺寸一致的新的纹理;和将所述加载到内存之中的所述关联纹理的内容绘制到所述新的纹理;和将所述新的纹理按照预设格式进行压缩并存储到硬盘,所述新的纹理的每个纹理对应一个所述预设格式的图像文件;和记录所述加载到内存之中的所述关联纹理与所述新的纹理的映射表;其中,所述映射表用于修改关联的材质文件中的纹理映射关系。

其中,所述用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源,包括:根据所述存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将所述存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

其中,在所述用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源之后,还包括:通过所述云端收集所述生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录。

根据本发明的另一个方面,提供一种基于Unity引擎的动态加载装置,包括:上传模块、传输模块、启动模块、读取模块、存储模块和转化模块;所述上传模块,用于将3D模型上传到云端;所述传输模块,用于在所述云端接收到所述3D模型后,将所述3D模型传输给预设的3D模型处理机;所述启动模块,用于通过所述云端使用远程调用的方式,启动所述3D模型处理机上的游戏引擎Unity,并打开所述3D模型处理机的3D模型处理程序;所述读取模块,用于通过所述3D模型处理程序,使用插件读取所述3D模型;所述存储模块,用于将所述经使用插件读取后的3D模型存储于内存之中,需要先将所述经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源;所述转化模块,用于用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

其中,所述存储模块,具体用于:创建一个Unity的预设文件,作为所述经使用插件读取后的3D模型的存储主体;和将所述经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成所述存在到硬盘的关联纹理的映射表;和将所述经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据所述生成的关联纹理的映射表,将所述全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息;和将所述全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件;和将所述经使用插件读取后的3D模型的主体信息存储在所述创建的预设文件,形成一个Unity可用的资源。

其中,所述存储模块,具体用于:将所述经使用插件读取后的3D模型中所有的关联纹理加载到内存之中;和创建一张与所述加载到内存之中的所述关联纹理尺寸一致的新的纹理;和将所述加载到内存之中的所述关联纹理的内容绘制到所述新的纹理;和将所述新的纹理按照预设格式进行压缩并存储到硬盘,所述新的纹理的每个纹理对应一个所述预设格式的图像文件;和记录所述加载到内存之中的所述关联纹理与所述新的纹理的映射表;其中,所述映射表用于修改关联的材质文件中的纹理映射关系。

其中,所述转化模块,具体用于:根据所述存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将所述存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

其中,所述基于Unity引擎的动态加载装置,还包括:收集模块;所述收集模块,用于通过所述云端收集所述生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录。

根据本发明的又一个方面,提供一种计算机设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一项所述的基于Unity引擎的动态加载方法。

根据本发明的再一个方面,提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的基于Unity引擎的动态加载方法。

可以发现,以上方案,可以将3D模型上传到云端,和可以在该云端接收到该3D模型后,将该3D模型传输给预设的3D模型处理机,和可以通过该云端使用远程调用的方式,启动该3D模型处理机上的游戏引擎Unity,并打开该3D模型处理机的3D模型处理程序,和可以通过该3D模型处理程序,使用插件读取该3D模型,和可以将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源,以及可以用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源,其中,一个平台对应一个可动态加载资源AssetBundle,能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

进一步的,以上方案,可以创建一个Unity的预设文件,作为该经使用插件读取后的3D模型的存储主体,和将该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成该存在到硬盘的关联纹理的映射表,和将该经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据该生成的关联纹理的映射表,将该全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息,和将该全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件,和将该经使用插件读取后的3D模型的主体信息存储在该创建的预设文件,形成一个Unity可用的资源,这样的好处是能够实现该创建的预设文件能够关联到所有的材质文件,材质文件又能够关联到该经使用插件读取后的3D模型中所有的关联纹理文件。

进一步的,以上方案,可以将该经使用插件读取后的3D模型中所有的关联纹理加载到内存之中,和创建一张与该加载到内存之中的该关联纹理尺寸一致的新的纹理,和将该加载到内存之中的该关联纹理的内容绘制到该新的纹理,和将该新的纹理按照预设格式进行压缩并存储到硬盘,该新的纹理的每个纹理对应一个该预设格式的图像文件图像文件,和记录该加载到内存之中的该关联纹理与该新的纹理的映射表,其中,该映射表用于修改关联的材质文件中的纹理映射关系,这样的好处是能够实现将不能直接存储到硬盘的该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘中。

进一步的,以上方案,可以根据该存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将该存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,生成各个平台关联的可动态加载资源AssetBundle,其中,一个平台对应一个可动态加载资源AssetBundle,这样的好处是能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

进一步的,以上方案,可以通过该云端收集该生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录,这样的好处是能够实现在用户使用时能够提供对应平台的关联资源。

附图说明

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

图1是本发明基于Unity引擎的动态加载方法一实施例的流程示意图;

图2是本发明基于Unity引擎的动态加载方法另一实施例的流程示意图;

图3是本发明基于Unity引擎的动态加载装置一实施例的结构示意图;

图4是本发明基于Unity引擎的动态加载装置另一实施例的结构示意图;

图5是本发明计算机设备一实施例的结构示意图。

具体实施方式

下面结合附图和实施例,对本发明作进一步的详细描述。特别指出的是,以下实施例仅用于说明本发明,但不对本发明的范围进行限定。同样的,以下实施例仅为本发明的部分实施例而非全部实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明提供一种基于Unity引擎的动态加载方法,能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

请参见图1,图1是本发明基于Unity引擎的动态加载方法一实施例的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该方法包括如下步骤:

S101:将3D模型上传到云端。

在本实施例中,可以通过无线网络,将3D模型上传到云端,也可以通过有线网络,将3D模型上传到云端等,本发明不加以限定。

S102:在该云端接收到该3D模型后,将该3D模型传输给预设的3D模型处理机。

在本实施例中,该3D模型处理机可以是一台独立主机,该独立主机安装有Unity3D环境,也可以是一台组合主机,该组合主机安装有Unity3D环境等,本发明不加以限定。

S103:通过该云端使用远程调用的方式,启动该3D模型处理机上的Unity(游戏引擎),并打开该3D模型处理机的3D模型处理程序。

在本实施例中,该远程调用可以是RPC(Remote Produce Call,远程过程调用)方式,也可以是HTTP(HyperText TransferProtocol,超文本传输协议)方式等,本发明不加以限定。

S104:通过该3D模型处理程序,使用插件读取该3D模型。

在本实施例中,可以通过该3D模型处理程序,使用TriLib(Unity3D模型加载程序包)插件读取该3D模型,也可以通过该3D模型处理程序,使用其它插件读取该3D模型等,本发明不加以限定。

S105:将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源(Asset)。

其中,该将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上形成一个Unity可用的资源,可以包括:

创建一个Unity的预设文件例如.prefab(预制件)文件,作为该经使用插件读取后的3D模型的存储主体;

和将该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成该存在到硬盘的关联纹理的映射表;

和将该经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据该生成的关联纹理的映射表,将该全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息;

和将该全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件(.mat);

和将该经使用插件读取后的3D模型的主体信息存储在该创建的预设文件,形成一个Unity可用的资源;

这样的好处是能够实现该创建的预设文件能够关联到所有的材质文件,材质文件又能够关联到该经使用插件读取后的3D模型中所有的关联纹理文件。

其中,该将该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成该存在到硬盘的关联纹理的映射表,可以包括:

将该经使用插件读取后的3D模型中所有的关联纹理加载到内存之中;

和创建一张与该加载到内存之中的该关联纹理尺寸一致的新的纹理;

和将该加载到内存之中的该关联纹理的内容绘制到该新的纹理;

和将该新的纹理按照预设格式例如png(Portable Network Graphics,便携式网络图形格式)进行压缩并存储到硬盘,该新的纹理的每个纹理对应一个该预设格式的图像文件例如.png图像文件;

和记录该加载到内存之中的该关联纹理与该新的纹理的映射表;其中,该映射表用于修改关联的材质文件中的纹理映射关系;

这样的好处是能够实现将不能直接存储到硬盘的该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘中。

S106:用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

其中,该用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源,可以包括:

根据该存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将该存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源,这样的好处是能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

其中,在该用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源之后,还可以包括:

通过该云端收集该生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录,这样的好处是能够实现在用户使用时能够提供对应平台的关联资源。

可以发现,在本实施例中,可以将3D模型上传到云端,和可以在该云端接收到该3D模型后,将该3D模型传输给预设的3D模型处理机,和可以通过该云端使用远程调用的方式,启动该3D模型处理机上的游戏引擎Unity,并打开该3D模型处理机的3D模型处理程序,和可以通过该3D模型处理程序,使用插件读取该3D模型,和可以将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源,以及可以用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源,其中,一个平台对应一个可动态加载资源AssetBundle,能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

进一步的,在本实施例中,可以创建一个Unity的预设文件,作为该经使用插件读取后的3D模型的存储主体,和将该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成该存在到硬盘的关联纹理的映射表,和将该经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据该生成的关联纹理的映射表,将该全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息,和将该全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件,和将该经使用插件读取后的3D模型的主体信息存储在该创建的预设文件,形成一个Unity可用的资源,这样的好处是能够实现该创建的预设文件能够关联到所有的材质文件,材质文件又能够关联到该经使用插件读取后的3D模型中所有的关联纹理文件。

进一步的,在本实施例中,可以将该经使用插件读取后的3D模型中所有的关联纹理加载到内存之中,和创建一张与该加载到内存之中的该关联纹理尺寸一致的新的纹理,和将该加载到内存之中的该关联纹理的内容绘制到该新的纹理,和将该新的纹理按照预设格式进行压缩并存储到硬盘,该新的纹理的每个纹理对应一个该预设格式的图像文件图像文件,和记录该加载到内存之中的该关联纹理与该新的纹理的映射表,其中,该映射表用于修改关联的材质文件中的纹理映射关系,这样的好处是能够实现将不能直接存储到硬盘的该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘中。

进一步的,在本实施例中,可以根据该存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将该存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,生成各个平台关联的可动态加载资源AssetBundle,其中,一个平台对应一个可动态加载资源AssetBundle,这样的好处是能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

请参见图2,图2是本发明基于Unity引擎的动态加载方法另一实施例的流程示意图。本实施例中,该方法包括以下步骤:

S201:将3D模型上传到云端。

可如上S101所述,在此不作赘述。

S202:在该云端接收到该3D模型后,将该3D模型传输给预设的3D模型处理机。

可如上S102所述,在此不作赘述。

S203:通过该云端使用远程调用的方式,启动该3D模型处理机上的游戏引擎Unity,并打开该3D模型处理机的3D模型处理程序。

可如上S103所述,在此不作赘述。

S204:通过该3D模型处理程序,使用插件读取该3D模型。

可如上S104所述,在此不作赘述。

S205:将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源。

可如上S105所述,在此不作赘述。

S206:用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

可如上S106所述,在此不作赘述。

S207:通过该云端收集该生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录。

可以发现,在本实施例中,可以通过该云端收集该生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录,这样的好处是能够实现在用户使用时能够提供对应平台的关联资源。

本发明还提供一种基于Unity引擎的动态加载装置,能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

请参见图3,图3是本发明基于Unity引擎的动态加载装置一实施例的结构示意图。本实施例中,该基于Unity引擎的动态加载装置30包括上传模块31、传输模块32、启动模块33、读取模块34、存储模块35和转化模块36。

该上传模块31,用于将3D模型上传到云端。

该传输模块32,用于在该云端接收到该3D模型后,将该3D模型传输给预设的3D模型处理机。

该启动模块33,用于通过该云端使用远程调用的方式,启动该3D模型处理机上的游戏引擎Unity,并打开该3D模型处理机的3D模型处理程序。

该读取模块34,用于通过该3D模型处理程序,使用插件读取该3D模型。

该存储模块35,用于将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源。

该转化模块36,用于用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

可选地,该存储模块35,可以具体用于:

创建一个Unity的预设文件,作为该经使用插件读取后的3D模型的存储主体;和将该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成该存在到硬盘的关联纹理的映射表;和将该经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据该生成的关联纹理的映射表,将该全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息;和将该全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件;和将该经使用插件读取后的3D模型的主体信息存储在该创建的预设文件,形成一个Unity可用的资源。

可选地,该存储模块35,可以具体用于:

将该经使用插件读取后的3D模型中所有的关联纹理加载到内存之中;和创建一张与该加载到内存之中的该关联纹理尺寸一致的新的纹理;和将该加载到内存之中的该关联纹理的内容绘制到该新的纹理;和将该新的纹理按照预设格式进行压缩并存储到硬盘,该新的纹理的每个纹理对应一个该预设格式的图像文件;和记录该加载到内存之中的该关联纹理与该新的纹理的映射表;其中,该映射表用于修改关联的材质文件中的纹理映射关系。

可选地,该转化模块36,可以具体用于:

根据该存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将该存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源。

请参见图4,图4是本发明基于Unity引擎的动态加载装置另一实施例的结构示意图。区别于上一实施例,本实施例所述基于Unity引擎的动态加载装置40还包括收集模块41。

该收集模块41,用于通过该云端收集该生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录。

该基于Unity引擎的动态加载装置30/40的各个单元模块可分别执行上述方法实施例中对应步骤,故在此不对各单元模块进行赘述,详细请参见以上对应步骤的说明。

本发明又提供一种计算机设备,如图5所示,包括:至少一个处理器51;以及,与至少一个处理器51通信连接的存储器52;其中,存储器52存储有可被至少一个处理器51执行的指令,指令被至少一个处理器51执行,以使至少一个处理器51能够执行上述的基于Unity引擎的动态加载方法。

其中,存储器52和处理器51采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器51和存储器52的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器51处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器51。

处理器51负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器52可以被用于存储处理器51在执行操作时所使用的数据。

本发明再提供一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

可以发现,以上方案,可以将3D模型上传到云端,和可以在该云端接收到该3D模型后,将该3D模型传输给预设的3D模型处理机,和可以通过该云端使用远程调用的方式,启动该3D模型处理机上的游戏引擎Unity,并打开该3D模型处理机的3D模型处理程序,和可以通过该3D模型处理程序,使用插件读取该3D模型,和可以将该经使用插件读取后的3D模型存储于内存之中,需要先将该经使用插件读取后的3D模型存储到硬盘上,形成一个Unity可用的资源,以及可以用基于Unity引擎的工具将存储于硬盘上的3D模型转化为一系列可动态加载资源AssetBundle,这种资源是平台关联的,每一种平台对应一个资源,其中,一个平台对应一个可动态加载资源AssetBundle,能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

进一步的,以上方案,可以创建一个Unity的预设文件,作为该经使用插件读取后的3D模型的存储主体,和将该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘并生成该存在到硬盘的关联纹理的映射表,和将该经使用插件读取后的3D模型中包含的材质信息全部读取出来,并根据该生成的关联纹理的映射表,将该全部读取出来的材质信息中包含的纹理信息全部替换为新建的纹理信息,和将该全部读取出来的材质信息存储到硬盘,一个材质信息对应一个材质文件,和将该经使用插件读取后的3D模型的主体信息存储在该创建的预设文件,形成一个Unity可用的资源,这样的好处是能够实现该创建的预设文件能够关联到所有的材质文件,材质文件又能够关联到该经使用插件读取后的3D模型中所有的关联纹理文件。

进一步的,以上方案,可以将该经使用插件读取后的3D模型中所有的关联纹理加载到内存之中,和创建一张与该加载到内存之中的该关联纹理尺寸一致的新的纹理,和将该加载到内存之中的该关联纹理的内容绘制到该新的纹理,和将该新的纹理按照预设格式进行压缩并存储到硬盘,该新的纹理的每个纹理对应一个该预设格式的图像文件图像文件,和记录该加载到内存之中的该关联纹理与该新的纹理的映射表,其中,该映射表用于修改关联的材质文件中的纹理映射关系,这样的好处是能够实现将不能直接存储到硬盘的该经使用插件读取后的3D模型中所有的关联纹理存储到硬盘中。

进一步的,以上方案,可以根据该存储于硬盘之中的Unity资源的复杂度和关联资源的规模,将该存储到硬盘上的Unity资源,采用格式转换的方式,调用Unity的对应接口,生成各个平台关联的可动态加载资源AssetBundle,其中,一个平台对应一个可动态加载资源AssetBundle,这样的好处是能够实现用户能够自行在各种平台动态加载3D模型,能够满足用户自行导入3D模型并在各种平台使用的需要。

进一步的,以上方案,可以通过该云端收集该生成各个平台关联的可动态加载资源AssetBundle的文件信息并做记录,这样的好处是能够实现在用户使用时能够提供对应平台的关联资源。

在本发明所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的部分实施例,并非因此限制本发明的保护范围,凡是利用本发明说明书及附图内容所作的等效装置或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 基于Unity引擎的动态加载方法、装置、计算机设备
  • 一种基于Unity3D引擎进行管廊中寻路导航的方法、装置及电子设备
技术分类

06120112186685