发明内容
本申请的目的是解决现有技术的不足,提供一种动态标识移动设备上运行时贴图合适度的方法及装置,能够获得实时监控移动设备上运行游戏的贴图大小合适度的效果。
为了实现上述目的,本申请采用以下的技术方案。
首先,本申请提出一种动态标识移动设备上运行时贴图合适度的方法,适用于基于Unity3D应用程序开发的电子游戏。该方法包括以下步骤:
S100)在移动设备上配置运行时显示Mipmap视图的着色器插件,并将该着色器插件附加在待检测的应用程序上;
S200)运行待检测的应用程序,并遍历该应用程序当前场景下的所有Camera对象以获取各个Camera对象的Camera组件;
S300)获取纹理层的各原贴图的贴图尺寸,并根据该贴图尺寸得到颜色编码贴图的颜色值及透明度;
S400)启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
进一步地,在本申请的上述方法中,该步骤S200包括以下子步骤:
S201)通过接口(例如GameObject.FindObjectsOfType())获得待检测的应用程序中当前场景下所有Camera对象;
S202)遍历所有Camera对象,并通过接口(例如,GameObject.GetComponent<Camera>())获取各个Camera对象的Camera组件。
再进一步地,在本申请的上述方法中,该步骤S300包括以下子步骤:
S301)获取原贴图的UV坐标originalUV和贴图尺寸originalTextureSize,并对原贴图进行采样以获取采样颜色mipColor;
S302)按照以下公式计算颜色编码贴图的UV坐标mipUV=originalUV×originalTextureSize/8.0;
S303)根据颜色编码贴图的UV坐标mipUV,比较同一位置上采样颜色mipColor和原贴图的颜色originalColor以确定颜色编码贴图的颜色值及透明度。
进一步地,在本申请的上述方法中,颜色编码贴图的颜色值和透明度是采样颜色mipColor和原贴图的颜色originalColor的插值。
可替代地,在本申请的上述方法中,该颜色编码贴图的尺寸是32×32像素。
进一步地,在本申请的上述方法中,在该步骤S400中,当前场景的各个Camera对象通过调用SetReplacementShader接口,强制启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
进一步地,在本申请的上述方法中,该着色器插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。
其次,本申请还提出一种动态标识移动设备上运行时贴图合适度的装置,适用于基于Unity3D应用程序开发的电子游戏。该装置包括以下模块:配置模块,用于在移动设备上配置运行时显示Mipmap视图的着色器插件,并将该着色器插件附加在待检测的应用程序上;遍历模块,用于运行待检测的应用程序,并遍历该应用程序当前场景下的所有Camera对象以获取各个Camera对象的Camera组件;获取模块,用于获取纹理层的各原贴图的贴图尺寸,并根据该贴图尺寸得到颜色编码贴图的颜色值及透明度;标识模块,用于启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
进一步地,在本申请的上述装置中,该遍历模块还包括以下子模块:第一遍历模块,用于通过接口(例如,GameObject.FindObjectsOfType())获得待检测的应用程序中当前场景下所有Camera对象;第二遍历模块,用于遍历所有Camera对象,并通过接口(例如,GameObject.GetComponent<Camera>())获取各个Camera对象的Camera组件。
再进一步地,在本申请的上述装置中,该获取模块还包括以下子模块:执行模块,用于获取原贴图的UV坐标originalUV和贴图尺寸originalTextureSize,并对原贴图进行采样以获取采样颜色mipColor;计算模块,用于按照以下公式计算颜色编码贴图的UV坐标mipUV=originalUV×originalTextureSize/8.0;比较模块,用于根据颜色编码贴图的UV坐标mipUV,比较同一位置上采样颜色mipColor和原贴图的颜色originalColor以确定颜色编码贴图的颜色值及透明度。
进一步地,在本申请的上述装置中,颜色编码贴图的颜色值和透明度是采样颜色mipColor和原贴图的颜色originalColor的插值。
可替代地,在本申请的上述装置中,该颜色编码贴图的尺寸是32×32像素。
进一步地,在本申请的上述装置中,在该标识模块中,当前场景的各个Camera对象通过调用SetReplacementShader接口,强制启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
进一步地,在本申请的上述装置中,该着色器插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。
最后,本申请还提出一种计算机可读存储介质,其上存储有计算机指令。上述指令被处理器执行时,执行如下步骤:
S100)在移动设备上配置运行时显示Mipmap视图的着色器插件,并将该着色器插件附加在待检测的应用程序上;
S200)运行待检测的应用程序,并遍历该应用程序当前场景下的所有Camera对象以获取各个Camera对象的Camera组件;
S300)获取纹理层的各原贴图的贴图尺寸,并根据该贴图尺寸得到颜色编码贴图的颜色值及透明度;
S400)启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
进一步地,在处理器执行上述指令时,该步骤S200包括以下子步骤:
S201)通过接口(例如,GameObject.FindObjectsOfType())获得待检测的应用程序中当前场景下所有Camera对象;
S202)遍历所有Camera对象,并通过接口(例如,GameObject.GetComponent<Camera>())获取各个Camera对象的Camera组件。
再进一步地,在处理器执行上述指令时,该步骤S300包括以下子步骤:
S301)获取原贴图的UV坐标originalUV和贴图尺寸originalTextureSize,并对原贴图进行采样以获取采样颜色mipColor;
S302)按照以下公式计算颜色编码贴图的UV坐标mipUV=originalUV×originalTextureSize/8.0;
S303)根据颜色编码贴图的UV坐标mipUV,比较同一位置上采样颜色mipColor和原贴图的颜色originalColor以确定颜色编码贴图的颜色值及透明度。
进一步地,在处理器执行上述指令时,颜色编码贴图的颜色值和透明度是采样颜色mipColor和原贴图的颜色originalColor的插值。
可替代地,在处理器执行上述指令时,该颜色编码贴图的尺寸是32×32像素。
进一步地,在处理器执行上述指令时,在该步骤S400中,当前场景的各个Camera对象通过调用SetReplacementShader接口,强制启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
进一步地,在处理器执行上述指令时,该着色器插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。
本申请的有益效果为:通过直接在移动设备上监测并标识反映当前场景下各贴图大小合适度,形成直观的Mipmap视图,提高了电子游戏的调试效率。
具体实施方式
以下将结合实施例和附图对本申请的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本申请的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本申请中所使用的上、下、左、右等描述仅仅是相对于附图中本申请各组成部分的相互位置关系来说的。在本申请和所附权利要求书中所使用的单数形式的“一种”、“该”和“所述”也旨在包括多数形式,除非上下文清楚地表示其他含义。
此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本申请中可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本申请范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”。
参照图1所示的方法流程图,本申请所公开的、适用于Unity3D应用程序上的动态标识移动设备上运行时贴图合适度的方法包括以下步骤:
S100)在移动设备上配置运行时显示Mipmap视图的着色器插件,并将该着色器插件附加在待检测的应用程序上;
S200)运行待检测的应用程序,并遍历该应用程序当前场景下的所有Camera对象以获取各个Camera对象的Camera组件;
S300)获取纹理层的各原贴图的贴图尺寸,并根据该贴图尺寸得到颜色编码贴图的颜色值及透明度;
S400)启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。
由于该着色器插件的定位是供开发人员和测试人员使用的,因此其可方便地附加到待检测的应用程序上。或者开发人员可将其作为调试工具而直接设置在检测的应用程序测试版本中,并通过调用Unity3D所提供的接口,方便地查询任意场景中的Camera对象及其Camera组件,以及当前场景中各原贴图的尺寸。由于该着色器插件可以直接配置在移动设备上,并在测试电子游戏时运行时,从而实现实时监控手机运行游戏时贴图大小合适度。本领域技术人员可以根据具体的应用程序和Unity3D所提供的技术文档实现相关的插件,本申请对此不予限定。
参照图2所示的示意图,在执行上述方法后,着色器在场景中所指示的区域1和区域2内渲染颜色编码贴图,以表示该区域内的原贴图尺寸过于精细或者过于粗糙(例如附加填色后,红色附加越多表示原贴图尺寸过大,而蓝色附加越多表示原贴图尺寸过小)。而没有在原贴图上进行附加填色的区域表示原贴图分辨率此刻正好合适。这样,测试人员就可以通过所标识的颜色直观地确定各处贴图尺寸是否合理。此外,本领域技术人员应理解到,附图中的显示元件的数量和形状仅作为示例性的参考,不作为对本申请的限制。
参照图3所示的方法流程图,在本申请的一个或多个实施例中,该步骤S200包括以下子步骤:
S201)通过接口GameObject.FindObjectsOfType()获得待检测的应用程序中当前场景下所有Camera对象;
S202)遍历所有Camera对象,并通过接口GameObject.GetComponent<Camera>()获取各个Camera对象的Camera组件。
在实现上述方法时,这两个Unity3D所提供接口可以方便地封装在着色器插件的接口内,使得该应用程序在绘制场景时,都能够获取当前场景内的各个Camera对象及其Camera组件,以进一步获取各原贴图的参数。
参照图4所示的方法流程图,在本申请的一个或多个实施例中,该步骤S300包括以下子步骤:
S301)获取原贴图的UV坐标originalUV和贴图尺寸originalTextureSize,并对原贴图进行采样以获取采样颜色mipColor;
S302)按照以下公式计算颜色编码贴图的UV坐标mipUV=originalUV×originalTextureSize/8.0;
S303)根据颜色编码贴图的UV坐标mipUV,比较同一位置上采样颜色mipColor和原贴图的颜色originalColor以确定颜色编码贴图的颜色值及透明度。
具体地,颜色编码贴图的尺寸可以根据实际情况设置。例如在本申请的一个或多个实施例中,其被设置为32×32像素。上述子方法步骤将指定颜色编码贴图的颜色值及透明度,其可以使用一个4维向量表示,例如分别为(0.0,0.0,1.0,0.8)、(0.0,0.0,1.0,0.4)、(1.0,0.0,1.0,0.0)、(1.0,0.0,0.0,0.2)、(1.0,0.0,0.0,0.6)和(1.0,0.0,0.0,0.8)等。
进一步地,在本申请的上述一个或多个实施例中,颜色编码贴图的颜色值和透明度是采样颜色mipColor和原贴图的颜色originalColor的插值。具体地,上述方法所得的采样颜色mipColor和原贴图的颜色originalColor可通过调用Unity3D所提供的插值函数lerp而确定颜色编码贴图的颜色值及透明度。根据上述公式可知,当原贴图的尺寸合适是,其透明度将设置为零,即无附加颜色的表示该处贴图的尺寸合适,否则表示尺寸不合适。
进一步地,在本申请的上述一个或多个实施例中,在该步骤S400中,当前场景的各个Camera对象通过调用Unity3D所提供的SetReplacementShader接口,强制启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。这样,当应用程序绘制每个物体时,都会被强制使用上述着色器插件所计算的颜色编码贴图渲染着色。
可替代地,在本申请的上述一个或多个实施例中,该着色器插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。将包含上述着色器插件的应用程序安装到测试用的移动设备上。在运行游戏时,上述位于应用程序界面的开关可以方便地打开和关闭。此时,测试人员可以直接观察电子游戏运行画面,人工记录颜色编码贴图,统计尺寸不合适的贴图信息。
参照图5所示模块结构图,本申请所公开的、适用于Unity3D应用程序上的动态标识移动设备上运行时贴图合适度的装置包括以下模块:配置模块,用于在移动设备上配置运行时显示Mipmap视图的着色器插件,并将该着色器插件附加在待检测的应用程序上;遍历模块,用于运行待检测的应用程序,并遍历该应用程序当前场景下的所有Camera对象以获取各个Camera对象的Camera组件;获取模块,用于获取纹理层的各原贴图的贴图尺寸,并根据该贴图尺寸得到颜色编码贴图的颜色值及透明度;标识模块,用于启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。由于该着色器插件的定位是供开发人员和测试人员使用的,因此其可方便地附加到待检测的应用程序上。或者开发人员可将其作为调试工具而直接设置在检测的应用程序测试版本中,并通过调用Unity3D所提供的接口,方便地查询任意场景中的Camera对象及其Camera组件,以及当前场景中各原贴图的尺寸。由于该着色器插件可以直接配置在移动设备上,并在测试电子游戏时运行时,从而实现实时监控手机运行游戏时贴图大小合适度。本领域技术人员可以根据具体的应用程序和Unity3D所提供的技术文档实现相关的插件,本申请对此不予限定。
参照图2所示的示意图,在执行上述方法后,着色器在场景中所指示的区域1和区域2内渲染颜色编码贴图,以表示该区域内的原贴图尺寸过于精细或者过于粗糙(例如附加填色后,红色附加越多表示原贴图尺寸过大,而蓝色附加越多表示原贴图尺寸过小)。而没有在原贴图上进行附加填色的区域表示原贴图分辨率此刻正好合适。这样,测试人员就可以通过所标识的颜色直观地确定各处贴图尺寸是否合理。此外,本领域技术人员应理解到,附图中的显示元件的数量和形状仅作为示例性的参考,不作为对本申请的限制。
在本申请的一个或多个实施例中,该遍历模块还包括以下子模块:第一遍历模块,用于通过接口GameObject.FindObjectsOfType()获得待检测的应用程序中当前场景下所有Camera对象;第二遍历模块,用于遍历所有Camera对象,并通过接口GameObject.GetComponent<Camera>()获取各个Camera对象的Camera组件。在实现上述装置时,这两个Unity3D所提供接口可以方便地封装在着色器插件的接口内,使得该应用程序在绘制场景时,都能够获取当前场景内的各个Camera对象及其Camera组件,以进一步获取各原贴图的参数。
在本申请的一个或多个实施例中,该获取模块还包括以下子模块:执行模块,用于获取原贴图的UV坐标originalUV和贴图尺寸originalTextureSize,并对原贴图进行采样以获取采样颜色mipColor;计算模块,用于按照以下公式计算颜色编码贴图的UV坐标mipUV=originalUV×originalTextureSize/8.0;比较模块,用于根据颜色编码贴图的UV坐标mipUV,比较同一位置上采样颜色mipColor和原贴图的颜色originalColor以确定颜色编码贴图的颜色值及透明度。具体地,颜色编码贴图的尺寸可以根据实际情况设置。例如在本申请的一个或多个实施例中,其被设置为32×32像素。上述子方法步骤将指定颜色编码贴图的颜色值及透明度,其可以使用一个4维向量表示,例如分别为(0.0,0.0,1.0,0.8)、(0.0,0.0,1.0,0.4)、(1.0,0.0,1.0,0.0)、(1.0,0.0,0.0,0.2)、(1.0,0.0,0.0,0.6)和(1.0,0.0,0.0,0.8)等。
进一步地,在本申请的上述一个或多个实施例中,颜色编码贴图的颜色值和透明度是采样颜色mipColor和原贴图的颜色originalColor的插值。具体地,上述装置所得的采样颜色mipColor和原贴图的颜色originalColor可通过调用Unity3D所提供的插值函数lerp而确定颜色编码贴图的颜色值及透明度。根据上述公式可知,当原贴图的尺寸合适是,其透明度将设置为零,即无附加颜色的表示该处贴图的尺寸合适,否则表示尺寸不合适。
进一步地,在本申请的上述一个或多个实施例中,在该标识模块中,当前场景的各个Camera对象通过调用SetReplacementShader接口,强制启动着色器以直接在各原贴图位置上根据该颜色值标识颜色编码贴图。这样,当应用程序绘制每个物体时,都会被强制使用上述着色器插件所计算的颜色编码贴图渲染着色。
可替代地,在本申请的上述一个或多个实施例中,该着色器插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。将包含上述着色器插件的应用程序安装到测试用的移动设备上。在运行游戏时,上述位于应用程序界面的开关可以方便地打开和关闭。此时,测试人员可以直接观察电子游戏运行画面,人工记录颜色编码贴图,统计尺寸不合适的贴图信息。
应当认识到,本申请的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。该方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
进一步地,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本申请的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文该步骤的指令或程序时,本文所述的申请包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本申请所述的方法和技术编程时,本申请还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本申请优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本申请的更宽广精神和范围的情况下,可以对本申请做出各种修改和改变。
其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。