【问题标题】:How do I project lines dynamically on to 3D terrain?如何将线条动态投影到 3D 地形上?
【发布时间】:2009-01-16 01:38:17
【问题描述】:

我正在 XNA 中为 Xbox 360 开发游戏。该游戏具有 3D 地形,其中包含一组静态对象,这些对象通过链接图连接。我想将连接对象的链接绘制为投影到地形上的线。我还希望能够在玩家移动他们的选择时更改链接的颜色等,尽管我不需要移动链接。但是,我遇到了使这项工作正确有效的问题。

我的一些想法是:

1) 将四边形渲染到单独的渲染目标,并将纹理用作地形顶部的叠加层。我目前有这个工作,只为相机当前可见的区域生成纹理以最小化锯齿。但是,我仍然遇到锯齿问题 - 线条看起来参差不齐,游戏经常移动相机时编辑:它一直在突突,我只是没有帧速率计数器在 Xbox 上,所以我只有在移动时才会注意到它。

2) 提前将线条烘焙成纹理。这可以提高性能,但会使混叠问题变得更糟。此外,它不允许我在没有太多修改的情况下动态更改线条的属性。

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

有没有我没想到的神奇方法?如果正确完成,这些路径之一是最好的吗?

【问题讨论】:

  • 我没有答案,但这让我想到了线性代数。也许你可以做一些矩阵变换?抱歉,可能没有帮助。
  • 与您静态执行的方式相同,但更频繁且在程序运行之后。 :-)

标签: graphics xna xbox360


【解决方案1】:

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

如果渲染叠加层的时间过长,请尝试降低其分辨率。如果没有抗锯齿过滤器,它只会让它变得更加锯齿,但如果有一个好的过滤器,它甚至可能看起来更好。

我不知道为什么游戏只会在移动相机时卡顿。请记住,您应该有一个单独的相机用于覆盖 - 正交,并指向地形。

【讨论】:

  • 锯齿非常糟糕,以至于我不确定任何数量的过滤都会有所帮助。
  • 您可能会感到惊讶。无论如何,您可以尝试的另一件事(类似的)是在绘制线条时模糊线条的边缘 - 让它们从边缘的透明淡化到中心的不透明。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    相关资源
    最近更新 更多