当前位置: 首页 > news >正文

Unity场景内画车道线(根据五阶曲线系数)

        之前做过使用Dreamteck Splines插件构建车道线之前需求是给定车道线的点位,根据点位来进行构建。

        由于AI识别出来的点位不线性,画出来的车道线经常是歪七扭八,所以使用五阶曲线系数进行构建。

        使用在线图形计算器进行测试构建,公式为:

x=a+b*y+c*y^2-d*y^3+e*y^4

        我使用的测试系数为:

        a=1,b=0.01,c=0.005,d=0.0001,e=0

        代入后公式即为:

x=1+0.01y+0.005y^2-0.0001y^3+0y^4

        这里是输入y轴坐标点,返回结果为x坐标,想知道多远的点位坐标,将位置信息代入y即可。

构建出来的图形如下图所示,

        在unity中,将公式转为代码,输入五阶曲线系数数组,与y点的坐标,返回值为该坐标的x点坐标。即为:

 public float GetSplineX(float[] fit_params, float y_point){      return fit_params[0] + (fit_params[1] * y_point) + (fit_params[2] * (float)Math.Pow(y_point, 2.0)) - (fit_params[3] * (float)Math.Pow(y_point, 3.0)) + (fit_params[4] * (float)Math.Pow(y_point, 4.0));}

        初始化时构建车道线,创建Spline的物体

  private void CreatSplineMesh(){Spline_Render_Objs = new GameObject("Spline");Spline_Render_Objs.transform.localPosition = Vector3.zero;Spline_Render_Objs.transform.SetParent(base.transform);splineComputer = Spline_Render_Objs.AddComponent<SplineComputer>();splineComputer.type = Spline.Type.BSpline;//使用插件自带的Bspline效果划线,也可以选择贝塞尔曲线splineComputer.sampleRate = 5;splineComputer.sampleMode = SplineComputer.SampleMode.Uniform;splineComputer.space = SplineComputer.Space.Local;Spline_Render_Objs.AddComponent<MeshRenderer>().material = DottedLine_mat;//指定车道线材质SplineRenderer splineRenderer = Spline_Render_Objs.AddComponent<SplineRenderer>();splineRenderer.spline = splineComputer;splineRenderer.uvMode = MeshGenerator.UVMode.UniformClip;splineRenderer.uvScale = new Vector2(1f, 0.2f);splineComputer.RebuildImmediate();}

        在进行点位创建和赋值

for (int i = 0; i < y_distance; i++)//y_distance为具体想显示的长度
{x_Pos = GetSplineX(lane_info.lane_fit_params_left_5rd, i);SplinePoint m_point = new SplinePoint();m_point.position = pos;m_point.size = 0.5f;m_point.color = Color.white;splineComputer.SetPoint(_idx, m_point);
}

        构建出来的车道线如下图所示,这里只选择了0-39米的点位。

        目前车道线的长短可以根据Y轴的距离进行调整。

        但是若是遇到虚线+实线+虚线的车道线,该方法还有待升级(我也没想好咋整)


http://www.mrgr.cn/news/35682.html

相关文章:

  • 第Y1周:调用官方权重进行检测
  • Web3技术解析:区块链与智能合约的角色
  • JAVA开源项目 体育馆管理系统 计算机毕业设计
  • 深入解析 helpTransfer 方法:多线程协作中的哈希表扩容
  • java启动参数JAVA OPT不生效问题
  • Ollama在Windows安装,使用,简单调用API
  • 鸿蒙之setTimeout问题
  • 高级算法LLM大语言模型算法特训 带你转型AI大语言模型算法工程师
  • 大模型分布式训练并行技术(二)-数据并行
  • 最大似然估计,存在即合理
  • Vue+Tui-image-editor实现图片编辑(涂鸦,裁剪,标注,旋转,滤镜)
  • pdf.js滚动翻页的例子
  • 系统架构设计师教程 第9章 9.1 软件可靠性基本概念 笔记
  • 瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法
  • 详解BIOS
  • LeetCode题练习与总结:删除链表中的节点--237
  • 基于Jeecgboot3.6.3的flowable流程视图增加一个节点显示方式
  • 算法记录——树
  • python的while嵌套循环练习
  • 01DSP学习-了解DSP外设-以逆变器控制为例