一种远程统计虚拟现实软件的三角面数量的方法及系统与流程

文档序号:15312273发布日期:2018-08-31 22:08阅读:233来源:国知局

本发明涉及测试领域,尤其涉及一种远程统计虚拟现实软件的三角面数量的方法及系统。



背景技术:

随着虚拟现实技术的发展,越来越多的虚拟现实软件出现在人们的生活中。作为虚拟现实软件,沉浸感一直是用户体验的核心。目前,制约用户感官体验的最大因素就是晕动症,而造成晕动症的最直接原因就是虚拟现实软件的卡顿现象。造成卡顿现象的因素很多,其中就包含了软件的性能因素。

虚拟现实软件的性能瓶颈一般分为cpu,gpu,内存三大方面,经过长期的实践证明,目前虚拟现实软件普遍存在着不同程度的cpu使用问题。就目前虚拟现实软件而言,cpu方面的性能开销主要可归结为两大类:引擎模块性能开销和自身代码性能开销。其中,引擎模块中又可细致划分为渲染模块、动画模块、物理模块、ui模块、粒子系统、加载模块和gc调用等等。而其中渲染模块可以说是任何虚拟现实软件中最为消耗cpu性能的引擎模块。因为几乎所有的虚拟现实软件都离不开场景,物体以及特效的渲染。

目前,渲染模块的性能优化主要是通过降低drawcall数量以及简化资源,这两种方式能够有效的提高渲染模块对于虚拟现实软件的渲染性能,提高运行的帧率,避免出现画面卡顿的现象。简化资源包括了纹理贴图资源的剔除优化,网格性能的优化,模型几何面的优化等。

其中,模型几何面的优化主要是针对模型的三角面的数量进行优化,三角面是构成模型几何面的最基本单位,模型资源的三角面数越多意味着这个模型资源的复杂度越高,则对于渲染模块的性能损耗也越高。现有的主流测试虚拟现实软件中各对象的三角面的数量的方法为,根据unity3d引擎自带的stats数据统计功能查看三角面数量,开发人员根据查看到的三角面数量对虚拟现实软件进行性能优化。但是,通过unity3d引擎自带的stats统计数据功能获取到的模型资源的三角面数量的数据仅仅是虚拟摄像机视场范围内所渲染的数据,在虚拟摄像机视场范围之外的模型资源的三角面数量的数据是没有被统计的。并且,测试人员也无法通过stats统计数据获取到每一个模型资源的三角面的数量,这样就无法对资源进行分析,也就无法准确定位存在性能缺陷的模型资源,以至于工程师无法有针对性地改善虚拟现实软件的性能,效率低下。



技术实现要素:

本发明所要解决的技术问题是:如何提高获取虚拟现实软件中各模型资源的三角面数量的精确度。

为了解决上述技术问题,本发明采用的技术方案为:

本发明提供一种远程统计虚拟现实软件的三角面数量的方法,包括:

s1、挂载预设的统计脚本至虚拟现实软件;

s2、当接收到第一服务器发送的统计请求时,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合;

s3、所述统计脚本获取与所述模型资源集合中每一模型资源对应的网格信息,得到网格信息集合;

s4、所述统计脚本获取与所述网格信息集合中每一网格信息对应的三角面信息,得到三角面信息集合;

s5、所述统计脚本发送所述模型资源集合和所述三角面信息集合至所述第一服务器,以使所述第一服务器根据所述模型资源集合和所述三角面信息集合统计与每一模型资源对应的三角面数量,得到三角面数量集合。

本发明还提供一种远程统计虚拟现实软件的三角面数量的系统,包括本地终端、第一服务器和第二服务器;

所述本地终端包括一个或多个第一处理器及第一存储器,所述第一存储器存储有程序,并且被配置成由所述一个或多个第一处理器执行以下步骤:

s1、挂载预设的统计脚本至虚拟现实软件;

s2、当接收到第一服务器发送的统计请求时,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合;

s3、所述统计脚本获取与所述模型资源集合中每一模型资源对应的网格信息,得到网格信息集合;

s4、所述统计脚本获取与所述网格信息集合中每一网格信息对应的三角面信息,得到三角面信息集合;

