算法或发电机或示例道路车道/和网络

时间:2017-08-03 09:49:16

标签: algorithm dictionary polygon points

我想为赛车游戏制作道路,例如

(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点)的示例。手动生成每个乐队并顺利转弯是非常困难的。如果有任何生成器/示例/算法更简单吗?我希望有一组点形成一条道路(这些点依次连接,一个接一个)

2 个答案:

答案 0 :(得分:2)

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

曲面也有变化,例如: NURBS。看看这个opengl tutorial来渲染NURBS表面(当然这取决于你使用的是什么;如果它只是关于纯算法,那么框架等等,那么bezier曲线仍然有效)。

答案 1 :(得分:2)

使用插值参见

因此无论大小如何,每条直线“车道”都只有2分。最重要的是,您可以通过以下方式创建路径:

  1. 手动修改

    您可以使用鼠标轻松编辑:follow mouse并通过FIR滤镜(平均值)平滑点。

  2. 随机路径

    我会选择像图形一样的龟,你从一些位置和方向开始。添加点然后随机移动,前移的概率最大,转弯的概率较小。

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

    如果你想要一些看起来很逼真,那么创建随机地形高度贴图,如:

    然后在合理的高度选择随机开始并且跟随高度(因此道路将具有+/-相同的高度直到一些死角击中(山......)然后决定上升或下降直到“平坦”区域再次击中并再次跟随该高度。它类似于:

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

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