资源预览方法、装置、设备及存储介质转让专利

申请号 : CN202310581378.4

文献号 : CN116302296B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱宇轲

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例公开一种资源预览方法、装置、设备及存储介质,方法包括:从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源;实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象;对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;在所述资源显示界面中显示所述目标预制件资源的预览图。通过本申请实施例,可以丰富预制件资源的显示形态,使得程序引擎的使用者可以快速预览预制件资源在虚拟场景中的大致样貌,提升应用程序的开发效率。

权利要求 :

1.一种资源预览方法,其特征在于,包括:

在程序引擎的资源显示界面中,显示所述资源显示界面所涉及的多个预制件资源中的K个预制件资源;K为正整数,所述K个预制件资源中的各个预制件资源在所述资源显示界面中的显示形态为一个默认图标;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;

按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中;

每隔预设时长从所述队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源;

实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;

对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;

在所述资源显示界面中显示所述目标预制件资源的预览图。

2.如权利要求1所述的方法,其特征在于,所述对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图,包括:调用所述程序引擎提供的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像;

根据预设图像尺寸对所述初始图像的图像尺寸进行缩略处理,得到所述初始图像对应的缩略图;

将所述缩略图确定为所述目标预制件资源的预览图。

3.如权利要求2所述的方法,其特征在于,所述程序引擎提供的相机位于所述虚拟场景中;所述调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像,包括:调整所述程序引擎提供的相机在所述虚拟场景中的位置,使所述相机对准所述N个虚拟对象;

确定所述N个虚拟对象的包围盒,并根据所述包围盒的尺寸调整所述相机的拍摄范围,使调整后的拍摄范围为所述包围盒;

在调整所述相机的位置和拍摄范围后,控制所述相机对所述N个虚拟对象进行拍摄,得到拍摄结果;对所述拍摄结果进行渲染,得到初始图像。

4.如权利要求3所述的方法,其特征在于,所述拍摄结果包括所述N个虚拟对象以及无效虚拟对象,所述无效虚拟对象是指所述虚拟场景中除所述N个虚拟对象以外的虚拟对象;

所述对所述拍摄结果进行渲染,得到初始图像,包括:

分别为所述拍摄结果中的N个虚拟对象以及无效虚拟对象设定不同的渲染层级,所述N个虚拟对象具有相同的渲染层级;

根据所述N个虚拟对象的渲染层级以及所述无效虚拟对象的渲染层级,对所述N个虚拟对象和所述无效虚拟对象进行分层渲染;

将分层渲染所得到的包含所述N个虚拟对象的图像,作为初始图像。

5.如权利要求2‑4任一项所述的方法,其特征在于,所述方法还包括:将所述相机的拍摄模式设置为正交投影模式,所述正交投影模式是指:将三维空间中的对象平行投影至二维图像,使得二维图像中的各像素点的深度值为零值的模式;

在设置拍摄模式后,触发执行所述调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像的步骤。

6.如权利要求5所述的方法,其特征在于,在生成所述目标预制件资源的预览图之后,所述方法还包括:删除所述N个虚拟对象;

将所述相机的状态设置为初始状态,所述初始状态是指:对所述N个虚拟对象进行图像渲染之前,所述相机所处的状态;

其中,所述相机所处的状态包括:位置、拍摄范围和拍摄模式。

7.如权利要求1所述的方法,其特征在于,所述资源显示界面支持一次性显示M个预制件资源,M为正整数,当所述多个预制件资源的数量大于M时,所述资源显示界面未全部显示所述多个预制件资源,且K小于或等于M;所述方法还包括:响应于资源滚动操作,控制所述多个预制件资源在所述资源显示界面进行滚动,并清空所述队列;其中,每滚动一次,所述资源显示界面就更新显示K个预制件资源;

若检测到滚动停止操作,则停止在所述资源显示界面更新显示K个预制件资源,并跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。

8.如权利要求7所述的方法,其特征在于,在检测到滚动停止操作后,所述方法还包括:统计当前显示的K个预制件资源的持续显示时长;

若统计到的持续显示时长大于时长阈值,则触发执行所述跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。

9.如权利要求8所述的方法,其特征在于,所述资源显示界面包括一个滚动条,所述滚动条包括滚动轴和滚动滑块,所述资源滚动操作是控制所述滚动滑块在所述滚动轴上进行滑动的操作;

所述统计当前显示的K个预制件资源的持续显示时长,包括:

统计所述滚动滑块在目标位置上停留的时长,所述目标位置是指:检测到滚动停止操作时,所述滚动滑块在所述滚动轴上的位置;

将所述滚动滑块在所述目标位置上停留的时长,作为当前显示的K个预制件资源的持续显示时长。

10.如权利要求1所述的方法,其特征在于,所述在所述资源显示界面中显示所述目标预制件资源的预览图,包括:确定所述目标预制件资源在所述资源显示界面中的显示位置;

在所述资源显示界面中,将位于所述显示位置处的默认图标替换为所述目标预制件资源的预览图。

11.如权利要求1所述的方法,其特征在于,在生成任一预制件资源的预览图后,所述任一预制件资源的预览图被缓存至本地空间中;在选取了目标预制件资源之后,所述方法还包括:在所述本地空间中查找所述目标预制件资源的预览图;

若在所述本地空间中未查找到所述目标预制件资源的预览图,则触发执行所述实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象的步骤;

若在所述本地空间中查找到所述目标预制件资源的预览图,则在所述资源显示界面中显示查找到的预览图。

12.如权利要求11所述的方法,其特征在于,所述若在所述本地空间中查找到所述目标预制件资源的预览图,则所述方法还包括:检测所述目标预制件的修改记录;

如果未检测到所述修改记录,则触发执行所述在所述资源显示界面中显示查找到的预览图的步骤;

如果检测到所述修改记录,则获取所述目标预制件资源的修改时间;在所述目标预制件资源的修改时间不晚于查找到的预览图的生成时间的情况下,触发执行所述在所述资源显示界面中显示查找到的预览图的步骤,在所述目标预制件资源的修改时间晚于查找到的预览图的生成时间的情况下,更新查找到的所述目标预制件资源的预览图,并在所述资源显示界面中显示更新后的预览图。

13.如权利要求1所述的方法,其特征在于,所述方法还包括:响应于检测到的针对所述目标预制件资源的查看操作,对所述目标预制件资源所对应的N个虚拟对象进行动画仿真计算,得到仿真动画;

输出资源查看界面,并在所述资源查看界面中显示所述仿真动画。

14.一种资源预览装置,其特征在于,包括:

处理单元,用于在程序引擎的资源显示界面中,显示所述资源显示界面所涉及的多个预制件资源中的K个预制件资源;K为正整数,所述K个预制件资源中的各个预制件资源在所述资源显示界面中的显示形态为一个默认图标;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;

所述处理单元,还用于按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中;每隔预设时长从所述队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源;

所述处理单元,还用于实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;

所述处理单元,还用于对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;

预览单元,用于在所述资源显示界面中显示所述目标预制件资源的预览图。

15.一种计算机设备,包括输入接口和输出接口,其特征在于,还包括:处理器以及计算机存储介质;

其中,所述处理器适于实现一条或多条指令,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1‑13任一项所述的资源预览方法。

16.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1‑13任一项所述的资源预览方法。

说明书 :

资源预览方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及互联网技术领域,具体涉及计算机技术领域,尤其涉及一种资源预览方法、装置、设备及存储介质。

背景技术

[0002] 目前,在程序引擎(如游戏引擎)被使用的过程中,程序引擎可在资源显示界面显示多个预制件(Prefab)资源以及各个预制件资源的名称,以使程序引擎的使用者可根据自身需求使用这些预制件资源来开发基于虚拟场景(如游戏场景)的应用程序(如游戏程序);所谓的预制件资源是一种用于存储虚拟对象的信息以及配套的组件和属性的文件,其实例化为虚拟场景中的虚拟对象,才能在虚拟场景中表现的资源。
[0003] 在现有的程序引擎的资源显示界面中,所有预制件资源均表现为统一的图例(图标),这样会使得预制件资源的显示样式较为单一,程序引擎的使用者只能通过各个预制件资源的名称来分辨不同的预制件资源,从而使得程序引擎的使用者无法快速了解到各个预制件资源在虚拟场景的大致样貌,进而无法快速确定使用哪些预制件资源来开发相应的应用程序,影响应用程序的开发效率。

发明内容

[0004] 本申请实施例提供了一种资源预览方法、装置、设备及存储介质,可以丰富预制件资源的显示形态,使得程序引擎的使用者可以快速预览预制件资源在虚拟场景中的大致样貌,提升应用程序的开发效率。
[0005] 一方面,本申请实施例提供了一种资源预览方法,所述方法包括:
[0006] 从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;
[0007] 实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;
[0008] 对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;
[0009] 在所述资源显示界面中显示所述目标预制件资源的预览图。
[0010] 另一方面,本申请实施例提供了一种资源预览装置,所述装置包括:
[0011] 处理单元,用于从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;
[0012] 所述处理单元,还用于实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;
[0013] 所述处理单元,还用于对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;
[0014] 预览单元,用于在所述资源显示界面中显示所述目标预制件资源的预览图。
[0015] 在一种实施方式中,处理单元在用于对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图时,可具体用于:
[0016] 调用所述程序引擎提供的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像;
[0017] 根据预设图像尺寸对所述初始图像的图像尺寸进行缩略处理,得到所述初始图像对应的缩略图;
[0018] 将所述缩略图确定为所述目标预制件资源的预览图。
[0019] 另一种实施方式中,所述程序引擎提供的相机位于所述虚拟场景中;相应的,处理单元在用于调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像时,可具体用于:
[0020] 调整所述程序引擎提供的相机在所述虚拟场景中的位置,使所述相机对准所述N个虚拟对象;
[0021] 确定所述N个虚拟对象的包围盒,并根据所述包围盒的尺寸调整所述相机的拍摄范围,使调整后的拍摄范围为所述包围盒;
[0022] 在调整所述相机的位置和拍摄范围后,控制所述相机对所述N个虚拟对象进行拍摄,得到拍摄结果;对所述拍摄结果进行渲染,得到初始图像。
[0023] 另一种实施方式中,所述拍摄结果包括所述N个虚拟对象以及无效虚拟对象,所述无效虚拟对象是指所述虚拟场景中除所述N个虚拟对象以外的虚拟对象;相应的,处理单元在用于对所述拍摄结果进行渲染,得到初始图像时,可具体用于:
[0024] 分别为所述拍摄结果中的N个虚拟对象以及无效虚拟对象设定不同的渲染层级,所述N个虚拟对象具有相同的渲染层级;
[0025] 根据所述N个虚拟对象的渲染层级以及所述无效虚拟对象的渲染层级,对所述N个虚拟对象和所述无效虚拟对象进行分层渲染;
[0026] 将分层渲染所得到的包含所述N个虚拟对象的图像,作为初始图像。
[0027] 另一种实施方式中,处理单元还可用于:
[0028] 将所述相机的拍摄模式设置为正交投影模式,所述正交投影模式是指:将三维空间中的对象平行投影至二维图像,使得二维图像中的各像素点的深度值为零值的模式;
[0029] 在设置拍摄模式后,触发执行所述调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像的步骤。
[0030] 另一种实施方式中,在生成所述目标预制件资源的预览图之后,处理单元还可用于:
[0031] 删除所述N个虚拟对象;
[0032] 将所述相机的状态设置为初始状态,所述初始状态是指:对所述N个虚拟对象进行图像渲染之前,所述相机所处的状态;
[0033] 其中,所述相机所处的状态包括:位置、拍摄范围和拍摄模式。
[0034] 另一种实施方式中,处理单元在用于从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源时,可具体用于:
[0035] 在所述程序引擎的资源显示界面中,显示所述资源显示界面所涉及的多个预制件资源中的K个预制件资源;K为正整数,所述K个预制件资源中的各个预制件资源在所述资源显示界面中的显示形态为一个默认图标;
[0036] 按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中;
[0037] 每隔预设时长从所述队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源。
[0038] 另一种实施方式中,所述资源显示界面支持一次性显示M个预制件资源,M为正整数,当所述多个预制件资源的数量大于M时,所述资源显示界面未全部显示所述多个预制件资源,且K小于或等于M;相应的,处理单元还可用于:
[0039] 响应于资源滚动操作,控制所述多个预制件资源在所述资源显示界面进行滚动,并清空所述队列;其中,每滚动一次,所述资源显示界面就更新显示K个预制件资源;
[0040] 若检测到滚动停止操作,则停止在所述资源显示界面更新显示K个预制件资源,并跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。
[0041] 另一种实施方式中,在检测到滚动停止操作后,处理单元还可用于:
[0042] 统计当前显示的K个预制件资源的持续显示时长;
[0043] 若统计到的持续显示时长大于时长阈值,则触发执行所述跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。
[0044] 另一种实施方式中,所述资源显示界面包括一个滚动条,所述滚动条包括滚动轴和滚动滑块,所述资源滚动操作是控制所述滚动滑块在所述滚动轴上进行滑动的操作;相应的,处理单元在用于统计当前显示的K个预制件资源的持续显示时长时,可具体用于:
[0045] 统计所述滚动滑块在目标位置上停留的时长,所述目标位置是指:检测到滚动停止操作时,所述滚动滑块在所述滚动轴上的位置;
[0046] 将所述滚动滑块在所述目标位置上停留的时长,作为当前显示的K个预制件资源的持续显示时长。
[0047] 另一种实施方式中,预览单元在用于在所述资源显示界面中显示所述目标预制件资源的预览图时,可具体用于:
[0048] 确定所述目标预制件资源在所述资源显示界面中的显示位置;
[0049] 在所述资源显示界面中,将位于所述显示位置处的默认图标替换为所述目标预制件资源的预览图。
[0050] 另一种实施方式中,在生成任一预制件资源的预览图后,所述任一预制件资源的预览图被缓存至本地空间中;相应的,在选取了目标预制件资源之后,处理单元还可用于:
[0051] 在所述本地空间中查找所述目标预制件资源的预览图;
[0052] 若在所述本地空间中未查找到所述目标预制件资源的预览图,则触发执行所述实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象的步骤;
[0053] 若在所述本地空间中查找到所述目标预制件资源的预览图,则在所述资源显示界面中显示查找到的预览图。
[0054] 另一种实施方式中,若在所述本地空间中查找到所述目标预制件资源的预览图,则处理单元还可用于:
[0055] 检测所述目标预制件的修改记录;
[0056] 如果未检测到所述修改记录,则触发执行所述在所述资源显示界面中显示查找到的预览图的步骤;
[0057] 如果检测到所述修改记录,则获取所述目标预制件资源的修改时间;在所述目标预制件资源的修改时间不晚于查找到的预览图的生成时间的情况下,触发执行所述在所述资源显示界面中显示查找到的预览图的步骤,在所述目标预制件资源的修改时间晚于查找到的预览图的生成时间的情况下,更新查找到的所述目标预制件资源的预览图,并在所述资源显示界面中显示更新后的预览图。
[0058] 另一种实施方式中,处理单元还可用于:
[0059] 响应于检测到的针对所述目标预制件资源的查看操作,对所述目标预制件资源所对应的N个虚拟对象进行动画仿真计算,得到仿真动画;
[0060] 输出资源查看界面,并在所述资源查看界面中显示所述仿真动画。
[0061] 再一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括输入接口和输出接口,所述计算机设备还包括:
[0062] 处理器以及计算机存储介质;
[0063] 其中,所述处理器适于实现一条或多条指令,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行上述所提及的资源预览方法。
[0064] 再一方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述所提及的资源预览方法。
[0065] 再一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括一条或多条指令;所述计算机程序中的一条或多条指令被处理器执行时,实现上述所提及的资源预览方法。
[0066] 本申请实施例针对程序引擎的资源显示界面所涉及的多个预制件资源中的目标预制件资源,可通过实例化该目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象。然后,可通过对这N个虚拟对象进行图像渲染,来生成目标预制件资源的预览图,并在资源显示界面中显示目标预制件资源的预览图。可见,本申请实施例可丰富预制件资源的显示形态,使得资源显示界面中的各个预制件资源不再表现为统一的图标。并且,由于目标预制件资源在虚拟场景中被表现为N个虚拟对象,因此通过对N个虚拟对象进行图像渲染,可使得最终生成的预览图可以准确地呈现出目标预制件资源在虚拟场景中的大致样貌,那么通过显示目标预制件资源的预览图,便可使得程序引擎的使用者通过浏览该预览图来快速预览目标预制件资源在虚拟场景中的表现,从而快速确定是否需使用目标预制件资源来进行应用开发,进而提升应用程序的开发效率。

附图说明

