unity 动态生成类_Houdini城市道路模型生成

备注:第一篇文章被系统删了,很气,就更新了一张图,然后就被封号了,文章也被系统删了。所以现在只能新开文章,重新写了,先立个标题。

所以本篇算是一种重置版,加了一些最新进度和效果,上一篇文章是8月底写的,难免有些不完善。

本人菜鸟,一路摸爬滚打过来的,有兴趣的可以联系我,欢迎讨论相关话题。

先大致说下我的制作流程:

1、制作OSM

在第三方软件自定义编辑OSM数据,其实就是一些数据点,连线作为道路,包含一些自定义属性,如Lanes,车道数量,highway=primary,secondary,道路类型,oneway,是否为单向道等等,用于模型生成,也适合关卡设计的制作。

ac363a57f97cb0f46d6ab68e285ed40b.png
OSM原始数据

4e95f691f8b17fa4cc062116664a1d19.png
以现实为基础的参考数据

2.分析OSM

就是把制作好的OSM数据文件以OSM Import节点导入Houdini,在houdini里面的处理,就是先用python分析数据文件,把数据转化为Houdini geometry的点线面数据,包括一些自定义的其他数据。然后再以这些数据为基础生成道路模型。

此处也做了一些额外处理,比如后期生成道路需要的一些参数,可以在这里提前计算好,存入Geometry,另外对原始的OSM数据进行了修改,做了resample采样,再保存进OSM,这样可以使得数据的点分布显得更均匀一些,生成的模型也会更圆滑一些。还有就是这些数据还要转成json,放入Unity与程序那边的交通系统做衔接。

a0ae0b2c4b5c65fe43a79ae4624e394c.png
OSM数据处理前后的对比

c8e7525b906b1b8367cef8f554480430.png
resample处理前后 生成的模型对比图

在分析这一步骤里,还有一点比较重要的是,我计算了一个自定义的angleLength,为了给不同的十字路口适配合适的距离。这个距离,跟当前车道的数量,以及与相邻车道的夹角有关,通过计算得到的值,然后调节了resample之后的数据,把那些离十字路口太近,小于angleLength的点删除,并调整离交叉点最近的点 与交叉点的直线距离为angleLength+2,这一步花费了我挺多的时间的。

e1610d3ff50a5c2f2c259074e97fa472.png

3.生成道路模型

这里是核心内容,涉及到的东西也很多,前期做了主干道模型的生成,到目前为止已经初步做好了车道的划分,斑马线的绘制,马路牙子模型,今天刚刚做完建筑区域的随机分布,参考的是杨超的一篇文章的思路,具体实现是自己想的,以及朋友的帮助。

杨超:houdini路网​zhuanlan.zhihu.com
765efb44a965d5fc62932765d8fe4146.png

十字路口的核心算法参考的是荷兰人的一篇文章,在此基础上做了改动,

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值