发明内容
本发明要解决的技术问题是:为了解决现有技术中渲染动态行车轨迹的方法不具有通用性的问题,本发明提供了一种动态行车轨迹的渲染方法来解决上述问题。
本发明解决其技术问题所采用的技术方案是:一种动态行车轨迹的渲染方法,包括以下步骤:
S1、加载配置文件,所述配置文件包括相机参数、轨迹线参数和图案参数;
S2、根据所述轨迹线参数和图案参数构造轨迹线模型,生成模型数据;
所述模型数据包括纹理坐标、法线坐标和图元索引,所述轨迹线模型包括车辙部分、安全区域部分和空白部分,所述轨迹线参数用于设置所述车辙部分、安全区域部分和空白部分的大小;
S3、根据上一次记录的档位信息和方向信息生成轨迹线坐标;
S4、根据所述相机参数对所述轨迹线坐标进行变形;
S5、调用图形库对轨迹线进行渲染;
S6、记录轨迹线对应车辆的档位信息和方向信息。
作为优选,在步骤S3中,所述轨迹线坐标对应的运动轨迹包括前轮轨迹和后轮轨迹;
所述前轮轨迹的半径由以下数学公式定义:
式中,
Rf为前轮轴心运动轨迹的半径;
L为车辆的轴距;
θ为车辆的转向角度;
Rf1为在外侧的前轮的运动轨迹的半径;
Rf2为在内侧的前轮的运动轨迹的半径;
所述后轮轨迹的半径由以下数学公式定义:
式中,
Rb为后轮轴心运动轨迹的半径;
L为车辆的轴距;
θ为车辆的转向角度;
Rb1为在外侧的后轮的运动轨迹的半径;
Rb2为在内侧的后轮的运动轨迹的半径。
作为优选,在步骤S3和S4之间还包括步骤S31、判断所述轨迹线坐标的应用场景,若所述轨迹线坐标的应用场景为3D场景则进入步骤S5;
若所述轨迹线坐标的应用场景为倒车影像场景则进入步骤S4。
作为优选,在步骤S2和S3之间还包括步骤S21、判断前两次记录的档位信息和方向信息是否一致;
若一致则进入步骤S5,若不一致则进入步骤S3。
作为优选,所述相机参数包括内参数和外参数;
所述步骤S4具体包括以下步骤:
S401、获取所述轨迹线坐标;
S402、根据所述外参数将所述轨迹线坐标转换到相机坐标系中;
S403、根据所述内参数将所述轨迹线坐标转换到图像坐标系中。
作为优选,所述轨迹线参数包括车长、车宽、车辆的轴距、车辆的后悬距、轨迹长度、车辙宽度、安全距离和车辆的轮距。
作为优选,所述图案参数包括类型标志和矩形参数;
所述矩形参数包括多个用于限定矩形区域的数据,所述类型标志用于将所述车辙部分、安全区域部分和空白部分与所述矩形区域进行关联。
作为优选,在步骤S3中,在生成所述轨迹线坐标前将所述轨迹线模型的高度抬高。
本发明的有益效果是,这种动态行车轨迹的渲染方法根据配置文件进行轨迹线模型的构造和外观设置,让动态行车轨迹的外观设计和软件设置分离,既提高了软件的适用性,也提高了动态行车轨的设计效率。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
如图1~3所示,本发明提供了一种动态行车轨迹的渲染方法,包括以下步骤:
S1、通过OpenGL加载配置文件,配置文件用于存储配置信息,配置信息包括相机参数、轨迹线参数和图案参数;
相机参数包括内参数和外参数,内参数和外参数均通过标定算法计算得出;在本实施例中,标定算法包括但不限于张正友平面标定算法;
轨迹线参数包括车长、车宽、车辆的轴距、车辆的后悬距、轨迹长度、车辙宽度、安全距离和车辆的轮距;其中车长、车宽、车辆的轴距、车辆的后悬距和车辆的轮距通过参照车辆公开的车身信息得到,轨迹长度、车辙宽度和安全距离为预设好的数值;
在本实施例中,轨迹长度的范围为3米到4米之间;车辙宽度需要参考车辆的轮距设置,车辙宽度的范围为20厘米到40厘米之间;安全距离的范围为15厘米到25厘米之间;
图案参数包括类型标志和矩形参数,矩形参数包括4个用于限定矩形区域的浮点型数据,类型标志记录了矩形区域与轨迹线模型之间的关系;
S2、根据轨迹线参数和图案参数构造轨迹线模型,设置轨迹线模型的纹理和材质,生成模型数据,模型数据包括纹理坐标、法线坐标和图元索引;
轨迹线模型为根据轨迹线参数构造的覆盖在地面上的矩形条带,轨迹线模型包括两个车辙部分、两个安全区域部分和一个空白部分;两个安全区域部分设置在最外侧,两个车辙部分分别贴紧一个安全区域部分设置在两个安全区域部分之间,空白部分位于两个车辙部分之间,空白部分的两侧分别与一个车辙部分贴紧设置;
车辙部分、安全区域部分和空白部分各自对应一种纹理和材质,在本实施例中,中间由空白填充的为空白部分,空白部分两边由条纹填充的为车辙部分,最外侧的由深色填充的为安全区域部分;在本实施例中,轨迹线模型呈现为半透明的效果;
轨迹线参数用于设置车辙部分、安全区域部分和空白部分的大小;
矩形参数限制形成的矩形区域为轨迹线模型所在的区域,类型标志用于在配置过程中指示矩形区域中当前配置的区域与车辙部分、安全区域部分和空白部分的关系;
S21、判断是否存在至少两组档位信息和方向信息,若不存在则说明还未存储两组档位信息和方向信息,无法进行对比,进入步骤S3,若存在则判断前两次档位信息和方向信息是否一致;
若两组档位信息和方向信息一致,则说明轨迹线未发生变化,不需要重新计算轨迹线坐标,可以直接渲染,进入步骤S5;
若两组档位信息和方向信息不一致,则说明轨迹线发生改变,需要重新计算轨迹线坐标,进入步骤S3;
S3、根据上一次记录的档位信息和方向信息生成轨迹线坐标;
轨迹线坐标由运动轨迹决定,运动轨迹包括前轮轨迹和后轮轨迹;
前轮轨迹的半径由以下数学公式定义:
式中,
Rf为前轮轴心运动轨迹的半径;
L为车辆的轴距;
θ为车辆的转向角度;
Rf1为在外侧的前轮的运动轨迹的半径;
Rf2为在内侧的前轮的运动轨迹的半径;
所述后轮轨迹的半径由以下数学公式定义:
式中,
Rb为后轮轴心运动轨迹的半径;
L为车辆的轴距;
θ为车辆的转向角度;
Rb1为在外侧的后轮的运动轨迹的半径;
Rb2为在内侧的后轮的运动轨迹的半径;
在本实施例中,在生成轨迹线坐标前将轨迹线模型的高度抬高;提升轨迹线模型的高度能够防止渲染过程中轨迹线由于深度冲突的原因被覆盖,在本实施例中,将轨迹线模型的高度抬高3厘米;
S31、判断轨迹线坐标的应用场景,根据应用场合判断,应用场景包括在汽车环视系统上应用的3D场景和在倒车影像系统上应用的倒车影像场景;
若轨迹线坐标的应用场景为3D场景则说明轨迹线坐标不需要进行变形处理,进入步骤S5;
若轨迹线坐标的应用场景为倒车影像场景则说明轨迹线坐标需要转换至图像坐标系中,进入步骤S4;
S4、根据相机参数对轨迹线坐标进行变形,具体包括以下步骤:
S401、获取步骤S3中的轨迹线坐标;
S402、根据步骤S1中的外参数将轨迹线坐标从世界坐标系转换到相机坐标系中;
S403、根据步骤S1中的内参数将轨迹线坐标从相机坐标系转换到图像坐标系中;
S5、调用OpenGL对轨迹线进行渲染;
S6、记录轨迹线对应车辆的档位信息和方向信息,进入步骤S21。
在本实施例中,步骤S1和S2只在程序初始阶段进行一次,后续的渲染过程不需要重复步骤S1和S2,只需要重复执行步骤S3~S6即可。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对所述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。