发明内容
本发明的主要目的在于提供一种BIM数据调度方法、装置及计算机可读存储介质,旨在达成提高BIM数据加载效率的效果。
为实现上述目的,本发明提供一种BIM数据调度方法,所述BIM数据调度方法包括:
根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域;
确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据;
渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中。
可选地,所述渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中的步骤包括:
确定所述第一BIM数据是否已经全部保存在本地缓存器中;
渲染并显示已保存的所述第一BIM数据,将未保存的所述第一BIM数据调度到本地缓存器中;
当所述第一BIM数据全部保存在本地缓存器中时,将所述第二BIM数据调度到本地缓存器中。
可选地,所述确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据的步骤包括:
确定所述BIM模型各个部件与视点之间的部件相对位置;
根据所述部件相对位置确定所述BIM模型中,所述可见区域对应的第一部件,以及所述预可见区域对应的第二部件;
确定所述第一部件对应的BIM数据为所述第一BIM数据,所述第二部件对应的BIM数据为所述第二BIM数据。
可选地,所述渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中的步骤包括:
根据所述相对位置确定所述第一部件的边界盒子,与所述视点之间的边界相对位置;
根据各个所述第一部件对应的所述边界相对位置确定所述第一BIM数据的被遮挡情况;
当所述第一BIM数据未被遮挡时,执行所述渲染并显示所述第一BIM数据的步骤。
可选地,所述渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中的步骤包括:
获取所述第一部件的尺寸信息;
根据所述部件相对位置和所述尺寸信息确定,所述第一部件在视点对应视觉方向上的投影面积;
当所述第一部件对应的投影面积大于预设投影面积时,渲染并显示所述第一部件对应的所述第一BIM数据。
可选地,所述根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域的步骤包括:
确定所述视点对应的视椎体区域;
将在所述视椎体区域内,且与所述视点的距离小于或等于预设距离的区域作为所述可见区域;
预测所述视点相对于所述显示区域的方向变化和/或距离变化;
将在所述方向变化和/或所述距离变化对应的预测视觉区域内,以及在所述视椎体区域内且与所述视点的距离大于预设距离的区域作为所述预可见区域。
可选地,所述渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中的步骤包括:
根据所述相对位置确定所述第一BIM数据对应的第一部件的边界盒子,与所述视点之间的相对距离;
根据所述相对距离确定所述第一部件的观测情况;
根据所述观测情况确定所述第一部件对应的目标层级,其中,所述目标层级对应的显示精度低于所述第一部件对应的预设层级;
从所述目标层级到所述预设层级,逐级渲染并显示所述第一部件各个层级对应的第一BIM数据。
可选地,所述根据所述观测情况确定所述第一部件对应的目标层级的步骤包括:
当所述观测情况为近景时,确定所述目标层级为第三层级;
当所述观测情况为中景时,确定所述目标层级为第二层级;
当所述观测情况为远景时,确定所述目标层级为第一层级;
其中,所述近景对应的相对距离小于所述中景对应的相对距离,所述中景对应的相对距离小于所述远景对应的相对距离,所述第三层级对应显示精度高于所述第二层级对应显示精度,所述第二层级对应显示精度高于所述第一层级对应显示精度。
可选地,所述根据所述相对距离确定所述第一部件的观测情况的步骤之后,还包括:
根据所述观测情况确定所述第一部件的渲染显示时间;
当达到所述渲染显示时间,执行所述从所述目标层级到所述预设层级,逐级渲染并显示所述第一部件各个层级对应的第一BIM数据的步骤;
其中,所述观测情况对应的相对距离越大,对应的所述渲染显示时间越晚。
可选地,所述渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中的步骤包括:
确定所述预可见区域对应的未来视点范围;
根据所述未来视点范围与所述显示区域的相对位置,确定所述第二部件与所述未来视点范围内未来视点的最大相对距离和最小相对距离;
根据所述最小相对距离确定所述第二部件对应的预测最高预设层级;
根据所述最大相对距离确定所述第二部件的预测最远观测情况;
根据所述预测最远观测情况确定所述第二部件对应的预测最低目标层级,其中,所述预测最低目标层级对应的显示精度低于所述预测最高预设层级对应的显示精度;
从所述目标层级到所述预设层级,逐级将所述第二部件的各个层级对应的第二BIM数据调度到所述本地缓存器中。
可选地,所述根据所述最大相对距离确定所述第二部件的预测最远观测情况的步骤包括:
当所述预测最远观测情况为近景时,确定所述预测最低目标层级为所述第三层级;
当所述预测最远观测情况为中景时,确定所述预测最低目标层级为所述第二层级;
当所述预测最远观测情况为远景时,确定所述预测最低目标层级为所述第一层级。
可选地,所述根据所述最大相对距离确定所述第二部件的预测最远观测情况的步骤之后,还包括:
根据所述预测最远观测情况确定所述第二部件的调度时间;
当达到所述调度时间,执行所述从所述目标层级到所述预设层级,逐级将所述第二部件的各个层级对应的第二BIM数据调度到所述本地缓存器中的步骤;
其中,所述预测最远观测情况对应的相对距离越大,对应的所述调度时间越晚。
此外,为实现上述目的,本发明还提供一种BIM数据调度装置,所述BIM数据调度装置包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的BIM数据调度程序,所述BIM数据调度程序被所述处理器执行时实现如上所述的BIM数据调度方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有BIM数据调度程序,所述BIM数据调度程序被处理器执行时实现如上所述的BIM数据调度方法的步骤。
该方法先根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域;确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据;渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中。这样确定当前的可见区域以及对应的预可见区域,除了渲染并显示可见区域对应的第一BIM数据之外,还对应将第二BIM数据调度到本地缓存器中。在视点变化后需要渲染并显示第二BIM数据时,可快速将BIM数据从本地缓存中调取出来,并将未来预可见区域对应的BIM数据调度到本缓存器中,便于再下一次视点变化后的BIM数据的渲染和显示,从而提高了BIM数据加载效率。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
由于在相关技术中,当前渐进式传输策略是将用户已经浏览过的BIM数据进行缓存,对于用户首次浏览的数据,仍是在浏览时才开始加载对应BIM数据,由于BIM模型的数据量庞大和图元种类复杂,在首次浏览时还是会容易出传输速度慢的问题,导致BIM数据加载效率低。
为了提高BIM数据加载效率,本发明实施例提出一种BIM数据调度方法、装置及计算机可读存储介质,其中,所述方法的主要步骤包括:
根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域;
确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据;
渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中。
这样确定当前的可见区域以及对应的预可见区域,除了渲染并显示可见区域对应的第一BIM数据之外,还对应将第二BIM数据调度到本地缓存器中。在视点变化后需要渲染并显示第二BIM数据时,可快速将BIM数据从本地缓存中调取出来,并将未来预可见区域对应的BIM数据调度到本缓存器中,便于再下一次视点变化后的BIM数据的渲染和显示,从而提高了BIM数据加载效率。
以下结合附图对本发明权利要求要求保护的内容进行详细说明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是BIM数据调度装置。
如图1所示,该终端可以包括:处理器1001,例如CPU,存储器1003,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。存储器1003可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1003可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1003中可以包括操作系统以及BIM数据调度程序。
在图1所示的终端中,处理器1001可以用于调用存储器1003中存储的BIM数据调度程序,并执行以下操作:
根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域;
确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据;
渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
确定所述第一BIM数据是否已经全部保存在本地缓存器中;
渲染并显示已保存的所述第一BIM数据,将未保存的所述第一BIM数据调度到本地缓存器中;
当所述第一BIM数据全部保存在本地缓存器中时,将所述第二BIM数据调度到本地缓存器中。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
确定所述BIM模型各个部件与视点之间的部件相对位置;
根据所述部件相对位置确定所述BIM模型中,所述可见区域对应的第一部件,以及所述预可见区域对应的第二部件;
确定所述第一部件对应的BIM数据为所述第一BIM数据,所述第二部件对应的BIM数据为所述第二BIM数据。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
根据所述相对位置确定所述第一部件的边界盒子,与所述视点之间的边界相对位置;
根据各个所述第一部件对应的所述边界相对位置确定所述第一BIM数据的被遮挡情况;
当所述第一BIM数据未被遮挡时,执行所述渲染并显示所述第一BIM数据的步骤。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
获取所述第一部件的尺寸信息;
根据所述部件相对位置和所述尺寸信息确定,所述第一部件在视点对应视觉方向上的投影面积;
当所述第一部件对应的投影面积大于预设投影面积时,渲染并显示所述第一部件对应的所述第一BIM数据。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
确定所述视点对应的视椎体区域;
将在所述视椎体区域内,且与所述视点的距离小于或等于预设距离的区域作为所述可见区域;
预测所述视点相对于所述显示区域的方向变化和/或距离变化;
将在所述方向变化和/或所述距离变化对应的预测视觉区域内,以及在所述视椎体区域内且与所述视点的距离大于预设距离的区域作为所述预可见区域。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
根据所述相对位置确定所述第一BIM数据对应的第一部件的边界盒子,与所述视点之间的相对距离;
根据所述相对距离确定所述第一部件的观测情况;
根据所述观测情况确定所述第一部件对应的目标层级,其中,所述目标层级对应的显示精度低于所述第一部件对应的预设层级;
从所述目标层级到所述预设层级,逐级渲染并显示所述第一部件各个层级对应的第一BIM数据。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
当所述观测情况为近景时,确定所述目标层级为第三层级;
当所述观测情况为中景时,确定所述目标层级为第二层级;
当所述观测情况为远景时,确定所述目标层级为第一层级;
其中,所述近景对应的相对距离小于所述中景对应的相对距离,所述中景对应的相对距离小于所述远景对应的相对距离,所述第三层级对应显示精度高于所述第二层级对应显示精度,所述第二层级对应显示精度高于所述第一层级对应显示精度。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
根据所述观测情况确定所述第一部件的渲染显示时间;
当达到所述渲染显示时间,执行所述从所述目标层级到所述预设层级,逐级渲染并显示所述第一部件各个层级对应的第一BIM数据的步骤;
其中,所述观测情况对应的相对距离越大,对应的所述渲染显示时间越晚。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
确定所述预可见区域对应的未来视点范围;
根据所述未来视点范围与所述显示区域的相对位置,确定所述第二部件与所述未来视点范围内未来视点的最大相对距离和最小相对距离;
根据所述最小相对距离确定所述第二部件对应的预测最高预设层级;
根据所述最大相对距离确定所述第二部件的预测最远观测情况;
根据所述预测最远观测情况确定所述第二部件对应的预测最低目标层级,其中,所述预测最低目标层级对应的显示精度低于所述预测最高预设层级对应的显示精度;
从所述目标层级到所述预设层级,逐级将所述第二部件的各个层级对应的第二BIM数据调度到所述本地缓存器中。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
当所述预测最远观测情况为近景时,确定所述预测最低目标层级为所述第三层级;
当所述预测最远观测情况为中景时,确定所述预测最低目标层级为所述第二层级;
当所述预测最远观测情况为远景时,确定所述预测最低目标层级为所述第一层级。
进一步地,处理器1001可以调用存储器1003中存储的BIM数据调度程序,还执行以下操作:
根据所述预测最远观测情况确定所述第二部件的调度时间;
当达到所述调度时间,执行所述从所述目标层级到所述预设层级,逐级将所述第二部件的各个层级对应的第二BIM数据调度到所述本地缓存器中的步骤;
其中,所述预测最远观测情况对应的相对距离越大,对应的所述调度时间越晚。
以下,通过具体示例性方案对本发明权利要求要求保护的内容,进行解释说明,以便本领域技术人员更好地理解本发明权利要求的保护范围。可以理解的是,以下示例性方案不对本发明的保护范围进行限定,仅用于解释本发明。
示例性地,参照图2,在本发明BIM数据调度方法的一实施例中,所述BIM数据调度方法包括以下步骤:
步骤S10、根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域;
在本实施例中,BIM模型一般是以三维图形为主、物件导向、建筑学有关的电脑辅助设计,例如三维图像,可以将BIM模型切成一系列的瓦片,这些瓦片可以作为BIM数据,可以采用3D Tile格式进行存储,以瓦片为单位传输和渲染,从而提高数据的可管理性和可操作性。
视点是以用户为主体,模拟用户眼睛或摄像头的虚拟点,可见区域是在该视点下可以看到的显示区域,显示区域是显示BIM模型的区域,因而显示区域具有空间特征。可以通过调整视点与显示区域之间的相对位置,调整该视点的可见区域,可以通过视点当前与显示BIM模型的显示区域之间的相对位置,确定当前的可见区域。
可选地,为了便于区分视点与显示BIM模型的显示区域之间的相对位置的变化时刻,将视点与屏幕之间的相对位置发送改变后确定固定时的时刻称为一个漫游关键帧,相邻漫游关键帧对应的视点与显示BIM模型的显示区域之间的相对位置不同,在当前漫游关键帧下,确定视点当前与BIM模型对应显示区域的相对位置,从而确定当前的可见区域。
一般来说,若BIM模型需要在某个屏幕上显示,会认定用户观看屏幕时的眼睛或摄像头对应屏幕的正中心,这样虚拟的视点与屏幕之间的相对位置不会发生改变。由于用户操作指令的选择,BIM模型与屏幕之间的相对位置会发生改变,使得可见区域发生变化。预可见区域是稍后可能会作为可见区域的区域,通过调整视点与显示区域之间的相对位置,调整该视点对应的可见区域,可见区域的调整不会发生跳跃性的改变,因而根据当前的可见区域预测未来可见区域的变化范围,从而确定预测当前可见区域对应的预可见区域,例如预测的未来视点对应的视椎体区域的并集可以作为预可见区域,需要说明的是,预可见区域与可见区域之间可以重合。
步骤S20、确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据;
在本实施例中,BIM模型可以在显示区域中渐进式的显示,BIM模型与显示区域的相对位置可以理解为固定的,不同显示区域内对应有不同的BIM数据,BIM数据是BIM模型被分割后得到的瓦片,其中,可见区域对应的BIM数据是第一BIM数据,这些数据需要被显示,是可见BIM数据,预可见区域内的BIM数据是第二BIM数据,这些数据可能将要被显示,是预可见BIM数据。
步骤S30、渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中。
在本实施例中,第一BIM数据是需要被显示的瓦片,需要优先被下载,并通过渲染后,显示于可见区域,在第一BIM数据被渲染并显示时,同步启动第二BIM数据对应的调度线程,将第二BIM数据调度到本地缓存器中。当下一个漫游关键帧开始时,视点与显示区域的改变导致其可见区域发生改变,预可见区域转换为可见区域,第二BIM数据全部或者部分也即将被转化为第一BIM数据。但由于在当前漫游关键帧对应地启动了第二BIM数据对应的调度线程,已经缓存到了本地缓存器中,在下一个漫游关键帧中,将部分或全部第二BIM数据作为第一BIM数据渲染显示前,不需要消耗时间调度部分或全部第二BIM数据,加快了BIM数据的渲染显示数据,并且还空闲出了调度线程用于调度下一漫游关键帧对应的第二BIM数据或者未被调度的第一BIM数据。
可选地,当在某个漫游关键帧中,对应的第二BIM数据已经全部调度于本地缓存器中,则挂起调度线程,等待下一个漫游关键帧的激活调度线程,从而给予调度线程冷却和缓冲时间,保持调度能力。
在本实施例公开的技术方案中,根据视点当前与BIM模型对应显示区域的相对位置确定当前的可见区域,并预测对应的预可见区域;确定BIM模型中,所述可见区域对应的第一BIM数据,以及所述预可见区域对应的第二BIM数据;渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中。这样确定当前的可见区域以及对应的预可见区域,除了渲染并显示可见区域对应的第一BIM数据之外,还对应将第二BIM数据调度到本地缓存器中。在视点变化后需要渲染并显示第二BIM数据时,可快速将BIM数据从本地缓存中调取出来,并将未来预可见区域对应的BIM数据调度到本缓存器中,便于再下一次视点变化后的BIM数据的渲染和显示。这样在用户首次浏览数据时,可以快速从本地缓存器中提取BIM数据,直接用于显示和渲染,从而提高了BIM数据加载效率和整体的调度效率,改善首次浏览时容易出现的传输速度慢的问题。
进一步地,步骤S10包括:
确定所述视点对应的视椎体区域;
将在所述视椎体区域内,且与所述视点的距离小于或等于预设距离的区域作为所述可见区域;
预测所述视点相对于所述显示区域的方向变化和/或距离变化;
将在所述方向变化和/或所述距离变化对应的预测视觉区域内,以及在所述视椎体区域内且与所述视点的距离大于预设距离的区域作为所述预可见区域。
视点是模拟用户眼睛或摄像头的虚拟点,对应可以确定模拟显示区域中,在用户或摄像头视觉范围内的区域为视椎体区域,视椎体区域锥体的视觉区域,是以视点为起点,朝向显示区域的锥体,锥体的高可以预先设置,但是由于眼睛的生理特征和摄像头的结构特征,距离过于的物体虽然能被看到,但并不清晰或较小,因而可以不作显示,因而将视椎体区域内,且与视点的距离小于或等于预设距离的区域作为可见区域。
在确定预可见区域时,可以先预测视点与BIM模型对应显示区域的相对方向的变化和/或相对变化移动距离,相对方向的变化和/或相对变化移动距离可以是预先设置,也可以根据历史查看习惯进行确定,例如可以预先设置间隔预设时间向左移动显示区域,使得视点相对于显示区域向右变化,或者用户习惯性向左滑动屏幕,根据该历史查看习惯可以预测视点与显示区域的相对方向的变化和/或相对变化距离。由于预测视点与显示区域会发生变化,那么对应的视椎体区域也会发生变化,预测的未来视点对应的视椎体区域的并集可以作为视觉区域为预测视觉区域。将在预测视觉区域内的区域,以及在视椎体区域内且与视点的距离大于预设距离的区域作为预可见区域。
这样确定的可见区域和预可见区域充分模拟了用户或摄像头的视觉效果,从而能够准确地确定渲染并显示的第一BIM数据,以及需要调度到本地缓存器中的第二BIM数据,从而提高加载后BIM数据的观看效果,提高加载效率。
进一步地,所述步骤S20的步骤包括:
确定所述BIM模型各个部件与视点之间的部件相对位置;
根据所述部件相对位置确定所述BIM模型中,所述可见区域对应的第一部件,以及所述预可见区域对应的第二部件;
确定所述第一部件对应的BIM数据为所述第一BIM数据,所述第二部件对应的BIM数据为所述第二BIM数据。
在本实施例中,可以设立以视点为原点的坐标系,参照图4,根据视点当前与BIM模型对应显示区域的相对位置和BIM模型的各个部件的位置信息,BIM模型各个部件与视点之间的部件相对位置,可以将其转换成相对于视点的坐标。遍历所有部件,并基于BIM模型各个部件与视点之间的部件相对位置,与可见区域或预可见区域进行碰撞检测,从而将BIM模型各个部件分为三类:可见部件、预可见部件和不可见部件,若部件相对位置表明部件在可见区域内,则部件为可见部件,也是可见区域对应的第一部件,若部件相对位置表明在预可见区域内,则部件为预可见部件,也是预可见区域对应的第二部件,需要说明的是,一个BIM部件,即可以是在可见区域内,又可以是在预可见区域内,因而BIM部件即可以是可见部件,也可以是预可见部件。在对可见部件进行处理时,这类BIM部件作为第一部件进行处理,在对预可见部件进行处理时,这类BIM部件又将作为第二部件进行处理。若部件相对位置表明BIM部件不在可见区域和预可见区域内,则BIM部件为不可见部件。
第一部件即为可见部件,可见部件是离视点非常近的模型部件,他们需要立即被渲染到屏幕上,第二部件即为预可见部件,预可见部件指在下一漫游关键帧中可能离视点非常近的模型部件。不可见部件即不在可见区域和预可见区域内,或者相对于视点对应视觉方向的投影面积太小,或者被遮挡的模型部件,即在下一漫游关键帧中,依然离视点或视点对应的视线较远的一些模型部件,以及外部或被遮挡的模型部件,不会被渲染显示、不会被调度至本地缓存器中,相对于视点对应视觉方向的投影面积太小或者被遮挡的模型部件不会被渲染显示。综上将可见区域内的第一部件对应的BIM数据作为第一BIM数据,使其被渲染并显示,将预可见区域内的第二部件对应的BIM数据作为第二BIM数据。
可选地,还可以根据相对位置和尺寸信息确定部件被可见区域的包围情况和被预可见区域的包围情况,若某个部件部分或者全部的边界盒子被可见区域包围,则其可以为可见区域对应的第一部件;若某个部件全部或者部分的边界盒子被预可见区域包围,则其可以为预可见区域对应的第二部件,若部件既不是可见部件,也不是预可见部件,则为不可见部件,除此之外,不可见部件还可能是相对于视点对应视觉方向的投影面积太小或者被遮挡的模型部件。
这样以模型部件为单位渲染、显示和调度BIM数据,使得显示区域内显示的BIM数据组成的BIM模型或者本地缓存器中的BIM数据有完成的部件特征,从而更容易识别部件,便于获取BIM模型提供的信息,可以提高加载效率。
进一步地,进一步地,步骤S30包括:
根据所述相对位置确定所述第一部件的边界盒子,与所述视点之间的边界相对位置;
根据各个所述第一部件对应的所述边界相对位置确定所述第一BIM数据的被遮挡情况;
当所述第一BIM数据未被遮挡时,执行所述渲染并显示所述第一BIM数据的步骤。
当渲染线程或者调度线程被激活后,根据视点与显示区域的相对位置确定第一BIM数据对应的第一部件的边界盒子与视点之间的边界相对位置,根据边界相对位置可以确定边界和值与视点的相对方位和相对距离,确定与当前边界盒子为同一相对方位的各个模型部件的边界盒子,并将当前边界盒子与其他同一相对方位的边界盒子之间与视点的相对距离进行比较,确定边界盒子的是否被遮挡,从而根据第一部件各个边界盒子是否被遮挡确定第一部件及其对应的第一BIM数据的被遮挡情况,如果第一BIM数据被遮挡部分超过预设阈值,无法被视点所观测,那么第一BIM数据被遮挡不需要被显示,也不需要被渲染,可以在第一BIM数据未被遮挡时,才对第一BIM数据进行渲染和显示,使得其能被视点所正常观测。
同样地,也可以根据相对位置确定第二BIM数据对应的第二部件的边界盒子,与视点之间的边界相对位置,根据各个第二部件的边界相对位置确定第二BIM数据的被遮挡情况,当第二BIM数据的未被遮挡时,执行将第二BIM数据调度到本地缓存器中的步骤。
这样通过相对位置确定第一BIM数据的被遮挡情况,然后在第一BIM数据未被其他第一BIM数据遮挡时,才渲染和显示该第一BIM数据,这样可以节省渲染和显示时间,节省系统资源,提高加载效率。
进一步地,所述渲染并显示所述第一BIM数据,将所述第二BIM数据调度到本地缓存器中的步骤包括:
获取所述第一部件的尺寸信息;
根据所述部件相对位置和所述尺寸信息确定,所述第一部件在视点对应视觉方向上的投影面积;
当所述投影面积大于预设投影面积时,执行所述渲染并显示所述第一BIM数据的步骤。
在本实施例中,第一部件具有尺寸信息,尺寸信息可以直接根据BIM模型或者第一部件对应的BIM数据进行确定。尺寸信息可以表部件各个部分的大小,因而可以体现出部件的形状和大小。参照图5,在第一部件显示过程中,除了会发生被遮挡,还有因为尺寸信息和相对位置的原因,例如第一部件太小,第一部件被观测的角度太侧向,第一部件的大小和距离的比值较小等,导致第一部件在被视点观测下特别小,难以被观测,总结下来就是第一部件在视觉方向上投影到截面S的投影面积太小,对投影面积过小的第一部件不进行渲染显示。根据部件相对位置和尺寸信息确定,第一部件在视点对应视觉方向上的投影面积,当第一部件对应的投影面积大于预设投影面积时,渲染并显示第一部件对应的第一BIM数据。
这样根据尺寸信息、部件位置信息确定第一部件对应的投影面积,并在第一部件对应的投影面积小于预设投影面积,难以被观测时,不渲染显示该第一部件对应的BIM数据,从而将渲染显示资源留给需要显示的BIM数据,从而提高加载效率。
进一步地,所述步骤S30包括:
确定所述第一BIM数据是否已经全部保存在本地缓存器中;
渲染并显示已保存的所述第一BIM数据,将未保存的所述第一BIM数据调度到本地缓存器中;
当所述第一BIM数据全部保存在本地缓存器中时,将所述第二BIM数据调度到本地缓存器中。
当前漫游关键帧可以是初始化时的漫游关键帧,其对应的第一BIM数据并未被调度,也可以非初始化时的漫游关键帧,其对应的第一BIM数据并非全部是上一个漫游关键帧中调度的第二BIM数据。由此可见,漫游关键帧中均可能出现未被调度的第一BIM数据,那么调度线程在开始调度第二BIM数据前,需要先确定当前漫游关键帧中,第一BIM数据是否已经全部保存在本地缓存器中,渲染并显示已保存的第一BIM数据,优先启动未保存的第一BIM数据的调度线程,当第一BIM数据已保存在本地缓存器中,再启动第二BIM数据的调度线程,将第二BIM数据调度到本地缓存器中。
这样由于第一BIM数据是需要优先被下载的,那么第一BIM数据也会存在调度线程,第二BIM数据对应的调度线程虽然可以与第一BIM数据的渲染显示进程进行同步,但也需要让第一BIM数据对应的调度线程优先完成后再启动,从而优先保证了可见区域内BIM数据的正常显示,提高了BIM数据的加载效率。
可选地,参照图3,基于上述任一实施例,在本发明BIM数据调度方法的另一实施例中,所述BIM数据调度方法的步骤S30还包括:
步骤S31、根据所述相对位置确定所述第一BIM数据对应的第一部件的边界盒子,与所述视点之间的相对距离;
步骤S32、根据所述相对距离确定所述第一部件的观测情况;
步骤S33、根据所述观测情况确定所述第一部件对应的目标层级,其中,所述目标层级对应的显示精度低于所述第一部件对应的预设层级;
步骤S34、从所述目标层级到所述第一部件对应的预设层级,逐级渲染并显示所述第一部件对应的第一BIM数据。
在本实施例中,还可以根据视点与显示区域的相对位置,进一步对第一BIM数据的显示方式进行加载,尤其是在以模型部件为渲染、显示和调度的单位时,需要确定第一部件具体的加载效果,对应一个BIM数据来说,可以提供不同层级对应的BIM数据,各个层级的BIM数据的图像质量和细节不同。在传统的逐级加载中,当前视野内各个位置的加载方式都是将从显示精度最低的层级加载到需要的显示精度对应层级的BIM数据,例如从0至10,以得到逐渐改善图像质量和细节的感觉,需要说明的是,层级越高,层级对应的显示精度越高,图像质量越好和细节越多,第一部件的显示效果是越清晰。
但是在逐级加载的过程中,会加载到一些不必要的瓦片,例如0至5,这类层级的BIM数据与最终需要的层级的BIM数据相差甚远,不仅会延长加载时间,还会浪费加载资源,因而可以根据视点与第一部件边界盒子之间的相对距离确定第一部件的观测情况。
可以设置各个观测情况之间的相对距离阈值,根据第一部件的边界盒子,与视点之间的相对距离与相对距离阈值之间的比较结果确定第一部件属于的观测情况。根据观测情况可以确定第一部件需要的显示效果,越远越不清晰,越近需要加载的细节越多,根据显示效果确定第一部件需要从哪一个目标层级开始进行加载,然后先渲染并显示目标层级对应的BIM数据,然后从目标层级开始,逐级渲染并显示到第一部件对应的预设层级的BIM数据,其中,预设层级是直接根据第一部件的边界盒子,与视点之间的相对距离进行确定的,这样根据距离可以对预设层级进行更精细化的划分,距离越大,预设层级越低,反之距离越小,预设层级越小。
为了平衡加载速度和用户体验,也需要初步提供可视化效果,因而也保留了部分逐级加载的加载方式,平衡加载速度和用户体验,能够不影响视点的观测效果,并且根据观测情况不需要加载目标层级以下的BIM数据,渲染并显示第一部件中,层级高于目标层级的第一BIM数据。
在本实施例公开的技术方案中,根据所述相对位置确定所述第一BIM数据对应的第一部件的边界盒子,与所述视点之间的相对距离;根据所述相对距离确定所述第一部件的观测情况;根据所述观测情况确定所述第一部件对应的目标层级,其中,所述目标层级对应的显示精度低于所述第一部件对应的预设层级;从所述目标层级到所述预设层级,逐级渲染并显示所述第一部件各个层级对应的第一BIM数据。从而不仅可以保证显示效果,还避免加载不必要的层级对应BIM数据,从而提高加载效率。
进一步地,所述步骤S31包括:
当所述观测情况为近景时,确定所述目标层级为第三层级;
当所述观测情况为中景时,确定所述目标层级为第二层级;
当所述观测情况为远景时,确定所述目标层级为第一层级;
其中,所述近景对应的相对距离小于所述中景对应的相对距离,所述中景对应的相对距离小于所述远景对应的相对距离,所述第三层级对应显示精度高于所述第二层级对应显示精度,所述第二层级对应显示精度高于所述第一层级对应显示精度。
在本实施例中,可以将观测情况分为近景、中景和远景,以模拟视物的三个阶段。确定各个第一部件的观测情况属于近景、中景和远景,近景、中景和远景对应的目标层级分别是第三层级、第二层级和第一层级。而近景对应相对距离小于中景对应的相对距离,中景对应的相对距离大于远景对应的相对距离越大。因而近景对应的第一部件的预设层级要高于中景对应的第一部件的预设层级,中景对应的第一部件的预设层级要高于远景对应的第一部件的预设层级。在显示过程中,预设层级越高,越不需要显示过多的低层级的BIM数据,否则影响加载效率和资源,那么第一层级要低于第二层级,第二层级要低于第三层级。
例如,在传统技术中,BIM数据不分视觉效果,逐级从0层级开始渲染显示对应的第一BIM数据,而经过本实施例提供的方法中,在确定了第一部件为A(预设层级为10)、B(预设层级为7)、C(预设层级为4)后,确定A的观测情况为近景,对应的第三层级为8,B的观测情况为中景对应的第二层级为5,C的观测情况为远景,对应的第一层级为0,那么A的加载方式为逐级显示8、9、10的层级对应的第一BIM数据,B的加载方式为逐级显示5、6、7的层级对应的第一BIM数据,C的加载方式为逐级显示0、1、2、3、4的层级对应的第一BIM数据。
这样将观测情况分为近景、中景、远景可以更贴合真实观测情况,除了避免加载不需要的BIM数据之外,也合理划分了观测情况,从而提高了加载效率。
进一步地,所述根据所述相对距离确定所述第一部件的观测情况的步骤之后,还包括:
根据所述观测情况确定所述第一部件的渲染显示时间;
当达到所述渲染显示时间,执行所述从所述目标层级到所述预设层级,逐级渲染并显示所述第一部件各个层级对应的第一BIM数据的步骤;
其中,所述观测情况对应的相对距离越大,对应的所述渲染显示时间越晚。
观测情况可以表示第一部件与视点之间的相对距离,相对距离越近,表示这个第一部件越先被视点观测到或者越为重要,优先渲染和显示该第一部件对应的BIM数据,即观测情况对应的相对距离越大,对应的渲染显示时间越晚,观测情况对应的相对距离越小,对应的渲染显示时间越早。具体地,根据相对距离确定第一部件的观测情况为近景、中景或远景,不同观测情况采用不同的渲染显示设置。近景对应的第一部件优先渲染显示或者调度高显示分辨率和细节,中景对应的第一部件优先渲染显示或者调度中显示分辨率和细节,远景对应的第一部件优先渲染显示或者调度低显示分辨率和细节。
这样通过观测情况确定第一部件的渲染显示时间,从而优先显示离视点较近的模型部件,可以提高显示效果,提高加载效率。
进一步地,步骤S30包括:
确定所述预可见区域对应的未来视点范围;
根据所述未来视点范围与所述显示区域的相对位置,确定所述第二部件与所述未来视点范围内未来视点的最大相对距离和最小相对距离;
根据所述最小相对距离确定所述第二部件对应的预测最高预设层级;
根据所述最大相对距离确定所述第二部件的预测最远观测情况;
根据所述预测最远观测情况确定所述第二部件对应的预测最低目标层级,其中,所述预测最低目标层级对应的显示精度低于所述预测最高预设层级对应的显示精度;
从所述目标层级到所述预设层级,逐级将所述第二部件的各个层级对应的第二BIM数据调度到所述本地缓存器中。
在本实施例中,预可见区域是根据为了视点可以出现的位置进行确定的,因而可以找到未来可见区域对应的未来视点范围,在此范围内,视点可能在未来出现于未来可见区域对应的任意位置,根据未来视点范围与显示区域的相对位置,确定第二部件与未来视点范围内未来视点的最大相对距离和最小相对距离。未来视点范围内可能存在的若干未来视点中,存在一个未来视点与第二部件相距最远,它们之间的距离即为最大相对距离,也存在一个未来视点与第二部件相距最近,它们之间的距离即为最小相对距离。
未来视点范围内可能存在的若干未来视点,各个未来视点都对应有其需要渲染显示BIM部件,BIM在渲染时,可以只渲染显示需要层级的BIM数据,因而可以只调度该未来时段需要的BIM,但是未来视点的位置不定,因为需要找到所有未来视点对应的,某个BIM需要渲染显示的BIM数据的层级合集。该合集的最高层级即为预测最高预设层级,该合集的最低层级即为预测最低目标层级,预测最低目标层级对应的显示精度低于预测最高预设层级对应的显示精度。根据最小相对距离确定第二部件确定该部件最高的预设层级,最高的预设层级即使未来可能需要调度的预测最高预设层级。进而确定最小相对距离时第二部件对应的预设层级,并将预设层级作为预测最高预设层级。
与计算预测最高预设层级不同的是,预测最高预设层级是BIM部件与某个未来视点最远能够达到的最小相对距离时,对应的预设层级即为预测最高预设层级,需要根据最大相对距离确定第二部件能够达到的预测最远观测情况,该预测最远观测情况下可以确定该部件最低的目标层级,最低的目标层级即使未来可能需要调度的预测最低目标层级。在对第二部件进行调度的时候,将未来可能需要渲染显示的预测最低目标层级逐级调度到需要渲染显示的预测最高预设层级,从而优先调度可能需要优先渲染显示的BIM数据,保证加载效率。
可选地,在针对第二部门任意层级的BIM数据调度前,先检查该层级的BIM数据是否已经调度到本地缓存器中,若已经调度,则忽略该调度操作。
这样通过计算出预测最高预设层级和预测最低目标层级,在进行渲染调度时,提前缓存了需要的BIM数据,并且不缓存未来视点范围不需要的BIM数据,从而可以提高调度效率,提高加载效率。
进一步地,所述根据所述最大相对距离确定所述第二部件的预测最远观测情况的步骤包括:
当所述预测最远观测情况为近景时,确定所述预测最低目标层级为所述第三层级;
当所述预测最远观测情况为中景时,确定所述预测最低目标层级为所述第二层级;
当所述预测最远观测情况为远景时,确定所述预测最低目标层级为所述第一层级。
在本实施例中,可以将观测情况分为近景、中景和远景,以模拟视物的三个阶段。确定各个第二部件的最远观测情况属于近景、中景和远景,近景、中景和远景对应的目标层级分别是第三层级、第二层级和第一层级。而近景对应相对距离小于中景对应的相对距离,中景对应的相对距离大于远景对应的相对距离越大。因而近景对应的第二部件的预设层级要高于中景对应的第二部件的预设层级,中景对应的第二部件的预设层级要高于远景对应的第二部件的预设层级。在显示过程中,预设层级越高,越不需要显示过多的低层级的BIM数据,否则影响加载效率和资源,那么第一层级要低于第二层级,第二层级要低于第三层级,而预测最低目标层级就是能够预测的最远的观测情况对应的目标层级,当预测最远观测情况为近景时,确定预测最低目标层级为第三层级,当预测最远观测情况为中景时,确定预测最低目标层级为第二层级,当预测最远观测情况为远景时,确定预测最低目标层级为第一层级。
这样将通过将最远观测情况分为近景、中景、远景可以更贴合真实观测情况,避免调度不需要的BIM数据之外,从而提高了加载效率。
进一步地,所述根据所述最大相对距离确定所述第二部件的预测最远观测情况的步骤之后,还包括:
根据所述预测最远观测情况确定所述第二部件的调度时间;
当达到所述调度时间,执行所述从所述目标层级到所述预设层级,逐级将所述第二部件的各个层级对应的第二BIM数据调度到所述本地缓存器中的步骤;
其中,所述预测最远观测情况对应的相对距离越大,对应的所述调度时间越晚。
在本实施例中,根据第二部件的预测最远观测情况确定第二部件对应的调度时间。最远观测情况可以表示第二部件最远与未来视点之间的相对距离,相对距离越近,表示这个第二部件越先被视点观测到或者越为重要,也会被优先渲染后显示,优先调度该第二部件,保证该第二部件优先于其他第二部件存储于本地存储器中,从而可以更快速地被加载处理。即最远观测情况对应的相对距离越大,对应的调度时间越晚,最远观测情况对应的相对距离越小,对应的调度时间越早。当到达调度时间时,将第二BIM数据调度到本地缓存器中。这样通过最远观测情况确定第二部件的调度时间,从而优先调度离视点较近的模型部件,保证优先显示的模型部件已经保存于本地缓存器中,从而提高显示效果和加载效率。
此外,本发明实施例还提出一种BIM数据调度装置,所述BIM数据调度装置包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的BIM数据调度程序,所述BIM数据调度程序被所述处理器执行时实现如上各个实施例所述的BIM数据调度方法的步骤。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有BIM数据调度程序,所述BIM数据调度程序被处理器执行时实现如上各个实施例所述的BIM数据调度方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得BIM数据调度装置执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。