模型瓦片渲染方法、装置及存储介质制造方法及图纸

技术编号:38854595 阅读:13 留言:0更新日期:2023-09-17 10:00
本公开实施例公开了一种模型瓦片渲染方法、装置及存储介质,其中,方法包括:基于帧动画机制按照设定帧率执行设定任务,所述设定任务包括获取当前帧的可见瓦片、基于所述当前帧的可见瓦片更新纹理上传队列、对设定计数器执行设定操作,所述纹理上传队列中包括已获取的可见瓦片的瓦片信息;响应于所述设定计数器的计数值为设定值,通过帧动画机制触发所述纹理上传队列中可见瓦片的纹理上传操作。本公开实施例可以基于requestAnimationFrame对纹理上传任务进行调度,循环进行纹理上传,避免一次传输太多纹理文件到GPU导致数据传输卡顿的问题。题。题。

【技术实现步骤摘要】
模型瓦片渲染方法、装置及存储介质


[0001]本公开涉及三维图像和模型处理
,尤其涉及一种模型瓦片渲染方法、装置及存储介质。

技术介绍

[0002]目前,在浏览器中显示和开发场景模型(室内空间模型等)时,通常可以将场景模型切割为一个八叉树或四叉树,以实现在场景模型规模较大时,通过判断相机和模型瓦片的距离来选择是否加载该三维瓦片以及同步上传对应的纹理文件。如果一帧的可见瓦片非常多,则需要上传大量的纹理,可造成中央处理器(Central Processing Unit,简称为CPU)到图形处理器(Graphics Processing Unit,简称为GPU)的数据传输的卡顿问题。

技术实现思路

