3D模型加载方法、服务器、存储介质、处理器与流程

文档序号:20922584 发布日期:2020-05-29 14:21
3D模型加载方法、服务器、存储介质、处理器与流程

本发明涉及虚拟现实技术领域,尤其涉及一种3d模型加载方法、服务器、存储介质、处理器。



背景技术:

在传统设备3d模型加载中,模型数据加载应用皆是采用统一的流程化公式加载,由于早期3d模型加载应用领域局限于pc电脑,统一流程化加载相对稳定。

但是,由于现在智能化设备的普及,不同的终端设备具有不同的参数信息,统一流程化加载3d模型经常会因终端设备性能不足导致3d模型在加载过程中出现卡死、崩溃掉线等情况,导致很多用户加载3d模型时所得到的3d模型不全,出现材质丢失等问题,用户不得不多次重复下载,亦或是终端设备性能不足以支撑3d模型,导致下载时间过长,以上情况极大地降低了用户的体验感。



技术实现要素:

为了克服现有技术的不足,本发明所要解决的技术问题在于提出一种3d模型加载方法、服务器、存储介质、处理器,以实现根据不同终端进行适应性优化3d模型数据,解决现有技术中终端统一流程化加载3d模型易出现卡死、崩溃掉线等情况的技术问题,提升用户体验感。

第一方面,本发明实施例提供了一种3d模型加载方法,包括:

获取终端的性能评估参数;

服务器根据所述性能评估参数优化所述终端请求加载的3d模型数据;

所述终端加载优化后的3d模型数据。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述的获取终端的性能评估参数,包括:

获取所述终端的设备参数;

在服务器数据库中获取与所述设备参数相匹配的性能评估参数。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述设备参数包括硬件配置信息和/或软件操作环境信息。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述的在服务器数据库中获取与所述设备参数相匹配的性能评估参数,包括:

在服务器数据库中获取与所述设备参数的cpu参数相匹配的cpu性能评估参数;

在服务器数据库中获取与所述设备参数的gpu参数相匹配的gpu性能评估参数。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述的服务器根据所述性能评估参数优化所述终端请求加载的3d模型数据,包括:

根据所述性能评估参数获取所述终端的模型可承载面数;

获取所述终端请求加载的3d模型数据的面数;

比对所述模型可承载面数和所述3d模型数据的面数;若所述3d模型数据的面数小于或等于所述模型可承载面数,则采用所述3d模型数据;若所述3d模型数据的面数大于所述模型可承载面数,则对所述3d模型数据进行减面优化处理。

结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述减面优化处理包括以下之一:

high级减面优化处理;

medium级减面优化处理;

low级减面优化处理。

结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述的所述终端加载优化后的所述3d模型数据,包括:

根据所述性能评估参数获取与之适配的下载配置;

所述终端在所述下载配置下接收优化后的3d模型数据。

第二方面,本发明实施例提供了一种服务器,包括:

获取模块,用于获取终端的性能评估参数;

优化模块,用于根据所述性能评估参数优化所述终端请求加载的3d模型数据;

传输模块,用于向所述终端返回优化后的3d模型数据。

第三方面,本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的方法。

第四方面,本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任一项所述的方法。

本发明提供的一种3d模型加载方法,通过获取当前终端的性能评估参数,服务器根据当前终端的性能评估参数优化终端请求加载的3d模型数据,终端加载优化后的3d模型数据,从而根据不同的终端的性能进行适应性优化终端请求加载的3d模型数据,使3d模型数据匹配用户终端设备信息,实现针对特定设备进行特定优化,使每个用户都能在自己终端设备使用最佳的3d模型加载方案。有效解决了现有技术中终端统一流程化加载3d模型易出现卡死、崩溃掉线等情况的技术问题,极大地提升了用户体验感。

同时,通过根据终端的性能评估参数获取与之适配的下载配置,终端在下载配置之下接收优化后的3d模型数据,即进行二次优化,从对3d模型数据进行适应性优化再到传输上针对特定设备进行特定下载配置,使每个用户都能在自己终端设备使用最佳的3d模型加载方案。有效解决了现有技术中因终端设备性能不足以支撑3d模型而导致下载时间过长的技术问题,极大地提升了用户体验感。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明具体实施方式中提供的3d模型加载方法的流程示意图一;

图2是本发明具体实施方式中提供的3d模型加载方法的流程示意图二;

图3是本发明具体实施方式中提供的3d模型加载方法的示意图;

图4是本发明具体实施方式中提供的服务器的示意图。

图中:

1、获取模块;2、优化模块;3、传输模块。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

