一种基于Unity3D的纹理渲染方法及装置转让专利

申请号 : CN201911243514.9

文献号 : CN110990104B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘峰

申请人 : 珠海金山数字网络科技有限公司

摘要 :

本申请提供一种基于Unity3D的模型渲染方法及装置,其中所述方法包括:通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。

权利要求 :

1.一种基于Unity3D的纹理渲染方法,其特征在于,包括:通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;

基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;

在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;

根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。

2.根据权利要求1所述的方法,其特征在于,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件包括:确定所述目标文件中包含的至少一个虚拟对象;

确定每个虚拟对象在所述UI面板组件目录下对应的UI纹理组件。

3.根据权利要求1所述的方法,其特征在于,在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记包括:对所述虚拟场景中的每一帧进行检测,判断所述虚拟场景中的任一所述虚拟对象是否需要进行纹理类型切换;

若是,则获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件;

将所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件打上纹理标签;

若否,则根据所述虚拟对象对应的图标对所述虚拟对象进行切换。

4.根据权利要求3所述的方法,其特征在于,根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器包括:判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否带有所述纹理标签;

若是,则将所述UI纹理组的渲染器设置为网格渲染器;

若否,则将所述UI纹理组的渲染器设置为精灵渲染器。

5.根据权利要求1所述的方法,其特征在于,所述纹理类型包括默认纹理、法线贴图、UI贴图、精灵图片、鼠标贴图、立方体纹理、遮罩贴图、光照贴图和自定义贴图。

6.一种基于Unity3D的纹理渲染装置,其特征在于,包括:场景生成模块,被配置为通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;

插件模块,被配置为基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;

组件标记模块,被配置为在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;

渲染配置模块,被配置为根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。

7.根据权利要求6所述的装置,其特征在于,所述插件模块包括:虚拟对象确定单元,被配置为确定所述目标文件中包含的至少一个虚拟对象;

纹理组件确定单元,被配置为确定每个虚拟对象在所述UI面板组件目录下对应的UI纹理组件。

8.根据权利要求6所述的装置,其特征在于,所述组件标记模块包括:纹理切换判断单元,被配置为对所述虚拟场景中的每一帧进行检测,判断所述虚拟场景中的任一所述虚拟对象是否需要进行纹理类型切换;若是,则执行组件获取单元;若否,则执行图标切换单元;

组件获取单元,被配置为获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件;

组件标记子单元将所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件打上纹理标签;

图标切换单元,被配置为根据所述虚拟对象对应的图标对所述虚拟对象进行切换。

9.根据权利要求8所述的装置,其特征在于,所述渲染配置模块包括:标签判断单元,被配置为判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否带有所述纹理标签;若是,则执行第一渲染器配置单元;若否,则执行第二渲染器配置单元;

第一渲染器配置单元,被配置为将所述UI纹理组的渲染器设置为网格渲染器;

第二渲染器配置单元,被配置为将所述UI纹理组的渲染器设置为精灵渲染器。

10.根据权利要求6所述的装置,其特征在于,所述纹理类型包括默认纹理、法线贴图、UI贴图、精灵图片、鼠标贴图、立方体纹理、遮罩贴图、光照贴图和自定义贴图。

11.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求1‑5任意一项所述方法的步骤。

12.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1‑5任意一项所述方法的步骤。

说明书 :

一种基于Unity3D的纹理渲染方法及装置

技术领域

[0001] 本说明书涉及计算机技术领域,特别涉及一种基于Unity3D的纹理渲染方法、装置、计算设备及计算机可读存储介质。

背景技术

[0002] NGUI插件是Unity3D的基本组件之一,具有广泛的应用,在中NGUI插件包含有UI面板组件,在UI面板组件下挂靠有需要频繁变化的虚拟对象,这些虚拟对象中包括几何体、用户界面或者贴图等,并且在现有技术中通常采用单一的渲染器对全部的虚拟对象进行纹理渲染,导致在数据量较大的情况下,极大的增加了计算机的性能消耗,出现卡顿或延迟等问题,降低了用户的使用体验。