s5、所述统计脚本发送所述模型资源集合和所述三角面信息集合至所述第一服务器,以使所述第一服务器根据所述模型资源集合和所述三角面信息集合统计与每一模型资源对应的三角面数量,得到三角面数量集合。

本发明的有益效果在于:区别于现有技术只能动态统计虚拟摄像机当前视场范围内所渲染的所有模型资源的三角面数量总和,本发明依次从各个模型资源的网格资源中获取三角面数量,从而获悉与虚拟现实软件对应的每一模型资源所包含的三角面数量,提高了获取虚拟现实软件中各模型资源的三角面数量的精确度,使得开发工程师可方便地定位存在性能缺陷的模型资源,有针对性地进行性能优化,从而提高优化虚拟现实软件性能的效率。此外,通过远程处理的方式可以更加灵活的对采集或者计算的测试数据进行处理,例如获取到三角面信息集合和模型资源集合后,通过socket通信方式将它们发送至第一服务器,如果测试人员需要对这些数据进行二次改造,例如计算整个场景中总的三角面数,或者对数据进行排序比较等操作时,可以直接在第一服务器对数据进行处理,避免在测试程序中进行过多的计算,导致被测的虚拟现实软件性能下降。同时,通过远程的方式可以解决测试程序本身对于源代码的依赖性问题,即使在开发人员不提供源代码的情况下,依然能够对虚拟现实软件的模型资源三角面数量进行测试,提高了测试的覆盖面。

附图说明

图1为本发明提供的一种远程统计虚拟现实软件的三角面数量的方法的具体实施方式的流程框图;

图2为本发明提供的一种远程统计虚拟现实软件的三角面数量的系统的具体实施方式的结构框图;

标号说明:

1、本地终端;2、第一服务器;3、第二服务器;11、第一处理器;12、第一存储器;21、第二处理器;22、第二存储器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的技术构思在于:本发明依次从各个模型资源的网格资源中获取三角面数量,提高了获取虚拟现实软件中各模型资源的三角面数量的精确度。

请参照图1以及图2,

如图1所示,本发明提供一种远程统计虚拟现实软件的三角面数量的方法,包括:

s1、挂载预设的统计脚本至虚拟现实软件;

s2、当接收到第一服务器发送的统计请求时,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合;

s3、所述统计脚本获取与所述模型资源集合中每一模型资源对应的网格信息,得到网格信息集合;

s4、所述统计脚本获取与所述网格信息集合中每一网格信息对应的三角面信息,得到三角面信息集合;

s5、所述统计脚本发送所述模型资源集合和所述三角面信息集合至所述第一服务器,以使所述第一服务器根据所述模型资源集合和所述三角面信息集合统计与每一模型资源对应的三角面数量,得到三角面数量集合。

进一步地,还包括:

所述第一服务器从大到小排序所述三角面数量集合,得到三角面数量有序集合;

所述第一服务器根据所述三角面数量有序集合和所述模型资源集合生成测试报告。

由上述描述可知,当一模型资源所包含的三角面数量超过预设的阈值时,说明该模型资源的三角面数量过多,存在性能缺陷需对其进行优化,本发明按三角面数量由大到小排序,有利于开发工程师快速定位存在缺陷的模型资源,提高优化虚拟现实软件性能的效率。

进一步地,所述s3之前还包括:

所述统计脚本删除所述模型资源集合中未挂载网格过滤器组件的模型资源。

由上述描述可知,未挂载网格过滤器组件的模型资源不存在三角面,将不存在三角面的模型资源从所述模型资源集合中删除,有利于提高测试虚拟现实软件资源三角面数量的效率。

进一步地,所述s4具体为:

s41、所述统计脚本从所述网格信息集合中获取一网格信息,得到当前网格信息;

s42、所述统计脚本获取与所述当前网格信息对应的网格资源;

s43、所述统计脚本获取与所述网格资源对应的三角面数组;

s44、所述统计脚本添加所述三角面数组至预设的三角面信息集合;

s45、所述统计脚本重复执行所述s41至所述s44,直至所述网格信息集合被遍历。

进一步地,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合,具体为:

所述统计脚本获取本地终端中与所述虚拟现实软件对应的模型资源,得到本地模型资源集合;

所述统计脚本获取第二服务器中与所述虚拟现实软件对应的模型资源,得到远程模型资源集合;

所述统计脚本合成所述本地模型资源集合和所述远程模型资源集合,得到所述模型资源集合。

由上述描述可知,虚拟现实软件虚拟场景中的物体对象主要是通过两个方式加载进软件的场景中,一部分是从本地目录中进行加载,另一部分则是从服务端请求资源数据,返回资源包后再对资源包进行解压加载,因此需要获取整个场景中的所有资源对象的话,就必须从本地和服务端分别进行获取。

如图2所示,本发明还提供一种远程统计虚拟现实软件的三角面数量的系统,包括本地终端1、第一服务器2和第二服务器3;

所述本地终端包括一个或多个第一处理器11及第一存储器12,所述第一存储器12存储有程序,并且被配置成由所述一个或多个第一处理器11执行以下步骤:

s1、挂载预设的统计脚本至虚拟现实软件;

s2、当接收到第一服务器发送的统计请求时,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合;

s3、所述统计脚本获取与所述模型资源集合中每一模型资源对应的网格信息,得到网格信息集合;

s4、所述统计脚本获取与所述网格信息集合中每一网格信息对应的三角面信息,得到三角面信息集合;

s5、所述统计脚本发送所述模型资源集合和所述三角面信息集合至所述第一服务器,以使所述第一服务器根据所述模型资源集合和所述三角面信息集合统计与每一模型资源对应的三角面数量,得到三角面数量集合。

进一步地,所述第一服务器2包括一个或多个第二处理器21及第二存储器22,所述第二存储器22存储有程序,并且被配置成由所述一个或多个第二处理器21执行以下步骤:

从大到小排序所述三角面数量集合,得到三角面数量有序集合;

根据所述三角面数量有序集合和所述模型资源集合生成测试报告。

进一步地,所述s3之前还包括:

所述统计脚本删除所述模型资源集合中未挂载网格过滤器组件的模型资源。

进一步地,所述s4具体为:

s41、所述统计脚本从所述网格信息集合中获取一网格信息,得到当前网格信息;

s42、所述统计脚本获取与所述当前网格信息对应的网格资源;

s43、所述统计脚本获取与所述网格资源对应的三角面数组;

s44、所述统计脚本添加所述三角面数组至预设的三角面信息集合;

s45、所述统计脚本重复执行所述s41至所述s44,直至所述网格信息集合被遍历。

进一步地,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合,具体为:

所述统计脚本获取本地终端中与所述虚拟现实软件对应的模型资源,得到本地模型资源集合;

所述统计脚本获取第二服务器中与所述虚拟现实软件对应的模型资源,得到远程模型资源集合;

所述统计脚本合成所述本地模型资源集合和所述远程模型资源集合,得到所述模型资源集合。

本发明的实施例一为:

本实施例提供一种远程统计虚拟现实软件的三角面数量的方法,包括:

s1、挂载预设的统计脚本至虚拟现实软件。

其中,本地终端通过socket通信方式与第一服务器建立通信连接。在虚拟现实软件运行时创建客户端socket,socket服务监听来自第一服务器socket的连接请求,开启阻塞模式直到第一服务器发来连接请求。接收到请求后,对请求数据进行处理。

s2、当接收到第一服务器发送的统计请求时,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合。具体为:

所述统计脚本获取本地终端中与所述虚拟现实软件对应的模型资源,得到本地模型资源集合;所述统计脚本获取第二服务器中与所述虚拟现实软件对应的模型资源,得到远程模型资源集合;所述统计脚本合成所述本地模型资源集合和所述远程模型资源集合,得到所述模型资源集合。

其中,合并从本地获取的以及从远程服务器获取的gameobject类型的对象,创建类型为gameobject[]类型的数组,命名为gameobj,将合并的数据依次存放到gameobj数组中,即得到所述模型资源集合。

s3、所述统计脚本删除所述模型资源集合中未挂载网格过滤器组件的模型资源。

