渲染方法、装置、设备以及存储介质与流程

未命名 07-19 阅读:79 评论:0


1.本公开涉及计算机技术领域,尤其涉及自动驾驶、高精地图和渲染技术领域。


背景技术:

2.车机可以包括设置在车辆中的用于支持人机交互操作的设备。在车机的人机交互界面(human machine interface,hmi)中,一些应用例如高精地图执行渲染操作需要处理大量的数据。这种情况下,可能导致车机的渲染性能较差。


技术实现要素:

3.本公开提供了一种渲染方法、装置、设备以及存储介质。
4.根据本公开的一方面,提供了一种渲染方法,包括:
5.根据车辆的位置对应的地图数据,将该地图数据中的区域划分得到多个网格;
6.根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格;
7.将该目标网格包括的元素的信息渲染到目标场景中。
8.根据本公开的另一方面,提供了一种渲染装置,包括:
9.划分模块,用于根据车辆的位置对应的地图数据,将该地图数据中的区域划分得到多个网格;
10.第一获取模块,用于根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格;
11.渲染模块,用于将该目标网格包括的元素的信息渲染到目标场景中。
12.根据本公开的另一方面,提供了一种电子设备,包括:
13.至少一个处理器;以及
14.与该至少一个处理器通信连接的存储器;其中,
15.该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开实施例中任一的方法。
16.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开实施例中任一的方法。
17.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开实施例中任一的方法。
18.根据本公开实施例,可以减少渲染操作需要处理的数据量,提高渲染效果。
19.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.附图用于更好地理解本方案,不构成对本公开的限定。其中:
21.图1是根据本公开的应用场景的示意图;
22.图2是根据本公开的渲染区域的示意图;
23.图3是根据本公开一实施例的渲染方法的流程示意图;
24.图4是根据本公开另一实施例的渲染方法的流程示意图;
25.图5是根据本公开实施例的待划分区域的示意图;
26.图6是根据本公开实施例的网格划分的示意图;
27.图7是根据本公开另一实施例的渲染方法的流程示意图;
28.图8是根据本公开另一实施例的渲染方法的流程示意图;
29.图9是根据本公开另一实施例的渲染方法的流程示意图;
30.图10是根据本公开实施例的可视化区域的示意图;
31.图11是根据本公开实施例的偏移值的示意图;
32.图12是根据本公开另一实施例的渲染方法的流程示意图;
33.图13是根据本公开另一实施例的渲染方法的流程示意图;
34.图14是根据本公开实施例的一种高精地图渲染方法的流程示意图;
35.图15是根据本公开一实施例的渲染装置的结构示意图;
36.图16是根据本公开另一实施例的渲染装置的结构示意图;
37.图17是用来实现本公开实施例的方法的电子设备的框图。
具体实施方式
38.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
39.在车机人机界面(hmi)渲染业务中,高精地图需要根据主车运行位置不断地更新瓦片数据并渲染。由于主车运行速度快,为了避免渲染视野中出现道路断裂的现象,hmi可以根据主车周围的瓦片数据生成地图元素的顶点信息,并在三维(three-dimensional,3d)场景中渲染地图元素的顶点信息。但是,根据瓦片数据生成地图元素的三角面数量庞大,对中央处理器(central processing unit,cpu)到图形处理器(graphics processing unit,gpu)的数据带宽,以及gpu着色渲染的性能压力非常大。因此,可以在一些设备上选择屏蔽部分地图元素的展示来平衡设备渲染卡顿。例如,为了达到图1中正常渲染视角下展示效果,hmi实际处理的地图区域如图2所示,其中框选区域为图1对应部分。
40.随着自动驾驶等技术的发展,车机hmi渲染需要不断丰富高精地图元素的展示。大型场景的实时渲染,可以采用遮挡剔除、多细节层次(levels of detail,lod)、网格划分、贴图等方式,来提升大场景实时渲染的帧率和稳定性。
41.例如,遮挡剔除的方式可以包括:被物体挡住无法看到该物体后面的物体不用被渲染。被遮挡的物体即使在相机视野中,因为不可见,没有渲染的必要。剔除被遮挡的物体后,可以减少图形处理器(gpu)/中央处理器(cpu)数据传输消耗、减少gpu三角面的绘制、减少绘制调用(draw call)的次数,从而提升渲染性能。遮挡剔除可以用包围盒与空间树划分空间结构,加速遮挡关系的判断。
42.再如,lod的方式可以包括:模型建模时会生成精细度不同的几个级别(level)的模型。其中,精细度差的模型三角面少,模型棱角不分明,能看出模型大概样子,但是渲染性能压力小。精细度高的模型三角面多,棱角分明,模型看起来很精致,渲染性能压力大。渲染引擎可以根据模型与摄像机的距离,自适应匹配一个级别(level)的模型显示。这符合人们视觉的预期:模型离得远,看得到轮廓;离得近,看得清细节。同时,也缓解了视野远处时的渲染压力。
43.再如,网格划分的方式可以包括:将大场景划分成若干个小场景,根据当前位置及运动趋势,预测下一个位置。加载下一个位置涉及到的场景网格资源,并卸载上一位置需要下一位置不再需要更新的场景网格。通过动态卸载和加载,可以保证场景及时更新,同时减少场景数据的处理。
44.再如,贴图的方式可以包括:场景中不需要加载模型,使用贴图的方式代替场景中的模型。
45.实时渲染大型场景,可以采用上述一个或多个方式配合来提升渲染的性能。这些方式一般要求提前制作场景资源,离线建模工作量大。然而,高精地图渲染需要根据车辆坐标动态加载渲染车辆周围的地图元素,车辆行驶范围随机性强,离线建模所有可能的瓦片,成本特别高。因此,高精地图渲染需要根据路况采集到的瓦片数据实时建模。在建模中,需要处理的瓦片数据特别多,否则容易出现主车周围地图信息缺失的情况。
46.一种渲染高精地图的方法包括:每隔10s加载主车周围很大区域的瓦片数据,根据瓦片数据生成建筑物、道路、斑马线等元素的顶点信息。hmi渲染每帧都会将生成地图元素的顶点信息在3d场景中实时渲染出来。这种方法需要处理的数据量大,对设备性能要求高;低性能设备处理容易出现卡顿、丢帧现象,严重可能导致应用程序无响应(application not response,anr)。此外,主车在道路停止时,实际主车周围的地图信息并没有改变,这种情况下更新渲染效果属于无效处理。
47.本公开实施例可以在大量的地图数据例如瓦片数据中筛选出真正需要渲染的数据,减少数据处理量,提升高精地图渲染引擎的性能。这样,能够减少高精地图的渲染压力,有利于满足低成本设备高性能渲染的要求。
48.图3是根据本公开一实施例的渲染方法的流程示意图,包括:
49.s301、根据车辆的位置对应的地图数据,将该地图数据中的区域划分得到多个网格。
50.s302、根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格。
51.s303、将该目标网格包括的元素的信息渲染到目标场景中。
52.在本公开实施例中,地图可以包括但不限于三维地图、立体地图、高精地图等。地图数据可以包括但不限于瓦片数据。车辆可以包括人工驾驶车辆、各种级别的自动驾驶车辆等。
53.在本公开实施例中,车辆的位置可以通过全球定位系统(global positioning system,gps)、北斗卫星导航系统等获取。车辆的位置对应的地图数据,可以包括覆盖车辆周围一定区域的地图数据。例如,以车辆上的某个点为参考点的一定范围内的数据。例如以车辆的左前端点为中心的一定尺寸例如100m*100m的方形区域包括的地图数据。再如,以车
辆的中心点为圆心,半径为一定长度例如50m的圆形区域包括的地图数据。当然,也可以采用其他方式确定车辆的位置对应的地图数据,只要该地图数据中的区域能够覆盖车辆的位置即可。在一种示例中,可以通过渲染引擎请求车辆的位置对应的地图数据。渲染引擎可以安装在车机等具有hmi的设备中。
54.在本公开实施例中,渲染引擎可以将该车辆的位置对应地图数据中的区域划分为多个网格,网格的数量可以依据实际需求设置。例如,对于100m*100m的方形区域,按照10行*10列的方式可划分为100个10m*10m的网格,按照20行*10列方式可划分为200个5m*10m的网格。
55.在本公开实施例中,在行驶过程中,车辆的位置可能发生改变;在停车或临时停止行驶等场景中,车辆的位置可能保持不变。例如,临时停止行驶的场景可以包括在十字路口等待信号灯、在加油站等待加油、在收费站等待缴费等场景。利用车辆的位置对应的地图数据,能够在车辆的位置变化时动态划分网格。
56.在本公开实施例中,车辆的渲染视角可以基于车载传感器,如摄像头、相机、红外传感器、雷达、激光传感器等的视角来确定,也可以基于渲染引擎中虚拟摄像头的视角来确定。例如,车辆的渲染视角下的可视化区域可以包括例如车辆摄像头的视锥体平面与地图平面的相交区域。再如,车辆的渲染视角下的可视化区域可以包括基于上述相交区域向外扩展一定长度得到的扩展区域。确定扩展区域的方法可以有多种,例如相交区域的顶点坐标代入转换公式例如加法公式、乘法公式等得到扩展区域的顶点坐标。车辆摄像头的视锥体平面可以基于例如车载传感器的视场范围、渲染引擎中虚拟摄像头的视场范围等来确定。地图平面可以为三维地图中的z平面,也可以为低于或高于z平面的其他平面等。假设三维地图的坐标轴中,x轴表示南北方向(或纬度),y轴表示东西方向(或经度),z轴表示高度,则z轴坐标为0的平面可以为z平面。
57.车辆的渲染视角下的可视化区域内可以包括该车辆可见的各种地图元素。如果基于车辆的位置对应的地图数据划分得到n个网格,可以基于该可视化区域从该n个网格中进一步确定出该车辆可见的地图元素所在的网格,即需要渲染的目标网格。目标网格的数量可以小于n个。目标网格中的地图元素可以包括地图中的各种标志物,如车道线、斑马线、路沿石、绿化带、建筑、交通标志、信号灯等。渲染引擎可以车辆的渲染视角下的可视化区域出需要渲染的目标网格,能够在执行渲染操作时,将筛选的目标网格包括的地图元素的信息渲染到目标场景例如3d场景中,减少渲染操作需要处理的数据量,提高渲染效果。例如,可以降低车载计算设备的算力需求,提高高精地图等高需求应用的渲染效率和渲染效果。
58.图4是根据本公开另一实施例的渲染方法的流程示意图,该方法可以包括上述实施例的渲染方法的一个或多个特征。在一种实施方式中,s302根据车辆的位置对应的地图数据,将该地图数据中的区域划分得到多个网格,包括:
59.s401、解析车辆的位置对应的地图数据,得到该地图数据包括的元素的顶点。
60.s402、遍历该地图数据包括的元素的顶点,得到多个边缘顶点。
61.s403、根据该多个边缘顶点和网格划分方式,将该多个边缘顶点组成的区域划分为该多个网格。
62.在本公开实施例中,车辆的位置对应地图数据中可以包括若干地图元素。车辆处于不同位置的地图数据中包括的地图元素可能全部或部分不同。某一种地图元素可以包括
若干个组成面。组成面可以理解为组成该地图元素的平面。一个组成面可以包括多个顶点。例如,如果组成面是三角面,则该组成面可以包括三个顶点。如果组成面是方形面,则该方形面可以包括四个顶点。组成面也可以为其他平面图形。一个地图元素的一个组成面的多个顶点的数据可以保存到一个组成面中,并且一个组成面可以具有对应的组成面索引。一个地图元素的多个组成面的顶点的数据可以保存到该地图元素的组成面列表中。一个地图元素的组成面列表可以具有对应的列表索引。组成面列表中包括组成面的顶点标识、顶点坐标、组成面索引以及组成面朝向等信息。例如,一个地图元素的组成面列表的索引为a,表a中包括该地图元素的组成面的索引为a1、a2和a3。组成面a1包括顶点a1-1,a1-2和a1-3;组成面a2包括顶点a2-1,a2-2和a2-3;组成面a3包括顶点a3-1,a3-2和a3-3。
63.一种情况下,根据组成面的索引可以分别获取组成面中包括的各个顶点的信息。根据某个顶点的信息也可以获取该顶点所在的组成面,进而获取该组成面中所有顶点的信息。例如,根据顶点a2-3可以获取组成面a2包括的顶点a2-1,a2-2和a2-3的信息。
64.另一种情况下根据组成面列表的索引可以获取该组成面列表中包括的所有组成面的顶点的信息。根据某个顶点的信息也可以获取该顶点所在的组成面列表,进而获取该组成面列表中所有组成面的顶点的信息。例如,根据顶点a2-3可以获取表a中所有组成面a1、a2和a3的所有顶点的信息。
65.在本公开实施例中,在获取车辆的位置对应的地图数据后,可以解析该地图数据,得到该地图数据中包括的各个地图元素的若干顶点。解析地图数据的过程和划分网格的过程可以没有时序限制,可以先划分网格再解析地图数据,也可以先解析该车辆的位置对应的地图数据再划分网格,还可以并行执行。
66.在本公开实施例中,通过遍历车辆的位置对应的地图数据中元素的若干顶点,可以得到该地图数据所覆盖的区域的边缘顶点。例如,边缘顶点可以包括车辆的位置对应的地图数据的所有顶点中的x坐标最大的顶点、y坐标最大的顶点、x坐标最小的顶点以及y坐标最小的顶点。再如,边缘顶点可以包括车辆的位置对应的地图数据的所有顶点中x坐标最大的顶点、y坐标最大的顶点、x坐标最小的顶点以及y坐标最小的顶点分别加上一个设定值。相当于将车辆的位置对应的地图数据的最大顶点坐标向外扩展。在遍历该地图数据的所有顶点的过程中可以获取这些边缘顶点的坐标值。一种方式中,可以将这些顶点的坐标值连接得到待划分区域。另一种方式中,可以基于边缘顶点中的最大x坐标、最大y坐标、最小x坐标以及最小y坐标确定该地图数据对应的待划分区域。例如,如图5所示,基于最大x坐标和最小x坐标分别获取与x轴的两条平行线;基于最大y坐标和最小y坐标分别获取与y轴的两条平行线;基于与x轴的平行线以及与y轴的两条平行线确定一个包围盒。该包围盒可以表示车辆的位置对应的地图数据中的待划分区域。
67.此外,也可以不获取边缘顶点,而是直接获取边缘坐标值。例如,边缘坐标值可以包括该地图数据的所有顶点中的最大x坐标、最大y坐标、最小x坐标以及最小y坐标。基于最大x坐标、最大y坐标、最小x坐标以及最小y坐标可以确定该地图数据对应的待划分区域。
68.在本公开实施例中,待划分区域可以看作一个包围盒。可按照预设的网格划分方式将该包围盒划分为多个网格。预设的网格划分方式对应的参数可以为网格的数量、行数、列数等信息的一种或多种。将预设的网格划分方式对应的参数、边缘顶点的坐标等代入设定的划分公式,可以计算出划分后的网格的信息。
69.例如,如图6所示,最大x坐标为globalmaxx,最大y坐标为globalmaxy,最小x坐标为globalminx,以及最小y坐标为globalminy,如果网格划分方式为m行n列,则可以采用以下划分公式,分别计算网格的四个顶点的坐标。
70.zonedata[i].minx=globalminx+(i%n)*deltax;
[0071][0072]
zonedata[i].maxx=globalminx+(i%n+1)*deltax;
[0073][0074]
deltax=(globalmaxx-globalminx)/n;
[0075]
deltay=(globalmaxy-globalminy)/m。
[0076]
其中,zonedata[i]表示网格,i表示网格的序号或索引,zonedata[i].maxx表示第i个网格的最大x坐标,zonedata[i].maxy表示第i个网格的最大y坐标,zonedata[i].minx表示第i个网格的最小x坐标,zonedata[i].miny表示第i个网格的最小y坐标。globalminx表示包围盒的最小x坐标,globalminy表示包围盒的最小y坐标,globalmaxx表示包围盒的最大x坐标,globalmaxy表示包围盒的最大y坐标。表示向下取整。如果deltax和deltay是整数,计算出的网格的四个顶点的坐标也可以是整数。
[0077]
通过zonedata[i].maxx和zonedata[i].maxy可以确定第i个网格的右上顶点坐标,可以通过zonedata[i].maxx和zonedata[i].miny确定第i个网格的右下顶点坐标,可以通过zonedata[i].minx和zonedata[i].maxy确定第i个网格的左上顶点坐标,可以通过zonedata[i].maxx和zonedata[i].maxy确定第i个网格的左下顶点坐标。
[0078]
以需要将矩形包围盒划分为10(行)*10(列)的网格为例,则可以根据以下公式分别计算各个网格的四个顶点的坐标。
[0079]
zonedata[i].minx=globalminx+(i%10)*deltax;
[0080][0081]
zonedata[i].maxx=globalminx+(i%10+1)*deltax;
[0082][0083]
deltax=(globalmaxx-globalminx)/10;
[0084]
deltay=(globalmaxy-globalminy)/10。
[0085]
在图6的示例中,待划分区域对应的包围盒的globalminx=0,globalminy=0,globalmaxx=10,并且globalmaxy=10。将该包围盒按照10*10划分为100个网格。网格序号i的取值范围为i=[0,99],i∈n。采用(minx,miny)表示网格的左下角坐标,(maxx,maxy)表示网格的右上角坐标,分别计算i=0、i=1、i=8、i=9、1=18以及i=99的网格的坐标如下:
[0086]
当i=0时,(minx,miny)=(0,0),(maxx,maxy)=(1,1)。
[0087]
当i=1时,(minx,miny)=(1,0),(maxx,maxy)=(2,1)。
[0088]
当i=8时,(minx,miny)=(8,0),(maxx,maxy)=(9,1)。
[0089]
当i=9时,(minx,miny)=(9,0),(maxx,maxy)=(10,1)。
[0090]
当i=18时,(minx,miny)=(8,1),(maxx,maxy)=(9,2)。
[0091]
当i=99时,(minx,miny)=(9,9)、(maxx,maxy)=(10,10)。
[0092]
根据本公开实施例,在基于车辆的位置对应的地图数据包括的元素的顶点得到多个边缘顶点,多个边缘顶点组成的区域能够覆盖该车辆的位置对应的地图数据中更多元素例如所有元素的顶点,在后续基于该区域划分的网格中也可以包括该地图数据中更多元素例如所有元素的顶点,有利于提高渲染结果的准确性。
[0093]
图7是根据本公开另一实施例的渲染方法的流程示意图,该方法可以包括上述实施例的渲染方法的一个或多个特征。在一种实施方式中,该方法还包括:
[0094]
s701、遍历该地图数据包括的元素的组成面;
[0095]
s702、在该地图数据包括的第一元素的组成面中存在至少一个顶点处于第一网格内的情况下,将该第一元素的组成面对应的索引添加到该第一网格的组成面列表中;其中该第一网格为该多个网格中的一个网格。
[0096]
在本公开实施例中,在基于车辆的位置对应的地图数据划分得到多个网格后,可以遍历该地图数据中的各个元素的组成面的顶点坐标。如果某个元素的某个组成面的至少一个顶点坐标处于某个网格的范围内,可以将该组成面的索引与该网格关联。具体可以在该网格对应的组成面列表中,记录该组成面的索引,以表示该网格包括该组成面。如果一个元素的一个组成面的不同顶点坐标分别处于多个网格的范围内,可以将该组成面的索引与这多个网格分别关联。例如,在这多个网格对应的组成面列表中,分别记录该组成面的索引。
[0097]
例如,如果车辆的位置对应的地图数据中的一个元素例如建筑物的一个组成面的索引为a3,且组成面a3中的顶点a3-1以及顶点a3-2在网格n0中,可以在网格n0对应的组成面列表中记录该车道线对应的组成面的索引a3。
[0098]
在一种实施方式中,如果第一元素的至少一个顶点处于第一网格内,也可以将该第一元素的组成面列表对应的索引添加到该第一网格的元素列表中。这种情况下,可以通过网格的元素列表存储部分出现在该网格中的元素的更完整的信息。
[0099]
在本公开实施例中,如果某个元素组成面的至少一个顶点坐标处于某个网格的范围内,可以将该元素对应的组成面列表的索引与该网格关联。具体可以在该网格对应的元素列表中,记录该元素对应的组成面列表的索引,以表示该网格包括该元素。如果一个元素的组成面的不同顶点坐标分别处于多个网格的范围内,可以将该元素对应的组成面列表的索引与这多个网格分别关联。例如,在这多个网格对应的元素列表中,分别记录该元素对应的组成面列表的索引。
[0100]
例如,如果车辆的位置对应的地图数据中的一个元素例如一条车道线的组成面列表的索引为a,且表a中的顶点a1-1在网格n1中以及顶点a3-2在网格n2中,则可以在网格n1对应的元素列表中记录该车道线对应的组成面列表的索引a,并且在网格n2对应的元素列表中也记录该车道线对应的组成面列表的索引a。
[0101]
以组成面三角面为例,一个元素的三角面列表的索引为t,该元素的一个三角面索引为t1。三角面t1的三个顶点坐标分别为(0,0)、(0,1)以及(2,0),并且网格n1的四个顶点分别为(0,0)、(0,1)、(1,0)以及(1,1),网格n2的四个顶点分别为(1,0)、(1,1)、(2,0)以及(2,1)。由于三角面t1的顶点(0,0)、(0,1)在网格n1内,顶点(2,0)在网格n2内,可以将这个三角面t1对应的索引记录到网格n1和网格n2的组成面列表中,也可以将该三角面t1所在的
元素对应的三角面列表的索引分别记录到网格n1和网格n2的元素列表中。
[0102]
根据本公开实施例,可以基于地图元素的顶点将车辆的位置对应的地图数据中包括的地图元素与网格关联,便于在渲染时显示完整的渲染效果,防止数据缺失。
[0103]
图8是根据本公开另一实施例的渲染方法的流程示意图,该方法可以包括上述实施例的渲染方法的一个或多个特征。在一种实施方式中,该方法包括:
[0104]
s801、在渲染引擎的第一运行时长达到第一设定时长的情况下,请求该车辆的位置对应的地图数据。
[0105]
在一种实施方式中,第一运行时长是从该渲染引擎上一次请求该车辆的位置对应的地图数据的时刻到当前时刻的时长。
[0106]
在本公开实施例中,步骤s801可以在步骤s301之前执行。例如,渲染引擎启动后,可以获取渲染引擎的运行时长,通过判断渲染引擎的运行时长是否达到预设时长,来决定是否请求获取车辆在当前位置的地图数据。例如,可以通过定时器来记录渲染引擎的运行时长。首先,在渲染引擎启动时可以开启一个定时器,并请求获取车辆在当前位置的地图数据。然后,将该定时器清零后重新开始计时,当该定时器的工作时长达到第一设定时长时,表示渲染引擎的第一运行时长达到第一设定时长,可以开始再次请求地图数据,并将该定时器的计时再次归零并重新开始计时,依次类推。例如,第一设定时长为10s,当渲染引擎启动时,请求获取一次车辆在当前的第一位置的瓦片数据,定时器启动并开始计时。当定时器的计时达到10s后,重新请求获取车辆在当前的第二位置的瓦片数据,将定时器归零并重新开始计时。这样,渲染引擎可以每隔10s请求获取一次该车辆在当前位置对应的地图数据。如果车辆在行驶状态下,第一位置和第二位置不同,两次请求得到的瓦片数据也不同。上述第一设定时长为10s仅是示例而非限制,可以根据具体应用场景进行调整,例如调整为5s、20s或30s等。
[0107]
根据本公开实施例,基于上一次请求该车辆的位置对应的地图数据的时刻来确定第一运行时长,可以通过第一运行时长控制请求车辆的位置对应的地图数据的时间间隔,避免频繁请求大量数据,减少了算力消耗。也可以采用其他方式来确定第一运行时长,例如,将从渲染引擎获取到车辆的位置对应的地图数据的时刻作为第一运行时长的起点,这种情况下,可以控制获取地图数据的时间间隔,减少需要处理的数据量。
[0108]
在一种实施方式中,s302根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格,还包括以下情况一或情况二。
[0109]
情况一:在渲染引擎的第二运行时长达到第二设定时长的情况下,根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格。
[0110]
情况二:在渲染引擎的第一运行时长未达到第一设定时长且该渲染引擎的第二运行时长达到第二设定时长的情况下,根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格。
[0111]
在一种实施方式中,该第二运行时长是从该渲染引擎上一次进入渲染模式的时刻到当前时刻的时长。其中渲染引擎上一次进入渲染模式的时刻可以基于渲染引擎上一次开始确定目标网格的时刻确定,例如,与渲染引擎上一次开始确定目标网格的时刻相同。渲染引擎上一次进入渲染模式的时刻也可以是其他时刻,例如完成顶点缓存更新的时刻。
[0112]
在本公开实施例中,也可以不设置第一运行时长,仅设置第二运行时长,这种情况
下,渲染引擎可以基于事件和/或车辆状态等请求获取车辆的位置对应的地图数据。例如,如果检测到驾驶员操作车机的某些按钮或某些功能的事件,则触发请求获取车辆的位置对应的地图数据。再如,检测到车速达到某个速度阈值或车辆位置移动量达到某个距离阈值,则触发请求获取车辆的位置对应的地图数据。
[0113]
在本公开实施例中,渲染引擎可以基于第二运行时长来控制车辆是否进入渲染过程。例如,可以设定一个定时器来记录渲染引擎的第二运行时长。渲染引擎初始运行后,定时器开始工作,该定时器的工作时长第一次达到第二设定时长,可以第一次进入渲染模式,例如开始确定目标网格。然后将该定时器清零并重新开始计时,如果该定时器的工作时长再次达到第二设定时长,可以再次进入渲染模式。
[0114]
在本公开实施例中,渲染引擎可以基于第一运行时长和第二运行时长来控制车辆是否进入渲染过程。例如,可以设置两个定时器。第一定时器用于记录渲染引擎的第一运行时长。第二定时器用于记录渲染引擎的第二运行时长。如果第一定时器的工作时长未达到第一设定时长且第二定时器的工作时长达到第二设定时长,可以进入渲染模式。如果第一设定时长大于第二设定时长,则请求地区数据的频率低于更新目标网格的频率。例如,第一设定时长10s且第二设定时长为100ms。渲染引擎可以每10s请求一次车辆在当前位置的瓦片数据。并且,在10s内该渲染引擎可以每100ms进入一次渲染过程。
[0115]
根据本公开实施例,基于上一次进入渲染模式的时刻来确定第二运行时长,可以控制进入渲染模式的频率,及时更新需要需要渲染的目标网格,得到更加连续准确的渲染效果。
[0116]
图9是根据本公开另一实施例的渲染方法的流程示意图,该方法可以包括上述实施例的渲染方法的一个或多个特征。在一种实施方式中,该车辆的渲染视角下的可视化区域包括该渲染视角下摄像机的视锥体在地图平面的投影区域,根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格,还包括:
[0117]
s901、根据该视锥体的平面方程与地图平面方程,得到该可视化区域的多个顶点;
[0118]
s902、比较该可视化区域的多个顶点与该车辆的位置,得到多个渲染偏移值;
[0119]
s903、根据该车辆的位置和该多个渲染偏移值,从该多个网格中获取该目标网格。
[0120]
在本公开实施例中,车辆的渲染视角下的可视化区域可以包括车辆的摄像头的视锥体平面与地图平面的交界面。用于确定视锥体的摄像头可以包括实际的车载传感器,也可以包括渲染引擎中的虚拟摄像头。视锥体可以表示摄像头可视范围,例如以车辆的头位置为侧面顶点的四棱锥。如果将视锥体平面称为视锥面,视锥面可以包括四棱锥的四个侧面,可以用平面方程表示。在三维地图中,地图平面可以是一个轴为0的平面,例如,z轴为0的平面可以为z平面。地图平面可以具有对应的平面方程。可以分别使用每个视锥面的平面方程与地图平面的平面方程计算得到四个交线方程。再使用四个交线方程分别两两计算交点,得到四个交点。这四个交点即为可视化区域的四个顶点。上述四个交点仅是示例而非限制,也可能采用其他形状的视锥体得到其他数量的交点。
[0121]
如图10所示,以车载相机为例,地图平面为z平面,通过分别使用每个视锥面的平面方程与z平面的平面方程计算,得到四个对应的z平面直线方程。再使用四个z平面直线方程,分别两两计算交点,得到四个交点,即为可视化区域的顶点。
[0122]
在一些示例中,根据可视化区域的四个顶点的坐标与上述划分的各个网格四个顶
点的坐标的关系,可以确定需要渲染的目标网格的数量和位置等信息。例如,如果某个网格的至少一个包围盒边界经过可视化区域内或者某个网格的至少一个顶点处于可视化区域内,可以将该网格确定为目标网格。具体来说,可以比较可视化区域的多个顶点与车辆的位置,得到多个渲染偏移值,基于该渲染偏移值可以确定需要渲染的目标网格的变化是否较大。如果是,再继续执行渲染过程。如果基于该渲染偏移值确定需要渲染的目标网格变化较小,可以停止渲染过程,保持上一次的渲染效果。
[0123]
根据本公开实施例,通过视锥体的平面方程与地图平面方程可以确定车辆的可视化区域,该可视化区域可以为在车辆的hmi中的显示区域。通过可视化区域筛选出需要渲染的目标网格的数量和位置,可以减少渲染所需的计算量。由于无需对车辆的位置对应的地图数据的完整区域全部进行处理,可以降低高精地图渲染对设备算力的需求,提高渲染效率和渲染效果。
[0124]
在一种实施方式中,在该地图平面内,该渲染偏移值与该车辆的位置在指定方向上的距离大于距离阈值或距离最远。
[0125]
在本技术实施例中,指定方向可以包括上下左右,也可以包括沿着一个或多个参考线的方向。如果在某个方向上顶点与车辆的位置之间的距离大于某个距离阈值,可以基于该顶点和车辆的位置计算一个偏移值。例如,可视化区域的一个顶点在车辆上方,可以计算该顶点与车辆的之间的上偏移值。如果在某个方向上顶点与车辆的位置之间的距离最远,可以基于该顶点和车辆的位置计算一个最远偏移值。例如,可视化区域的一个顶点在车辆上方,可以计算该顶点与车辆的之间的最远上偏移值。
[0126]
例如,可以计算可视化区域的每个顶点与车辆的位置之间的偏移值,即渲染偏移值。如图11所示,根据可视化区域的顶点坐标与车辆的中心点坐标之间的距离。可以计算得到可视化区域与该车辆的位置在x轴上的左偏移值
[0127]
根据本公开实施例,通过与车辆的位置存在一定距离的渲染偏移值可以将车辆周围更多的网格确定为目标网格,防止出现数据缺失,实现连续的渲染效果。
[0128]
图12是根据本公开另一实施例的渲染方法的流程示意图,该方法可以包括上述渲染方法的一个或多个特征。在一种实施方式中,s903根据该车辆的位置和该多个渲染偏移值,从该多个网格中获取该目标网格,包括:
[0129]
s1201、根据该车辆的位置、该多个渲染偏移值和转换系数,得到该车辆关联的渲染边界;其中,该转换系数是渲染视角下的长度单位与参考长度单位的转换系数;
[0130]
s1202、从该多个网格中获取处于该渲染边界内的该目标网格。
[0131]
在本公开实施例中,在渲染引擎中地图或摄像头采集的图像中,虚拟视场或拍摄角度等可能导致形变。通过转换系数可以弱化形变导致的误差。通过计算渲染引擎中地图或摄像头采集的图像中单位长度与实际单位长度的比值,可以得到转换系数。例如,在地图上设置标记点,计算车辆与该标记点的实际距离s1,以及车辆与该标记点在渲染中的距离s2。转换系数ka可以等于s2/s1。
[0132]
根据本公开实施例,使用车辆的位置、渲染偏移值和转换系数计算渲染视角下的渲染边界,可以使得多个渲染边界覆盖的区域可能大于可视化区域,将车辆周围关联的更多网格确定为目标网格,使得渲染效果更具有连续性。
[0133]
在一种实施方式中,s1201根据该车辆的位置、该多个渲染偏移值和转换系数,得
到该车辆关联的渲染边界,包括以下至少之一:
[0134]
方式一:将该车辆的位置的x坐标减去第一渲染偏移值与转换系数的乘积,得到该渲染边界的最小x坐标;其中,该第一渲染偏移值是该可视化区域与该车辆的位置在x轴上的左偏移值。
[0135]
方式二:将该车辆的位置的x坐标加上第二渲染偏移值与转换系数的乘积,得到该渲染边界的最大x坐标;其中,该第二渲染偏移值是该可视化区域与该车辆的位置在x轴上的右偏移值。
[0136]
方式三:将该车辆的位置的y坐标减去第三渲染偏移值与转换系数的乘积,得到该渲染边界的最小y坐标;其中,该第三渲染偏移值是该可视化区域与该车辆的位置在y轴上的下偏移值。
[0137]
方式四:将该车辆的位置的y坐标加上第四渲染偏移值与转换系数的乘积,得到该渲染边界的最大y坐标;其中,该第四渲染偏移值是该可视化区域与该车辆的位置在y轴上的上偏移值。
[0138]
例如,可以通过以下公式,来计算渲染边界对应的渲染边界:
[0139]
渲染边界的最小x坐标=车辆的x坐标