发明内容

[0003] 有鉴于此,本说明书实施例提供了一种基于Unity3D的纹理渲染方法、装置、计算设备及计算机可读存储介质,以解决现有技术中存在的技术缺陷。
[0004] 根据本说明书实施例的第一方面,提供了一种基于Unity3D的纹理渲染方法,包括:
[0005] 通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;
[0006] 基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;
[0007] 在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;
[0008] 根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。
[0009] 可选的,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件包括:
[0010] 确定所述目标文件中包含的至少一个虚拟对象;
[0011] 确定每个虚拟对象在所述UI面板组件目录下对应的UI纹理组件。
[0012] 可选的,在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记包括:
[0013] 对所述虚拟场景中的每一帧进行检测,判断所述虚拟场景中的任一所述虚拟对象是否需要进行纹理类型切换;
[0014] 若是,则获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件;
[0015] 将所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件打上纹理标签;
[0016] 若否,则根据所述虚拟对象对应的图标对所述虚拟对象进行切换。
[0017] 可选的,根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器包括:
[0018] 判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否带有所述纹理标签;
[0019] 若是,则将所述UI纹理组的渲染器设置为网格渲染器;
[0020] 若否,则将所述UI纹理组的渲染器设置为精灵渲染器。
[0021] 可选的,所述纹理类型包括默认纹理、法线贴图、UI贴图、精灵图片、鼠标贴图、立方体纹理、遮罩贴图、光照贴图和自定义贴图。
[0022] 根据本说明书实施例的第二方面,提供了一种基于Unity3D的纹理渲染装置,包括:
[0023] 场景生成模块,被配置为通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;
[0024] 插件模块,被配置为基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;
[0025] 组件标记模块,被配置为在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;
[0026] 渲染配置模块,被配置为根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。
[0027] 可选的,所述插件模块包括:
[0028] 虚拟对象确定单元,被配置为确定所述目标文件中包含的至少一个虚拟对象;
[0029] 纹理组件确定单元,被配置为确定每个虚拟对象在所述UI面板组件目录下对应的UI纹理组件。
[0030] 可选的,所述组件标记模块包括:
[0031] 纹理切换判断单元,被配置为对所述虚拟场景中的每一帧进行检测,判断所述虚拟场景中的任一所述虚拟对象是否需要进行纹理类型切换;若是,则执行组件获取单元;若否,则执行图标切换单元;
[0032] 组件获取单元,被配置为获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件;
[0033] 组件标记子单元将所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件打上纹理标签;
[0034] 图标切换单元,被配置为根据所述虚拟对象对应的图标对所述虚拟对象进行切换。
[0035] 可选的,所述渲染配置模块包括:
[0036] 标签判断单元,被配置为判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否带有所述纹理标签;若是,则执行第一渲染器配置单元;若否,则执行第二渲染器配置单元;
[0037] 第一渲染器配置单元,被配置为将所述UI纹理组的渲染器设置为网格渲染器;
[0038] 第二渲染器配置单元,被配置为将所述UI纹理组的渲染器设置为精灵渲染器。
[0039] 可选的,所述纹理类型包括默认纹理、法线贴图、UI贴图、精灵图片、鼠标贴图、立方体纹理、遮罩贴图、光照贴图和自定义贴图。
[0040] 根据本说明书实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述基于Unity3D的纹理渲染方法的步骤。
[0041] 根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述基于Unity3D的纹理渲染方法的步骤。
[0042] 本申请通过对需要进行纹理切换的UI纹理组件进行标记,将需要进行纹理切换的UI纹理组件的渲染器配置为运算量较小的网格渲染器,将不需要进行纹理切换的UI纹理组件的渲染器配置为运算量较大的精灵渲染器,从而改善了终端在对虚拟场景中的虚拟物体进行渲染时的运算量,提高了虚拟场景在运行时的画面流畅度和每秒传输帧数。

附图说明