其中,通过length属性获取gameobj数组中对象的数量,命名为objcount,申明变量i,初始化i的值为0。遍历数组gameobj,判断objcount是否大于0,如果满足该条件,则将objcount的数值减去1,并通过数组索引获取到gameobject类型的对象gameobj[i],通过获取组件函数判断对象gameobj[i]上是否挂载了网格过滤器组件(网格过滤器用于从对象gameobj[i]中获取网格信息,并将其传递到用于将其渲染到屏幕的网格渲染器中),将未挂载网格过滤器组件的gameobj对象从所述模型资源集合中删除。

s4、所述统计脚本获取与所述模型资源集合中每一模型资源对应的网格信息,得到网格信息集合。

其中,通过获取组件函数获取对象gameobj[i]上的网格过滤器组件,并通过name函数获取对象gameobj[i]的名称,标记为namei。所述网格信息为存在网格资源的模型资源的名称,例如namei。

s5、所述统计脚本获取与所述网格信息集合中每一网格信息对应的三角面信息,得到三角面信息集合。具体为:

s51、所述统计脚本从所述网格信息集合中获取一网格信息,得到当前网格信息。

s52、所述统计脚本获取与所述当前网格信息对应的网格资源。

s53、所述统计脚本获取与所述网格资源对应的三角面数组。

s54、所述统计脚本添加所述三角面数组至预设的三角面信息集合。

s55、所述统计脚本重复执行所述s51至所述s54,直至所述网格信息集合被遍历。

其中,通过sharedmesh属性提取gameobj[i]对象的网格过滤器上的共享网格,共享网格中包含了gameobj[i]对象的顶点信息和三角面信息等数据。

s6、所述统计脚本发送所述模型资源集合和所述三角面信息集合至所述第一服务器,以使所述第一服务器根据所述模型资源集合和所述三角面信息集合统计与每一模型资源对应的三角面数量,得到三角面数量集合。

可选地,预设数据字典;所述数据字典包括一个以上键值对;

存储所述模型资源集合和所述三角面信息集合至所述数据字典;设置所述模型资源集合中的每一模型资源的名称为键值名;设置所述三角面信息集合中的元素为所述模型资源集合中对应模型资源的键值;

转换所述数据字典为json数据格式,得到json数据;

发送所述json数据至所述第一服务器。

其中,通过datacontractjsonserializer类对数据字典进行序列化处理,转化为json格式的数据,返回处理的数据到第一服务器socket。

s7、所述第一服务器从大到小排序所述三角面数量集合,得到三角面数量有序集合;所述第一服务器根据所述三角面数量有序集合和所述模型资源集合生成测试报告。

其中,三角面信息的存储是以三维坐标数组的形式进行存储,即每一个三角面的存储是通过一个记录了三角面的三个顶点的三维坐标的数组来完成的。提取共享网格中的三角面数组,由于数组中的每一个三角面数据都是由三个顶点三维坐标构成(例如[vector3a1,vector3a2,vector3a3,vector3b1,vector3b2,vector3b3],这样就代表了有两个三角面),所以通过length属性获取三角面数组的总长度一定是3的倍数,通过将获取的三角面数组的length数值除以3即可算出对象gameobj[i]网格中包含的三角面的数量,标记为trii。

其中,将所有的trii从大到小排序,0<=i<=n,n为模型资源集合中的元素个数,并在trii的同一行显示与其对应的namei。

可选地,从所述测试报告中删除三角面数量小于预设阈值的记录。

其中,对于不同的资源模型具有相同的判断标准,当一资源模型所包含的三角面数量大于预设的阈值时,该资源模型的渲染性能差,需对该资源进行优化以提高虚拟现实软件整体的性能。

本发明的实施例二为:

本实施例提供一种远程统计虚拟现实软件的三角面数量的系统,包括本地终端1、第一服务器2和第二服务器3;

所述本地终端包括一个或多个第一处理器11及第一存储器12,所述第一存储器12存储有程序,并且被配置成由所述一个或多个第一处理器11执行以下步骤:

s1、挂载预设的统计脚本至虚拟现实软件。

s2、当接收到第一服务器发送的统计请求时,所述统计脚本获取与虚拟现实软件对应的两个以上模型资源,得到模型资源集合。具体为:

