算法或生成器或示例道路车道/和网络

algorithms or generators or examples road lanes/ and networks

我想为赛车游戏生成道路,例如

(x = 0, y = 0), (x = 0, y = 5), (x = 0, y = 10) ... (x = 0, y = 100) 它的垂直车道。

(x = 0, y = 0), (x = 5, y = 0), (x = 10, y = 0)它的水平车道。

我需要带转弯和带状的大车道示例(例如 500 点)。手动生成每个波段和道路的平滑转弯非常困难。如果有generator/examples/algorithm做起来更简单?我想要一组点组成一条路(点是依次连接的,一个接一个)

您的积分定义可以保持相对简短。如果这只是平滑渲染的问题,那么您可以使用 bezier surface 之类的东西从点定义中渲染平滑曲面。

曲面也有变化,例如NURBS. Check out this opengl tutorial 渲染 NURBS 曲面(当然这取决于你使用什么;哪个框架等。如果它只是关于纯算法,那么贝塞尔曲线仍然有效)。

为此使用插值,请参阅

所以无论大小,每条直线 "lane" 都只是 2 分。最重要的是,您可以通过以下方式创建路径:

  1. 手动编辑

    您可以使用鼠标轻松编辑,如下所示: 并通过 FIR 滤波器(平均)平滑点。

  2. 随机路径

    我会选择从某个位置和方向开始的类似乌龟的图形。加点然后随机移动,向前移动的概率最大,转弯的概率较小。

    或者另一种选择是从预设的多边形路径开始并向其添加随机噪声......这对于像路径这样的循环更好。见:

    • How to generate random vertices to form a convex polygon in c++?

    如果你想要一些东西看起来逼真然后创建随机地形高度图,如:

    然后选择在某个合理的高度随机开始并跟随高度(因此道路将具有 +/- 相同的高度,直到遇到死胡同(山...)然后决定向上或向下直到 "flat" zone 再次命中并再次跟随该高度。它类似于:

    地形方法的好处是可以将其用作游戏的网格。

    最后你可以将这些方法混合在一起......