Graphics 如何将线动态投影到三维地形上?

Graphics 如何将线动态投影到三维地形上?,graphics,xna,xbox360,Graphics,Xna,Xbox360,我正在为Xbox360开发XNA游戏。游戏有3D地形,由链接图连接的静态对象集合。我想绘制连接对象的链接,作为投影到地形上的线。我也希望能够改变颜色等的链接作为球员移动他们的选择,虽然我不需要移动的链接。但是,我遇到了一些问题,无法正确有效地执行此操作 我的一些想法是: 1) 将四边形渲染到单独的渲染目标,并将纹理用作地形顶部的覆盖。我目前正在工作,只为相机当前可见的区域生成纹理,以最小化锯齿。然而,我仍然会遇到别名问题——线条看起来参差不齐,移动相机编辑时游戏会频繁出错:它总是出错,我只是在X

我正在为Xbox360开发XNA游戏。游戏有3D地形,由链接图连接的静态对象集合。我想绘制连接对象的链接,作为投影到地形上的线。我也希望能够改变颜色等的链接作为球员移动他们的选择,虽然我不需要移动的链接。但是,我遇到了一些问题,无法正确有效地执行此操作

我的一些想法是:

1) 将四边形渲染到单独的渲染目标,并将纹理用作地形顶部的覆盖。我目前正在工作,只为相机当前可见的区域生成纹理,以最小化锯齿。然而,我仍然会遇到别名问题——线条看起来参差不齐,移动相机编辑时游戏会频繁出错:它总是出错,我只是在Xbox上没有帧速率计数器,所以我只在东西移动时才注意到它

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

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

有没有什么神奇的方法让我没想到?如果操作正确,这些路径中是否有一条是最好的?

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

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

我不知道为什么只有在移动摄像机的时候游戏才会嘎嘎作响。请记住,你应该为叠加设置一个单独的摄像头——正交,并指向地形。

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

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


我不知道为什么只有在移动摄像机的时候游戏才会嘎嘎作响。记住,你应该为叠加设置一个单独的摄像头——正交,并指向地形。

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

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

我没有答案,但这让我想到了线性代数。也许你可以做一些矩阵变换?很抱歉,这可能没有帮助。与静态操作的方法相同,但更多的是在程序运行后进行操作。:-)我没有答案,但这让我想到了线性代数。也许你可以做一些矩阵变换?很抱歉,这可能没有帮助。与静态操作的方法相同,但更多的是在程序运行后进行操作。:-)jaggies非常糟糕,我不确定任何数量的过滤都会有帮助。你可能会感到惊讶。无论如何,你可以尝试的另一件事是在你画线条时模糊线条的边缘——让它们从边缘的透明变为中心的不透明。锯齿非常糟糕,以至于我不确定任何数量的过滤都会有帮助。你可能会感到惊讶。无论如何,你可以尝试的另一件事是在画线时模糊线的边缘——让它们从边缘处的透明渐变到中心处的不透明。