本发明涉及交通环境的建模和仿真领域,尤其是涉及单一绘制批次的具有路面标志的三维道路参数化建模方法。
背景技术:
在交通环境的建模和仿真领域,三维道路建模技术是一个重要的研究方向。该技术能够生成逼真的交通道路模型,实现高保真的道路建模,方便设计人员对整体的道路布局进行研究和分析,在包括无人驾驶、城市规划、数字孪生等众多领域有着广泛的应用需求。现阶段的三维道路建模需要处理大量的路面交通标志,包括各种警告标志、指示标志、指路标志等。传统的建模方法会将包含标志的路面纹理做成单独贴图,绘制多条道路时需要多个绘制批次去不断切换贴图,降低了绘制效率。
技术实现要素:
为解决现有技术的不足,实现提高绘制效率的目的,本发明采用如下的技术方案:
单一绘制批次的具有路面标志的三维道路参数化建模方法,包括如下步骤:
s1,设一段待建模的道路路面上具有m个交通标志,分为n种标志类型,对该道路进行参数化建模,输出结果如下:与标志无关的道路纹理t;与标志无关的道路网格g,g中记录了道路网格中所有顶点的空间坐标和对应t的纹理坐标;记录n种标志类型的交通标志集合的含不透明通道的交通标志集纹理i;交通标志参数化编码数据结构f,f中记录了m个交通标志所在区域的包围盒bi(i=1,2,…,m),以及bi的角点集合对应交通标志集纹理i上的纹理坐标ui{uj|j=1,2,…,b},所述b为包围盒的角点个数;
s2,将道路网格g、道路纹理t、交通标志集纹理i、参数化编码数据结构f传输至显存;
s3,设帧缓存为a,对每一帧进行绘制,计算帧缓存a中每个像素的颜色值c,包括如下步骤:
s3.1,调用图形绘制接口,绘制道路网格g;
s3.2,在绘制流水顶点着色阶段,对顶点进行投影计算,同时将顶点的三维坐标传输至像素着色器;
s3.3,在绘制流水像素着色阶段,根据道路网格g中的纹理坐标采样t,获取路面当前位置的颜色值c1;设当前像素对应的三维坐标为p,访问参数化编码数据结构f获取所有包围盒数据,判断p是否在某个包围盒内,若p不属于任意包围盒,则c=c1;若p属于包围盒bk,根据包围盒角点纹理坐标集合uk和p在bk中的位置,计算出当前像素位置在交通标志集纹理i中的纹理坐标q;使用q在i中采样获取交通标志的颜色值c2和透明度a,则c=(1-a)*c1 a*c2。
进一步的,所述步骤s3.3中的所述计算出当前像素位置在交通标志集纹理i中的纹理坐标q,采用插值计算。
进一步的,所述步骤s2的具体内容,使用图形渲染接口,将道路纹理t、交通标志集纹理i、道路网格g、参数化编码数据结构f传输至显存。
本发明的优势和有益效果在于:
本发明通过整理大量路面交通标志,在三维道路中预先规划好每个标志的位置和大小,生成参数化编码数据,在绘制过程中,绘制道路仅需要一个批次,避免了在现代渲染管线和硬件架构下,渲染状态的切换较为耗时的问题,降低了渲染状态的切换次数,提高了渲染性能;参数化的建模方法也增加了交通标志绘制的灵活性,方便调整和修改。
附图说明
图1是本发明的方法流程图。
图2是本发明中参数化道路和交通标志集纹理的映射关系示例图。
图3是本发明中的三维道路绘制结果示例图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
如图1所示,一种实现单一绘制批次的具有大量路面标志的三维道路的参数化建模方法,包括如下步骤:
s1,若一段待建模的道路路面上具有80个交通标志,分为16种类型,对该道路进行参数化建模,输出结果如下:与标志无关的道路纹理t;与标志无关的道路网格g,g中记录了道路网格中所有顶点的空间坐标和对应t的纹理坐标;记录了16种包含不透明通道的交通标志集合的纹理i;交通标志参数化编码数据结构f,f中记录了80个交通标志所在区域的包围盒bi(其中i=1,2,…,80),以及bi的角点集合对应i上的纹理坐标ui{uj|j=1,2,…,4}(bi为二维包围盒,包含4个角点),其中参数化道路和交通标志集纹理i的映射关系如图2所示,对于bi的每个角点都记录其在i中的纹理坐标;
s2,使用opengl作为图形渲染接口。调用glteximage2d函数将道路纹理t、交通标志集纹理i传输至显存;调用glbufferdata函数将道路网格g、参数化编码数据结构f传输至显存;
s3,设帧缓存为a,按照如下步骤对每一帧进行绘制,用以下步骤来计算a中每个像素的颜色值c:
s3.1,调用gldrawelements函数绘制道路网格g;
s3.2,在绘制流水顶点着色器阶段,对顶点进行投影计算,同时将顶点的三维坐标传输至像素着色器;
s3.3,在绘制流水像素着色阶段,根据g中的纹理坐标采样t,获取路面当前位置的颜色值c1;设当前像素对应的三维坐标为p,访问f获取所有包围盒数据,依次进行遍历,判断p是否在某个包围盒内:若p不属于任意包围盒,如图3所示,p为p0点时,则c=c1,;若p属于包围盒bk,如图3所示,p为p1点时,则根据包围盒角点纹理坐标集合uk和p在bk中的位置,采用双线性插值计算出当前像素位置在交通标志集纹理i中的纹理坐标q;使用q在i中进行采样获取对应位置的颜色值c2和不透明度a,则c=(1-a)*c1 a*c2。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
1.单一绘制批次的具有路面标志的三维道路参数化建模方法,其特征在于包括如下步骤:
s1,设一段待建模的道路路面上具有m个交通标志,分为n种标志类型,对该道路进行参数化建模,输出结果如下:与标志无关的道路纹理t;与标志无关的道路网格g,g中记录了道路网格中所有顶点的空间坐标和对应t的纹理坐标;记录n种标志类型的交通标志集合的含不透明通道的交通标志集纹理i;交通标志参数化编码数据结构f,f中记录了m个交通标志所在区域的包围盒bi(i=1,2,…,m),以及bi的角点集合对应交通标志集纹理i上的纹理坐标ui{uj|j=1,2,…,b},所述b为包围盒的角点个数;
s2,将道路网格g、道路纹理t、交通标志集纹理i、参数化编码数据结构f传输至显存;
s3,设帧缓存为a,对每一帧进行绘制,计算帧缓存a中每个像素的颜色值c,包括如下步骤:
s3.1,调用图形绘制接口,绘制道路网格g;
s3.2,在绘制流水顶点着色阶段,对顶点进行投影计算,同时将顶点的三维坐标传输至像素着色器;
s3.3,在绘制流水像素着色阶段,根据道路网格g中的纹理坐标采样t,获取路面当前位置的颜色值c1;设当前像素对应的三维坐标为p,访问参数化编码数据结构f获取所有包围盒数据,判断p是否在某个包围盒内,若p不属于任意包围盒,则c=c1;若p属于包围盒bk,根据包围盒角点纹理坐标集合uk和p在bk中的位置,计算出当前像素位置在交通标志集纹理i中的纹理坐标q;使用q在i中采样获取交通标志的颜色值c2和透明度a,则c=(1-a)*c1 a*c2。
2.如权利要求1所述的单一绘制批次的具有路面标志的三维道路参数化建模方法,其特征在于所述步骤s3.3中的所述计算出当前像素位置在交通标志集纹理i中的纹理坐标q,采用插值计算。
3.如权利要求1所述的单一绘制批次的具有路面标志的三维道路参数化建模方法,其特征在于所述步骤s2的具体内容,使用图形渲染接口,将道路纹理t、交通标志集纹理i、道路网格g、参数化编码数据结构f传输至显存。
技术总结