【问题标题】:algorithms or generators or examples road lanes/ and networks算法或生成器或示例道路车道/和网络
【发布时间】:2018-01-10 20:23:04
【问题描述】:

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

(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 分)。手动生成每个波段和平滑的道路转弯非常困难。如果有任何生成器/示例/算法让它更简单?我想要一组点形成一条道路(点依次连接,一个接一个)

【问题讨论】:

  • 您是否需要担心道路相互交叉?即玩家是否只从驾驶角度而不是地图查看道路?如果他们没有看到地图,他们很可能不会注意到道路是否真的环回并与自身相交,只要您只在他们当前位置的前后渲染一定的距离
  • 现在我需要设置车道。每条车道 - 点数据集

标签: algorithm dictionary polygon points


【解决方案1】:

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

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

【讨论】:

  • 现在可以使用它了吗?我不需要太多的准确性,现在我来测试我的赛车行为并手动生成它非常糟糕
  • 从可视化形式(例如手动绘制一条车道)从可视化线条到二维点格式转换会很好,真的不是为此服务吗?
  • @Naduxa 你需要在这里更具体。它不是工具或工具的真正主题,因为您的问题是关于算法的。
【解决方案2】:

为此使用插值,请参阅

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

  1. 手动编辑

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

  2. 随机路径

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

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

    如果您想要看起来逼真的东西,请创建随机地形高度图,例如:

    然后选择从某个合理的高度随机开始,然后跟随高度(所以道路将具有 +/- 相同的高度,直到遇到死胡同(山......)然后决定向上或向下直到“平坦”区域再次击中并再次跟随该海拔。类似于此:

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

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

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    相关资源
    最近更新 更多