[0043] 图1是本申请实施例提供的计算设备的结构框图;
[0044] 图2是本申请实施例提供的基于Unity3D的纹理渲染方法的流程图;
[0045] 图3是本申请实施例提供的基于Unity3D的纹理渲染方法的另一流程图;
[0046] 图4是本申请实施例提供的基于Unity3D的纹理渲染方法的另一流程图;
[0047] 图5是本申请实施例提供的基于Unity3D的纹理渲染方法的另一流程图;
[0048] 图6是本申请实施例提供的基于Unity3D的UI纹理组件的类型示意图;
[0049] 图7是本申请实施例提供的基于Unity3D的纹理渲染装置的结构示意图。

具体实施方式

[0050] 在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
[0051] 在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0052] 应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0053] 首先,对本发明一个或多个实施例涉及的名词术语进行解释。
[0054] Unity3D:是一款强大的跨平台游戏开发引擎,全球累计下载量超过5亿次,是一款多平台、综合型游戏开发工具,是现今最优秀的3D引擎之一,Unity3D该引擎能让游戏开发者轻松创建诸如3D视频游戏、实时3D动画等互动内容,目前广泛应用于手游、网游、单机以及新的VR游戏等开发领域。
[0055] NGUI插件:NGUI是严格遵循KISS原则并用C#编写的Unity插件,提供强大的UI系统和事件通知框架。其代码简洁,多数类少于200行代码。这意味着程序员可以很容易地扩展NGUI的功能或调节已有功能。对所有其他用户而言,这意味着更高的性能、更低的学习难度和更加有趣。完全集成到Inspector面板中,在场景视图中看到的就是在游戏视图中得到的。基于组件的、模块化的特性:要让你的界面控件做什么,只需为其附加相应的行为,而不需要编码。全面支持iOS/Android和Flash。
[0056] 用户界面:即UI(User Interface),是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。用户界面是介于用户与硬件而设计彼此之间交互沟通相关软件,目的在使得用户能够方便有效率地去操作硬件以达成双向之交互,完成所希望借助硬件完成之工作,用户界面定义广泛,包含了人机交互与图形用户接口,凡参与人类与机械的信息交流的领域都存在着用户界面。
[0057] 纹理(Texture):是Unity3D最基础的图片形式之一,纹理就是一个用于展示虚拟物体质感的图片。
[0058] 在本申请中,提供了一种基于Unity3D的纹理渲染方法、装置、计算设备及计算机可读存储介质,在下面的实施例中逐一进行详细说明。
[0059] 图1示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
[0060] 计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi‑MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
[0061] 在本说明书的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
[0062] 计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
[0063] 其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请一实施例的基于Unity3D的纹理渲染方法的示意性流程图,包括步骤202至步骤208。
[0064] 步骤202:通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景。
[0065] 在本申请的实施例中,系统首先通过Unity3D创建目标文件或者加载已经编辑完成的目标文件,所述目标文件可以是游戏项目的资源文件(Project)或者工程项目的资源文件等等,从而在Unity3D中生成可视可编辑的所述目标文件对应的虚拟场景,例如游戏场景或者工程场景等等。
[0066] 步骤204:基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件。
[0067] 在本申请的一个或多个实施例中,如图3所示,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件包括步骤302至步骤304:
[0068] 步骤302:确定所述目标文件中包含的至少一个虚拟对象。
[0069] 步骤304:确定每个虚拟对象在所述UI面板组件目录下对应的UI纹理组件。
[0070] 在上述实施例中,在Unity3D的NGUI插件中包括有UI面板组件(UIPanel),所述UI面板组件是NGUI插件中用于收集和管理组件的容器,即所述目标文件中的所有通过NGUI插件创建的各类UI组件都可以在所述UI面板组件的目录下进行显示和管理,其中,各类UI组件包括UI精灵组件(UISprite)、UI文字标题组件(UILabel)或UI纹理组件(UITexture)等等,在Unity3D的场景编辑窗口(Scene)中展示有目标文件中所包含的多个虚拟对象(Object),至少一个所述虚拟对象对应配置有至少一个UI纹理组件以及运行脚本(Script),本申请的系统能够在Unity3D的场景物体列表窗口(Hierarchy)中UI面板组件的目录下确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件。
[0071] 步骤206:在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记。
[0072] 在本申请的实施例中,在Unity3D的场景编辑窗口(Scene)中展示有目标文件中所包含的多个虚拟对象(Object),其中至少一个所述虚拟对象对应配置有至少一个UI纹理组件以及运行脚本(Script),在Unity3D的场景演示窗口(Game)中可以对整个虚拟场景进行演示,使每个虚拟对象按照运行脚本或用户的请求时进行运动或实现功能,在根据所述目标文件的运行脚本或用户的请求,存在需要进行纹理类型切换的虚拟对象的情况下,本申请的系统能够获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并将这些UI纹理组件打上标记。
[0073] 在上述实施例中,如图4所示,在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记包括步骤402至步骤408:
[0074] 步骤402:对所述虚拟场景中的每一帧进行检测,判断所述虚拟场景中的任一所述虚拟对象是否需要进行纹理类型切换;若是,则执行步骤404;若否,则执行步骤408。
[0075] 步骤404:获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件。
[0076] 步骤406:将所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件打上纹理标签。
[0077] 步骤408:根据所述虚拟对象对应的图标对所述虚拟对象进行切换。
[0078] 在本申请的实施例中,终端能够对所述虚拟场景中的每一帧进行检测,用以根据所述目标文件的运行脚本或用户的请求对虚拟对象是否需要进行纹理类型切换进行判断,若虚拟对象在运行脚本的执行过程或根据用户的请求而发生了纹理类型切换,则获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件,从而区分出需要采用低运算量的网格渲染器进行渲染的UI纹理组件,同时,剩余的不需要进行纹理类型切换的虚拟对象只需要切换图标(Icon)并传递NGUI插件的精灵数据(Sprite Data)即可。
[0079] 步骤208:根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。
[0080] 在本申请的实施例中,系统进一步根据标记筛选出需要进行纹理切换的至少一个UI纹理组件,以及剩余的不需要进行纹理切换的UI纹理组件,由于纹理切换所需要的CPU占用量较大,故将带有标记的至少一个UI纹理组件设置为运算量较小的网格渲染器(Mesh Renderer)进行渲染,将剩余的不需要进行纹理切换的UI纹理组件设置为运算量较大的精灵渲染器(Sprite Renderer)进行渲染。
[0081] 在上述实施例中,如图5所示,根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器包括步骤502至步骤506:
[0082] 步骤502:判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否带有所述纹理标签;若是,则执行步骤504;若否,则执行步骤506。
[0083] 步骤504:将所述UI纹理组的渲染器设置为网格渲染器。
[0084] 步骤506:将所述UI纹理组的渲染器设置为精灵渲染器。
[0085] 在本申请的实施例中,本申请的终端能够判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否携带有所述纹理标签,在所述UI纹理组件携带有所述纹理标签的情况下,则将所述UI纹理组的渲染器设置为网格渲染器;在所述UI纹理组件未携带有所述纹理标签的情况下,则将所述UI纹理组的渲染器设置为精灵渲染器。
[0086] 本申请通过在渲染时将纹理的变化情况一分为二,在纹理不变的情况下,通过切换图标形式使用更加复杂的精灵渲染器进行渲染,从而在保证渲染效果的情况下节省了终端的运算量,在纹理改变的情况下,通过网格渲染器对精灵渲染器惊醒替换,由于网格渲染器仅对网格纹理进行渲染且支持实例渲染(Instance Draw)技术,通过仅对网格中的纹理进行改变使得其相比与精灵渲染器具有更小的运算量,规避了现有技术中仅使用单一的精灵渲染器的每一帧都需要重建的渲染方式。
[0087] 可选的,如图6所示,所述纹理类型包括默认纹理(Texture)、法线贴图(Normal map)、UI贴图(Editor GUI and Legacy GUI)、精灵图片(Sprite)、鼠标贴图(Cursor)、立方体纹理(Cube map)、遮罩贴图(Cookie)、光照贴图(Lightmap)和自定义贴图(Advanced)。
[0088] 本申请通过对需要进行纹理切换的UI纹理组件进行标记,将需要进行纹理切换的UI纹理组件的渲染器配置为运算量较小的网格渲染器,将不需要进行纹理切换的UI纹理组件的渲染器配置为运算量较大的精灵渲染器,从而改善了终端在对虚拟场景中的虚拟物体进行渲染时的运算量,提高了虚拟场景在运行时的画面流畅度和每秒传输帧数。
[0089] 与上述方法实施例相对应,本说明书还提供了基于Unity3D的纹理渲染装置实施例,图7示出了本说明书一个实施例的基于Unity3D的纹理渲染装置的结构示意图。如图7所示,该装置包括:
[0090] 场景生成模块701,被配置为通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;
[0091] 插件模块702,被配置为基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;
[0092] 组件标记模块703,被配置为在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;
[0093] 渲染配置模块704,被配置为根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。
[0094] 可选的,所述插件模块702包括:
[0095] 虚拟对象确定单元,被配置为确定所述目标文件中包含的至少一个虚拟对象;
[0096] 纹理组件确定单元,被配置为确定每个虚拟对象在所述UI面板组件目录下对应的UI纹理组件。
[0097] 可选的,所述组件标记模块703包括:
[0098] 纹理切换判断单元,被配置为对所述虚拟场景中的每一帧进行检测,判断所述虚拟场景中的任一所述虚拟对象是否需要进行纹理类型切换;若是,则执行组件获取单元;若否,则执行图标切换单元;
[0099] 组件获取单元,被配置为获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件;
[0100] 组件标记子单元将所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件打上纹理标签;
[0101] 图标切换单元,被配置为根据所述虚拟对象对应的图标对所述虚拟对象进行切换。
[0102] 可选的,所述渲染配置模块704包括:
[0103] 标签判断单元,被配置为判断所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件中的任一所述UI纹理组件是否带有所述纹理标签;若是,则执行第一渲染器配置单元;若否,则执行第二渲染器配置单元;
[0104] 第一渲染器配置单元,被配置为将所述UI纹理组的渲染器设置为网格渲染器;
[0105] 第二渲染器配置单元,被配置为将所述UI纹理组的渲染器设置为精灵渲染器。
[0106] 可选的,所述纹理类型包括默认纹理、法线贴图、UI贴图、精灵图片、鼠标贴图、立方体纹理、遮罩贴图、光照贴图和自定义贴图。
[0107] 本申请通过对需要进行纹理切换的UI纹理组件进行标记,将需要进行纹理切换的UI纹理组件的渲染器配置为运算量较小的网格渲染器,将不需要进行纹理切换的UI纹理组件的渲染器配置为运算量较大的精灵渲染器,从而改善了终端在对虚拟场景中的虚拟物体进行渲染时的运算量,提高了虚拟场景在运行时的画面流畅度和每秒传输帧数。
[0108] 本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现以下步骤:
[0109] 通过Unity3D创建或加载目标文件,生成所述目标文件对应的虚拟场景;
[0110] 基于NGUI插件中的UI面板组件,确定所述目标文件在所述UI面板组件目录下的至少一个UI纹理组件;
[0111] 根据所述目标文件的运行脚本或用户的请求,在所述虚拟场景中存在需要进行纹理类型切换的虚拟对象的情况下,获取所述需要进行纹理类型切换的虚拟对象对应的至少一个UI纹理组件并标记;
[0112] 根据所述至少一个UI纹理组件对应的标记为所述至少一个UI纹理组件设置对应的渲染器,使得带有标记的至少一个UI纹理组件采用网格渲染器,剩余的所述UI纹理组件采用精灵渲染器。
[0113] 本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述基于Unity3D的纹理渲染方法的步骤。
[0114] 上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该计算机可读存储介质的技术方案与上述的基于Unity3D的纹理渲染方法的技术方案属于同一构思,计算机可读存储介质的技术方案未详细描述的细节内容,均可以参见上述基于Unity3D的纹理渲染方法的技术方案的描述。
[0115] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0116] 所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0117] 需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
[0118] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0119] 以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。