Houdini·公路工具(未完)

本次练习实现公路生成工具。通过创建曲线在曲线路径上生成道路。主要特性有:

✔️ 在自定义曲线路径上生成道路

✔️ 支持交叉路口生成

✔️ 支持马路牙子生成

✔️ 支持到沿路红绿灯、路灯、电线杆、广告牌等物件生成

✔️ 支持根据转弯弧度决定是否生成围栏

❌ 交叉路口的角度最好不要小于45°,夹角越小会导致polyexpand时生成多余大块primitive

❌ 暂不支持交叉路口贴图(只支持平铺贴图)

❌ 暂不支持多种路面宽度

Base

道路曲线由多个curve构成。

💠 交叉点

因为后续要根据曲线的交叉点进行交叉路口的处理,所以在这一步需要确定各个曲线的交叉点

首先对线组resample,增多point以减少后续fuse误差,同时平滑曲线。

然后对通过intersection analysis获取线组的交叉点。

再后需要在保留交叉点的前提下对整个线组进行resample。因为resample的插值对象是primitive,所以先用polypath将相连的单方向线段合并为一个prim,再使用resample,即可达成目的。

💠 添加相关属性

根据后续操作,我需要获得交叉点、交叉点相邻点等信息。使用attribute wranggle,通过遍历相邻点可以将这些点分组或为其添加属性。

处理后的曲线如下图:

交叉路口生成

单向路面生成

emmmm