如图1至图3所示,本实施例提供了一种3d模型加载方法,包括:

步骤s101:获取终端的性能评估参数。以用于评估当前终端的性能。

步骤s102:服务器根据性能评估参数优化终端请求加载的3d模型数据。即根据前终端的性能进行适应性优化请求加载的3d模型数据,使3d模型数据匹配用户终端设备信息。

步骤s103:终端加载优化后的3d模型数据。

其中,步骤s101中,获取终端的性能评估参数,包括:

步骤s1011:获取终端的设备参数;

步骤s1012:在服务器数据库中获取与设备参数相匹配的性能评估参数。

可选地,步骤s1011中,上述终端可以包括但不限于安卓系统手机,平板电脑,ios手机,平板电脑,vr一体机(oculusgo/quest、pico、大鹏vr),windowspc电脑,linuxpc,macospc等。

可选地,步骤s1011中,设备参数包括终端的硬件配置信息和软件操作环境信息,硬件配置信息包括cpu信息(cpu为中央处理器)、gpu信息(gpu为图形处理器)、内存信息、网络适配器信息、软硬件驱动器信息等,软件操作环境信息包括系统驱动、操作系统信息、系统线程、已安装网络协议、已安装网络客户端等。

其中,步骤s1011中,首先请求当前运行环境,然后发送请求读取用户终端的设备参数的指令,如果成功获取用户终端的硬件配置信息和软件操作环境信息,将用户终端的硬件配置信息和软件操作环境信息写入缓存文档临时存储;

其中,如果获取终端的硬件配置信息和软件操作环境信息失败则重复以上步骤(请求当前运行环境,然后发送请求读取用户终端的设备参数的指令),当多次请求失效后调用手动输入模块,用户此时需要手动输入当前终端的设备参数,当用户输入设备参数确认后记录存储设备参数。

其中,获取终端的设备参数的方法举例如下:

1)pc程序使用c#代码编写根据win32api依次获取cpu序列号、获取网卡硬件地址、获取ip地址、获取硬盘id、获取用户信息、获取pc系统类型、获取物理内存等,具体参考如下:

try{//获取cpu序列号代码stringcpuinfo="";//cpu序列号managementclassmc=newmanagementclass("win32_processor");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){cpuinfo=mo.properties["processorid"].value.tostring();}moc=null;mc=null;returncpuinfo;}catch{return"unknow";}

try{//获取网卡硬件地址stringmac="";managementclassmc=newmanagementclass("win32_networkadapterconfiguration");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){if((bool)mo["ipenabled"]==true){mac=mo["macaddress"].tostring();break;}}moc=null;mc=null;returnmac;}catch{return"unknow";}

try{//获取ip地址stringst="";managementclassmc=newmanagementclass("win32_networkadapterconfiguration");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){if((bool)mo["ipenabled"]==true){//st=mo["ipaddress"].tostring();system.arrayar;ar=(system.array)(mo.properties["ipaddress"].value);st=ar.getvalue(0).tostring();break;}}moc=null;mc=null;returnst;}catch{return"unknow";}

try{//获取硬盘idstringhdid="";managementclassmc=newmanagementclass("win32_diskdrive");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){hdid=(string)mo.properties["model"].value;}moc=null;mc=null;returnhdid;}catch{return"unknow";}

try{//获取登录用户idstringst="";managementclassmc=newmanagementclass("win32_computersystem");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){st=mo["username"].tostring();}moc=null;mc=null;returnst;}catch{return"unknow";}

try{//pc类型stringst="";managementclassmc=newmanagementclass("win32_computersystem");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){st=mo["systemtype"].tostring();}moc=null;mc=null;returnst;}catch{return"unknow";}

try{//物理内存型stringst="";managementclassmc=newmanagementclass("win32_computersystem");managementobjectcollectionmoc=mc.getinstances();foreach(managementobjectmoinmoc){st=mo["totalphysicalmemory"].tostring();}moc=null;mc=null;returnst;}catch{return"unknow";}

2)安卓终端可使用android.os.buildsdk获取列,使用returnandroid.os.build.version.release获取系统版本。

其中,步骤s1012中,在服务器数据库中获取与设备参数相匹配的性能评估参数,包括:

在服务器数据库中获取与设备参数的cpu参数相匹配的cpu性能评估参数;即根据获取的终端的硬件配置信息中的cpu信息在服务器数据库中比对同cpu的性能数据,而获取cpu性能评估参数;

在服务器数据库中获取与设备参数的gpu参数相匹配的gpu性能评估参数;即根据获取的终端的硬件配置信息中的gpu信息在服务器数据库中比对同gpu的性能数据,而获取gpu性能评估参数;

其中,获取各性能评估参数后,将性能评估参数存储本地用户信息内。

其中,可根据cpu信息比对同cpu的大数据平均网络性能数据取范围区间,获取cpu性能评估参数,通过内存比对得到写入速度的大数据区间,获取内存性能评估参数,综合网络端口等信息,按照终端的cpu、gpu综合解析能力获取终端的性能评估参数。

其中,服务器数据库为大数据云数据库,可将各种终端的设备参数、cpu性能评估参数、gpu性能评估参数等信息预存于服务器数据库中。

其中,步骤s102中,服务器根据性能评估参数优化终端请求加载的3d模型数据,包括:

步骤s1021:根据性能评估参数获取终端的模型可承载面数;可根据终端的cpu性能评估参数和gpu性能评估参数,在服务器数据库中获取与之匹配的模型可承载面数,例如30-50w面;

步骤s1022:获取终端请求加载的3d模型数据的面数;

步骤s1023:比对模型可承载面数和3d模型数据的面数;若3d模型数据的面数小于或等于模型可承载面数,则采用3d模型数据,即直接采用3d模型数据,无需进行优化,保存完整的3d模型数据;若3d模型数据的面数大于模型可承载面数,则对3d模型数据进行减面优化处理。

其中,步骤s1023中,减面优化处理包括以下之一:

high级减面优化处理;

medium级减面优化处理;

low级减面优化处理。

减面优化处理即使用自动化减面工具优化3d模型数据(high级减面优化处理、medium级减面优化处理、low级减面优化处理,优化处理后的效果依次降低),按照high级减面优化处理、medium级减面优化处理、low级减面优化处理三种优化方案依次对比终端的模型可承载面数,在终端的模型可承载面数内取最高效果,如果皆不满足则自动应用最低效果的low级减面优化处理。

其中,减面优化处理原理如下:

对顶点和面进行预处理,生成如下结构:

生成之后,根据这些信息计算每个顶点向他的每个邻居顶点坍缩的代价,a向b坍缩即消去a,将a的每个邻居边里的a替换为b。

下式为u向v坍缩的cost:

tu是包含顶点u的三角形的集合;

tuv是同时包含顶点u和顶点v的三角形的集合。

两个面的法线相乘越接近1,则说明两个面越接近于平行,消去影响较小,式中用1-x/2将范围从-1,1映射到0,1,值越小消去的影响越小。在最里层,找到影响的最小值,对于包含顶点u和顶点v的三角形,消去意味着这些面消失了;在外层,找到影响的最大值,即找到包含u但不会消失的面对视觉的最大影响。最后乘以距离,距离越大,越不易消去。消去代价最小的节点,此时注意要即时更新第一步生成的结构。不断消去,直到顶点数小于某值。

本实施例中,high级减面优化处理即为消去至顶点数小于原3d模型数据的80%,medium级减面优化处理即为消去至顶点数小于原3d模型数据的70%,low级减面优化处理即为消去至顶点数小于原3d模型数据的60%。

其中,步骤s103中,终端加载优化后的3d模型数据,包括:

步骤s1031:根据性能评估参数获取与之适配的下载配置;即根据性能评估参数中的硬件配置信息对应的性能评估参数和软件操作环境信息对应的性能评估参数,从后台云数据库中获取与之匹配的终端的下载配置,实现从后台云数据库中匹配近似终端的最优下载配置。

其中,下载配置包括带宽和下载速度。

步骤s1032:终端在下载配置下接收优化后的3d模型数据,将3d模型数据在终端上展示。实现优化3d模型数据流,使传输过程中稳定无卡顿。

由以上可以看出,本实施例提供的3d模型加载方法,通过获取当前终端的性能评估参数,服务器根据当前终端的性能评估参数优化终端请求加载的3d模型数据,终端加载优化后的3d模型数据,从而根据不同的终端的性能调用不同的优化处理进行适应性优化终端请求加载的3d模型数据,使3d模型数据匹配用户终端设备信息,实现针对特定设备进行特定优化,使每个用户都能在自己终端设备使用最佳的3d模型加载方案。有效解决了现有技术中终端统一流程化加载3d模型易出现卡死、崩溃掉线等情况的技术问题,极大地提升了用户体验感。同时,通过根据终端的性能评估参数获取与之适配的下载配置,终端在下载配置之下接收优化后的3d模型数据,即再进行二次优化,从对3d模型数据进行适应性优化再到传输上针对特定设备进行特定下载配置,使每个用户都能在自己终端设备使用最佳的3d模型加载方案。有效解决了现有技术中因终端设备性能不足以支撑3d模型而导致下载时间过长的技术问题,极大地提升了用户体验感。

实施例2

如图4所示,本实施例提供了一种服务器,包括:

-获取模块,用于获取终端的性能评估参数;

其中,程序运行首先请求当前运行环境,然后发送请求读取终端的设备参数的指令,如果成功获取用户终端的硬件配置信息和软件操作环境信息,将用户终端的硬件配置信息和软件操作环境信息写入缓存文档临时存储,如果获取终端的硬件配置信息和软件操作环境信息失败则重复以上步骤(请求当前运行环境,然后发送请求读取用户终端的设备参数的指令),当多次请求失效后调用手动输入模块,用户此时需要手动输入当前终端的设备参数,当用户输入设备参数确认后记录存储设备参数;

其中,程序获取用户终端的设备参数后立即向服务器数据库发送设备参数,服务器数据库接收到设备参数并处理比对后返回性能评估参数,程序将终端的性能评估参数存储本地用户信息内。

-优化模块,用于根据性能评估参数优化终端请求加载的3d模型数据;

其中,服务器收到用户选择的要导入的3d模型数据后,根据以上用户所存储的性能评估参数,将3d模型数据进行相应优化处理,服务器储存优化后的3d模型数据。

-传输模块,用于向终端返回优化后的3d模型数据;

其中,根据终端的性能评估参数,将优化后的3d模型数据自动匹配节点端口网关信息,适配最佳带宽、下载速度,优化用户下载体验。

其中,自动匹配节点端口网关信息,适配最佳带宽、下载速度,原理如下:

对资源数据传输效率优化需要先对数据进行封包传送,首先利用递进式分级解析网络资源数据,采用bm模式匹配算法对网络资源数据进行规则匹配过滤,依据网络资源数据的格式以及各个传送协议格式逐级解析截获的网络资源数据,实现网络资源数据解析过滤,在此基础上实现网络资源数据封包传送。

pinfo={pip,ppt,pp,pdata,pother}

式中,pip代表网络ip地址,ppt代表网络端口号,pp代表网络资源数据传送协议类型,pdata代表网络通信数据,pother代表网络的其它信息。在网络资源数据封包传送过程中,pip、pip、pp、pdata是实现网络资源数据监视和控制的必要数据。

ip地址保证了网络资源数据包的有效传输,对于各个网络资源数据p,ip地址pip=fip(p),fip代表网络ip地址解析方法,每个传输的网络资源数据包中均包含目的端口和源端口,端口号ppt=fpt(p),fpt代表端口号的解析方法,网络资源数据传送协议pp=fp(p),fp代表传送协议的解析方法,对于各个p都有相应的pp和它相应,各个网络资源数据p中均包含了协议信息。对于各个网络资源数据p,数据pdata=fdata(p),其中fdata代表网络资源数据的解析方法,对于不同的网络资源数据传送协议有不同的语法规则和编码形式,不同的数据传输协议fdata不同,则有

fdata={fhttp,fsmtp,fpop3,fftp,…}

式中,fhttp代表网络资源数据的解析方法,fsmtp代表smtp传送协议网络资源数据的解析方法,fpop3代表pop3协议资源数据的解析方法,fftp代表ftp协议资源数据的解析方法。网络资源数据规则rdata对应不同的网络数据封包传送协议设定不同的规则,利用下式定义规则集

r={rip,rpt,rp,rdata}

式中,rip代表网络资源数据封包传输ip地址规则,rpt代表端口号规则,rp代表网络资源数据封包传输协议规则,rdata代表网络资源数据规则。匹配规则是实现网络资源数据封包过滤以达到通信的目的,各级解析获得的网络资源数据与相应的规则进行匹配,由此完成网络资源中数据封包传送。根据此原理,实现对网络资源数据传输效率的优化。

实施例3

本实施例提供了一种存储介质,存储介质包括存储的程序,其中,程序运行时执行上述任一项的方法。

可选地,在本实施例中,上述存储介质可以被设置为用于执行以下步骤的程序代码:

s1,获取终端的性能评估参数;

s2,根据性能评估参数优化终端请求加载的3d模型数据;

s3,根据性能评估参数匹配下载配置。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-0nlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ramo、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本实施例还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述任一项方法中的步骤。

可选地,在本实施例中,上述程序用于执行以下步骤:

s1,获取终端的性能评估参数;

s2,根据性能评估参数优化终端请求加载的3d模型数据;

s3,根据性能评估参数匹配下载配置。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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