发明内容
本发明主要解决的技术问题是渲染过程中云渲染服务器负担较重,导致资源损耗会成倍的增加,且客户端硬件的计算能力未释放,进行三维场景渲染的效率较低。
根据第一方面,一种实施例中提供一种三维场景渲染方法,包括:
当接收到用户在建模引擎中浏览BIM三维模型时产生的操作信号时,对所述操作信号对应的用户浏览事件进行事件解析,得到在建模引擎中相机的实时浏览位置;所述用户浏览事件包括在浏览BIM三维模型时产生的不同行为操作;
根据预设网络协议和所述相机的实时浏览位置从预设云渲染服务器中获取初始渲染图片和云渲染相机的相机信息;所述初始渲染图片通过在云渲染服务器中利用云渲染相机对第一类元素进行云渲染得到;所述云渲染相机的相机信息包括云渲染相机位置和云渲染相机参数;所述第一类元素包括所述BIM三维模型的模型场景;
基于所述云渲染相机的相机信息和预设第二类元素对所述初始渲染图片继续进行所述第二类元素的渲染,得到渲染后的图片;所述第二类元素的渲染包括用户特定场景渲染,得到的渲染后的所述图片包括场景渲染图像;所述用户特定场景渲染包括执行静态渲染、动画渲染、互动渲染和定制渲染中的任意一种或者同时执行多种;
将所述场景渲染图片和所述初始渲染图片进行叠加处理,得到三维场景图片。
一实施例中,所述第二类元素包括静态元素、动态元素和互动元素;其中,所述静态元素包括区域空间元素、标签元素和文字元素;所述动态元素包括动画模型或者动画标签;所述互动元素包括超链接、按钮、输入框和属性信息框。
一实施例中,所述用户特定场景渲染中的静态渲染,包括:
提取所述第二类元素中的静态元素作为待渲染元素;
将所述初始渲染图片作为渲染画布,并将所述待渲染元素渲染至所述渲染画布中与所述云渲染相机的相机信息对应的位置上,得到场景渲染图片。
一实施例中,所述用户特定场景渲染中的动画渲染,包括:
判断在预设时间段中所述云渲染相机的相机信息是否符合预设参数变换条件;
当所述云渲染相机的相机信息符合预设参数变换条件时,获取云渲染服务器中重新进行渲染后的更新渲染图片作为渲染画布;
当所述云渲染相机的相机信息不符合预设参数变换条件,将所述初始渲染图片作为渲染画布;
提取所述第二类元素中的动态元素作为待渲染元素;
将所述待渲染元素渲染至所述渲染画布中与所述云渲染相机的相机信息对应的位置上,得到场景渲染图片。
一实施例中,所述用户特定场景渲染中的互动渲染,包括:
判断在所述BIM三维模型中是否存在所述第二类元素中的互动元素;
若在所述BIM三维模型中存在所述互动元素时,获取所述互动元素在所述BIM三维模型中对应的三维坐标位置值,并根据预设坐标转换方法将所述三维坐标位置值转换为二维坐标位置值;
在所述初始渲染图片中确定与所述二维坐标位置值对应的区域,并将所述互动元素渲染至所述区域中,得到场景渲染图片。
一实施例中,所述用户特定场景渲染中的定制渲染,包括:
分别构建不同属性对应的渲染效果,并建立不同属性对应的渲染效果及用户对应的用户标识之间的联系;所述不同属性包括天气属性和路线属性;
获取用户在浏览所述BIM三维模型时所述用户对应的用户标识,将与所述用户标识对应的属性的渲染效果叠加到所述初始渲染图片中与所述云渲染相机的相机信息对应的位置上,得到场景渲染图片。
一实施例中,所述分别构建不同属性对应的渲染效果,包括:
获取场景天气数据,对所述场景天气数据进行属性渲染处理,得到不同属性中天气属性对应的渲染效果;其中,所述场景天气数据包括虚拟天气数据和虚拟光色数据,所述虚拟天气数据包括大气雾数据和体积云数据,所述虚拟光色数据包括天空光源数据和太阳光数据;
获取多条待参考路线,对所述多条待参考路线进行属性渲染处理,得到不同属性中路线属性对应的渲染效果。
一实施例中,所述对所述操作信号对应的用户浏览事件进行事件解析,得到在建模引擎中相机的实时浏览位置,包括:
提取所述用户浏览事件中的键盘浏览事件和鼠标浏览事件,并解析得到所述键盘浏览事件对应的键盘操作位置和所述鼠标浏览事件对应的鼠标移动位置和鼠标控制位置;
基于所述键盘操作位置、所述鼠标移动位置和所述鼠标控制位置得到相机的实时浏览位置。
一些实施例中,所述根据预设网络协议和所述相机的实时浏览位置从预设云渲染服务器中获取初始渲染图片和云渲染相机的相机信息,包括:
根据预设网络协议建立起与预设云渲染服务器之间的连接;其中,所述网络协议包括websocket协议;
接收所述云渲染服务器中利用云渲染相机对第一类元素进行云渲染得到的初始渲染图片,并获取所述云渲染服务器中进行云渲染时的相机信息。
根据第二方面,一种实施例中提供一种计算机可读存储介质,所述介质上存储有程序,所述程序能够被处理器执行以实现如上任一项所述的三维场景渲染方法。
依据上述实施例的三维场景渲染方法、装置及设备,包括在云渲染服务器中对第一类元素进行云渲染,得到初始渲染图片,并根据第二类元素对初始渲染图片继续进行第二类元素的渲染,得到渲染后的图片。其中,第一类元素包括BIM三维模型的模型场景,第二类元素的渲染包括用户特定场景渲染,而用户特定场景渲染包括执行静态渲染、动画渲染、互动渲染和定制渲染中的任意一种或者同时执行多种,因此第二类元素的渲染可以对于BIM模型相互独立的三维元素的渲染,因此可以减轻云渲染服务器的负担,同时释放客户端硬件在进行第二类元素的渲染时的计算能力。而将场景渲染图片和初始渲染图片进行叠加处理,得到三维场景图片也更加精准。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
一些实施例中,在云渲染服务器中对第一类元素进行云渲染,得到初始渲染图片,并根据第二类元素对初始渲染图片继续进行第二类元素的渲染,得到渲染后的图片。其中,第一类元素包括BIM三维模型的模型场景,第二类元素的渲染包括用户特定场景渲染,而用户特定场景渲染包括执行静态渲染、动画渲染、互动渲染和定制渲染中的任意一种或者同时执行多种,因此第二类元素的渲染可以对于BIM模型相互独立的三维元素的渲染,因此可以减轻云渲染服务器的负担,同时释放客户端硬件在进行第二类元素的渲染时的计算能力。而将场景渲染图片和初始渲染图片进行叠加处理,得到三维场景图片也更加精准。
请参考图1,本发明一些实施例提供了一种三维场景渲染方法,包括步骤S10至步骤S40,下面具体说明。
步骤S10:当接收到用户在建模引擎中浏览BIM三维模型时产生的操作信号时,对操作信号对应的用户浏览事件进行事件解析,得到在建模引擎中相机的实时浏览位置;用户浏览事件包括在浏览BIM三维模型时产生的不同行为操作。
一些实施例中,建筑信息模型(Building Information Modeling,BIM)是以建筑工程项目的各项相关信息数据为基础而建立的建筑模型,通过数字信息仿真,模拟建筑物所具有的真实信息。用户可以在建模引擎中通过输入设备对BIM三维模型进行浏览,进而产生对应的操作信号。其中,输入设备包括鼠标和键盘。即在客户端中利用鼠标或者键盘的控制对BIM三维模型进行浏览,此时,鼠标或者键盘会产生输入信号,与此同时客户端中会产生对应的用户浏览事件,在用户浏览事件中包括在浏览BIM三维模型时产生的不同行为操作,可以是当前输入的键盘按键或者是鼠标的具体操作,例如,利用鼠标移动到了屏幕的哪一个位置,或者点击了鼠标的左键还是右键等操作。
参考图2,一些实施例中,步骤S10对操作信号对应的用户浏览事件进行事件解析,得到在建模引擎中相机的实时浏览位置包括步骤S11至步骤S12,下面具体说明。
步骤S11:提取用户浏览事件中的键盘浏览事件和鼠标浏览事件,并解析得到键盘浏览事件对应的键盘操作位置和鼠标浏览事件对应的鼠标移动位置和鼠标控制位置。
一些实施例中,键盘操作位置为用户操作的键盘按键,鼠标移动位置为往不同方向进行的移动所对应的位置,鼠标控制位置为对鼠标的按键进行操作的位置,可以分为鼠标左键、鼠标右键和鼠标中键。
一些实施例中,通过相机控制器捕捉到操作信号,并且不同的鼠标移动位置和鼠标控制位置所对应的相机的变换不同,例如,按着鼠标的左键或者右键平移鼠标相当于平移建模引擎中的相机,按着鼠标的中键平移则是相当于改变建模引擎中相机的观察方向。
步骤S12:基于键盘操作位置、鼠标移动位置和鼠标控制位置得到相机的实时浏览位置。
一些实施例中,相机的位置即为一个xyz坐标,鼠标操作就是对xyz坐标进行移动和调整,例如,相机原本处于(0,0,0)的位置,通过控制操作之后相机移动到了(1,1,1)的位置,那么此时实时的浏览位置即为(1,1,1)。
步骤S20:根据预设网络协议和相机的实时浏览位置从预设云渲染服务器中获取初始渲染图片和云渲染相机的相机信息;初始渲染图片通过在云渲染服务器中利用云渲染相机对第一类元素进行云渲染得到;云渲染相机的相机信息包括云渲染相机位置和云渲染相机参数;第一类元素包括BIM三维模型的模型场景。
参考图3,一些实施例中,步骤S20根据预设网络协议和相机的实时浏览位置从预设云渲染服务器中获取初始渲染图片和云渲染相机的相机信息包括步骤S21至步骤S22,下面具体说明。
步骤S21:根据预设网络协议建立起与预设云渲染服务器之间的连接;其中,所述网络协议包括websocket协议。
步骤S22:接收云渲染服务器中利用云渲染相机对第一类元素进行云渲染得到的初始渲染图片,并获取云渲染服务器中进行云渲染时的相机信息。
一些实施例中,第一类元素包括BIM三维模型的模型场景,云渲染相机的相机信息包括云渲染相机位置和云渲染相机参数。
一些实施例中,根据预设网络协议建立起与预设云渲染服务器之间的连接之后,客户端会发起渲染指令,同时发送给云渲染服务器建模引擎中相机的实时浏览位置,云渲染服务器在接收到渲染指令时,调整建模引擎中相机的实时浏览位置,并进行渲染。其中,渲染的流程基于编程图形程序接口(Open Graphics Library,OpenGL)来进行计算,因此得到一张包含每个像素数据的图片,将该图片压缩为JPG格式的压缩图片后通过websocket协议发送给客户端,客户端会将其还原为JPG格式后再进行后续的渲染处理。
步骤S30:基于云渲染相机的相机信息和预设第二类元素对初始渲染图片继续进行第二类元素的渲染,得到渲染后的图片;第二类元素的渲染包括用户特定场景渲染,得到的渲染后的图片包括场景渲染图像;用户特定场景渲染包括执行静态渲染、动画渲染、互动渲染和定制渲染中的任意一种或者同时执行多种。
一些实施例中,在基于云渲染相机的相机信息和预设第二类元素对初始渲染图片继续进行所述第二类元素的渲染之前,还包括对云渲染相机的相机信息进行调整,主要是指对云渲染相机的相机信息中的云渲染相机参数进行调整。其中,云渲染相机参数以4x4的矩阵进行表达,所反映的信息是关于平移、旋转以及缩放。
一些实施例中,云渲染相机的相机信息还可以包括相机的视锥,视锥往往代表相机的视野宽度和深度,就如同广角和长焦的区别,最后在渲染流程上也是以一个4x4的矩阵来描述。
一些实施例中,第二类元素包括静态元素、动态元素和互动元素;其中,静态元素包括区域空间元素、标签元素和文字元素;动态元素包括动画模型或者动画标签;互动元素包括超链接、按钮、输入框和属性信息框。
参考图4,一些实施例中,步骤S30中用户特定场景渲染中的静态渲染包括步骤S31至步骤S32,下面具体说明。
步骤S31:提取第二类元素中的静态元素作为待渲染元素。
一些实施例中,第二类元素中的静态元素可以为区域空间元素、标签元素和文字元素。
步骤S32:将初始渲染图片作为渲染画布,并将待渲染元素渲染至渲染画布中与云渲染相机的相机信息对应的位置上,得到场景渲染图片。
一些实施例中,将初始渲染图片作为渲染画布,即将初始渲染图片作为底图,在客户端调整好云渲染相机参数后将静态元素渲染至底图上,得到场景渲染图片。
参考图5,一些实施例中,步骤S30中用户特定场景渲染中的动画渲染包括步骤S33至步骤S37,下面具体说明。
步骤S33:判断在预设时间段中云渲染相机的相机信息是否符合预设参数变换条件。
一些实施例中,预设时间段为一秒,可以判断在一秒内30帧的渲染过程中云渲染相机的相机信息是否发生变化。
步骤S34:当云渲染相机的相机信息符合预设参数变换条件时,获取云渲染服务器中重新进行渲染后的更新渲染图片作为渲染画布。
一些实施例中,重新进行渲染后的更新渲染图片为对第一类元素进行云渲染得到的图片。
步骤S35:当云渲染相机的相机信息不符合预设参数变换条件,将初始渲染图片作为渲染画布。
一些实施例中,云渲染相机的相机信息不符合预设参数变换条件,即在渲染过程中相机的相机信息没有发生变化,因此不需要重复从云渲染服务器中获取新的图片,只需要继续进行后续的动画渲染即可,从而节省了云渲染服务器的资源消耗。
步骤S36:提取第二类元素中的动态元素作为待渲染元素。
一些实施例中,动态元素包括动画模型或者动画标签。
步骤S37:将待渲染元素渲染至渲染画布中与云渲染相机的相机信息对应的位置上,得到场景渲染图片。
一些实施例中,假设渲染画布为一张包含房子的静态图片,而待渲染的动画元素为火焰,火焰需要达到一直在跳动的动画效果,因此,对渲染画布上叠加火焰元素,每秒60帧火焰都在变化的情况下,房子的静态图片不需要重新渲染,只需要在客户端重新渲染火焰即可。而跳动的火焰等运动的物体可以预先分类识别出来。
一些实施例中,关于火焰效果和粒子效果等需要在客户端执行WebGL渲染。
参考图6,一些实施例中,步骤S30中用户特定场景渲染中的互动渲染包括步骤S310至步骤S312,下面具体说明。
步骤S310:判断在BIM三维模型中是否存在第二类元素中的互动元素。
一些实施例中,第二类元素中的互动元素包括超链接、按钮、输入框和属性信息框,互动元素可以接受点击和跳转等操作,按钮元素中还可以被用户输入一些信息。
步骤S311:若在BIM三维模型中存在互动元素时,获取互动元素在BIM三维模型中对应的三维坐标位置值,并根据预设坐标转换方法将三维坐标位置值转换为二维坐标位置值。
一些实施例中,假若互动元素在BIM三维模型中的三维坐标位置值为(1,1,1),利用预设坐标转换方法将三维坐标值转换为二维坐标位置值(80,100),即将一些互动元素以二维平面的方式呈现出来。
步骤S312:在初始渲染图片中确定与二维坐标位置值对应的区域,并将互动元素渲染至区域中,得到场景渲染图片。
参考图7,一些实施例中,步骤S30中用户特定场景渲染中的定制渲染包括步骤S314至步骤S315,下面具体说明。
步骤S314:分别构建不同属性对应的渲染效果,并建立不同属性对应的渲染效果及用户对应的用户标识之间的联系;不同属性包括天气属性和路线属性。
参考图8,一些实施例中,步骤S314分别构建不同属性对应的渲染效果包括步骤S314a至步骤S314b,下面具体说明。
步骤S314a:获取场景天气数据,对场景天气数据进行属性渲染处理,得到不同属性中天气属性对应的渲染效果;其中,场景天气数据包括虚拟天气数据和虚拟光色数据,虚拟天气数据包括大气雾数据和体积云数据,虚拟光色数据包括天空光源数据和太阳光数据。
步骤S314b:获取多条待参考路线,对多条待参考路线进行属性渲染处理,得到不同属性中路线属性对应的渲染效果。
一些实施例中,多条参考路线可以为从路线参考库中获取得到的路线,也可以是根据目标点、终点和路线构建算法构建得到的待参考路线,其中,路线构建算法可以为蚁群算法或者狼群算法。
参考图9,一些实施例中,建立不同属性对应的渲染效果及用户对应的用户标识之间的联系包括步骤S314c至步骤S314d,下面具体说明。
步骤S314c:对不同属性对应的渲染效果中的不同场景下的效果进行编号,得到不同编号的场景渲染效果;不同场景下的效果包括天气属性下的下雨效果、下雪效果和天晴效果。
步骤S314d:将不同编号的场景渲染效果与用户对应的用户标识进行绑定。
一些实施例中,不同用户对应的用户标识可以为ID1、ID2和ID3,可以将天气属性下的下雨效果与用户标识ID1进行绑定,因此当用户标识ID1对应的用户打开页面时,看到的即为下雨的效果,而用户标识ID2对应的用户不一定能看到下雨的效果,用户标识ID2对应的用户所能看到的天气效果取决于绑定的场景渲染效果。
步骤S315:获取用户在浏览BIM三维模型时用户对应的用户标识,将与用户标识对应的属性的渲染效果叠加到初始渲染图片中与云渲染相机的相机信息对应的位置上,得到场景渲染图片。
步骤S40:将场景渲染图片和初始渲染图片进行叠加处理,得到三维场景图片。
一些实施例中,将场景渲染图片和初始渲染图片进行叠加处理,可以得到一个完整的场景渲染模式,即三维场景图片。
参考图10,一些实施例中,进行三维场景渲染的具体操作体现为,用户发送绘制命令到后端即服务器上进行云渲染,并将云渲染得到的图片作为底图,将底图和渲染时相机的位置发送给客户端,客户端会叠加底图进行前端渲染,并将渲染后的图片叠加后呈现给用户。
一些实施例中,将部分渲染计算放在客户端,云渲染从服务器渲染完成后,会以图片或者视频的方式发送到客户端,客户端再根据服务器进行渲染时的相机位置,将部分场景的元素放在客户端进行渲染,并且两张图片进行叠加绘制,就会得到完全贴合的一个场景。以客户端和服务器渲染配合为主,减轻服务器的负担,并且释放客户端硬件的计算能力。
依据上述实施例的三维场景渲染方法、装置及设备,包括在云渲染服务器中对第一类元素进行云渲染,得到初始渲染图片,并根据第二类元素对初始渲染图片继续进行第二类元素的渲染,得到渲染后的图片。其中,第一类元素包括BIM三维模型的模型场景,第二类元素的渲染包括用户特定场景渲染,而用户特定场景渲染包括执行静态渲染、动画渲染、互动渲染和定制渲染中的任意一种或者同时执行多种,因此第二类元素的渲染可以对于BIM模型相互独立的三维元素的渲染,因此可以减轻云渲染服务器的负担,同时释放客户端硬件在进行第二类元素的渲染时的计算能力。而将场景渲染图片和初始渲染图片进行叠加处理,得到三维场景图片也更加精准。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。