System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机图形学及三维渲染的软件开发,尤其涉及一种基于cesium三维引擎网格四叉树光源切割的方法。
技术介绍
1、cesium是web 3dgis引擎。cesium属于大场景三维渲染引擎,目前cesium并不支持除定向光以外的光源渲染方式,使得针对gis场景的光源效果单一。
2、针对底层三维引擎opengl而言,对于光照主要有延迟光照、切片式延迟着色法。延迟光照是将场景渲染过程中每个片元的颜色信息、坐标信息法线信息存储到帧缓冲中,最后绘制一个屏幕大小的矩形,并将存储的帧缓冲信息和光源信息传递给片元着色器进行光照计算,这使得每一个片元都需遍历一遍光源数据进行计算,使得耗费大量性能;切片式延迟着色法是将光源信息划分到不同的网格中,每个网格记录包含的光源的索引,在片元着色器中通过像素坐标找到对应的网格,并获取包含的光源信息,降低了每个片元对光源遍历的个数,但是这种适用于光源均匀分布在场景中的情况,对于光源比较集中的情况,仍然会多次遍历无效的光源信息。
技术实现思路
1、本部分的目的在于概述本专利技术的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和专利技术名称中可能会做些简化或省略以避免使本部分、说明书摘要和专利技术名称的目的模糊,而这种简化或省略不能用于限制本专利技术的范围。
2、为解决上述技术问题,本专利技术提供如下技术方案:一种基于cesium三维引擎网格四叉树光源切割的方法,主要包括以下步骤:
3、步骤一
4、步骤二:新增帧缓冲信息;
5、步骤三:点光源网格四叉树划分;
6、步骤四:光源渲染。
7、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述初始化点光源信息的步骤为:
8、s1:添加点光源,点光源起始一个点,向四面照射,会随着传输距离增加而衰减,通常点光源衰减程度离物体距离的平方成反比,公式如下:
9、
10、其中l1为点光源颜色,ldistance为点光源衰减后的颜色,distance为点光源到片元的距离;
11、s2:添加光源管理,即对点光源进行属性更新、删除、添加操作;
12、s3:将光源添加进三维场景中,每一帧更新场景光源信息。
13、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述点光源包含点光源坐标(position=vec3(x,y,z))、点光源颜色(color=vec3(r,g,b))、点光源强度、点光源衰减因子、常量衰减因子、线性衰减因子以及非线性衰减因子。
14、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述新增帧缓冲信息的步骤为:
15、s1:读取深度缓存信息;
16、s2:将深度值depth变换到标准化设备空间ndc中;
17、s3:标准化设备空间ndc坐标是从观察空间经过透视投影变换到裁剪空间,然后再通过透视除法变换而来的,需要经过反变换,将ndc坐标变换到观察空间;
18、s4:计算ndc坐标,ndc坐标是裁剪空间坐标经过透视除法计算得到;
19、s5:计算观察空间下的ze;
20、s6:读取cesium深度缓存的uv坐标,通过uv坐标计算观察空间下的xe和ye;
21、s7:观察空间坐标(xe,ye,ze)经过观察矩阵逆变换得到世界坐标。
22、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述变换后的ndc坐标设为zn,所述zn=depth*2.0-1.0。
23、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述深度的取值范围为[0,1]。
24、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述ndc取值范围为[-1,1]。
25、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述点光源网格四叉树划分步骤为:
26、s1:设置每个网格大小tilesize,计算网格的宽度tilewidth、高度tileheight和网格数量numtile;
27、s2:根据每个光源的影响半径计算每个光源的光源球体;
28、s3:经过视图变换计算光源球体的视图空间坐标;
29、s4:经过透视投影变换和透视除法计算光源球体的裁剪空间坐标;
30、s5:经过视口变换计算光源球体在屏幕上的范围坐标lightbound=(left,right,top,bottom);
31、s6:根据计算的光源映射的屏幕坐标和s1中的网格信息计算每个网格包含的光源,并将光源索引存储在网格信息中;
32、s7:设置每个网格最大光源数量n和最大四叉树最大深度k;
33、s8:遍历每个网格,判断网格包含的光源数量是否大于n,若大于n,则计算该网格为四叉树网格;
34、s9:对四叉树网格进行四等分,记录其子网格大小childtilesize、宽度childttilewidth和高度childtileheight;
35、s10:计算子四叉树网格是否包含父网格中的光源,并存储光源索引,然后从新执行s8直至每个网格包含的光源数量小于n,或达到了最大深度。
36、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述光源渲染步骤为:
37、s1:获取片元的屏幕坐标(x,y);
38、s2:根据片元屏幕坐标、网格大小、屏幕大小,计算出网格的索引;
39、s3:根据网格索引查找对应的网格信息;
40、s4:判断该网格是否进行四叉树划分;
41、s5:若没有四叉树划分,则获取网格所覆盖的光源索引;
42、s6:根据光源索引查找光源信息,然后确定片元的最终颜色信息;
43、s7:若进行了四叉树划分,计算片元坐标被包含在哪个四叉树网格中,并获取网格信息,然后跳转至s4,直至执行到s6该片元光源计算执行结束。
44、作为本专利技术所述基于cesium三维引擎网格四叉树光源切割的方法的一种优选方案,其中:所述光源信息包括光源坐标、颜色、光照强度以及衰减因子。
45、本专利技术的有益效果:
46、本专利技术提供的一种基于cesium三维引擎网格四叉树光源切割的方法是通过网格和四叉树结合的方法,减少每个网格覆盖的光源数量,这样在片元光照计算中减少无效光源的计算,提升光源的渲染性能。
本文档来自技高网...【技术保护点】
1.一种基于cesium三维引擎网格四叉树光源切割的方法,其特征在于,包括以下步骤:
2.如权利要求1所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述初始化点光源信息的步骤为:
3.如权利要求2所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述点光源包含点光源坐标(position=vec3(x,y,z))、点光源颜色(color=vec3(r,g,b))、点光源强度、点光源衰减因子、常量衰减因子、线性衰减因子以及非线性衰减因子。
4.如权利要求1所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述新增帧缓冲信息的步骤为:
5.如权利要求4所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述变换后的NDC坐标设为zn,所述zn=depth*2.0-1.0。
6.如权利要求4所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述深度的取值范围为[0,1]。
7.如权利要求4所述的基于cesium三维引擎网格四
8.如权利要求1所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述点光源网格四叉树划分步骤为:
9.如权利要求1所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述光源渲染步骤为:
10.如权利要求9所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述光源信息包括光源坐标、颜色、光照强度以及衰减因子。
...【技术特征摘要】
1.一种基于cesium三维引擎网格四叉树光源切割的方法,其特征在于,包括以下步骤:
2.如权利要求1所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述初始化点光源信息的步骤为:
3.如权利要求2所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述点光源包含点光源坐标(position=vec3(x,y,z))、点光源颜色(color=vec3(r,g,b))、点光源强度、点光源衰减因子、常量衰减因子、线性衰减因子以及非线性衰减因子。
4.如权利要求1所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述新增帧缓冲信息的步骤为:
5.如权利要求4所述的基于cesium三维引擎网格四叉树光源切割的方法,其特征在于:所述...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。