[0003]本公开实施例所要解决的一个技术问题是:提供一种模型瓦片渲染方法、装置及存储介质。
[0004]根据本公开实施例的一个方面,提供一种模型瓦片渲染方法,应用于在浏览器客户端中浏览三维模型空间的场景,所述方法包括:
[0005]基于帧动画机制按照设定帧率执行设定任务,所述设定任务包括获取当前帧的可见瓦片、基于所述当前帧的可见瓦片更新纹理上传队列、对设定计数器执行设定操作,所述纹理上传队列中包括已获取的可见瓦片的瓦片信息;
[0006]响应于所述设定计数器的计数值为设定值,通过帧动画机制触发所述纹理上传队列中可见瓦片的纹理上传操作。
[0007]在本公开的一个实施例中,所述获取当前帧的可见瓦片,包括:
[0008]获取当前相机的相关参数,所述当前相机的相关参数包括所述当前相机的相机视场角、相机与模型瓦片的距离;
[0009]根据所述当前相机的相关参数,计算所述当前相机的相机视锥体;
[0010]计算在所述当前相机的相机视锥体范围内的模型瓦片,得到当前帧的可见瓦片。
[0011]在本公开又一实施例中,所述基于所述当前帧的可见瓦片更新纹理上传队列,包括:
[0012]根据所述当前帧的可见瓦片,遍历所述纹理上传队列,得到待入队瓦片,所述待入队瓦片为当前帧的可见瓦片中不在所述纹理上传队列的可见瓦片;
[0013]确定所述待入队瓦片的纹理上传优先级;
[0014]按照所述纹理上传优先级,将所述待入队瓦片的瓦片信息依次插入所述纹理上传队列,所述瓦片信息包括瓦片标识信息、瓦片可见帧信息、纹理上传标识信息。
[0015]在本公开又一实施例中,所述方法还包括:
[0016]响应于所述纹理上传队列中可见瓦片的瓦片信息数量达到队列阈值,获取所述纹理上传队列中瓦片可见帧信息最小的设定个数的瓦片信息;
[0017]对所述瓦片可见帧信息最小的设定个数的瓦片信息执行出队操作。
[0018]在本公开又一实施例中,所述对设定计数器执行设定操作,包括:
[0019]获取所述设定计数器的计数值;
[0020]响应于所述设定计数器的计数值小于所述设定值,对所述设定计数器执行自增一操作;
[0021]响应于所述设定计数器的计数值为所述设定值,对所述设定计数器执行重置为初始值的操作。
[0022]在本公开又一实施例中,所述纹理上传队列中可见瓦片的纹理上传操作,包括:
[0023]按照从队列尾部到头部的顺序,响应于所述纹理上传队列中可见瓦片的瓦片信息数量达到队列阈值。
[0024]在本公开又一实施例中,所述执行纹理上传操作,包括:
[0025]获取所述可见瓦片的纹理上传标识信息;
[0026]响应于所述纹理上传标识信息的值指示未上传纹理,获取所述可见瓦片对应的纹理文件;
[0027]向图形处理器传输所述可见瓦片对应的纹理文件,并且将所述可见瓦片的纹理上传标识信息的值设置为已上传纹理。
[0028]在本公开又一实施例中,所述执行纹理上传操作,还包括:
[0029]响应于所述纹理上传标识信息的值指示已上传纹理,获取所述纹理上传队列中的下一个可见帧片,并执行所述获取所述可见瓦片的纹理上传标识信息的操作。
[0030]根据本公开实施例的又一方面,提供一种模型瓦片渲染装置,应用于在浏览器客户端中浏览三维模型空间的场景,所述装置包括:
[0031]第一执行模块,用于基于帧动画机制按照设定帧率执行设定任务,所述设定任务包括获取当前帧的可见瓦片、基于所述当前帧的可见瓦片更新纹理上传队列、对设定计数器执行设定操作,所述纹理上传队列中包括已获取的可见瓦片的瓦片信息;
[0032]第二执行模块,用于响应于所述设定计数器的计数值为设定值,通过帧动画机制触发所述纹理上传队列中可见瓦片的纹理上传操作。
[0033]在本公开一个实施例中,所述第一执行模块包括:
[0034]第一获取子模块,用于获取当前相机的相关参数,所述当前相机的相关参数包括所述当前相机的相机视场角、相机与模型瓦片的距离;
[0035]第一计算子模块,用于根据所述当前相机的相关参数,计算所述当前相机的相机视锥体;
[0036]第二计算子模块,用于计算在所述当前相机的相机视锥体范围内的模型瓦片,得到当前帧的可见瓦片。
[0037]在本公开又一实施例中,所述第一执行模块包括:
[0038]遍历子模块,用于根据所述当前帧的可见瓦片,遍历所述纹理上传队列,得到待入队瓦片,所述待入队瓦片为当前帧的可见瓦片中不在所述纹理上传队列的可见瓦片;
[0039]优先级确定子模块,用于确定所述待入队瓦片的纹理上传优先级;
[0040]入队子模块,用于按照所述纹理上传优先级,将所述待入队瓦片的瓦片信息依次插入所述纹理上传队列,所述瓦片信息包括瓦片标识信息、瓦片可见帧信息、纹理上传标识
信息。
[0041]在本公开又一实施例中,所述装置还包括:
[0042]瓦片获取模块,用于响应于所述纹理上传队列中可见瓦片的瓦片信息数量达到队列阈值,获取所述纹理上传队列中瓦片可见帧信息最小的设定个数的瓦片信息;
[0043]出队模块,用于对所述瓦片可见帧信息最小的设定个数的瓦片信息执行出队操作。
[0044]在本公开又一实施例中,所述第一执行模块包括:
[0045]第二获取子模块,用于获取所述设定计数器的计数值;
[0046]第一计数子模块,用于响应于所述设定计数器的计数值小于所述设定值,对所述设定计数器执行自增一操作;
[0047]第二计数子模块,用于响应于所述设定计数器的计数值为所述设定值,对所述设定计数器执行重置为初始值的操作。
[0048]在本公开又一实施例中,所述第二执行模块,具体用于按照从队列尾部到头部的顺序,对所述纹理上传队列中各瓦片信息对应的可见瓦片逐一执行纹理上传操作。
[0049]在本公开又一实施例中,所述第二执行模块包括:
[0050]第三获取子模块,用于获取所述可见瓦片的纹理上传标识信息;
[0051]第四获取子模块,用于响应于所述纹理上传标识信息的值指示未上传纹理,获取所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模型瓦片渲染方法,其特征在于,应用于使用浏览器客户端中浏览三维模型空间的场景,所述方法包括:基于帧动画机制按照设定帧率执行设定任务,所述设定任务包括获取当前帧的可见瓦片、基于所述当前帧的可见瓦片更新纹理上传队列、对设定计数器执行设定操作,所述纹理上传队列中包括已获取的可见瓦片的瓦片信息;响应于所述设定计数器的计数值为设定值,通过帧动画机制触发所述纹理上传队列中可见瓦片的纹理上传操作。2.根据权利要求1所述的方法,其特征在于,所述获取当前帧的可见瓦片,包括:获取当前相机的相关参数,所述当前相机的相关参数包括所述当前相机的相机视场角、相机与模型瓦片的距离;根据所述当前相机的相关参数,计算所述当前相机的相机视锥体;计算在所述当前相机的相机视锥体范围内的模型瓦片,得到当前帧的可见瓦片。3.根据权利要求1所述的方法,其特征在于,所述基于所述当前帧的可见瓦片更新纹理上传队列,包括:根据所述当前帧的可见瓦片,遍历所述纹理上传队列,得到待入队瓦片,所述待入队瓦片为当前帧的可见瓦片中不在所述纹理上传队列的可见瓦片;确定所述待入队瓦片的纹理上传优先级;按照所述纹理上传优先级,将所述待入队瓦片的瓦片信息依次插入所述纹理上传队列,所述瓦片信息包括瓦片标识信息、瓦片可见帧信息、纹理上传标识信息。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:响应于所述纹理上传队列中可见瓦片的瓦片信息数量达到队列阈值,获取所述纹理上传队列中瓦片可见帧信息最小的设定个数的瓦片信息;对所述瓦片可见帧信息最小的设定个数的瓦片信息执行出队操作。5.根据权利要求1所述的方法,其特征在于,所述对设定计数器执行设定操作,包括:获取所述设定计数器的计数值;响应于所述设定计数器的计数值小于所...

【专利技术属性】
技术研发人员:李沛伦
申请(专利权)人:如你所视北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1