[0067] 为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0068] 图1a是本申请实施例提供的一种服务器和终端共同执行资源预览方案的示意图;
[0069] 图1b是本申请实施例提供的另一种服务器和终端共同执行资源预览方案的示意图;
[0070] 图2是本申请实施例提供的一种资源预览方法的流程示意图;
[0071] 图3a是本申请实施例提供的一种虚拟对象的示意图;
[0072] 图3b是本申请实施例提供的一种逐渐将资源显示界面中的K个默认图标更新显示为K个预览图的示意图;
[0073] 图4是本申请另一实施例提供的一种资源预览方法的流程示意图;
[0074] 图5a是本申请实施例提供的一种在本地空间中缓存多个预制件资源的预览图的示意图;
[0075] 图5b是本申请实施例提供的一种N个虚拟对象的包围盒的示意图;
[0076] 图5c是本申请实施例提供的一种虚拟场景的虚拟对象的分布示意图;
[0077] 图5d是本申请实施例提供的一种各个虚拟对象的动画表现的示意图;
[0078] 图5e是本申请实施例提供的一种仿真动画的示意图;
[0079] 图5f是本申请实施例提供的一种对目标预制件资源进行实例化所得到的虚拟对象的示意图;
[0080] 图5g是本申请实施例提供的一种缩略图的示例图;
[0081] 图5h是本申请实施例提供的一种生成缩略图并加载缩略图的流程示意图;
[0082] 图6是本申请实施例提供的一种资源预览装置的结构示意图;
[0083] 图7是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0084] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0085] 在本申请实施例中,涉及AI(Artificial Intelligence,人工智能)技术。所谓的AI技术是指:利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统的技术。换句话说,AI是计算机科学的一个综合技术;其主要通过了解智能的实质,生产出一种新的能以人类智能相似的方式做出反应的智能机器,使得智能机器具有感知、推理与决策等多种功能。相应的,AI技术是一门综合学科,涉及领域广泛,其一般可包括程序引擎、专用AI芯片,云计算、分布式存储、大数据技术,操作/交互系统以及机电一体化等技术,其既有硬件层面的技术,也有软件层面的技术。
[0086] 具体的,本申请实施例主要涉及AI技术中的程序引擎,所谓的程序引擎是指可用于开发应用程序并在应用程序中显示虚拟场景的引擎,此处提及的虚拟场景是指可在屏幕中进行显示的场景。例如,程序引擎可以是图形处理引擎。此情况下的应用程序可以是图像显示程序,虚拟场景可以是对真实世界中的场景进行仿真所得到的场景,如对真实世界中的自动驾驶场景或景区游玩场景进行仿真所得到的场景;或者,虚拟场景也可以是半仿真半虚构的场景,例如在真实世界对应的仿真世界中叠加了虚构人物的场景;又或者,该虚拟场景还可以是纯虚构的场景,例如影视剧或电影中的场景,等等。
[0087] 又如,程序引擎可以是游戏引擎,此情况下的应用程序可以是游戏程序(简称游戏),虚拟场景可以是游戏场景。示例性的,此处提及的游戏引擎可以是Unity、Unreal Engine或者Cocos等。其中,Unity是一种通用的游戏引擎,在游戏开发领域有着非常广泛的应用,用户可使用Unity创作、运营和变现任何实时互动的2D(二维)和3D(三维)内容,Unity支持的平台可包括手机、平板电脑、PC(Personal Computer,个人计算机)、游戏主机、增强现实(Augmented Reality,AR)设备和虚拟现实(Virtual Reality,VR)设备,等等。Unreal Engine的中文名称是虚幻引擎,其是一款面向所有开发者的游戏引擎;Cocos是一种可用于快速开发游戏所需求的各种图形界面东西的游戏引擎。
[0088] 程序引擎中可包括大量的预制件(prefab)资源,预制件资源可用于存储虚拟场景中的虚拟对象的信息以及配套的组件和属性;其可以充当一种模板功能,是一个可重复使用的资源,在程序引擎中得到了大量的使用。程序引擎中的所有预制件资源均需实例化为虚拟场景中的虚拟对象,才能在虚拟场景中表现;并且,程序引擎为基于实例化所生成的每一个虚拟对象均支持了相应的渲染功能,通过此渲染功能可将相应的虚拟对象渲染显示在屏幕上。其中,实例化是一种将预制件资源创建为虚拟场景中的具体的虚拟对象的操作,一个预制件资源可以实例化为一个或多个虚拟对象。
[0089] 针对程序引擎中的大量预制件资源,本申请实施例提出一种资源预览方案,以丰富各个预制件资源在程序引擎的资源显示界面中的显示形态,使得程序引擎的使用者可以快速预览各个预制件资源在虚拟场景中的大致样貌,提升应用程序的开发效率。具体的,该方案的大致原理如下:针对需在程序引擎的资源显示界面中所显示的任一预制件资源而言,可通过实例化该任一预制件资源,得到该任一预制件资源在虚拟场景中所对应的一个或多个虚拟对象。其次,可通过对这一个或多个虚拟对象进行图像渲染,来生成该任一预制件资源的预览图。然后,可在资源显示界面中显示该任一预制件资源的预览图。
[0090] 在具体实现中,该资源预览方案可由一个计算机设备执行,该计算机设备可以是终端或服务器。或者,上述所提及的资源预览方案可由终端和服务器共同执行。例如参见图1a所示,可由服务器负责实例化该任一预制件资源,并对通过实例化所得到的任一预制件资源在虚拟场景中的一个或多个虚拟对象进行图像渲染,来生成预览图,然后将预览图发送给终端,由终端在资源显示界面中显示该预览图。又如参见图1b所示,也可由终端负责实例化任一预制件资源,然后将通过实例化所得到的各个虚拟对象发送给服务器,由服务器负责对接收到的各个虚拟对象进行图像渲染,得到该任一预制件资源的预览图,然后将预览图返回给终端,由终端在资源显示界面中显示该预览图。
[0091] 其中,上述提及的终端可以包括但不限于:智能手机、电脑(如平板电脑、笔记本电脑、台式计算机等)、智能穿戴设备(如智能手表、智能眼镜)、智能语音交互设备、智能家电(如智能电视)、车载终端或飞行器等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。进一步的,终端和服务器可位于区块链网络内或区块链网络外,对此不作限定;更进一步的,终端和服务器还可将内部所存储的任一数据上传至区块链网络进行存储,以防止内部所存储的数据被篡改,提升数据安全性。
[0092] 基于上述资源预览方案的相关描述,本申请实施例提出了一种资源预览方法。该资源预览方法可由上述所提及的计算机设备(终端或者服务器)执行,也可由终端和服务器共同执行;为便于阐述,后续均以计算机设备执行该资源预览方法为例进行说明。请参见图2,该资源预览方法可包括如下步骤S201‑S204:
[0093] S201,从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源。
[0094] 在本申请实施例中,程序引擎的资源显示界面所涉及的多个预制件资源是指:需在资源显示界面中进行显示的多个预制件资源。当计算机设备通过步骤S201选取目标预制件资源时,这多个预制件资源可以是未显示在资源显示界面中,也可以是已全部显示在资源显示界面中,还可以是部分显示在资源显示界面中,对此不作限定。
[0095] 其中,一个预制件资源用于被实例化为程序引擎提供的虚拟场景中的一个或多个虚拟对象。在本申请实施例中,虚拟对象可理解成是虚拟场景中的所有对象的基类(统称);也就是说,虚拟场景中的任一对象均可称为虚拟对象。例如,虚拟对象可以是虚拟场景中的可活动对象,如游戏场景中的虚拟角色,游戏场景中的虚拟动物等;或者,虚拟对象可以是虚拟场景中的静态物体元素,如虚拟草地、虚拟建筑物等。应理解的是,虚拟场景中的各个虚拟对象可以均是可活动对象,也可以同时包含静态物体元素和可活动对象,对此不作限定。另外,当虚拟场景是游戏场景时,虚拟对象又可称为游戏对象(GameObject),游戏对象是游戏引擎(如Unity)中运行的游戏场景中的所有对象(如虚拟角色、游戏道具等)的基类。
[0096] 针对任一预制件资源而言,如果该任一预制件资源被实例化为虚拟场景中的多个虚拟对象,那么这多个虚拟对象中的各个虚拟对象之间可以是相互的,也可以是相互关联的,对此不作限定。例如,以虚拟对象为游戏对象(GameObject)为例,若某预制件资源中存储了某个游戏对象a的相关信息,而这个游戏对象a的内部又包含了多个子GameObject,那么对该预制件资源进行实例化所得到的多个虚拟对象中便可包括该游戏对象a和对应的多个子GameObject,且游戏对象a和这多个子GameObject之间存在父子关系。其中,子GameObject是指在显示过程中,随着父GameObject的移动而进行移动的GameObject。例如,参见图3a所示,父GameObject可以是虚拟角色30,其可具有如下子GameObject:虚拟角色30的头发301,虚拟角色30所穿的衣服302和鞋子303,以及跟随虚拟角色30进行移动的宠物狗304。
[0097] 在一种具体实现中,程序引擎可采用如下资源预览逻辑:每次需在资源显示界面显示多个预制件资源中的K个预制件资源时,直接显示这K个预制件资源中的各个预制件资源的预览图,以提升预制件资源的预览效率。那么在此情况下,计算机设备在执行步骤S201时,可以从程序引擎的资源显示界面所涉及的多个预制件资源中,确定当前需被显示在资源显示界面中的K个预制件资源;然后,依次遍历确定出的K个预制件资源,将当前遍历的预制件资源作为目标预制件资源。
[0098] 另一种具体实现中,程序引擎可采用如下资源预览逻辑:每次需在资源显示界面显示多个预制件资源中的K个预制件资源时,先将K个预制件资源显示为默认图标,然后每隔预设时长,就将一个默认图标更新为相应预制件资源的预览图,以将K个预制件资源的预览图的计算量分散到不同的时间点,从而减轻计算负担,减少用户使用程序引擎中的编辑器的影响。那么在此情况下,计算机设备在执行步骤S201时,可在程序引擎的资源显示界面中,显示资源显示界面所涉及的多个预制件资源中的K个预制件资源,这K个预制件资源中的各个预制件资源在资源显示界面中的显示形态为一个默认图标;然后,按照K个预制件资源在资源显示界面中的排列顺序,将K个预制件资源的资源标识依次添加至队列中;每隔预设时长从队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源。
[0099] 其中,上述提及的K为正整数,且小于或等于资源显示界面所涉及的多个预制件资源的数量。进一步的,设资源显示界面支持一次性显示M个预制件资源,M为正整数;那么,当多个预制件资源的数量小于或等于M时,由于此时的资源显示界面可一次全部显示这多个预制件资源,所以此情况下的K的取值等于多个预制件资源的数量。当多个预制件资源的数量大于M时,由于此时的资源显示界面无法一次全部显示这多个预制件资源,多个预制件资源可在资源显示界面进行滚动显示,每次最多显示M个预制件资源,所以此情况下的K小于或等于M。需说明的是,多个预制件资源在资源显示界面进行滚动显示时,滚动方向可以是资源显示界面的竖直方向(如资源显示界面的顶部指向底部的方向),或者资源显示界面的水平方向(如资源显示界面的左侧指向右侧的方向)。
[0100] S202,实例化目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象。
[0101] 在具体实现中,计算机设备可通过调用程序引擎中内置的目标代码,对目标预制件资源进行实例化,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象,N为正整数。需要说明的是,此处提及的目标代码是指基于实例化的操作原理所编写的代码,本申请实施例对该目标代码中的各代码语句不作限定。
[0102] S203,对N个虚拟对象进行图像渲染,以生成目标预制件资源的预览图。
[0103] 在具体实现中,程序引擎中可提供具有图像渲染能力的相机,所谓的相机是指一种用于呈现虚拟场景在至少一个视角方向下的视图的组件。程序引擎提供的相机可位于虚拟场景中,但本申请实施例对相机在虚拟场景中的位置不作限定,例如其可以位于虚拟场景中的某一虚拟对象所处的位置,或者位于虚拟场景中除各虚拟对象所处位置以外的任一位置,等等。
[0104] 那么在执行步骤S203时,计算机设备可调用程序引擎提供的相机,在虚拟场景中对N个虚拟对象进行图像渲染,得到初始图像。然后,可将该初始图像作为目标预制件资源的预览图。或者,根据预设图像尺寸对初始图像的图像尺寸进行缩略处理,得到初始图像对应的缩略图,并将该缩略图确定为目标预制件资源的预览图。其中,缩略图的图像尺寸等于预设图像尺寸,该预设图像尺寸可根据业务需求设置,例如其可以设置为64×64的尺寸。应理解的是,缩略处理是一种图像压缩处理,缩略图相当于是对初始图像进行压缩处理后的小图;通过对初始图像的图像尺寸进行缩略处理,可以降低图像尺寸,使得最终基于初始图像所生成的预览图的图像尺寸较小,这样可减小预览图的内存占用空间,从而减小预览图对程序引擎的运行性能的影响。
[0105] 进一步的, 程序引擎提供的相机可具有多种拍摄模式,如正交投影模式、透视投影模式等。所谓的正交投影模式是指:将三维空间中的对象平行投影至二维图像,使得二维图像中的各个像素点的深度值为零值的模式;透视投影模式是指:可基于中心投影法将三维空间中的对象投射到二维图像上,从而获得的一种较为接近视觉效果的单面投影图的模式。通过正交投影模式所的图像可呈现出各个对象具有相同大小的效果,而通过透视投影模式所得到的图像可呈现出各个对象近大远小(即离相机越近的对象的尺寸越大)的效果。
[0106] 那么可选的,为了在相机对N个虚拟对象进行图像渲染的过程中,排除近大远小的干扰,使得相机渲染得到的初始图像中的各个虚拟对象的尺寸是相同的,从而使得最终得到的预览图可以清晰地呈现各个虚拟对象,计算机设备在调用相机之前,可先将相机的拍摄模式设置为正交投影模式;在设置拍摄模式后,触发执行调用程序引擎中的相机,在虚拟场景中对N个虚拟对象进行图像渲染,得到初始图像的步骤。当然应理解的是,考虑到N个虚拟对象在虚拟场景中的实际显示效果是存在近大远小的效果的,那么为了确保最终得到的预览图可以较为真实地反映N个虚拟对象在虚拟场景中的实际样貌,计算机设备也可选择将相机的拍摄模式设置为透视投影模式。
[0107] S204,在资源显示界面中显示目标预制件资源的预览图。
[0108] 基于前述步骤S201的相关描述可知,程序引擎所采用的资源预览逻辑可以是以下任一种:①每次需在资源显示界面显示多个预制件资源中的K个预制件资源时,直接显示这K个预制件资源中的各个预制件资源的预览图;②每次需在资源显示界面显示多个预制件资源中的K个预制件资源时,先将K个预制件资源显示为默认图标,然后每隔预设时长,就将一个默认图标更新为相应预制件资源的预览图。那么,随着程序引擎所采用的资源预览逻辑的不同,步骤S204的具体实施方式也随之不同,具体如下:
[0109] 当程序引擎采用的资源预览逻辑为第①种逻辑时,由于此情况下的目标预制件资源未在资源显示界面进行显示,因此步骤S204的具体实施方式可以是:检测K个预制件资源中除目标预制件资源以外的其他预制件资源的预览图是否均已生成;若是,则直接在资源显示界面中同时显示目标预制件资源的预览图,以及其他预制件资源的预览图;若否,则继续生成其他预制件资源的预览图,在其他预制件资源的预览图均已生成后,再在资源显示界面中同时显示目标预制件资源的预览图,以及其他预制件资源的预览图。
[0110] 当程序引擎采用的资源预览逻辑为第②种逻辑时,由于此情况下的目标预制件资源已在资源显示界面中进行显示,且其表现为一个默认图标,因此步骤S204的具体实施方式可以是:确定目标预制件资源在资源显示界面中的显示位置,然后在资源显示界面中,将位于该显示位置处的默认图标替换为目标预制件资源的预览图。
[0111] 应理解的是,如果程序引擎采用的资源预览逻辑是第②种逻辑,那么基于前述步骤S201‑S204的相关描述可知,本申请实施例可实现如图3b所示效果:当用户根据自身需求在资源显示界面的左侧区域中选中相应的文件夹之后,程序引擎可将该文件夹中的预制件资源作为资源显示界面所涉及的多个预制件资源,然后从这多个预制件资源中选取K个预制件资源,并在资源显示界面的右侧区域中,将选取K个预制件资源显示为K个默认图标。每隔预设时长,便可将一个默认图标更新为相应预制件资源的预览图,从而实现慢慢地将资源显示界面中的K个默认图标更新显示为K个预制件资源的预览图。
[0112] 需要说明的是,由于本申请实施例所提及的资源显示界面可实现对预制件资源的大致样貌进行预览,因此该资源显示界面也可称为资源预览界面。并且,在本申请实施例所提出的资源预览方法的具体实施方式中,涉及到用户信息等相关的数据(如用户选中某一文件夹的操作等),当以上方法实施例运用到具体产品或技术中时,这些相关数据是在获得用户许可或者同意的情况下收集的,且相关数据的收集、使用和处理遵守相关国家和地区的相关法律法规和标准。
[0113] 本申请实施例针对程序引擎的资源显示界面所涉及的多个预制件资源中的目标预制件资源,可通过实例化该目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象。然后,可通过对这N个虚拟对象进行图像渲染,来生成目标预制件资源的预览图,并在资源显示界面中显示目标预制件资源的预览图。可见,本申请实施例可丰富预制件资源的显示形态,使得资源显示界面中的各个预制件资源不再表现为统一的图标。并且,由于目标预制件资源在虚拟场景中被表现为N个虚拟对象,因此通过对N个虚拟对象进行图像渲染,可使得最终生成的预览图可以准确地呈现出目标预制件资源在虚拟场景中的大致样貌,那么通过显示目标预制件资源的预览图,便可使得程序引擎的使用者通过浏览该预览图来快速预览目标预制件资源在虚拟场景中的表现,从而快速确定是否需使用目标预制件资源来进行应用开发,进而提升应用程序的开发效率。
[0114] 基于上述图2所示的方法实施例,本申请实施例进一步提出了一种更为具体的资源预览方法;在本申请实施例中,主要以计算机设备执行该资源预览方法为例进行说明。请参见图4所示,该资源预览方法可包括以下步骤S401‑S407:
[0115] S401,在程序引擎的资源显示界面中,显示资源显示界面所涉及的多个预制件资源中的K个预制件资源。
[0116] S402,按照K个预制件资源在资源显示界面中的排列顺序,将K个预制件资源的资源标识依次添加至队列中。
[0117] 在步骤S401‑S402中,K为正整数,K个预制件资源中的各个预制件资源在资源显示界面中的显示形态为一个默认图标。任一预制件资源的资源标识可以包括以下至少一项:相应预制件资源的资源名称,以及相应预制件资源的存储路径,等等。
[0118] 由前述可知,资源显示界面可支持一次性显示M个预制件资源,当多个预制件资源的数量大于M时,资源显示界面无法全部显示多个预制件资源,此情况下的K小于或等于M。在此情况下,计算机设备可支持用户输入资源滚动操作,使得计算机设备可响应于资源滚动操作(即触发滚动显示多个预制件资源的操作),控制多个预制件资源在资源显示界面进行滚动。其中,每滚动一次,资源显示界面就更新显示K个预制件资源;更新显示K个预制件资源是指:显示新的K个预制件资源的资源名称,以及在新的K个预制件资源的各个预制件资源的显示位置分别显示一个默认图标。应理解的是,每次滚动后所显示的新的K个预制件资源和滚动前所显示的K个预制件资源之间,可能存在相同的至少一个预制件资源,也可能不存在相同的预制件资源,对此不作限定。
[0119] 另外,计算机设备还可响应于资源滚动操作,清空队列;当队列为空时,计算机设备将不会执行后续步骤S403‑S407。也就是说,计算机设备在滚动多个预制件资源的过程中,不会执行预览图的生成操作,这样不仅避免因消耗处理资源生成预览图,而影响多个预制件资源的滚动显示的流程性的情况,还可避免消耗处理资源来生成了某一预制件资源的预览图,但用户不存在预览该预制件资源的需求的情况,从而避免处理资源的浪费。
[0120] 进一步的,若检测到滚动停止操作(即触发停止滚动显示多个预制件资源的操作),则计算机设备可停止在资源显示界面更新显示K个预制件资源,并跳转至按照K个预制件资源在资源显示界面中的排列顺序,将K个预制件资源的资源标识依次添加至队列中的步骤,即跳转至步骤S402,从而通过执行步骤S402‑S407来实现在资源显示界面中,慢慢将当前显示的K个预制件资源更新显示为相应的预览图。应理解的是,当跳转至步骤S402时,步骤S402所提及的K个预制件资源便是指的:在检测到滚动停止操作时,资源显示界面中所显示的K个预制件资源。可选的,为了避免误识别滚动停止操作,从而误执行步骤S402‑S407的情况,计算机设备在检测到滚动停止操作后,还可先统计当前显示的K个预制件资源的持续显示时长,若统计到的持续显示时长大于时长阈值,则触发执行跳转至步骤S402的步骤;若统计到的持续显示时长小于或等于时长阈值,则可以不作任何处理。
[0121] 需要说明的是,本申请实施例对上述提及的资源滚动操作和滚动停止操作不作限定。例如,资源显示界面可包括一个滚动条,滚动条包括滚动轴和滚动滑块;在此情况下,资源滚动操作可以是控制滚动滑块在滚动轴上进行滑动的操作,滚动停止操作可以是控制滚动滑块停止在滚动轴上进行滑动的操作。又如,资源滚动操作可以是输入用于指示滚动显示多个预制件资源的语音口令的操作,资源停止操作可以是输入用于指示停止滚动显示多个预制件资源的语音口令的操作,等等。另外,当资源显示界面包括滚动条时,计算机设备在统计当前显示的K个预制件资源的持续显示时长时,可以统计滚动滑块在目标位置上停留的时长,该目标位置是指:检测到滚动停止操作时,滚动滑块在滚动轴上的位置;然后,将滚动滑块在目标位置上停留的时长,作为当前显示的K个预制件资源的持续显示时长。
[0122] S403,每隔预设时长从队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源。
[0123] 其中,预设时长可根据经验值或者业务需求设置。在一种实施方式中,该预设时长的单位可以是时间单位;例如,设置预设时长为1ms(毫秒)或者5ms,等等。另一种实施方式中,考虑到用户使用程序引擎开发虚拟场景以及相应的应用程序时,程序引擎会运行该虚拟场景所涉及的各帧画面,以实现虚拟场景的显示,那么该预设时长的单位也可以是帧数单位;例如,设置预设时长为10帧,此情况下,计算机设备在执行步骤S403时,便是每隔10帧,从队列中取出一个资源标识,并将当前取出的资源标识对应的预制件资源,确定为目标预制件资源。
[0124] 需要说明的是,由于计算机设备每隔预设时长,便会从队列中取出一个资源标识,以确定出目标预制件资源,从而触发执行后续步骤S404‑S407,直至队列中不再包括资源标识;因此可知,计算机设备可以持续地生成K个预制件资源的预览图。可选的,在生成任一预制件资源的预览图之后,可将该任一预制件资源的预览图缓存至本地空间(即本地硬盘)中,以供资源显示界面重复使用,即当检测到用户需在资源显示界面中再次预览该任一预制件资源时,可以在资源显示界面中显示已缓存的预览图。示例性的,假设计算机设备当前已生成4个预制件资源的预览图,这4个预制件资源的资源名称分别是:Sc_01.png,Sc_02.png,Sc_03.png,Sc_04.png;并且,设这4个预制件资源的预览图均被缓存在本地硬盘内的磁盘C中,那么这4个预制件资源的预览图的缓存示意图可参见图5a所示。
[0125] 还需说明的是,计算机设备在将任一预制件资源的预览图缓存至本地空间中时,可以将该任一预制件资源的预览图,缓存至相应预制件资源的存储路径下,以便于后续在需重复使用该任一预制件资源的预览图时,可以基于任一预制件资源的存储路径快速查找到相应的预览图。当然,也可将任一预制件资源的预览图和相应的预制件资源存储在不同的存储路径下,对此不作限定。
[0126] 基于上述描述,若在生成任一预制件资源的预览图之后,该任一预制件资源的预览图被缓存至本地空间中,则计算机设备在通过步骤S403确定出目标预制件资源之后,考虑到可能历史已生成并缓存目标预制件资源的预览图,因此为了提升预览图的显示效率,且避免浪费处理资源生成相同的预览图的情况,计算机设备可以先在本地空间中查找该目标预制件资源的预览图。具体的,若目标预制件资源的资源标识包括目标预制件资源的存储路径,且计算机设备是通过将预制件资源的预览图缓存至相应预制件资源的存储路径下,来实现预览图的缓存,则计算机设备在本地空间中查找到目标预制件资源的预览图时,可直接在从队列取出的目标预制件资源的资源标识中的存储路径下,查找目标预制件资源的预览图,以提升预览图的查找效率。若计算机设备是通过将预制件资源的预览图和相应的预制件资源存储至不同存储路径下,来实现预览图的缓存,则计算机设备可遍历本地空间中的各个存储路径,并在当前遍历的存储路径下查找目标预制件资源的预览图;若当前遍历的存储路径下未查找到目标预制件资源的预览图,则继续遍历,直至各个存储路径均被遍历。
[0127] 若在本地空间中未查找到目标预制件资源的预览图,则可触发执行步骤S404。若在本地空间中查找到目标预制件资源的预览图,则计算机设备可在资源显示界面中显示查找到的预览图。需要说明的是,计算机设备在资源显示界面显示查找到的预览图的方式,与前述步骤S204所提及得到显示预览图的具体实施方式类似,在此不再赘述。进一步的,若在本地空间中查找到目标预制件资源的预览图,则表明历史生成过目标预制件资源的预览图,但在历史生成目标预制件资源的预览图之后,可能存在目标预制件资源被修改,从而导致目标预制件资源对应的虚拟对象发生变化的情况,在此情况下,本地空间中的目标预制件资源的预览图所包括的虚拟对象,与目标预制件资源实际对应的虚拟对象之间存在一定的偏差,若直接在资源显示界面中显示查找到的目标预制件资源的预览图,则会导致用户通过预览图所了解到的目标预制件资源的样貌和目标预制件资源的实际样貌存在偏差。
[0128] 基于此,为了提升资源预览的准确性,若在本地空间中查找到目标预制件资源的预览图,则计算机设备可进一步检测目标预制件资源的修改记录。如果未检测到修改记录,则可触发在资源显示界面中显示查找到的预览图的步骤。如果检测到修改记录,则获取目标预制件资源的修改时间;在目标预制件资源的修改时间不晚于查找到的预览图的生成时间的情况下,触发执行在资源显示界面中显示查找到的预览图的步骤,在目标预制件资源的修改时间晚于查找到的预览图的生成时间的情况下,更新目标预制件资源的预览图,并在资源显示界面中显示更新后的预览图。其中,更新查找到的目标预制件资源的预览图的方式是:重新生成目标预制件资源的预览图,采用重新生成的预览图替换查找到的目标预制件资源的预览图;应理解的是,重新生成目标预制件资源的预览图的方式与后续步骤S404‑S406所涉及的具体实施方式相同,在此不再赘述。
[0129] S404,实例化目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象,N为正整数。
[0130] S405,调用程序引擎提供的相机,在虚拟场景中对N个虚拟对象进行图像渲染,得到初始图像。
[0131] 在一种具体实现中,为了提升预览图的生成效率,计算机设备在执行步骤S405时,可调整程序引擎提供的相机在虚拟场景中的位置,使相机对准N个虚拟对象。然后,直接调用程序引擎提供的相机,在虚拟场景中对N个虚拟对象进行拍摄,得到拍摄结果;并对拍摄结果进行渲染,得到初始图像。
[0132] 另一种具体实现中,为了确保N个虚拟对象位于初始图像的中心,且初始图像覆盖N个虚拟对象的全貌,提升初始图像的图像质量,从而提升基于初始图像所得到的预览图的图像质量,计算机设备在执行步骤S405时,可调整程序引擎提供的相机在虚拟场景中的位置,使相机对准N个虚拟对象;以及,确定N个虚拟对象的包围盒,并根据包围盒的尺寸调整相机的拍摄范围,使调整后的拍摄范围为该包围盒。在调整相机的位置和拍摄范围后,控制相机对N个虚拟对象进行拍摄,得到拍摄结果;然后,对拍摄结果进行渲染,得到初始图像。
[0133] 其中,包围盒可以是指N个虚拟对象的最小外包框,即包含N个虚拟对象的最小矩形框;例如参见图5b所示:设N个虚拟对象包括虚拟对象50和虚拟对象51,那么包围盒便可以是采用标号52标识的矩形框。拍摄范围为包围盒的含义是指:只有包围盒中的虚拟对象会被相机拍摄到,位于包围盒外的任何对象均不会被相机拍摄到。需要说明的是:包围盒可以是通过调用程序引擎提供的引擎接口来计算得到,本申请实施例对包围框的具体计算方式不作限定。并且,本申请实施例对相机的位置和拍摄范围的调整顺序不作限定,可以是同时调整相机的位置和拍摄范围,也可以是先调整位置再调整拍摄范围,还可以是先调整拍摄范围再调整位置。
[0134] 进一步的,在上述提及的两种具体实现中,计算机设备在对拍摄结果进行渲染,得到初始图像时,可以是直接对拍摄结果进行渲染,得到初始图像。或者,考虑到拍摄结果除了包括N个虚拟对象以外,还可能包括无效虚拟对象,所谓的无效虚拟对象是指虚拟场景中除N个虚拟对象以外的虚拟对象,例如参见图5c所示,虚拟场景中包括虚拟对象50、虚拟对象51和虚拟对象53,其中虚拟对象50和虚拟对象51属于N个虚拟对象,由于虚拟对象53位于虚拟对象50和虚拟对象51之间,因此即使将相机的拍摄范围调整为N个虚拟对象的包围框52,仍然会使得拍摄结果中包括虚拟对象53这一无效虚拟对象。
[0135] 基于此,当拍摄结果包括N个虚拟对象以及无效虚拟对象时,为了提升初始图像的图像质量(如信息有效性和准确性),从而提升预览图的图像质量,避免后续用户在浏览预览图时,将无效虚拟对象误认为是目标预制件资源对应的虚拟对象,造成用户对目标预制件资源的大致样貌进行错误认知这一情况,计算机设备可以在对拍摄结果进行渲染,得到初始图像时,可以为拍摄结果中的N个虚拟对象以及无效虚拟对象设定不同的渲染层级,N个虚拟对象具有相同的渲染层级;其次,根据N个虚拟对象的渲染层级以及无效虚拟对象的渲染层级,对N个虚拟对象和无效虚拟对象进行分层渲染;然后,将分层渲染所得到的包含N个虚拟对象的图像,作为初始图像。其中,所谓的分层渲染是指:通过为不同的对象设定不同的渲染层级,使得相机可以选择性地决定渲染哪些渲染层级中的对象的渲染机制。
[0136] S406,根据预设图像尺寸对初始图像的图像尺寸进行缩略处理,得到初始图像对应的缩略图,并将缩略图确定为目标预制件资源的预览图。
[0137] 可选的,为了使得用户在使用程序引擎的过程中,不会感知到计算机设备在后台对目标预制件资源执行的实例化操作以及相应的图像渲染操作,使得实例化操作和图像渲染操作是一种无痕操作,计算机设备在生成目标预制件资源的预览图之后,计算机设备可以删除N个虚拟对象,以及将相机的状态设置为初始状态,所谓的初始状态是指:对N个虚拟对象进行图像渲染之前,相机所处的状态;进一步的,相机所处的状态包括:位置、拍摄范围和拍摄模式等等。
[0138] S407,确定目标预制件资源在资源显示界面中的显示位置,在资源显示界面中,将位于该显示位置处的默认图标替换为目标预制件资源的预览图。
[0139] 可选的,本申请实施例中的每个虚拟对象均可具有自己的动画表现,如图5d所示。在此情况下,当用户想要查看目标预制件资源在虚拟场景中的全貌时,可以输入针对该目标预制件资源的查看操作,该查看操作可以是对资源显示界面中所显示的目标预制件资源的资源名称的触发操作(如点击操作或按压操作),也可以是对资源显示界面中的目标预制件资源的预览图的触发操作,还可以是输入用于指示查看目标预制件资源的语音口令的操作,等等。相应的,计算机设备可响应于检测到的针对目标预制件资源的查看操作,对目标预制件资源所对应的N个虚拟对象进行动画仿真计算,得到仿真动画;所谓的动画仿真计算是指对虚拟对象在虚拟场景中的显示效果进行仿真的操作,通过动画仿真计算所得到的仿真动画所呈现的效果,与N个虚拟对象在虚拟场景中的实际显示效果相同。其次,可输出资源查看界面,具体可以从资源显示界面切换至资源查看界面,或者在资源显示界面上,以浮窗的形式显示资源查看界面。然后,可在资源查看界面中显示仿真动画。示例性的,设N个虚拟对象包括图5e中的左侧区域中的各个对象标识所指示的虚拟对象,那么对这N个虚拟对象进行动画仿真计算所得到的仿真动画可包括图5e中的右侧区域中的各帧画面。通过这几帧画面可知,N个虚拟对象的显示形态均随着时间进行动态变化,从而可知本申请实施例可实现同时呈现N个虚拟对象中的各个虚拟对象的动画,这样可增强用户查看预制件资源的效果,有助于产品(如应用程序)开发效率的提升。
[0140] 应理解的是,若计算机设备在生成目标预制件资源的预览图之后,未删除N个虚拟对象,则计算机设备在响应于针对目标预制件资源的查看操作时,可直接调用程序引擎提供的仿真计算接口对这N个虚拟对象进行动画仿真计算,得到仿真动画;若计算机设备在生成目标预制件资源的预览图之后,删除了N个虚拟对象,则计算机设备在响应于针对目标预制件资源的查看操作时,可先实例化该目标预制件资源,得到N个虚拟对象,然后调用程序引擎提供的仿真计算接口对这N个虚拟对象进行动画仿真计算,得到仿真动画。例如,参见图5f中的右侧图所示,在资源显示界面中显示了目标预制件资源的预览图(采用标号53标识的图)之后,若用户输入了针对目标预制件资源的查看操作,则计算机设备可对目标预制件资源进行实例化,以创建出图5f的左侧图所示的虚拟对象54。
[0141] 本申请实施例针对程序引擎的资源显示界面所涉及的多个预制件资源中的目标预制件资源,可通过实例化该目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象。然后,可通过对这N个虚拟对象进行图像渲染,来生成目标预制件资源的预览图,并在资源显示界面中显示目标预制件资源的预览图。可见,本申请实施例可丰富预制件资源的显示形态,使得资源显示界面中的各个预制件资源不再表现为统一的图标。并且,由于目标预制件资源在虚拟场景中被表现为N个虚拟对象,因此通过对N个虚拟对象进行图像渲染,可使得最终生成的预览图可以准确地呈现出目标预制件资源在虚拟场景中的大致样貌,那么通过显示目标预制件资源的预览图,便可使得程序引擎的使用者通过浏览该预览图来快速预览目标预制件资源在虚拟场景中的表现,从而快速确定是否需使用目标预制件资源来进行应用开发,进而提升应用程序的开发效率。
[0142] 在实际应用中,上述图2和图4所示的资源预览方法可被运用在各种虚拟场景中,如游戏场景,影视剧中的场景等。以虚拟场景为游戏场景为例,当将该资源预览方法运用在游戏场景中时,可基于图2和图4所示的资源预览方法中所涉及的处理逻辑编写一个目标程序(即具有生成和加载预览图功能的程序),从而由该目标程序来实现对游戏引擎中的预制件资源得到预览图的生成和加载。示例性的,该资源预览方法在游戏场景中的应用过程可包括如下两部分:
[0143] 第一部分:通过分帧计算以及后台生成游戏对象的方式,为资源预览界面(即前述提及的资源显示界面)中被浏览到的Prefab资源(即预制件资源)渲染生成相应的缩略图(即预览图);所谓的分帧计算是一种技术实现思路,其可将大量的计算量分散到每一秒的不同帧中(一般游戏系统中,一秒钟约有30‑60帧),从而减轻计算负担,尽量减少对用户使用编辑器的影响。也就是说,可根据资源预览界面中当前显示的各个预制件资源的排列顺序,逐帧地在后台生成相应预制件资源对应的各个游戏对象,然后通过对这各个游戏对象进行图像渲染来生成相应的缩略图。在生成缩略图后,可将生成的缩略图显示在资源预览界面中,并将生成的缩略图存储在本地空间,以供以后的二次使用。当再次浏览到该预制件资源时,可根据预制件资源的修改时间和相应的缩略图的生成时间,来判断是否需要更新预制件资源的缩略图。
[0144] 具体的,资源预览界面所涉及的执行逻辑,目标程序生成和加载预制件资源的预览图的流程可以大致如下:
[0145] 1、准备一个队列q,该队列q用于记录要分帧处理的资源列表,该资源列表包括一个或多个预制件资源。
[0146] 2、用户选择一个资源预览界面中陈列的某一个文件夹,此时可将被选择的文件夹中的所有预制件资源(prefab资源)确定为资源预览界面所涉及的多个预制件资源,然后在资源预览界面中显示这多个预制件资源中的K个预制件资源;此时,K个预制件资源的预览图尚未加载,这K个预制件资源在资源预览界面中均显示为一个默认图标。
[0147] 3、每当用户在资源预览界面中拖动滚动条中的滚动滑块时,就清空队列q的内容,且不会执行后面的流程。
[0148] 4、每当资源预览界面的滚动条中的滚动滑块暂停滑动的时长大于时长阈值(如一秒钟)后,开始下面的流程。
[0149] 5、按照预制件资源在资源预览界面中的陈列顺序,分别将资源预览界面中所显示的每个预制件资源的资源路径加入队列q中。
[0150] 6、目标程序每运行10帧(即每隔预设时长),取出队列q中的一个资源路径,将取出的资源路径所对应的预制件资源标记为r。
[0151] 7、根据取出的资源路径查看r在本地空间中,是否有预先存储的缩略图(第一次取出r的资源路径时,是没有相应的缩略图的)。若没有,则进入步骤9,否则进入步骤8。
[0152] 8、查看缩略图的生成时间(或称为修改时间)和r的修改时间,如果缩略图的生成时间早于r的修改时间,则进入步骤9;否则,将资源预览界面上的r对应的默认图标显示为该缩略图,并回到步骤6以继续处理其他的预制件资源。
[0153] 9、实例化r,生成对应的GameObject,记录为gr。
[0154] 10、根据gr的尺寸(或称为大小),调整相机在虚拟场景中的位置,并调用引擎接口,通过相机渲染一张gr位于屏幕中心的缩略图,将生成的缩略图存储到硬盘的固定位置。在具体实现中,为了将相机对gr的渲染排除近大远小的干扰,可将相机的拍摄模式设置为正交投影模式;为了排除游戏场景中其他游戏对象对于gr的干扰,可使用了Unity分层渲染的技术,为gr设定单独的渲染层级,这样相机就不会将游戏场景中其他游戏对象和gr一起渲染到缩略图中。并且,还可通过计算gr的包围盒(可以通过引擎提供的接口来获得),得到gr的轮廓信息,将相机的拍摄范围限定到包围盒大小中,即可确保gr位于缩略图的中心,且缩略图覆盖gr的全貌。可选的,缩略图统一渲染成64×64大小,存储在硬盘的固定位置上,图5g是一张生成的prefab资源的缩略图的示例。
[0155] 11、删除gr,并将相机调整回之前的位置。
[0156] 12、加载r的缩略图,回到步骤6以继续处理其他的预制件资源,持续循环,直到用户开始拖动滚动条中的滚动滑块,此时重新回到步骤3。
[0157] 需要说明的是,步骤5‑步骤16的流程图可示例性地参见图5h所示。并且在以上流程中,每次只处理在资源预览界面中显示出来的预制件资源,即列入到队列q中的预制件资源(一般最多30个);同时采用分帧计算,大约每10帧生成一个预制件资源的缩略图,从而将计算对Unity性能的影响降到最低,保证了使用资源预览界面的流畅性;同时,生成游戏对象和图像渲染的操作是在一帧内部处理的,在计算结束后立马将状态归位(即删除gr以及将相机调整回之前的位置),这样可使得用户感受不到后台计算的影响。
[0158] 第二部分:当用户点击某个预制件资源的资源名称、预览图或者对应的默认图标后,可在Unity的编辑器提供的场景界面中生成被点击的预制件资源的实例(即对应的各个游戏对象),并支持用户查看其细节。然后,可通过对该预制件资源的所有游戏对象(包括父GameObject和子GameObject)进行动画仿真计算,来实现在资源查看界面显示相应的仿真动画,使得用户可以同时查看到该预制件资源下的所有游戏对象的动画效果,从而了解到该预制件资源在游戏场景中的整体动画表现。也就是说,用户可以选中某个Prefab资源,使得Unity在游戏场景中生成它的实例(即对应的各个GameObject)。此时,目标程序内部可遍历它的所有GameObject(包括父GameObject和子GameObject),在每一帧对它的所有GameObject进行动画仿真计算(调用的是Unity提供的仿真计算接口),并播放计算得到的仿真动画,使得用户可通过仿真动画了解到Prefab资源的全貌。
[0159] 基于上述描述可知,将资源预览方法应用于Unity引擎中的游戏场景中时,可以实现快速生成预制件资源的缩略图(即预览图),并且,生成的缩略图可以存储在本地,并根据用户对资源文件的修改及时更新。通过在资源预览界面显示预制件资源的缩略图,能够使得用户可以更方便、更直观地在资源预览界面中实时查看各个预制件资源的缩略图,从而快速了解预制件资源的大致样貌,这对于后续更近一步的开发和修改都有益处,明显提升开发效率。通过分帧计算的方式,可使得生成预览图的速度非常快,用户几乎感受不到性能的损耗,大大方便了用户查看预制件资源和编辑预制件资源的效率;并且,通过优化将缩略图的生成计算量限制在一定范围内,可实现对Unity中的编辑器本身的性能几乎不会造成影响,从而不会降低已有的编辑器运行速度。而,通过支持用户在资源预览界面中选择某一预制件资源作进一步查看,可较大程度增强用户预览和查看预制件资源的效果,有助于游戏开发效率的提升。
[0160] 基于上述资源预览方法实施例的描述,本申请实施例还公开了一种资源预览装置;所述资源预览装置可以是运行于计算机设备中的一个计算机程序(包括一条或多条指令),且该资源预览装置可以执行图2或图4所示的方法流程中的各个步骤。请参见图6,所述资源预览装置可以运行如下单元:
[0161] 处理单元601,用于从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;
[0162] 所述处理单元601,还用于实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;
[0163] 所述处理单元601,还用于对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;
[0164] 预览单元602,用于在所述资源显示界面中显示所述目标预制件资源的预览图。
[0165] 在一种实施方式中,处理单元601在用于对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图时,可具体用于:
[0166] 调用所述程序引擎提供的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像;
[0167] 根据预设图像尺寸对所述初始图像的图像尺寸进行缩略处理,得到所述初始图像对应的缩略图;
[0168] 将所述缩略图确定为所述目标预制件资源的预览图。
[0169] 另一种实施方式中,所述程序引擎提供的相机位于所述虚拟场景中;相应的,处理单元601在用于调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像时,可具体用于:
[0170] 调整所述程序引擎提供的相机在所述虚拟场景中的位置,使所述相机对准所述N个虚拟对象;
[0171] 确定所述N个虚拟对象的包围盒,并根据所述包围盒的尺寸调整所述相机的拍摄范围,使调整后的拍摄范围为所述包围盒;
[0172] 在调整所述相机的位置和拍摄范围后,控制所述相机对所述N个虚拟对象进行拍摄,得到拍摄结果;对所述拍摄结果进行渲染,得到初始图像。
[0173] 另一种实施方式中,所述拍摄结果包括所述N个虚拟对象以及无效虚拟对象,所述无效虚拟对象是指所述虚拟场景中除所述N个虚拟对象以外的虚拟对象;相应的,处理单元601在用于对所述拍摄结果进行渲染,得到初始图像时,可具体用于:
[0174] 分别为所述拍摄结果中的N个虚拟对象以及无效虚拟对象设定不同的渲染层级,所述N个虚拟对象具有相同的渲染层级;
[0175] 根据所述N个虚拟对象的渲染层级以及所述无效虚拟对象的渲染层级,对所述N个虚拟对象和所述无效虚拟对象进行分层渲染;
[0176] 将分层渲染所得到的包含所述N个虚拟对象的图像,作为初始图像。
[0177] 另一种实施方式中,处理单元601还可用于:
[0178] 将所述相机的拍摄模式设置为正交投影模式,所述正交投影模式是指:将三维空间中的对象平行投影至二维图像,使得二维图像中的各像素点的深度值为零值的模式;
[0179] 在设置拍摄模式后,触发执行所述调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像的步骤。
[0180] 另一种实施方式中,在生成所述目标预制件资源的预览图之后,处理单元601还可用于:
[0181] 删除所述N个虚拟对象;
[0182] 将所述相机的状态设置为初始状态,所述初始状态是指:对所述N个虚拟对象进行图像渲染之前,所述相机所处的状态;
[0183] 其中,所述相机所处的状态包括:位置、拍摄范围和拍摄模式。
[0184] 另一种实施方式中,处理单元601在用于从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源时,可具体用于:
[0185] 在所述程序引擎的资源显示界面中,显示所述资源显示界面所涉及的多个预制件资源中的K个预制件资源;K为正整数,所述K个预制件资源中的各个预制件资源在所述资源显示界面中的显示形态为一个默认图标;
[0186] 按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中;
[0187] 每隔预设时长从所述队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源。
[0188] 另一种实施方式中,所述资源显示界面支持一次性显示M个预制件资源,M为正整数,当所述多个预制件资源的数量大于M时,所述资源显示界面未全部显示所述多个预制件资源,且K小于或等于M;相应的,处理单元601还可用于:
[0189] 响应于资源滚动操作,控制所述多个预制件资源在所述资源显示界面进行滚动,并清空所述队列;其中,每滚动一次,所述资源显示界面就更新显示K个预制件资源;
[0190] 若检测到滚动停止操作,则停止在所述资源显示界面更新显示K个预制件资源,并跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。
[0191] 另一种实施方式中,在检测到滚动停止操作后,处理单元601还可用于:
[0192] 统计当前显示的K个预制件资源的持续显示时长;
[0193] 若统计到的持续显示时长大于时长阈值,则触发执行所述跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。
[0194] 另一种实施方式中,所述资源显示界面包括一个滚动条,所述滚动条包括滚动轴和滚动滑块,所述资源滚动操作是控制所述滚动滑块在所述滚动轴上进行滑动的操作;相应的,处理单元601在用于统计当前显示的K个预制件资源的持续显示时长时,可具体用于:
[0195] 统计所述滚动滑块在目标位置上停留的时长,所述目标位置是指:检测到滚动停止操作时,所述滚动滑块在所述滚动轴上的位置;
[0196] 将所述滚动滑块在所述目标位置上停留的时长,作为当前显示的K个预制件资源的持续显示时长。
[0197] 另一种实施方式中,预览单元602在用于在所述资源显示界面中显示所述目标预制件资源的预览图时,可具体用于:
[0198] 确定所述目标预制件资源在所述资源显示界面中的显示位置;
[0199] 在所述资源显示界面中,将位于所述显示位置处的默认图标替换为所述目标预制件资源的预览图。
[0200] 另一种实施方式中,在生成任一预制件资源的预览图后,所述任一预制件资源的预览图被缓存至本地空间中;相应的,在选取了目标预制件资源之后,处理单元601还可用于:
[0201] 在所述本地空间中查找所述目标预制件资源的预览图;
[0202] 若在所述本地空间中未查找到所述目标预制件资源的预览图,则触发执行所述实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象的步骤;
[0203] 若在所述本地空间中查找到所述目标预制件资源的预览图,则在所述资源显示界面中显示查找到的预览图。
[0204] 另一种实施方式中,若在所述本地空间中查找到所述目标预制件资源的预览图,则处理单元601还可用于:
[0205] 检测所述目标预制件的修改记录;
[0206] 如果未检测到所述修改记录,则触发执行所述在所述资源显示界面中显示查找到的预览图的步骤;
[0207] 如果检测到所述修改记录,则获取所述目标预制件资源的修改时间;在所述目标预制件资源的修改时间不晚于查找到的预览图的生成时间的情况下,触发执行所述在所述资源显示界面中显示查找到的预览图的步骤,在所述目标预制件资源的修改时间晚于查找到的预览图的生成时间的情况下,更新查找到的所述目标预制件资源的预览图,并在所述资源显示界面中显示更新后的预览图。
[0208] 另一种实施方式中,处理单元601还可用于:
[0209] 响应于检测到的针对所述目标预制件资源的查看操作,对所述目标预制件资源所对应的N个虚拟对象进行动画仿真计算,得到仿真动画;
[0210] 输出资源查看界面,并在所述资源查看界面中显示所述仿真动画。
[0211] 根据本申请的另一个实施例,图6所示的资源预览装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于资源预览装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0212] 根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括一条或多条指令),来构造如图6中所示的资源预览装置设备,以及来实现本申请实施例的资源预览方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
[0213] 本申请实施例针对程序引擎的资源显示界面所涉及的多个预制件资源中的目标预制件资源,可通过实例化该目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象。然后,可通过对这N个虚拟对象进行图像渲染,来生成目标预制件资源的预览图,并在资源显示界面中显示目标预制件资源的预览图。可见,本申请实施例可丰富预制件资源的显示形态,使得资源显示界面中的各个预制件资源不再表现为统一的图标。并且,由于目标预制件资源在虚拟场景中被表现为N个虚拟对象,因此通过对N个虚拟对象进行图像渲染,可使得最终生成的预览图可以准确地呈现出目标预制件资源在虚拟场景中的大致样貌,那么通过显示目标预制件资源的预览图,便可使得程序引擎的使用者通过浏览该预览图来快速预览目标预制件资源在虚拟场景中的表现,从而快速确定是否需使用目标预制件资源来进行应用开发,进而提升应用程序的开发效率。
[0214] 基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种计算机设备。请参见图7,该计算机设备至少包括处理器701、输入接口702、输出接口703以及计算机存储介质704。其中,计算机设备内的处理器701、输入接口702、输出接口703以及计算机存储介质704可通过总线或其他方式连接。计算机存储介质704可以存储在计算机设备的存储器中,所述计算机存储介质704用于存储计算机程序,所述计算机程序包括一条或多条指令,所述处理器701用于执行所述计算机存储介质704存储的计算机程序中的一条或多条指令。处理器701(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
[0215] 在一个实施例中,本申请实施例所述的处理器701可以基于程序引擎进行一系列的资源预览处理,具体包括:从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;在所述资源显示界面中显示所述目标预制件资源的预览图,等等。
[0216] 本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是计算机设备中的记忆设备,用于存放计算机程序和数据。可以理解的是,此处的计算机存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了计算机程序,该计算机程序包括适于被处理器701加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的程序代码。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non‑volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机存储介质。
[0217] 在一个实施例中,可由处理器加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2或图4所示的方法实施例中的相应步骤;具体实现中,计算机存储介质中的一条或多条指令可由处理器加载并执行如下步骤:
[0218] 从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源;一个预制件资源用于被实例化为所述程序引擎提供的虚拟场景中的一个或多个虚拟对象;
[0219] 实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象,N为正整数;
[0220] 对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图;
[0221] 在所述资源显示界面中显示所述目标预制件资源的预览图。
[0222] 在一种实施方式中,在对所述N个虚拟对象进行图像渲染,以生成所述目标预制件资源的预览图时,所述一条或多条指令可由处理器加载并具体执行:
[0223] 调用所述程序引擎提供的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像;
[0224] 根据预设图像尺寸对所述初始图像的图像尺寸进行缩略处理,得到所述初始图像对应的缩略图;
[0225] 将所述缩略图确定为所述目标预制件资源的预览图。
[0226] 另一种实施方式中,所述程序引擎提供的相机位于所述虚拟场景中;相应的,在调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像时,所述一条或多条指令可以由处理器加载并具体执行:
[0227] 调整所述程序引擎提供的相机在所述虚拟场景中的位置,使所述相机对准所述N个虚拟对象;
[0228] 确定所述N个虚拟对象的包围盒,并根据所述包围盒的尺寸调整所述相机的拍摄范围,使调整后的拍摄范围为所述包围盒;
[0229] 在调整所述相机的位置和拍摄范围后,控制所述相机对所述N个虚拟对象进行拍摄,得到拍摄结果;对所述拍摄结果进行渲染,得到初始图像。
[0230] 另一种实施方式中,所述拍摄结果包括所述N个虚拟对象以及无效虚拟对象,所述无效虚拟对象是指所述虚拟场景中除所述N个虚拟对象以外的虚拟对象;相应的,在对所述拍摄结果进行渲染,得到初始图像时,所述一条或多条指令可由处理器加载并具体执行:
[0231] 分别为所述拍摄结果中的N个虚拟对象以及无效虚拟对象设定不同的渲染层级,所述N个虚拟对象具有相同的渲染层级;
[0232] 根据所述N个虚拟对象的渲染层级以及所述无效虚拟对象的渲染层级,对所述N个虚拟对象和所述无效虚拟对象进行分层渲染;
[0233] 将分层渲染所得到的包含所述N个虚拟对象的图像,作为初始图像。
[0234] 另一种实施方式中,所述一条或多条指令可由处理器加载并具体执行:
[0235] 将所述相机的拍摄模式设置为正交投影模式,所述正交投影模式是指:将三维空间中的对象平行投影至二维图像,使得二维图像中的各像素点的深度值为零值的模式;
[0236] 在设置拍摄模式后,触发执行所述调用所述程序引擎中的相机,在所述虚拟场景中对所述N个虚拟对象进行图像渲染,得到初始图像的步骤。
[0237] 另一种实施方式中,在生成所述目标预制件资源的预览图之后,所述一条或多条指令可由处理器加载并具体执行:
[0238] 删除所述N个虚拟对象;
[0239] 将所述相机的状态设置为初始状态,所述初始状态是指:对所述N个虚拟对象进行图像渲染之前,所述相机所处的状态;
[0240] 其中,所述相机所处的状态包括:位置、拍摄范围和拍摄模式。
[0241] 另一种实施方式中,在从程序引擎的资源显示界面所涉及的多个预制件资源中,选取目标预制件资源时,所述一条或多条指令可以由处理器加载并具体执行:
[0242] 在所述程序引擎的资源显示界面中,显示所述资源显示界面所涉及的多个预制件资源中的K个预制件资源;K为正整数,所述K个预制件资源中的各个预制件资源在所述资源显示界面中的显示形态为一个默认图标;
[0243] 按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中;
[0244] 每隔预设时长从所述队列中取出一个资源标识,并将当前取出的资源标识所对应的预制件资源,确定为目标预制件资源。
[0245] 另一种实施方式中,所述资源显示界面支持一次性显示M个预制件资源,M为正整数,当所述多个预制件资源的数量大于M时,所述资源显示界面未全部显示所述多个预制件资源,且K小于或等于M;相应的,所述一条或多条指令可由处理器加载并具体执行:
[0246] 响应于资源滚动操作,控制所述多个预制件资源在所述资源显示界面进行滚动,并清空所述队列;其中,每滚动一次,所述资源显示界面就更新显示K个预制件资源;
[0247] 若检测到滚动停止操作,则停止在所述资源显示界面更新显示K个预制件资源,并跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。
[0248] 另一种实施方式中,在检测到滚动停止操作后,所述一条或多条指令可由处理器加载并具体执行:
[0249] 统计当前显示的K个预制件资源的持续显示时长;
[0250] 若统计到的持续显示时长大于时长阈值,则触发执行所述跳转至所述按照所述K个预制件资源在所述资源显示界面中的排列顺序,将所述K个预制件资源的资源标识依次添加至队列中的步骤。
[0251] 另一种实施方式中,所述资源显示界面包括一个滚动条,所述滚动条包括滚动轴和滚动滑块,所述资源滚动操作是控制所述滚动滑块在所述滚动轴上进行滑动的操作;相应的,在统计当前显示的K个预制件资源的持续显示时长时,所述一条或多条指令可由处理器加载并具体执行:
[0252] 统计所述滚动滑块在目标位置上停留的时长,所述目标位置是指:检测到滚动停止操作时,所述滚动滑块在所述滚动轴上的位置;
[0253] 将所述滚动滑块在所述目标位置上停留的时长,作为当前显示的K个预制件资源的持续显示时长。
[0254] 另一种实施方式中,在所述资源显示界面中显示所述目标预制件资源的预览图时,所述一条或多条指令可由处理器加载并具体执行:
[0255] 确定所述目标预制件资源在所述资源显示界面中的显示位置;
[0256] 在所述资源显示界面中,将位于所述显示位置处的默认图标替换为所述目标预制件资源的预览图。
[0257] 另一种实施方式中,在生成任一预制件资源的预览图后,所述任一预制件资源的预览图被缓存至本地空间中;相应的,在选取了目标预制件资源之后,所述一条或多条指令可由处理器加载并具体执行:
[0258] 在所述本地空间中查找所述目标预制件资源的预览图;
[0259] 若在所述本地空间中未查找到所述目标预制件资源的预览图,则触发执行所述实例化所述目标预制件资源,得到所述目标预制件资源在所述虚拟场景中所对应的N个虚拟对象的步骤;
[0260] 若在所述本地空间中查找到所述目标预制件资源的预览图,则在所述资源显示界面中显示查找到的预览图。
[0261] 另一种实施方式中,若在所述本地空间中查找到所述目标预制件资源的预览图,则所述一条或多条指令可由处理器加载并具体执行:
[0262] 检测所述目标预制件的修改记录;
[0263] 如果未检测到所述修改记录,则触发执行所述在所述资源显示界面中显示查找到的预览图的步骤;
[0264] 如果检测到所述修改记录,则获取所述目标预制件资源的修改时间;在所述目标预制件资源的修改时间不晚于查找到的预览图的生成时间的情况下,触发执行所述在所述资源显示界面中显示查找到的预览图的步骤,在所述目标预制件资源的修改时间晚于查找到的预览图的生成时间的情况下,更新查找到的所述目标预制件资源的预览图,并在所述资源显示界面中显示更新后的预览图。
[0265] 另一种实施方式中,所述一条或多条指令可由处理器加载并具体执行:
[0266] 响应于检测到的针对所述目标预制件资源的查看操作,对所述目标预制件资源所对应的N个虚拟对象进行动画仿真计算,得到仿真动画;
[0267] 输出资源查看界面,并在所述资源查看界面中显示所述仿真动画。
[0268] 本申请实施例针对程序引擎的资源显示界面所涉及的多个预制件资源中的目标预制件资源,可通过实例化该目标预制件资源,得到目标预制件资源在虚拟场景中所对应的N个虚拟对象。然后,可通过对这N个虚拟对象进行图像渲染,来生成目标预制件资源的预览图,并在资源显示界面中显示目标预制件资源的预览图。可见,本申请实施例可丰富预制件资源的显示形态,使得资源显示界面中的各个预制件资源不再表现为统一的图标。并且,由于目标预制件资源在虚拟场景中被表现为N个虚拟对象,因此通过对N个虚拟对象进行图像渲染,可使得最终生成的预览图可以准确地呈现出目标预制件资源在虚拟场景中的大致样貌,那么通过显示目标预制件资源的预览图,便可使得程序引擎的使用者通过浏览该预览图来快速预览目标预制件资源在虚拟场景中的表现,从而快速确定是否需使用目标预制件资源来进行应用开发,进而提升应用程序的开发效率。
[0269] 需要说明的是,根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括一条或多条指令,该一条或多条指令存储在计算机存储介质中。计算机设备的处理器从计算机存储介质读取一条或多条指令,处理器执行该一条或多条指令,使得该计算机设备执行上述图2或图4所示的方法实施例方面的各种可选方式中提供的方法。应理解的是,以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。