[发明专利]基于图形学的大场景快速求交方法有效
申请号: | 201910410023.2 | 申请日: | 2019-05-16 |
公开(公告)号: | CN110111408B | 公开(公告)日: | 2023-03-14 |
发明(设计)人: | 丁伟;阮怀照;刘从丰 | 申请(专利权)人: | 洛阳众智软件科技股份有限公司 |
主分类号: | G06T15/50 | 分类号: | G06T15/50;G06T15/20 |
代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 付登云 |
地址: | 471000 河南省洛阳市洛阳高新*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 图形学 场景 快速 方法 | ||
本发明涉及一种基于图形学的大场景快速求交方法,对场景进行预渲染,获取场景深度;将所述场景深度输出至片段着色器,获取第一深度值;将所述第一深度值打包为像素值并将所述像素值输出至帧缓冲区;通过WebGL读取所述帧缓冲区的颜色值;解包所述颜色值获取第二深度值;根据第二深度值和屏幕空间向量计算屏幕坐标对应的场景三维坐标;本发明基于WEB场景渲染来实现的深度计算,使得求交的速度与渲染速度相当,原始的渲染帧值在80fps左右,而采用本申请的求交方法的求交帧值可达70fps;而且利用的还是原始的帧缓冲区,因此几乎不需要消耗额外的内存;本发明与场景复杂度无关,渲染速度快,效率提高至少10倍以上且渲染精度高、显示效果好。
技术领域
本发明属于三维求交技术领域,具体涉及一种基于图形学的大场景快速求交方法。
背景技术
现有的求交技术多为基于空间分割树求交技术,主要分为计算包围盒、按照包围盒求交、对于与包围盒相交的节点与节点内的模型求交三个步骤。
首先计算场景中各级节点的包围盒,包围盒是一个能够恰好容纳所属节点中的全部模型的方盒。接下来根据各级节点的包围盒与射线进行求交。由于包围盒能够完全容纳节点中的所有模型,所以如果射线与包围盒不相交,则射线一定不会和包围盒中的模型的任意部分相交。此步骤主要是为了提高求交速度。经过上面两步将得到所有与射线相交的叶节点。这些节点不再有子节点,故如果场景中的某个模型与射线相交,则它一定在这些叶节点中。依次对每个与包围盒相交节点中的模型中的所有三角面进行求交,将会得到与射线相交的所有三角面列表。通过空间几何的方法计算射线与这些面的交点即为射线与场景的交点。
最后,如果最终没有得到任何交点,则说明射线与场景不相交。如果最终只得到一个交点,则射线与场景交于该点。如果得到一组交点,则可以通过比较每个交点与相机的位置关系找出距离相机沿相机观察方向最近的一点,该点即为射线与场景的交点。
由上述内容可知,已有的场景求交大多数基于空间分割树,且要求几何数据必须有完整的结构、极大地占用内存,尤其是浏览器自身有内存使用限制的情况、算法效率和场景数据量紧密相关、随着场景数据量不断加大、渲染速度和场景加载效率大幅度下降等问题。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种基于图形学的大场景快速求交方法,以解决现有技术中的求交方法极大地占用内存、渲染速度以及场景加载效率低的问题。
为实现以上目的,本发明采用如下技术方案:一种基于图形学的大场景快速求交方法,包括:
对场景进行预渲染,获取场景深度;
将所述场景深度输出至片段着色器,获取第一深度值;
将所述第一深度值无损打包为像素值并将所述像素值输出至帧缓冲区;
通过WebGL读取所述帧缓冲区的颜色值;
解包所述颜色值获取第二深度值;
根据第二深度值和屏幕空间向量计算屏幕坐标对应的场景三维坐标。
进一步的,所述对场景进行预渲染,获取场景深度,包括:
计算顶点着色器的视坐标及投影坐标获取所述视坐标z值。
进一步的,所述将所述第一深度值打包为像素值并将所述像素值输出至帧缓冲区,包括:
通过所述片段着色器将所述z值打包为颜色向量;
计算所述颜色向量的RGB分量;
将所述RGB分量保存至帧缓冲区。
进一步的,所述通过WebGL读取所述帧缓冲区的颜色值,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于洛阳众智软件科技股份有限公司,未经洛阳众智软件科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910410023.2/2.html,转载请声明来源钻瓜专利网。