CN107767434B - 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质 - Google Patents
虚拟现实技术中纹理贴图配置信息的获取方法、存储介质 Download PDFInfo
- Publication number
- CN107767434B CN107767434B CN201710820490.3A CN201710820490A CN107767434B CN 107767434 B CN107767434 B CN 107767434B CN 201710820490 A CN201710820490 A CN 201710820490A CN 107767434 B CN107767434 B CN 107767434B
- Authority
- CN
- China
- Prior art keywords
- texture
- acquiring
- attribute
- type
- dictionary
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种虚拟现实技术中纹理贴图配置信息的检测方法、存储介质,方法包括:获取当前虚拟场景中所有物件对象;获取应用程序下名称为着色器工具的程序集;遍历程序集中所有的方法函数,建立字典;获取材质组件;获取各材质组件对应的属性数据组;获取所述属性数据组中各属性对应的类型;获取类型为纹理的属性;获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。本发明能够实现基于项目源代码的全自动化检测;且采用C#的反射机制进行数据获取,解决了源代码编译发布的问题。
Description
技术领域
本发明涉及虚拟现实技术领域,具体说的是一种虚拟现实技术中纹理贴图配置信息的检测方法、存储介质。
背景技术
随着虚拟现实技术的发展,越来越多的虚拟现实软件出现在人们的生活中。作为虚拟现实软件,沉浸感一直是用户体验的核心。目前,影响用户沉浸感的因素有很多,而虚拟世界图像的逼真度就是众多因素的其中之一。造成虚拟现实软件场景图像清晰度模糊的最直接原因就是软件场景贴图的分辨率不足,难以提供用户逼真的画质体验。
而造成软件贴图分辨率不足的因素很多,在假设设计人员提供了分辨率质量较高的贴图的情况下,在开发引擎中,对于贴图属性的不合理配置也将导致贴图失真,从而降低虚拟现实软件带给用户的逼真度体验。
目前虚拟现实软件测试领域缺少对于软件纹理贴图分辨率相关属性配置的检测方案。常规的基于Unity3D开发引擎的纹理贴图的测试方法,一般是通过手工测试的方式进行,测试人员需要获取项目工程的源代码,并在工程文件中找到用于存放纹理贴图的工程文件夹,该文件夹在Unity项目中仅仅用于纹理贴图资源的存放。测试人员找到该文件夹后,需要通过鼠标左键点击文件夹中的贴图来获取该纹理贴图的属性信息,这些属性信息会在Unity引擎右侧的检视面板中显示。
目前主要影响纹理贴图分辨率相关的配置属性分别为Max Size(最大分辨率,该属性用于限制Unity3D引擎导入的贴图的分辨率大小),Format(格式,改属性能够设置纹理的格式)。Max Size属性用于限制导入纹理贴图的最大尺寸。当纹理贴图资源的原始分辨率小于Max Size设置的最大尺寸时,开发引擎将默认使用贴图的原始尺寸;当纹理贴图资源的原始分辨率大于Max Size设置的最大尺寸时,开发引擎会对图片分辨率进行压缩处理,这将导致纹理贴图出现失真,模糊的现象。由于虚拟现实软件对于贴图资源的分辨率具有较高的要求,贴图的分辨率一般不低于2048*2048,因此,在测试过程中,需要检查Max Size的配置不应小于2048。Format属性用于设置该纹理贴图使用的内部表现格式。它包含了三种类型,分别是:Compressed、16bit,以及Truecolor。其中,Compressed表示压缩的RGB纹理,这是漫反射贴图最长的格式,每个像素占4bits;假设一张贴图的分辨率为256*256,则该纹理将占用32Kb的内存。16bit表示低质量的真彩显示,每个像素占16bits。Truecolor表示真彩画质,这是最高的图像质量,假设一张贴图的分辨率为256*256,则该纹理将占用256Kb的内存。由于目前主流的虚拟现实外接式头盔显示设备对于硬件的要求都比较高,所以虚拟现实软件可以适当的忽略由于高质量的图像会占用更多的内存对性能产生的影响。一般采用Truecolor这个配置来提高贴图的质量。
测试人员通过手工匹配这些参数的方式对虚拟现实软件的贴图资源的属性配置进行检查,从而排除引擎配置原因对于纹理贴图质量的影响。
但是,现有的上述纹理贴图相关配置参数的检测方式存在以下问题:只能通过手工测试的方式来完成,当需要检测的纹理贴图资源较多时,需要消耗大量的时间成本和人力成本;在测试完成时,需要手工对测试数据进行记录存储以及数据的分析,并且无法自动生成测试报告,这些在测试末期都会占用较多的时间成本。
发明内容
本发明所要解决的技术问题是:提供一种基于Unity3D开发引擎的虚拟现实技术的纹理贴图分辨率相关配置信息的检测方法,实现基于项目源代码的全自动化检测。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,包括:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机测试程序,在接收纹理贴图配置信息检测请求后,处理器调用所述计算机测试程序实现以下步骤:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
本发明的有益效果在于:区别于现有技术如果需要检测材质的纹理贴图分辨率相关的配置,只能通过手工测试的方式来完成,当需要检测的纹理贴图资源较多时,需要消耗大量的时间成本和人力成本。本发明提供一个全自动化的纹理贴图配置检测的实现方案,通过本发明,可以大幅度降低在配置检测环节的人力投入和时间成本投入,并且避免了在检测环节出现检测误差的风险,一定程度上解放了人工劳动力并且提高了检测的效率。进一步的,测试程序采用C#的反射机制获取对应接口的数据,而非通过引用Unity3D的Editor类实现,因此还解决了源代码无法编译发布的问题。
附图说明
图1为本发明一种基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法的流程示意图;
图2为本发明实施例一的检测方法流程示意图;
图3为本发明实施例二的检测方法流程示意图;
图4为本发明实施例二中测试框架与虚拟现实软件基于Socket通信的原理图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:通过执行测试程序实现自动化检测,且采用C#的反射机制进行数据获取,解决了源代码编译发布的问题。
本发明涉及的技术术语解释:
请参照图1以及图2,本发明提供一种基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,包括:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
进一步的,还包括:
S10:读取所述纹理贴图的名称信息,建立所述名称信息与对应的最大纹理尺寸和纹理格式的关联关系;
S11:依据所述关联关系,与标准库中的标准最大纹理尺寸和标准纹理格式进行对比,得到对比信息。
由上述描述可知,能够自动与标准数据进行对比,得到对比结果,实现自动化获取检测结果。
进一步的,所述S11之后,还包括:
S12:依据预设的格式获取所有纹理贴图的对比信息;
S13:调用报告接口,依据所获取的对比信息生成对应的测试报表。
由上述描述可知,通过报告接口的方式,实现了自动化生成测试报告,再次节约了人力投入和时间成本的投入;同时能更直观的展示测试结果。
进一步的,所述S2之后,S3之前,还包括:
S01:声明一个物件对象类型的数据组,存储所述所有物件对象;
S02:声明一个key类型为字符串、Value类型为MethodInfo类的字典。
由上述描述可知,配置对应存储方案,完善测试流程。
进一步的,所述S4具体为:
依据反射机制遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,依次存储至所述字典中。
由上述描述可知,采用C#的反射机制实现对没有提供对外接口的类进行数据提取。
进一步的,所述S8具体为:
S81:声明一个纹理类型的列表;
S82:遍历所述属性数据组,判断遍历到的属性的类型是否为纹理,若是,则将对应属性所引用的纹理贴图存储至所述列表中。
由上述描述可知,设置纹理类型的纹理贴图存储列表,便于后续对应获取配置信息。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机测试程序,在接收纹理贴图配置信息检测请求后,处理器调用所述计算机测试程序实现以下步骤:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
进一步的,所述计算机测试程序还能实现以下步骤:
S10:读取所述纹理贴图的名称信息,建立所述名称信息与对应的最大纹理尺寸和纹理格式的关联关系;
S11:依据所述关联关系,与标准库中的标准最大纹理尺寸和标准纹理格式进行对比,得到对比信息。
进一步的,所述计算机测试程序还能实现以下步骤:
S12:依据预设的格式获取所有纹理贴图的对比信息;
S13:调用报告接口,依据所获取的对比信息生成对应的测试报表。
进一步的,S3之前,还包括:
S01:声明一个物件对象类型的数据组,存储所述所有物件对象;
S02:声明一个key类型为字符串、Value类型为MethodInfo类的字典;
所述S4具体为:
依据反射机制遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,依次存储至所述字典中。
实施例一
请参照图2,本实施例提供一种基于Unity3D引擎的虚拟现实应用程序的纹理贴图配置信息检测方法,能够实现在提供项目源代码的前提下,能够自动化完整的对纹理贴图的配置信息进行检测。
本实施例的检测方法包括以下步骤:
S1:接收纹理贴图配置信息检测请求;
运行有虚拟现实应用程序的设备接收检测请求后,通过其处理器调用测试程序,实现自动化检测。下面,将以所述虚拟现实软件为游戏软件为例,详细说明测试程序被调用后执行的具体步骤,在此,虚拟现实软件将不限于游戏软件,还可以是其他的包含有纹理贴图的虚拟现实软件,对应的参数只需适应性改变即可。
具体的检测过程包括以下步骤:
S2:获取当前虚拟场景中所有物件对象;
具体的,在测试程序初始化时,将通过FindObjectsWithType函数获取当前虚拟场景中类型为GameObject类型(Gameobject是一个类型,所有的游戏物件都是这个类型的对象。)的对象;同时声明一个GameObject类型的数组用于存放获取的对象集合,声明一个Key(关键字)类型为String(字符串类型),Value类型为MethodInfo的字典,该字典将用于存储测试程序从程序集中提取的方法函数。
S3:获取应用程序下名称为着色器工具的程序集;
具体的,测试程序通过AppDomain类,根据lambda表达式Textrue=>Texture.GetType().Any(t=>t.Name==”ShaderUtil”)筛选出名称为ShaderUtil的程序集,该程序集为Unity3D引擎的着色器工具类。
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
具体的,通过反射机制遍历该程序集中的所有方法函数,以该程序集中的方法函数的函数名作为Key(关键字),以函数的方法体信息作为Value(值),依次存储到申明的字典中。
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
具体的,在应用程序的帧更新时,申明一个纹理类型的列表,该列表用于存储获取的材质的纹理贴图;遍历在测试程序初始化时获取的当前场景的所有游戏对象,每一个Unity引擎的游戏对象都包含了一个组件列表,通过挂载的形式可以向该列表添加新的组件;判断游戏对象的组件列表是否包含Material(材质)组件,如果包含该组件,则通过GetComponent方法获取游戏对象的组件列表中的Material(材质)组件,如果不包含该组件,则继续遍历剩余的游戏对象。
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
具体的,从存储了ShaderUtil程序集的所有方法函数的字典中通过关键字GetPropertyCount获取对应的方法体,通过该方法函数能够获取到Material(材质)组件的属性数据组,其返回的数据包含了该材质所拥有的所有属性构成的数据组。
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
具体的,在获取到属性类型后,判断属性类型是否为Texture(纹理):通过同样的方式,从字典中提取关键字为GetPropertyType所对应的方法体,该方法用于读取属性的类型信息,并申明一个纹理类型的列表(用于存储获取到纹理贴图);遍历材质的属性数据组,判断属性的类型是否属于Texture(纹理),如果属于Texture类型,则将该Texture类型属性所引用的纹理贴图保存到定义的纹理类型列表中;如果判断属性的类型不属于Texture,则跳过该属性继续编写下一个属性,直到完成所有属性的遍历。
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
具体的,在S8完成所有对象的遍历后,返回存储的纹理类型列表;测试程序通过AppDomain类,根据lambda表达式Textrue=>Texture.GetType().Any(t=>t.Name==”TextureImporter”)筛选出名称为TextureImporter的程序集,该程序集为Unity3D引擎的纹理导入器类;通过反射机制分别获取maxTextureSize和textureFormat这两个方法函数;maxTextureSize函数用于读取纹理贴图支持的最大分辨率,即Max Size(最大纹理尺寸),通过该函数读取的数据为只读类型;textureFormat函数用于读取纹理贴图的图片格式。通过这两个方法函数,得到材质的纹理贴图的最大分辨率设置以及纹理贴图的格式。
S10:读取所述纹理贴图的名称信息,建立所述名称信息与对应的最大纹理尺寸和纹理格式的关联关系;具体的,通过引擎暴露的name()接口直接读取纹理贴图的名称信息;
S11:依据所述关联关系,与标准库中的标准最大纹理尺寸和标准纹理格式进行对比,得到对比信息;
S12:依据预设的格式获取所有纹理贴图的对比信息;
S13:调用报告接口,依据所获取的对比信息生成对应的测试报表。
具体的,测试框架连接数据库,提取数据库中的标准数据表,该表记录了用于衡量测试结果的标准信息(Max Size为2048*2048,Format为Compressed)。数据组中的材质的纹理贴图的最大分辨率设置,以及材质的纹理贴图的图片格式设置一一与标准数据进行匹配,然后根据预先定义的格式提取比对信息。优选将统计出测试报表所需的信息,包含了测量编号,材质的纹理贴图的最大分辨率符合标准的纹理贴图的通过数和未通过数,材质的纹理贴图的图片格式设置准确性的通过数和未通过数。最后,测试框架调用报告接口,通过传递这些信息,生成对应的测试报表。
上述测试程序的执行,能解决现有技术通过直接调用Unity3D接口获取材质的纹理贴图分辨率相关配置的具体数值需引用Unity3D的Editor类,从而将导致Unity3D工程源代码在编译发布的时候因为提示错误导致发布失败的问题。本实施例的测试程序采用了C#的反射机制进行处理,获取已加载到此应用程序域的执行上下文中的程序集,根据lambda表达式:Textrue=>Texture.GetType().Any(t=>t.Name==”ShaderUtil”)筛选出名称为ShaderUtil的程序集合,并返回集合中的第一个元素,如果没有则返回默认值。通过GetMethods()方法获取ShaderUtil类中的所有方法,其返回类型为MethodInfo类型,用于取得该类的方法的信息。通过这种方式,测试程序在未引用Editor类的情况下,依然能够实现纹理贴图分辨率配置信息获取相关接口的使用,解决了编译发布的问题。
进一步的,本实施例中将获取包含材质的纹理贴图的名称信息,材质的纹理贴图的最大分辨率设置,以及材质的纹理贴图的图片格式设置;然后于标准数据进行对比,并依据对比结果生成测试报告。能针对性的解决现有测试需要手动记录、分析测试数据,且无法自动生成测试报告,导致测试末期占用较多时间成本的问题。
本实施例能够完整、全自动化的检测纹理贴图的分辨率相关配置信息是否符合标准,实现智能化检测的同时,能够最大幅度降低在配置检测环节中大量时间和人力成本的投入;同时又能提高检测的效率和检测的精度。
实施例二
请参照图3,本实施例提供在实施例一的基础上,提供一具体运用场景。该场景基于搭建在客户端中的测试框架与虚拟现实软件(应用程序)的服务器端的远程通信交互实现。
首先,采用C/S结构设计模式,通过Socket通信的方式,实现测试框架与虚拟现实软件间的数据交互。具体请参阅图4,在虚拟现实软件启动时,分别在虚拟框架中创建Socket客户端,在服务器端建立Socket服务端,其中,Socket服务端通过挂载的方式集成在虚拟现实软件中。
Socket服务端实时监听来自Socket客户端的连接请求,开启阻塞模式直到Socket客户端发来连接请求。
具体的,通过挂载的脚本组件分别调用socket()创建TCP套接口,bind()绑定IP地址和端口号,listen()转换主动套接口为被动套接口完成初始化服务器,并阻塞等待客户端的连接请求。
然后,测试框架在完成Socket客户端初始化后,并接收到测试指令时,Socket客户端通过服务器端的IP地址和端口号向服务器端发送连接请求;优选Socket客户端通过调用connect()向服务器发送连接请求,并在发送请求后阻塞等待服务器应答;
Socket服务端接收到来自Socket客户端的连接请求后,对所述连接请求进行处理,建立二者的通信连接。通过Socket客户端与Socket服务端之间的通信,实现客户端与服务器端之间远程的数据交互。优选的,服务器回复应答并阻塞等待客户端发送请求数据后,客户端同样回复一个连接成功的应答,此时客户端和服务器建立通信连接。
Socket客户端发送包含了测试程序的调用指令的纹理贴图配置信息检测请求至Socket服务端;
Socket服务端接收上述请求,并处理,获取其中的调用指令,并据此调用对应的测试程序进行应用程序中纹理贴图配置信息检测,其中,测试程序也是以挂载的方式集成在虚拟现实软件中,在测试程序执行期间测试框架的Socket客户端阻塞等待服务器应答。
Socket服务端在执行完成后会将采集的数据以Json数据组的格式返回给Socket客户端;测试框架会对返回数据进行解析,与标准数据进行比对,得到比较信息。具体的,所述解析处理包括通过JsonConvert类的DeserializeObject函数对包含了数据组的json字符串进行反序列化处理。测试框架连接数据库,提取数据库中的标准数据表,该表记录了用于衡量测试结果的标准信息(Max Size为2048*2048,Format为Compressed)。数据组中的材质的纹理贴图的最大分辨率设置,以及材质的纹理贴图的图片格式设置一一与标准数据进行匹配,然后根据预先定义的格式提取比对信息。优选将统计出测试报表所需的信息,包含了测量编号,材质的纹理贴图的最大分辨率符合标准的纹理贴图的通过数和未通过数,材质的纹理贴图的图片格式设置准确性的通过数和未通过数。最后,测试框架调用报告接口,通过传递这些信息,生成对应的测试报表。最后,客户端调用close()向Socket服务端发送中断连接请求,Socket服务端接收到请求后,中断连接。
本实施例的测试程序被Socket服务端调用后执行的步骤如实施例一所述,在此不进行复述。
本实施例在同时具备实施例一的效果基础上,还能不受是否提供项目源代码的限制。
实施例三
本实施例对应实施例一,提供一种计算机可读存储介质,其上存储有计算机测试程序,在接收纹理贴图配置信息检测请求后,处理器调用所述计算机测试程序实现以下步骤:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S01:声明一个物件对象类型的数据组,存储所述所有物件对象;
S02:声明一个key类型为字符串、Value类型为MethodInfo类的字典;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;具体的,依据反射机制遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,依次存储至所述字典中。
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式;
S10:读取所述纹理贴图的名称信息,建立所述名称信息与对应的最大纹理尺寸和纹理格式的关联关系;
S11:依据所述关联关系,与标准库中的标准最大纹理尺寸和标准纹理格式进行对比,得到对比信息;
S12:依据预设的格式获取所有纹理贴图的对比信息;
S13:调用报告接口,依据所获取的对比信息生成对应的测试报表。
综上所述,本发明提供的一种基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法、存储介质,不仅能够实现全自动检测,且不会对源代码的正常编译发布造成影响;并且,能够大幅度降低人力和时间的投入;进一步的,还能自动化生成测试报告,直观的展示测试结果;本发明能够实现智能化检测,提高检测的效率和检测的精度。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,其特征在于,包括:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
所述S4具体为:依据反射机制遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,依次存储至所述字典中;
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
2.如权利要求1所述的基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,其特征在于,还包括:
S10:读取所述纹理贴图的名称信息,建立所述名称信息与对应的最大纹理尺寸和纹理格式的关联关系;
S11:依据所述关联关系,与标准库中的标准最大纹理尺寸和标准纹理格式进行对比,得到对比信息。
3.如权利要求2所述的基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,其特征在于,所述S11之后,还包括:
S12:依据预设的格式获取所有纹理贴图的对比信息;
S13:调用报告接口,依据所获取的对比信息生成对应的测试报表。
4.如权利要求1所述的基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,其特征在于,所述S2之后,S3之前,还包括:
S01:声明一个物件对象类型的数据组,存储所述所有物件对象;
S02:声明一个key类型为字符串、Value类型为MethodInfo类的字典。
5.如权利要求1所述的基于Unity3D引擎的虚拟现实技术中纹理贴图配置信息的检测方法,其特征在于,所述S8具体为:
S81:声明一个纹理类型的列表;
S82:遍历所述属性数据组,判断遍历到的属性的类型是否为纹理,若是,则将对应属性所引用的纹理贴图存储至所述列表中。
6.一种计算机可读存储介质,其上存储有计算机测试程序,其特征在于,在接收纹理贴图配置信息检测请求后,处理器调用所述计算机测试程序实现以下步骤:
S1:接收纹理贴图配置信息检测请求;
S2:获取当前虚拟场景中所有物件对象;
S3:获取应用程序下名称为着色器工具的程序集;
S4:遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,建立字典;
所述S4具体为:依据反射机制遍历所述程序集中所有的方法函数,以遍历到的方法函数的函数名为key、方法函数对应的方法体为Value,依次存储至所述字典中;
S5:遍历所述所有物件对象下的组件列表,获取其中所有的材质组件;
S6:依据所述字典,以获得所有属性构成的数据组所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取各材质组件对应的属性数据组;
S7:依据所述字典,以获得属性的类型信息所对应的函数名为key,获取对应的方法体,并通过调用所获取的方法体获取所述属性数据组中各属性对应的类型;
S8:遍历所述属性数据组,获取类型为纹理的属性;
S9:获取所述属性引用的纹理贴图对应的最大纹理尺寸和纹理格式。
7.如权利要求6所述的计算机可读存储介质,其特征在于,所述计算机测试程序还能实现以下步骤:
S10:读取所述纹理贴图的名称信息,建立所述名称信息与对应的最大纹理尺寸和纹理格式的关联关系;
S11:依据所述关联关系,与标准库中的标准最大纹理尺寸和标准纹理格式进行对比,得到对比信息。
8.如权利要求7所述的计算机可读存储介质,其特征在于,所述计算机测试程序还能实现以下步骤:
S12:依据预设的格式获取所有纹理贴图的对比信息;
S13:调用报告接口,依据所获取的对比信息生成对应的测试报表。
9.如权利要求6所述的计算机可读存储介质,其特征在于,所述S2之后,S3之前,还包括:
S01:声明一个物件对象类型的数据组,存储所述所有物件对象;
S02:声明一个key类型为字符串、Value类型为MethodInfo类的字典。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710820490.3A CN107767434B (zh) | 2017-09-13 | 2017-09-13 | 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710820490.3A CN107767434B (zh) | 2017-09-13 | 2017-09-13 | 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107767434A CN107767434A (zh) | 2018-03-06 |
CN107767434B true CN107767434B (zh) | 2021-06-29 |
Family
ID=61265799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710820490.3A Active CN107767434B (zh) | 2017-09-13 | 2017-09-13 | 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107767434B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117209B (zh) * | 2018-07-23 | 2021-10-01 | 广州多益网络股份有限公司 | 序列化和反序列化方法及装置 |
CN113730920B (zh) * | 2021-09-15 | 2023-10-20 | 福建天晴在线互动科技有限公司 | 一种预设组件同步属性的方法及其系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391731A (zh) * | 2014-09-29 | 2015-03-04 | 北京广利核系统工程有限公司 | 一种基于c#的与数据类型无关的编辑方法 |
CN106056661A (zh) * | 2016-05-31 | 2016-10-26 | 钱进 | 基于Direct3D 11的三维图形渲染引擎 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786461A (zh) * | 2014-12-23 | 2016-07-20 | 天津市亚安科技股份有限公司 | 一种基于虚拟现实的安防监控产品设计方法 |
US10037627B2 (en) * | 2015-08-14 | 2018-07-31 | Argis Technologies Llc | Augmented visualization system for hidden structures |
CN106354647B (zh) * | 2016-08-31 | 2018-02-27 | 腾讯科技(深圳)有限公司 | 一种应用检测方法及服务器 |
CN106815131B (zh) * | 2016-12-27 | 2019-11-26 | 珠海金山网络游戏科技有限公司 | 一种基于Unity引擎的游戏资源检查方法和系统 |
-
2017
- 2017-09-13 CN CN201710820490.3A patent/CN107767434B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391731A (zh) * | 2014-09-29 | 2015-03-04 | 北京广利核系统工程有限公司 | 一种基于c#的与数据类型无关的编辑方法 |
CN106056661A (zh) * | 2016-05-31 | 2016-10-26 | 钱进 | 基于Direct3D 11的三维图形渲染引擎 |
Also Published As
Publication number | Publication date |
---|---|
CN107767434A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108958736B (zh) | 页面生成方法、装置、电子设备及计算机可读介质 | |
CN107748715B (zh) | 基于Unity的纹理贴图配置信息检测方法及其系统 | |
CN107659455B (zh) | 一种iOS端Mock数据的方法、存储介质、设备及系统 | |
CN110427331A (zh) | 基于接口测试工具自动生成性能测试脚本的方法 | |
CN107391119B (zh) | 一种横竖屏实现方法及装置 | |
CN107767434B (zh) | 虚拟现实技术中纹理贴图配置信息的获取方法、存储介质 | |
CN108287791B (zh) | 虚拟现实软件的纹理资源配置的检测方法及存储介质 | |
CN114494024B (zh) | 图像渲染方法、装置、设备及存储介质 | |
CN111597102A (zh) | 一种页面性能的测试方法、终端及存储介质 | |
CN108153655A (zh) | 虚拟现实软件的绘制调用数量的检测方法及存储介质 | |
CN112291610A (zh) | 一种Web端视频编辑器针对移动端适配的方法 | |
CN114092590B (zh) | 电子设备及其图像渲染性能的评估方法、介质 | |
CN116414689A (zh) | 一种基于反射机制的接口参数校验方法及系统 | |
CN108491230A (zh) | 动画显示方法和装置、客户端 | |
CN114217927A (zh) | 一种线程调用方法、装置、计算机设备及存储介质 | |
CN108573505B (zh) | 虚拟视场合理性检测的方法及其系统、存储介质 | |
CN113760707A (zh) | 接口测试方法、装置、设备及计算机可读存储介质 | |
CN111080745B (zh) | 一种PowerPoint中图片重新着色的方法及终端 | |
CN111192336A (zh) | 一种还原pptx中背景标题阴影线性渐变的方法及终端 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
CN112015650B (zh) | 基于计算机视觉的事件测试方法及装置 | |
CN115705272A (zh) | 一种页面测试的方法、相关装置及设备 | |
CN111752813B (zh) | 一种dos下bmc显存的测试方法及系统 | |
CN111881045B (zh) | 工业相机仿真方法、装置及插件 | |
CN117827628A (zh) | 信息展示方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |