代码之家  ›  专栏  ›  技术社区  ›  Neil Williams

如何在三维地形上动态投影线条?

  •  2
  • Neil Williams  · 技术社区  · 17 年前

    我正在为Xbox 360开发XNA游戏。这个游戏有一个三维地形,由一个链接图连接的静态对象集合。我想画连接物体的链接,作为投影到地形上的线。我也希望能够改变颜色等链接的球员移动他们的选择周围,虽然我不需要链接移动。但是,我遇到了一些问题,使这项工作正确有效。

    我的一些想法是:

    1)将四边形渲染到单独的渲染目标,并使用纹理作为地形顶部的覆盖。我目前正在进行这种工作,只为相机当前可见的区域生成纹理,以最小化混叠。但是,我仍然遇到了混叠问题——线条看起来参差不齐,而且经常玩游戏。 移动相机时 编辑:它总是发出声音,我只是在Xbox上没有帧速率计数器,所以我只在移动时才注意到。

    2)提前将线条烘焙成纹理。这可以提高性能,但会使别名问题变得更糟。而且,它不允许我动态地改变线条的属性,而不需要太多的咀嚼。

    3)通过在地形上细分线四边形,生成与地形形状匹配的几何图形。这个选项似乎有帮助,但我不确定是否应该花时间去尝试它,如果有一个更简单的方法。

    有什么神奇的方法可以做到这一点,我没有想到?正确完成这些路径之一是最好的吗?

    2 回复  |  直到 17 年前
        1
  •  1
  •   comingstorm    17 年前

    您的1)是一个相当好的解决方案。您可以通过过滤来减少锯齿度——首先,在使用覆盖时,请确保使用双线性采样。然后,在绘制覆盖图之后但在使用之前尝试模糊它;如果选择适当的过滤器,它将删除混叠。

    如果渲染覆盖层花费的时间太长,请尝试降低其分辨率。如果没有抗锯齿滤镜,这只会使它变得更粗糙,但是如果有一个好的滤镜,它甚至可能看起来更好。

    我不知道为什么游戏只有在移动相机时才会发出嘎嘎声。记住,您应该有一个单独的覆盖摄像头——正交,并指向地形。

        2
  •  -2
  •   Shalmanese    17 年前

    XNA有暗影库吗?如果是这样,你可以假装线条是阴影。