Questions tagged «terrain»

用于描述位置的自然地理。这可以包括要素的高程,坡度和方向。

1
流动的GPU计算水
我具有土木工程背景,并定期进行水力学和水文分析。他们为这类事情出售学位,但这实际上不是火箭科学。我最近想到了在GPU上为地形实现整个水文和水力过程。我是最近才学习计算着色器的,所以我目前在设计方面比设计并行GPU工作流程要好得多。 您可以使用以下公式计算降雨事件期间产生的水量: Q (CF/S) = c * I (in/hr) * A (acres) 我很难超越计算甚至第一个区域的“面积”。 当前实施概述: 地形是1单位间隔的规则顶点网格 高度图为每个顶点包含一个R32高度值 目前,我只允许沿4个基本方向流动(无对角线) 我正在使用Texture2D [int]作为已经分析过的顶点的模具 当前算法: 当地形工具处于活动状态且现在不处于活动状态时... 清除“模具”。 扫描整个地形以获取最低海拔。 那一点是CS_Flood的初始输入。 CS_Flood使X轴通过。 每个输入顶点都在X-和X +方向上投影最多2048次。 找到具有OOB坐标的相邻顶点将指示该方向上的地形边缘。CurrentPoint附加到BoundaryPoints缓冲区,并且该方向的投影循环终止。这很容易,并且每次都很好用。 高度大于或等于当前顶点高度的相邻顶点将在模具中标记,并添加到NextPass缓冲区中。 高度小于当前顶点高度的相邻顶点表示山脊的顶点,并终止投影环。将来的洪水填充迭代可能会在山脊的底部,“后”侧向上流动,并再次检测到同一山脊。 为此,任何被多次检测到的峰/谷点都不会成为边界点。 仅将一次检测到的任何峰/岭点附加到BoundaryPoints,并终止该方向上的投影循环。 CS_Flood使用X轴通过生成的点作为输入,以相同的代码进行Z轴通过。 现在,CS_Flood继续在两个方向上无限期地交替。最终,每当CS_Flood完成并且NextPass缓冲区为空时,我将终止整个循环。 理想情况下,在那一点上,边界点将包含在自然排水沟上出现的每个顶点。降落在边界内的水滴最终流到相同的低点。水滴降落到边界上,导致“其他地方”。 然后: 在不清除模具的情况下,重新扫描地形以查找最低的非模具顶点。 迭代CS_Flood。 重复直到模具装满(或类似的东西)。 这些颜色很难感知3D。这显示了在整体高程处的轮廓线:( 一个孔,在边缘附近被一个护堤包围) 大约有10种独特的方法可以使顶点流失。为每个颜色赋予独特的颜色,如下所示:( 可见的圆形工具标记,“山脊”很好地显示) 这将CS_Flood生成的每个点(边界或其他)显示为POINTLIST: 该算法几乎总是 有效。有时,它甚至可以正常工作。其他时候,算法显然包含在正确的形状中,但是将继续无限期地输出点。如第三个屏幕截图所示,有时会感到困惑。我必须忽略另一种情况/因素。如果能找到我的疏忽或提出更简单和/或更优雅的方法来解决问题的建议,我将不胜感激。 MissingPoint!可以通过将算法检测到的每个新的BoundaryPoint添加到NextPass缓冲区中来提供帮助。在下一次传递期间,该创可贴所生成的99%的点将浪费少量的GPU时间,以确定它们无法走到无处可去。在第一遍中,发送LowestPoint以及其他NextPass点也将处理此特定情况。 我知道这是合理的,并且如果有足够的时间,我将能够为它做足够的创可贴以完成我想要的事情。如果可能的话,我想以一种更好,更聪明,更快的方式进行操作,但是我没有足够的经验来更好地了解。

2
高度图,体素,多边形(几何)地形
关于高度图,体素和多边形(几何)地形: 这三个之间的主要区别是什么? 您可以使用Voxels形成“平滑”地形吗,我的意思是,例如,您可以使用Voxels获得平滑的山峰,还是Voxels仅限于立方体? 在性能方面,如果世界为2000x2000单位,那么Heightmap地形,Voxel地形或基于Polygon的几何地形会更快些?(假定针对每种可能性进行渲染时都获得了“合理的”性能提升/优化) 还有更多用于地形创建的技术吗? 代表每种类型的好标题吗? PS基于多边形的地形应充分训练,没有方形的东西。