最远左偏移值*ka
[0140]
渲染边界的最大x坐标=车辆的x坐标+最远右偏移值*ka
[0141]
渲染边界的最小y坐标=车辆的y坐标-最远上偏移值*ka
[0142]
渲染边界的最大y坐标=车辆的y坐标+最远下偏移值*ka
[0143]
根据本公开实施例,基于上述多个渲染边界的坐标,可以确定出可视化区域关联的最大待渲染区域,从而在最大待渲染区域中选择更加合适的需要渲染的目标网格,不仅可以减少渲染计算所需的数量,还可以保证渲染效果。
[0144]
在一种实施方式中,s1202从该多个网格中获取处于该渲染边界内的该目标网格,包括:在该地图平面的坐标系中,在该多个网格中的待处理网格的坐标符合以下条件的至少之一的情况下,将该待处理网格设置为可渲染状态,处于可渲染状态的网格为该目标网格:
[0145]
该待处理网格的最大x坐标小于或等于该渲染边界的最大x坐标;
[0146]
该待处理网格的最小x坐标大于或等于该渲染边界的最小x坐标;
[0147]
该待处理网格的最大y坐标小于或等于该渲染边界的最大y坐标;
[0148]
该待处理网格的最小y坐标大于或等于该渲染边界的最小y坐标。
[0149]
在本公开实施例中,通过比较划分得到各个网格的顶点坐标与渲染边界的坐标,可确定处于渲染边界组成的区域内的网格的位置和数量。例如,渲染边界的最小x坐标为2、最大x坐标为5、最小y坐标为1以及最大y坐标为3。如果某个网格的一个顶点坐标为(2,3),则该网格至少有部分区域处于渲染边界组成的区域内,可以确定为目标网格。
[0150]
根据本公开实施例,可以通过渲染边界确定出的车辆周围的目标网格,不仅可以减少渲染计算所需的数量,还可以提高渲染效果的连续性。
[0151]
图13是根据本公开另一实施例的渲染方法的流程示意图,该方法可以包括上述实施例的渲染方法的一个或多个特征。在一种实施方式中,该目标网格包括的元素的信息在顶点缓存中,该方法还包括:
[0152]
s1301、获取该目标网格的组成面列表中的索引对应的组成面的顶点;
[0153]
s1302、在该顶点缓存的渲染列表中加入该目标网格中的组成面列表的顶点。
[0154]
在本公开实施例中,在渲染时可以将目标网格的地图数据存入缓存中。例如,顶点缓存中可以包括渲染列表。该渲染列表中可以包括需要渲染的组成面和/或顶点的具体信息。如果某个顶点所在组成面的索引在目标网格的组成面列表中,可以将该组成面的顶点加入渲染列表中。具体的,本公开的地图数据包括地图元素,组成面列表、组成面。以组成面为三角面为例,其数据结构如下所示:
[0155]
struct triangledata{
[0156]
float3 pos1;
[0157]
float3 pos2;
[0158]
float3 pos3;
[0159]
float3 normal;
[0160]
}
[0161]
其中,pos1、pos2以及pos3分别为三角面三个顶点的坐标,normal为三角面的朝向信息。
[0162]
std::map《int,triangledata》triangleinfo;
[0163]
其中,triangledata为三角面,int为三角面索引,triangleinfo为三角面列表。
[0164]
std::map《std::string,triangleinfo》globalmapelementstriangle;
[0165]
其中,string为地图元素名称,如斑马线、车道线、信号灯、建筑物等,triangleinfo为三角面列表,globalmapelementstriangle为地图元素信息。
[0166]
在本公开实施例中,在存储地图数据进入缓存时,可以将地图数据中的元素及其对应的组成面列表存入缓存,也可以将组成面的顶点及其对应的地图元素信息存入缓存。
[0167]
在一些示例中,也可以为划分的网格设置对应的元素列表。元素列表中可以包括部分或全部顶点处于该网格内的地图元素的组成面列表的索引。这种情况下,如果某个顶点所归属的元素的组成面列表的索引在目标网格的元素列表中,可以将该元素的组成面列表包括的顶点加入渲染列表中。如果某个顶点所归属的元素的组成面列表的索引不在目标网格的元素列表中,可以将该元素的组成面列表包括的顶点从渲染列表中删除。
[0168]
根据本公开实施例,可以使缓存获取到待渲染的网格对应的地图数据,为高精地图的进一步渲染提供遍历。另外,在存储时,并不将网格对应的所有的地图数据都存入缓存,降低了缓存的占用率,提高了存储的可用数据量,提高了渲染效率。
[0169]
在一种实施方式中,s303将该目标网格包括的元素的信息渲染到目标场景中,包括:在第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值大于偏移阈值的情况下,将该顶点缓存中元素的顶点渲染到目标场景中;其中,n为大于或等于1的整数。
[0170]
在本公开实施例中,顶点缓存中的数据是不断更新的,当车辆位置发生变化时,其待渲染区域也会发生变化,此时,需要将新的待渲染网格对应的地图数据存储至缓存中。
[0171]
根据本公开实施例,可以保证缓存中的地图数据与当前待渲染的网格的一致性,可以实现随车辆位置的变化动态渲染高精地图。
[0172]
在一种实施方式中,如图13所示,该方法还包括:
[0173]
s1303、从该顶点缓存的渲染列表中,将不在该目标网格的组成面列表中的组成面的顶点删除。例如,如果某个顶点所在组成面的索引不在任意一个目标网格的组成面列表
中,可以将该组成面的顶点删除。
[0174]
在本公开实施例中,当顶点缓存中的地图数据更新时,还可以对已离开渲染边界的网格对应的地图数据进行删除。
[0175]
根据本公开实施例,可以将缓存中不需要渲染的地图数据删除,节省缓存的空间,减少不必要的渲染工作,提高渲染的效率。
[0176]
在一种实施方式中,该方法还包括:在以下一种或多种情况下,在该车辆的显示界面保持上一次的渲染状态:
[0177]
渲染引擎的第二运行时长未达到第二设定时长;
[0178]
第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值小于偏移阈值;其中,n为大于或等于1的整数;
[0179]
顶点缓存中的数据未更新。
[0180]
在本公开实施例中,当渲染引擎的运行时长未达到预设时长时,可以暂时使用上一次的渲染结果进行展示。当车辆停车或缓慢移动时,计算得出其偏移值变化未超过阈值,也可以暂时使用上一次的渲染结果进行展示。当顶点缓存中没有新数据存入时,也可以暂时使用上一次的渲染结果进行展示。
[0181]
根据本公开实施例,可以减少执行渲染操作的次数,节省了设备的算力。同时,使用上一次的渲染结果进行展示,也保证了特殊情况下hmi中高精地图的正常显示。
[0182]
在一种具体的应用场景中,本公开实施例的渲染方法可以是一种提高高精地图渲染性能的方法。渲染引擎解析瓦片数据时,可以生成瓦片网格(mesh)结构,并将瓦片mesh划分成多个网格结构。渲染时先通过计算主车周围需要显示的地图区域,在z平面上,距离主车一定距离范围内的网格才会被渲染处理。主车行驶时,每隔一段时间例如100ms根据主车位置刷新需要用到的网格数据,加载到场景渲染,对于当前不再需要的mesh数据,从场景中卸载。
[0183]
如图14所示,该渲染方法可以包括以下步骤:
[0184]
s1401、应用启动。例如车机中渲染引擎启动。
[0185]
s1402、计算渲染视角下的单位与实际单位例如1m(米)的转换系数:ka。例如,可在地图上设置标记点,通过计算主车与标记点的实际距离,以及渲染中主车与该标记点的距离,计算得出转换系数。
[0186]
该步骤也可以在后续需要执行渲染前计算。例如,在s1409之前执行。
[0187]
s1403、在应用运行过程中,获得应用的运行时长。
[0188]
s1404、判断渲染引擎的第一运行时长是否达到第一设定时长例如10s。如果是,执行s1405,否则执行s1408。
[0189]
s1405、渲染引擎请求瓦片数据。在收到瓦片数据之后,渲染引擎解析瓦片数据生成的瓦片mesh结构的示例如下:
[0190]
三角面顶点可以包括三个顶点坐标、三角面方向、三角面索引与三角面信息结构,以及元素的三角面列表。例如:
[0191]
struct triangledata{
[0192]
//三角面顶点
[0193]
float3 pos1;
[0194]
float3 pos2;
[0195]
float3 pos3;
[0196]
//三角面方向
[0197]
float3 normal;
[0198]
}
[0199]
其中,pos1、pos2以及pos3可以分别表示三角面的三个顶点的坐标,normal可以表示三角面的朝向信息。
[0200]
一种三角面索引与三角面信息结构的示例如下:
[0201]
std::map《int,triangledata》triangleinfo。
[0202]
其中,triangledata可以表示三角面数据,int可以表示三角面索引,triangleinfo可以表示三角面信息。
[0203]
一种地图十字路口、斑马线、停止线、楼宇等元素的三角面列表的示例如下:
[0204]
std::map《std::string,triangleinfo》globalmapelementstriangle。
[0205]
一种三角面列表的示例如下:其中,string可以表示地图元素名称例如地图十字路口、斑马线、停止线、楼宇等元素。globalmapelementstriangle可以表示该元素的三角面列表。
[0206]
s1406、渲染引擎解析瓦片数据后,逐个遍历瓦片数据中十字路口、斑马线、停止线、楼宇等各个元素的顶点,并根据顶点生成三角面(或称为三角形),并将三角面及其对应的索引填充到对应的三角面信息(triangleinfo)中。其中,三角面索引可以每次自增一个数值例如1,并将元素名称以及三角面信息添加到地图元素三角面(globalmapelementstriangle)中。
[0207]
s1407、网格划分。遍历解析得到的顶点例如地图元素三角面globalmapelementstriangle中包括的顶点,得到顶点的最大值globalmaxx、globalmaxy,最小值globalminx、globalminy。并根据顶点的最大值和最小值更新网格例如zonedata[100]。
[0208]
网格结构可以包括网格包围盒信息,网格是否参与渲染的标志位,元素所属区域的三角面列表等。
[0209]
一种网格结构的示例如下:
[0210]
struct meshdata{
[0211]
//网格包围盒信息
[0212]
float maxx;
[0213]
float maxy;
[0214]
float minx;
[0215]
float miny;
[0216]
//使用标志位,该网格是否参与渲染
[0217]
bool used;
[0218]
//地图十字路口、斑马线、停止线、楼宇等元素所属该区域的三角面列表
[0219]
std::map《std::string,std::vector《int》》mapelementstrianglesindex;
[0220]
}
[0221]
其中,maxx、maxy、minx、miny可以表示网格包围盒信息;used可以表示使用标志位,用于指示该网格是否参与渲染。例如,如果used为真(true),指示该网格参与渲染。如果used为假(false),指示该网格不参与渲染。mapelementstrianglesindex可以表示地图十字路口、斑马线、停止线、楼宇等元素所属区域的三角面列表的索引。
[0222]
一种示例中,通过网格结构可以用来存储网格数据信息。例如,meshdata zonedata[100],表示该网格结构包括100个网格的数据。通过zonedata可以用来表示每个网格的基本信息。
[0223]
一种示例中,可以根据解析顶点的最大值globalmaxx、globalmaxy,最小值globalminx、globalminy,平均划分瓦片mesh区域为10*10的网格,并计算各个网格的meshdata信息。一种划分公式的示例如下:
[0224]
zonedata[i].minx=globalminx+(i%10)*deltax;
[0225][0226]
zonedata[i].maxx=globalminx+(i%10+1)*deltax;
[0227][0228]
deltax=(globalmaxx-globalminx)/10;
[0229]
deltay=(globalmaxy-globalminy)/10。
[0230]
基于公式划分网格的示例可以参见图6及其相关描述。
[0231]
此外,可以遍历各元素的三角面信息,如果一个三角面信息中包括一个顶点在zonedata[i]的包围盒内,则添加该三角面对应索引到zonedata[i]的包围盒关联的该元素对应的三角面列表中。此外,也可以将该元素对应的完整的三角面列表的索引添加到zonedata[i]的包围盒关联的组成面列表中。
[0232]
s1408、判断渲染引擎的第二运行时长是否达到第二设定时长例如100ms。如果是,执行s1409,否则执行s1413。
[0233]
s1409、渲染视角下与z平面可视化区域点坐标{jp0,jp1,jp2,jp3}。例如,可通过视锥体平面方程与z平面方程求取到4组z平面的直线方程,直线俩俩求交点,可分别得到可视化区域顶点。
[0234]
比较顶点的顶点值,找到距离主车位置最远左偏移值maxleftoffset、最远右偏移值maxrightoffset、最远下偏移值maxbottomoffset、最远上偏移值maxtopoffset,参见图11。
[0235]
根据主车位置坐标、渲染偏移值、转换系数ka,计算主车周围的网格区域(参见上述的待渲染区域)。该网格区域的边界(参见上述的渲染边界)计算公式示例如下:
[0236]
网格minx=主车位置坐标x值-maxleftoffset*ka;
[0237]
网格maxx=主车位置坐标x值+maxrightoffset*ka;
[0238]
网格miny=主车位置坐标y值-minbottomoffset*ka;
[0239]
网格maxy=主车位置坐标y值+maxtopoffset*ka。
[0240]
其中,网格minx为网格区域的最小x坐标(也即渲染边界的最小x坐标),网格miny为网格区域的最小y坐标(也即渲染边界的最小y坐标),网格maxx为网格区域(也即渲染边界的最大x坐标)的最大x坐标,网格maxy为网格区域(也即渲染边界的最大y坐标)的最大y
坐标。主车位置坐标x值也即主车的x坐标,主车位置坐标y值也即主车的y坐标。
[0241]
s1410、遍历网格,如果网格i满足以下至少之一执行s1411,否则执行s1412:
[0242]
zonedata[i].maxx《=网格maxx;
[0243]
zonedata[i].minx》=网格minx;
[0244]
zonedata[i].maxy《=网格maxy;
[0245]
zonedata[i].miny》=网格miny。
[0246]
s1411、如果网格i的标志位used为假(false),表示不参与渲染,则将该标志位used标记为真(true),参与渲染。找到网格i对应的三角面,添加对应的三角面信息到顶点缓存。
[0247]
s1412、如果网格i的标志位used为真(true),则将该标志位used标记为假(false),表示不参与渲染。从顶点缓存中删除该网格i的顶点信息。
[0248]
s1413、根据顶点缓存渲染。顶点缓存中的渲染列表中可以包括需要渲染的元素的三角面对应的索引或三角面列表对应的索引。
[0249]
例如,渲染引擎运行过程中,接收到可用的网格信息,根据三角面列表找到三角面顶点信息,并将这些顶点信息添加到场景资源中。处理完成后使用,渲染引擎在识别到正在使用的网格数据时,设置网格可见性为真,然后将网格数据渲染到3d场景中。渲染引擎在识别到不再使用的网格数据时,设置网格可见性为假(false),可以从3d场景中卸载该网格,然后3d场景将不再渲染这些数据。
[0250]
图15是根据本公开一实施例的渲染装置的结构示意图,该装置包括:
[0251]
划分模块1501,用于根据车辆的位置对应的地图数据,将该地图数据中的区域划分得到多个网格;
[0252]
第一获取模块1502,用于根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格;
[0253]
渲染模块1503,用于将该目标网格包括的元素的信息渲染到目标场景中。
[0254]
图16是根据本公开另一实施例的渲染装置的结构示意图,在一种实施方式中,该划分模块1501,包括:
[0255]
解析子模块1601,用于解析车辆的位置对应的地图数据,得到该地图数据包括的元素的顶点;
[0256]
遍历子模块1602,用于遍历该地图数据包括的元素的顶点,得到多个边缘顶点;
[0257]
划分子模块1603,用于根据该多个边缘顶点和网格划分方式,将该多个边缘顶点组成的区域划分为该多个网格。
[0258]
在一种实施方式中,如图16所示,该装置还包括:
[0259]
遍历模块1604,用于遍历该地图数据包括的元素的组成面;
[0260]
添加模块1605,用于在该地图数据包括的第一元素的组成面中存在至少一个顶点处于第一网格内的情况下,将该第一元素的组成面对应的索引添加到该第一网格的组成面列表中;其中该第一网格为该多个网格中的一个网格。
[0261]
在一种实施方式中,如图16所示,该装置还包括:
[0262]
请求模块1606,用于在渲染引擎的第一运行时长达到第一设定时长的情况下,请求该车辆的位置对应的地图数据;其中第一运行时长是从该渲染引擎上一次请求该车辆的
位置对应的地图数据的时刻到当前时刻的时长。
[0263]
在一种实施方式中,如图16所示,该第一获取模块1502,还用于:
[0264]
在渲染引擎的第二运行时长达到第二设定时长的情况下,根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格;或者
[0265]
在渲染引擎的第一运行时长未达到第一设定时长且该渲染引擎的第二运行时长达到第二设定时长的情况下,根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格;
[0266]
其中,该第二运行时长是从该渲染引擎上一次进入渲染模式的时刻到当前时刻的时长。
[0267]
在一种实施方式中,该车辆的渲染视角下的可视化区域包括该渲染视角下摄像机的视锥体在地图平面的投影区域,如图16所示,该第一获取模块1502,还包括:
[0268]
计算子模块1607,用于根据该视锥体的平面方程与地图平面方程,得到该可视化区域的多个顶点;
[0269]
比较子模块1608,用于比较该可视化区域的多个顶点与该车辆的位置,得到多个渲染偏移值;
[0270]
获取子模块1609,用于根据该车辆的位置和该多个渲染偏移值,从该多个网格中获取该目标网格。
[0271]
在一种实施方式中,在该地图平面内,该渲染偏移值与该车辆的位置在指定方向上的距离大于距离阈值或距离最远。
[0272]
在一种实施方式中,该获取子模块1609,还用于:
[0273]
根据该车辆的位置、该多个渲染偏移值和转换系数,得到该车辆关联的渲染边界;其中,该转换系数是渲染视角下的长度单位与参考长度单位的转换系数;
[0274]
从该多个网格中获取处于该渲染边界内的该目标网格。
[0275]
在一种实施方式中,该获取子模块用于根据该车辆的位置、该多个渲染偏移值和转换系数,得到该车辆关联的渲染边界,包括以下至少之一:
[0276]
将该车辆的位置的x坐标减去第一渲染偏移值与转换系数的乘积,得到该渲染边界的最小x坐标;其中,该第一渲染偏移值是该可视化区域与该车辆的位置在x轴上的左偏移值;
[0277]
将该车辆的位置的x坐标加上第二渲染偏移值与转换系数的乘积,得到该渲染边界的最大x坐标;其中,该第二渲染偏移值是该可视化区域与该车辆的位置在x轴上的右偏移值;
[0278]
将该车辆的位置的y坐标减去第三渲染偏移值与转换系数的乘积,得到该渲染边界的最小y坐标;其中,该第三渲染偏移值是该可视化区域与该车辆的位置在y轴上的下偏移值;
[0279]
将该车辆的位置的y坐标加上第四渲染偏移值与转换系数的乘积,得到该渲染边界的最大y坐标;其中,该第四渲染偏移值是该可视化区域与该车辆的位置在y轴上的上偏移值。
[0280]
在一种实施方式中,该获取子模块用于从该多个网格中获取处于该渲染边界内的该目标网格,包括:在该地图平面的坐标系中,在该多个网格中的待处理网格的坐标符合以
下条件的至少之一的情况下,将该待处理网格设置为可渲染状态,处于可渲染状态的网格为该目标网格:
[0281]
该待处理网格的最大x坐标小于或等于该渲染边界的最大x坐标;
[0282]
该待处理网格的最小x坐标大于或等于该渲染边界的最小x坐标;
[0283]
该待处理网格的最大y坐标小于或等于该渲染边界的最大y坐标;
[0284]
该待处理网格的最小y坐标大于或等于该渲染边界的最小y坐标。
[0285]
在一种实施方式中,如图16所示,该目标网格包括的元素的信息在顶点缓存中,该装置还包括:
[0286]
第二获取模块1610,用于获取该目标网格的组成面列表中的索引对应的组成面的顶点;
[0287]
加入模块1611,用于在该顶点缓存的渲染列表中加入该目标网格中的组成面列表的顶点。
[0288]
在一种实施方式中,该渲染模块1503,还用于在第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值大于偏移阈值的情况下,将该顶点缓存中元素的顶点渲染到目标场景中;其中,n为大于或等于1的整数。
[0289]
在一种实施方式中,如图16所示,该装置还包括:
[0290]
删除模块1612,用于从该顶点缓存的渲染列表中,将不在该目标网格的组成面列表中的组成面的顶点删除。
[0291]
在一种实施方式中,如图16所示,该装置还包括:
[0292]
保持模块1613,用于在以下一种或多种情况下,在该车辆的显示界面保持上一次的渲染状态;
[0293]
渲染引擎的第二运行时长未达到第二设定时长;
[0294]
第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值小于偏移阈值;其中,n为大于或等于1的整数;
[0295]
顶点缓存中的数据未更新。
[0296]
本公开实施例的装置的各模块、子模块的具体功能和示例的描述,可以参见上述方法实施例中对应步骤的相关描述,在此不再赘述。
[0297]
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0298]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0299]
图17示出了可以用来实施本公开的实施例的示例电子设备1700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0300]
如图17所示,设备1700包括计算单元1701,其可以根据存储在只读存储器(rom)1702中的计算机程序或者从存储单元1708加载到随机访问存储器(ram)1703中的计算机程
序,来执行各种适当的动作和处理。在ram 1703中,还可存储设备1700操作所需的各种程序和数据。计算单元1701、rom 1702以及ram 1703通过总线1704彼此相连。输入/输出(i/o)接口1705也连接至总线1704。
[0301]
设备1700中的多个部件连接至i/o接口1705,包括:输入单元1706,例如键盘、鼠标等;输出单元1707,例如各种类型的显示器、扬声器等;存储单元1708,例如磁盘、光盘等;以及通信单元1709,例如网卡、调制解调器、无线通信收发机等。通信单元1709允许设备1700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0302]
计算单元1701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1701执行上文所描述的各个方法和处理,例如渲染方法。例如,在一些实施例中,渲染方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1708。在一些实施例中,计算机程序的部分或者全部可以经由rom 1702和/或通信单元1709而被载入和/或安装到设备1700上。当计算机程序加载到ram 1703并由计算单元1701执行时,可以执行上文描述的渲染方法的一个或多个步骤。备选地,在其他实施例中,计算单元1701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行渲染方法。
[0303]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0304]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0305]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0306]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机
具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
[0307]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0308]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0309]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,在本公开实施例中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0310]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术特征:
1.一种渲染方法,包括:根据车辆的位置对应的地图数据,将所述地图数据中的区域划分得到多个网格;根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格;将所述目标网格包括的元素的信息渲染到目标场景中。2.根据权利要求1所述的方法,其中,根据车辆的位置对应的地图数据,将所述地图数据中的区域划分得到多个网格,包括:解析车辆的位置对应的地图数据,得到所述地图数据包括的元素的顶点;遍历所述地图数据包括的元素的顶点,得到多个边缘顶点;根据所述多个边缘顶点和网格划分方式,将所述多个边缘顶点组成的区域划分为所述多个网格。3.根据权利要求1或2所述的方法,还包括:遍历所述地图数据包括的元素的组成面;在所述地图数据包括的第一元素的组成面中存在至少一个顶点处于第一网格内的情况下,将所述第一元素的组成面对应的索引添加到所述第一网格的组成面列表中;其中所述第一网格为所述多个网格中的一个网格。4.根据权利要求1至3中任一项所述的方法,还包括:在渲染引擎的第一运行时长达到第一设定时长的情况下,请求所述车辆的位置对应的地图数据;其中第一运行时长是从所述渲染引擎上一次请求所述车辆的位置对应的地图数据的时刻到当前时刻的时长。5.根据权利要求1至4中任一项所述的方法,其中,根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格,包括:在渲染引擎的第二运行时长达到第二设定时长的情况下,根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格;或者在渲染引擎的第一运行时长未达到第一设定时长且所述渲染引擎的第二运行时长达到第二设定时长的情况下,根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格;其中,所述第二运行时长是从所述渲染引擎上一次开始进入渲染模式的时刻到当前时刻的时长。6.根据权利要求1至5中任一项所述的方法,所述车辆的渲染视角下的可视化区域包括所述渲染视角下摄像机的视锥体在地图平面的投影区域,根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格,包括:根据所述视锥体的平面方程与地图平面方程,得到所述可视化区域的多个顶点;比较所述可视化区域的多个顶点与所述车辆的位置,得到多个渲染偏移值;根据所述车辆的位置和所述多个渲染偏移值,从所述多个网格中获取所述目标网格。7.根据权利要求6所述的方法,在所述地图平面内,所述渲染偏移值与所述车辆的位置在指定方向上的距离大于距离阈值或距离最远。8.根据权利要求6或7所述的方法,根据所述车辆的位置和所述多个渲染偏移值,从所述多个网格中获取所述目标网格,包括:
根据所述车辆的位置、所述多个渲染偏移值和转换系数,得到所述车辆关联的渲染边界;其中,所述转换系数是渲染视角下的长度单位与参考长度单位的转换系数;从所述多个网格中获取处于所述渲染边界内的所述目标网格。9.根据权利要求8所述的方法,根据所述车辆的位置、所述多个渲染偏移值和转换系数,得到所述车辆关联的渲染边界,包括以下至少之一:将所述车辆的位置的x坐标减去第一渲染偏移值与转换系数的乘积,得到所述渲染边界的最小x坐标;其中,所述第一渲染偏移值是所述可视化区域与所述车辆的位置在x轴上的左偏移值;将所述车辆的位置的x坐标加上第二渲染偏移值与转换系数的乘积,得到所述渲染边界的最大x坐标;其中,所述第二渲染偏移值是所述可视化区域与所述车辆的位置在x轴上的右偏移值;将所述车辆的位置的y坐标减去第三渲染偏移值与转换系数的乘积,得到所述渲染边界的最小y坐标;其中,所述第三渲染偏移值是所述可视化区域与所述车辆的位置在y轴上的下偏移值;将所述车辆的位置的y坐标加上第四渲染偏移值与转换系数的乘积,得到所述渲染边界的最大y坐标;其中,所述第四渲染偏移值是所述可视化区域与所述车辆的位置在y轴上的上偏移值。10.根据权利要求8或9所述的方法,从所述多个网格中获取处于所述渲染边界内的所述目标网格,包括:在所述地图平面的坐标系中,在所述多个网格中的待处理网格的坐标符合以下条件的至少之一的情况下,将所述待处理网格设置为可渲染状态,处于可渲染状态的网格为所述目标网格:所述待处理网格的最大x坐标小于或等于所述渲染边界的最大x坐标;所述待处理网格的最小x坐标大于或等于所述渲染边界的最小x坐标;所述待处理网格的最大y坐标小于或等于所述渲染边界的最大y坐标;所述待处理网格的最小y坐标大于或等于所述渲染边界的最小y坐标。11.根据权利要求1至10中任一项所述的方法,所述目标网格包括的元素的信息在顶点缓存中,所述方法还包括:获取所述目标网格的组成面列表中的索引对应的组成面的顶点;在所述顶点缓存的渲染列表中加入所述目标网格中的组成面列表的顶点。12.根据权利要求11所述的方法,将所述目标网格包括的元素的信息渲染到目标场景中,包括:在第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值大于偏移阈值的情况下,将所述顶点缓存中元素的顶点渲染到目标场景中;其中,n为大于或等于1的整数。13.根据权利要求11或12所述的方法,所述方法还包括:从所述顶点缓存的渲染列表中,将不在所述目标网格的组成面列表中的组成面的顶点删除。14.根据权利要求1至13中任一项所述的方法,还包括:在以下一种或多种情况下,在所述车辆的显示界面保持上一次的渲染状态;
渲染引擎的第二运行时长未达到第二设定时长;第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值小于偏移阈值;其中,n为大于或等于1的整数;顶点缓存中的数据未更新。15.一种渲染装置,包括:划分模块,用于根据车辆的位置对应的地图数据,将所述地图数据中的区域划分得到多个网格;第一获取模块,用于根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格;渲染模块,用于将所述目标网格包括的元素的信息渲染到目标场景中。16.根据权利要求15所述的装置,其中,所述划分模块,包括:解析子模块,用于解析车辆的位置对应的地图数据,得到所述地图数据包括的元素的顶点;遍历子模块,用于遍历所述地图数据包括的元素的顶点,得到多个边缘顶点;划分子模块,用于根据所述多个边缘顶点和网格划分方式,将所述多个边缘顶点组成的区域划分为所述多个网格。17.根据权利要求15或16所述的装置,还包括:遍历模块,用于遍历所述地图数据包括的元素的组成面;添加模块,用于在所述地图数据包括的第一元素的组成面中存在至少一个顶点处于第一网格内的情况下,将所述第一元素的组成面对应的索引添加到所述第一网格的组成面列表中;其中所述第一网格为所述多个网格中的一个网格。18.根据权利要求15至16中任一项所述的装置,还包括:请求模块,用于在渲染引擎的第一运行时长达到第一设定时长的情况下,请求所述车辆的位置对应的地图数据;其中第一运行时长是从所述渲染引擎上一次请求所述车辆的位置对应的地图数据的时刻到当前时刻的时长。19.根据权利要求15至18中任一项所述的装置,其中,所述第一获取模块用于:在渲染引擎的第二运行时长达到第二设定时长的情况下,根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格;或者在渲染引擎的第一运行时长未达到第一设定时长且所述渲染引擎的第二运行时长达到第二设定时长的情况下,根据所述车辆的渲染视角下的可视化区域以及所述车辆的位置,从所述多个网格中获取需要渲染的目标网格;其中,所述第二运行时长是从所述渲染引擎上一次进入渲染模式的时刻到当前时刻的时长。20.根据权利要求15至19中任一项所述的装置,所述车辆的渲染视角下的可视化区域包括所述渲染视角下摄像机的视锥体在地图平面的投影区域,所述第一获取模块,还包括:计算子模块,用于根据所述视锥体的平面方程与地图平面方程,得到所述可视化区域的多个顶点;比较子模块,用于比较所述可视化区域的多个顶点与所述车辆的位置,得到多个渲染偏移值;
获取子模块,用于根据所述车辆的位置和所述多个渲染偏移值,从所述多个网格中获取所述目标网格。21.根据权利要求20所述的装置,在所述地图平面内,所述渲染偏移值与所述车辆的位置在指定方向上的距离大于距离阈值或距离最远。22.根据权利要求20或21所述的装置,所述获取子模块,还用于:根据所述车辆的位置、所述多个渲染偏移值和转换系数,得到所述车辆关联的渲染边界;其中,所述转换系数是渲染视角下的长度单位与参考长度单位的转换系数;从所述多个网格中获取处于所述渲染边界内的所述目标网格。23.根据权利要求22所述的装置,所述获取子模块用于根据所述车辆的位置、所述多个渲染偏移值和转换系数,得到所述车辆关联的渲染边界,包括以下至少之一:将所述车辆的位置的x坐标减去第一渲染偏移值与转换系数的乘积,得到所述渲染边界的最小x坐标;其中,所述第一渲染偏移值是所述可视化区域与所述车辆的位置在x轴上的左偏移值;将所述车辆的位置的x坐标加上第二渲染偏移值与转换系数的乘积,得到所述渲染边界的最大x坐标;其中,所述第二渲染偏移值是所述可视化区域与所述车辆的位置在x轴上的右偏移值;将所述车辆的位置的y坐标减去第三渲染偏移值与转换系数的乘积,得到所述渲染边界的最小y坐标;其中,所述第三渲染偏移值是所述可视化区域与所述车辆的位置在y轴上的下偏移值;将所述车辆的位置的y坐标加上第四渲染偏移值与转换系数的乘积,得到所述渲染边界的最大y坐标;其中,所述第四渲染偏移值是所述可视化区域与所述车辆的位置在y轴上的上偏移值。24.根据权利要求22或23所述的装置,所述获取子模块用于从所述多个网格中获取处于所述渲染边界内的所述目标网格,包括:在所述地图平面的坐标系中,在所述多个网格中的待处理网格的坐标符合以下条件的至少之一的情况下,将所述待处理网格设置为可渲染状态,处于可渲染状态的网格为所述目标网格:所述待处理网格的最大x坐标小于或等于所述渲染边界的最大x坐标;所述待处理网格的最小x坐标大于或等于所述渲染边界的最小x坐标;所述待处理网格的最大y坐标小于或等于所述渲染边界的最大y坐标;所述待处理网格的最小y坐标大于或等于所述渲染边界的最小y坐标。25.根据权利要求15至24中任一项所述的装置,所述目标网格包括的元素的信息在顶点缓存中,所述装置还包括:第二获取模块,用于获取所述目标网格的组成面列表中的索引对应的组成面的顶点;加入模块,用于在所述顶点缓存的渲染列表中加入所述目标网格中的组成面列表的顶点。26.根据权利要求25所述的装置,所述渲染模块用于在第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值大于偏移阈值的情况下,将所述顶点缓存中元素的顶点渲染到目标场景中;其中,n为大于或等于1的整数。27.根据权利要求25或26所述的装置,所述装置还包括:
删除模块,用于从所述顶点缓存的渲染列表中,将不在所述目标网格的组成面列表中的组成面的顶点删除。28.根据权利要求15至27中任一项所述的装置,还包括:保持模块,用于在以下一种或多种情况下,在所述车辆的显示界面保持上一次的渲染状态;渲染引擎的第二运行时长未达到第二设定时长;第n+1次得到的渲染偏移值与第n次得到的渲染偏移值的差值小于偏移阈值;其中,n为大于或等于1的整数;顶点缓存中的数据未更新。29.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-14中任一项所述的方法。30.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-14中任一项所述的方法。31.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-14中任一项所述的方法。

技术总结
本公开提供了一种渲染方法、装置、设备以及存储介质,涉及计算机技术领域,尤其涉及自动驾驶、高精地图和渲染技术领域。具体实现方案为:根据车辆的位置对应的地图数据,将该地图数据中的区域划分得到多个网格;根据该车辆的渲染视角下的可视化区域以及该车辆的位置,从该多个网格中获取需要渲染的目标网格;将该目标网格包括的元素的信息渲染到目标场景中。通过对地图划分网格,从所有网格中依据渲染视角确认部分待渲染网格,根据本公开实施例,可以减少渲染操作需要处理的数据量,提高渲染效果。果。果。


技术研发人员:柴海江
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.03.21
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