一种基于视景仿真的大场景分块加载方法与流程

文档序号:24073427发布日期:2021-02-26 16:16阅读:117来源:国知局
一种基于视景仿真的大场景分块加载方法与流程

[0001]
本发明涉视景仿真领域,具体是指一种基于视景仿真的大场景分块加载方法。


背景技术:

[0002]
视景仿真是计算机技术,图形技术,光学技术,控制技术等多种高科技的结合,为了在仿真中展现出更加逼真的效果,大地图,大场景的加载就是必不可少的需求,通常场景在比较大时,一次性加载时间较长,且加载之后用户不一定会走完地图的每个角落,为了减少等待地图加载的时间和降低客户端的内存消耗,就有了分块加载地图的解决方案,但是分块地图加载时,如何保证统一且完整性的光照贴图效果又是一个需要解决的问题。


技术实现要素:

[0003]
基于以上问题,本发明提供了一种基于视景仿真的大场景分块加载方法,解决了大地图加载时间较长,用户体验效果较差的问题。
[0004]
为解决以上技术问题,本发明采用的技术方案如下:
[0005]
一种基于视景仿真的大场景分块加载方法,包括如下步骤:
[0006]
s1、建立三维直角坐标系制作大场景资源;
[0007]
s2、对制作好的大场景资源进行烘焙光照贴图;
[0008]
s3、将烘焙完成的大场景资源进行场景拆分,拆分为预设数量的正方体区块,并按顺序进行命名;
[0009]
s4、计算基准点区块在正方体区块中的索引;
[0010]
s5、通过基准点区块的索引加载正方体区块及其相邻的预设数量的正方体区块文件,进行场景加载。
[0011]
进一步,所述步骤s1中,x轴沿大场景的长度方向设置,y轴沿大场景的高度方向设置,z轴沿大场景的宽度方向设置。
[0012]
进一步,所述步骤s2中,使用辐射度算法进行烘焙光照贴图,包括如下三个步骤:
[0013]
s21、通过网格对大场景进行切分,使其由若干个立体像素构成;
[0014]
s22、计算每一个立体像素所受到的光照色彩和强度,并转化为rgb空间的像素信息,转化rgb空间的像素信息的算法为:
[0015]
(r,g,b)=((x,y,z)+1)/2;
[0016]
其中,(r,g,b)表示rgb空间的像素信息,r,g,b分别为rgb空间的像素信息的红、绿、蓝的分量值,(x,y,z)表示光照方向信息,x,y,z分别为光照方向信息再三维坐标系下的三个方向对应的向量分量值;
[0017]
s23、根据每一个rgb空间的像素信息进行合成,生成光照贴图,渲染大场景。
[0018]
进一步,所述步骤s3中,将大场景分割成底面是x轴和z轴两个坐标轴构成的平面的预设数量的正方体区块,每个正方体区块对应一个数据包,所述数据包包含大场景数据和光照贴图数据,以大场景左下角为基准点,对正方体区块以右、上为正方向按顺序进行命
名。
[0019]
进一步,所述步骤s4中,计算场景拆分中的基准点区块在正方体区块中x轴的索引和z轴的索引,其中,x轴的索引为:
[0020]
x=(int)(pos.x/a);
[0021]
其中,pos表示摄像机当前的视点位置,pos.x表示摄像机当前视点位置向量在x轴上的分量,a表示场景拆分中正方体区块底面的边长,x表示加载基准点区块的横向索引;
[0022]
另外,z轴的索引为:
[0023]
z=(int)(pos.z/a);
[0024]
其中,pos表示摄像机当前的视点位置,pos.z表示摄像机当前视点位置向量在z轴上的分量,a表示场景拆分中正方体区块底面的边长,z表示加载基准点区块的竖向索引。
[0025]
进一步,所述步骤s5中,计算出的基准点区块不在正方体区块及与其相邻的预设数量的正方体区块的范围内,则释放卸载所述已加载的正方体区块对应的数据包。
[0026]
与现有技术相比,本发明的有益效果是:
[0027]
(1)可根据摄像机所处的视点位置和视角方向,动态加载和释放周边区块场景,使观察者能够获得较好的视觉体验;
[0028]
(2)大幅减少了场景加载的时间,只需加载索引的正方体区块的文件和相邻文件即可,降低软件的内存消耗。
附图说明
[0029]
图1为本实施例的流程图;
[0030]
图2为本实施例烘焙的光照贴图;
[0031]
图3为大场景拆分的效果图。
具体实施方式
[0032]
下面结合附图对本发明作进一步的说明。本发明的实施方式包括但不限于下列实施例。
[0033]
如图1所示,一种基于视景仿真的大场景分块加载方法,包括如下步骤:
[0034]
s1、建立三维直角坐标系制作大场景资源;
[0035]
根据用户需求,建立三维直角坐标系,其中,x轴沿大场景的长度方向设置,y轴沿大场景的高度方向设置,z轴沿大场景的宽度方向设置。
[0036]
s2、对制作好的大场景资源进行烘焙光照贴图;
[0037]
光照贴图是一种特殊的纹理,储存了大场景中物体表面各处的最终光照,当大场景中的物体和光源没有发生变化时,光路也不会发生变化,因此光照贴图可以通过预计算得到,这样,在实时渲染过程中就可以避免复杂的光路计算而直接使用保存在光照贴图中的光照信息,预计算光照贴图的过程称作光照贴图的烘培,本实施例中,使用辐射度算法进行烘焙光照贴图,包括如下三个步骤:
[0038]
s21、通过网格对大场景进行切分,使其由若干个立体像素构成;
[0039]
s22、计算每一个立体像素所受到的光照色彩和强度,并转化为rgb空间的像素信息,转化rgb空间的像素信息的算法为:
[0040]
(r,g,b)=((x,y,z)+1)/2;
[0041]
其中,(r,g,b)表示rgb空间的像素信息,r,g,b分别为rgb空间的像素信息的红、绿、蓝的分量值,(x,y,z)表示光照方向信息,x,y,z分别为光照方向信息再三维坐标系下的三个方向对应的向量分量值;
[0042]
s23、根据每一个rgb空间的像素信息进行合成,生成光照贴图,渲染大场景,形成如图2所示的效果图。
[0043]
s3、将烘焙完成的大场景资源进行场景拆分,拆分为预设数量的正方体区块,并按顺序进行命名;
[0044]
将大场景分割成底面是x轴和z轴两个坐标轴构成的平面的预设数量的正方体区块,每个正方体区块对应一个数据包,所述数据包包含大场景数据和光照贴图数据,以大场景左下角为基准点,对正方体区块以右、上为正方向按顺序进行命名,形成如图3所示的效果。
[0045]
s4、计算基准点区块在正方体区块中索引;
[0046]
根据摄像机当前的视点位置和视角方向进行计算,计算场景拆分中的基准点区块在正方体区块中x轴的索引和z轴的索引,其中,x轴的索引为:
[0047]
x=(int)(pos.x/a);
[0048]
其中,pos表示摄像机当前的视点位置,pos.x表示摄像机当前视点位置向量在x轴上的分量,a表示场景拆分中正方体区块底面的边长,x表示加载基准点区块的横向索引;
[0049]
另外,z轴的索引为:
[0050]
z=(int)(pos.z/a);
[0051]
其中,pos表示摄像机当前的视点位置,pos.z表示摄像机当前视点位置向量在z轴上的分量,a表示场景拆分中正方体区块底面的边长,z表示加载基准点区块的竖向索引。
[0052]
s5、通过基准点区块索引加载正方体区块及其相邻的预设数量的正方体区块文件,进行场景加载;
[0053]
计算出的基准点区块不在正方体区块及与其相邻的预设数量的正方体区块的范围内,则释放卸载所述已加载的正方体区块对应的数据包,以减少系统的内存消耗。
[0054]
如上即为本发明的实施例。上述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1