2
为什么树木在背景中发光?
目前,我正在黑暗中创建森林场景,而树木在遥远的地方闪闪发光,但是当我靠近时,它们就很好了。我已将着色器设置为“自然/树软遮挡[树皮/叶子]”,但它们仍在很远的地方渲染出奇特效果,但在关闭时效果很好。 我尝试将树木放置在名为“环境光遮挡”的文件夹中,就像这里所说的那样,但是没有运气。雾也被关闭。提前致谢。 更新 当我使用“渲染路径”相机查看树木时,它们显示为红色,而其他所有颜色均为绿色。 更新2 我尝试重新安装从中下载这些软件包的程序包,但是仍然没有运气。 更新3 我已经手动添加了一些树,它们可以正常工作,但是通过在地形上绘画来添加它们时出现了问题。 最后更新 我尝试构建游戏,以查看这是否对.exe有影响,但没有。因此,当我调试它时,我只需要忽略它,因为它可以在构建中正常工作。感谢所有的帮助,这似乎是一个统一的错误。构建图片:
14 unity  shaders  terrain  tree 

3
中点位移算法
在花了几个小时试图找出问题之后,这个问题主要是出于绝望。 如果您将视线移到上面的图片,您应该会看到我的中点位移算法算法正在(某种程度上)成功运行;产生一些连贯的噪声模式。 但是,它在图像上留下了黑色的虚线网格,我不知道为什么。我可以预见这是数学上的问题,但是我看不到它。也没有在任何在线资源中指出这是一个可能的问题;因此,对解决此错误的任何帮助将不胜感激。 unsigned char** mdp(unsigned char** base, unsigned base_n, unsigned char r) { size_t n = (2 * base_n) - 1; unsigned char** map = new unsigned char*[n]; for (unsigned i = 0; i < n; ++i) map[i] = new unsigned char[n]; // Resize // 1 0 1 // …

1
如何在体素地形中实现应力/应变力学?
我正在开发一个类似于Minecraft的世界,该世界将地形划分为体素。但是,我也希望景观的不稳定配置可以预期地崩溃。例如,悬垂太重的物体会在“高应力”体素处断裂并折断,而具有不对称腐蚀基础的柱体也会破裂。我正在考虑向地形中的每个体素添加一个“应力矢量”字段,并执行以下操作(伪代码): foreach voxel in terrain foreach neighbor in voxel.neighbor_voxels() if magnitude(voxel.stress - neighbor.stress) > stressThreshold detach_voxels(voxel, neighbor) 但是问题是我不知道如何计算这些单独的压力。是否存在某种专门用于体素离散化的基于FEA的算法,可以用来计算每个体素的压力?还是我将这一切都弄错了,还有其他方法可以做到这一点?

1
平滑体素地形
作为个人项目,我正在尝试制作一个地形生成器,以创建看起来像《城堡物语》平滑地形的地形。 如果您以前没有看过,请在这里: 如您所见,它是块和“平滑”块的组合。 我试图模仿这种外观的方法是为每个表面块提供一个迷你高度图。通常这是可行的,但存在一些问题,产生如下所示的地形: 问题是每个块都是1x1x1,但是有时特定位置的高度为负或>1。在这种情况下,我将其裁剪并将高度设置为0或1。 为了更好地说明我的意思,下面是一个图: 为了生成高度,我基本上做了: genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = Block.Grass; b.HasHeightMap = true; // generate heightmap for(int ix = 0; ix …

1
如何在地形中表示悬崖面?
我正在尝试找出在游戏中以编程方式表示地形的最佳方法。我一直在考虑使用高度图(或等距顶点的网格)来表示地形的表面,并使用Splatmap来实现平滑的纹理化。这对于完全平滑的地形是可行的,但是问题是如何表示悬崖和陡峭的悬崖面。 悬崖本身的呈现方式必须与其余地形不同。例如,他们将需要在悬崖的前面看到不同的(未拉伸的)纹理,但是如果我为此使用splatmap,就不可能在悬崖的纹理上拥有足够多的悬崖面与地面完全分开。 图片说了一千个字,所以... 有什么一般的方法可以存储和/或渲染悬崖以及其他地形高度差异?

2
四叉树地形分裂-我不明白
我读过的大多数论文都以某种形式或其他形式在四叉树上建立了地形。请参阅第38页: http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation?from=ss_embed 第一点与后两者没有矛盾吗?如何在每片叶子上有一个固定的33x33顶点网格,又如何在四叉树中讨论自适应除法?术语令人困惑,对此我将不胜感激! 这是我的假设: 每次四叉树更改都会重新放置补丁,不是吗? 从地形边界开始的四叉树。 迭代到观察者位置。 受限版本(邻居之间的等级差异不超过1) 视锥剔除。 将地形补丁放置在每个生成的叶子中,其中比例不同,但分辨率始终为33x33。

2
基于高度图的道路地形
在基于高度图的地形上实现细节功能(如道路)的最佳方法是什么? 更新:在图像中很难看到它,但是道路从采石场的顶部向下延伸到底部。

3
如何生成类似焦土的地形?
我是一名网络开发人员,我渴望开始编写自己的游戏。 为了熟悉起见,我canvas现在选择了JavaScript和element。 我想生成一些像焦土中的地形。 我的第一次尝试使我意识到,我不能只是随机分配y值。高峰和低谷必须有一定的理智。 我已经用Google搜索了一下,但是我找不到足够简单的东西或者使用了错误的关键字。 能否请您告诉我示例中将使用哪种算法生成某些东西,同时牢记我对游戏编程是完全陌生的(因为无论如何,2003年还是使用Visual Basic制作Breakout)?

2
用Perlin蠕虫产生洞穴
我目前正在尝试使用3D Simplex Noise生成类似于Minecraft的体素地形,并且还希望实现洞穴。 我在此线程中找到了Perlin Worms的方法,该方法产生了非常好的结果。但是,我不知道如何逐块生成它。这是否可能,或者有其他替代方法可以逐块地产生类似洞穴的蠕虫吗? 编辑:这是我不知道如何解决的问题。 编辑2:这是将2D脊状多重分形噪声与“单纯形噪声”高度图组合而成的结果。仍然需要一些调整,但这几乎是我想要的结果。感谢Byte56。

2
菱形方形地形生成问题
根据本文,我已经实现了菱形平方算法:http : //www.lighthouse3d.com/opengl/terrain/index.php?mpd2 问题是我在地图上到处都是陡峭的悬崖。递归地细分地形时,它发生在边缘: 来源如下: void DiamondSquare(unsigned x1,unsigned y1,unsigned x2,unsigned y2,float range) { int c1 = (int)x2 - (int)x1; int c2 = (int)y2 - (int)y1; unsigned hx = (x2 - x1)/2; unsigned hy = (y2 - y1)/2; if((c1 <= 1) || (c2 <= 1)) return; // Diamond stage float a …

1
目前用于渲染可变形景观的一些技术是什么?
可用于有效渲染基于3D高度图的可变形景观的当前技术有哪些? 例如,在不可变形的景观问题中,ROAM曾经是通往这些景观的方法,但是随着GPU的发展,它逐渐失去了对较新的geomipmapping / clipmaps的青睐(后者不像CPU那样受限制;但是仍然有足够的优势赢得最新的GPU)。 在可变形景观渲染方面是否有任何进步?不仅在渲染方面,而且在变形操作期间也具有吞吐量。 尽管我本人的目标是SM3.0 / DirectX 9.0c,但请不要仅仅局限于此。

1
如何有效地渲染大型地形网格?
最近,我一直在思考如何在游戏中生成地形的最佳方法。在另一个项目中,我通常使用高度图,因此所有核心工作都基于所使用的引擎,但是现在无法完成,因为地形具有数百万个必须精确绘制的特定多边形。而且,其中许多不能从Y向量进行解析(因为下面隐藏了多边形),也就是说,高度图在这里没有用。在这种情况下,我必须使用COLLADA对象。 有人告诉我要在Blender之类的软件中手动划分模型,但是不幸的是,这也是不可能的,因为这些地形是在另一个软件中成块创建的,然后加载到游戏中(这就是想法)。因此,每次必须手动对其进行切片将是一项巨大的工作。 因此,自从一周以来,我一直在研究如何解决此问题并以程序方式将此网格,地形(对应于相机平​​截头体)加载,以尽可能地节省性能。我遇到了许多有关过程网格生成的文档,我认为可以通过将网格映射到八叉树来解决我的问题。这是一项巨大的工作,至少对我来说是如此,这就是为什么我在这里,因为我不想冒险走错误的道路,而无需经验丰富的人来信。 简而言之,我有数百万个顶点和索引共同构成了地形,但是出于明显的原因,我无法同时绘制它们。它需要某种程序。将大型网格物体视为地形的最佳方法是什么?有没有关于这本书的具体书?有没有最佳的实施方法? 很抱歉出现任何错误,我是这个领域的新手。

2
有哪些方法可以对地形进行纹理映射?
我正在与XNA一起开发3D游戏,并且正在努力营造一个适当而良好的环境。实际上,我遵循了一个教程来根据高度图创建地形。要对其进行纹理处理,我只需在其上应用草纹理并将其平铺多次。 但是我想要做的是具有真实逼真的纹理,而且还可以自动生成它(例如,如果我想使用Perlin噪声生成地形然后对其进行纹理化)。 我已经学习了多重纹理,如何为不同的纹理加载具有不同颜色的地图文件,但是我认为这并不是真正有效的方法,例如,对于悬崖或非常陡峭的区域,由于它是从地面观看的,因此会严重地平铺纹理最佳。(此外,我不知道该如何绘制道路或泥泞道路。) 我正在寻找一种有效的解决方案,以对过程生成的地形进行逼真的纹理映射。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.