所述统计脚本获取本地终端中与所述虚拟现实软件对应的模型资源,得到本地模型资源集合;所述统计脚本获取第二服务器中与所述虚拟现实软件对应的模型资源,得到远程模型资源集合;所述统计脚本合成所述本地模型资源集合和所述远程模型资源集合,得到所述模型资源集合。

s3、所述统计脚本删除所述模型资源集合中未挂载网格过滤器组件的模型资源。

s4、所述统计脚本获取与所述模型资源集合中每一模型资源对应的网格信息,得到网格信息集合。

s5、所述统计脚本获取与所述网格信息集合中每一网格信息对应的三角面信息,得到三角面信息集合。具体为:

s51、所述统计脚本从所述网格信息集合中获取一网格信息,得到当前网格信息。

s52、所述统计脚本获取与所述当前网格信息对应的网格资源。

s53、所述统计脚本获取与所述网格资源对应的三角面数组。

s54、所述统计脚本添加所述三角面数组至预设的三角面信息集合。

s55、所述统计脚本重复执行所述s51至所述s54,直至所述网格信息集合被遍历。

s6、所述统计脚本发送所述模型资源集合和所述三角面信息集合至所述第一服务器,以使所述第一服务器根据所述模型资源集合和所述三角面信息集合统计与每一模型资源对应的三角面数量,得到三角面数量集合。

可选地,预设数据字典;所述数据字典包括一个以上键值对;

存储所述模型资源集合和所述三角面信息集合至所述数据字典;设置所述模型资源集合中的每一模型资源的名称为键值名;设置所述三角面信息集合中的元素为所述模型资源集合中对应模型资源的键值;

转换所述数据字典为json数据格式,得到json数据;

发送所述json数据至所述第一服务器。

其中,所述第一服务器2包括一个或多个第二处理器21及第二存储器22,所述第二存储器22存储有程序,并且被配置成由所述一个或多个第二处理器21执行以下步骤:

s7、所述第一服务器从大到小排序所述三角面数量集合,得到三角面数量有序集合;所述第一服务器根据所述三角面数量有序集合和所述模型资源集合生成测试报告。

可选地,从所述测试报告中删除三角面数量小于预设阈值的记录。

综上所述,本发明提供的一种远程统计虚拟现实软件的三角面数量的方法及终端,本发明依次从各个模型资源的网格资源中获取三角面数量,从而获悉与虚拟现实软件对应的每一模型资源所包含的三角面数量,提高了获取虚拟现实软件中各模型资源的三角面数量的精确度,使得开发工程师可方便地定位存在性能缺陷的模型资源,有针对性地进行性能优化,从而提高优化虚拟现实软件性能的效率。此外,通过远程处理的方式可以更加灵活的对采集或者计算的测试数据进行处理,例如获取到三角面信息集合和模型资源集合后,通过socket通信方式将它们发送至第一服务器,如果测试人员需要对这些数据进行二次改造,例如计算整个场景中总的三角面数,或者对数据进行排序比较等操作时,可以直接在第一服务器对数据进行处理,避免在测试程序中进行过多的计算,导致被测的虚拟现实软件性能下降。同时,通过远程的方式可以解决测试程序本身对于源代码的依赖性问题,即使在开发人员不提供源代码的情况下,依然能够对虚拟现实软件的模型资源三角面数量进行测试,提高了测试的覆盖面。进一步地,当一模型资源所包含的三角面数量超过预设的阈值时,说明该模型资源的三角面数量过多,存在性能缺陷需对其进行优化,本发明按三角面数量由大到小排序,有利于开发工程师快速定位存在缺陷的模型资源,提高优化虚拟现实软件性能的效率。进一步地,未挂载网格过滤器组件的模型资源不存在三角面,将不存在三角面的模型资源从所述模型资源集合中删除,有利于提高测试虚拟现实软件资源三角面数量的效率。进一步地,虚拟现实软件虚拟场景中的物体对象主要是通过两个方式加载进软件的场景中,一部分是从本地目录中进行加载,另一部分则是从服务端请求资源数据,返回资源包后再对资源包进行解压加载,因此需要获取整个场景中的所有资源对象的话,就必须从本地和服务端分别进行获取。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1