Questions tagged «terrain»

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


5
巨大的程序产生的“荒野”世界
我敢肯定,大家都知道像《矮人要塞》这样的游戏-由程序产生的庞大荒野和土地。这样的东西,摘自这篇非常有用的文章。 但是,我想知道如何将其应用到更大的规模。我的世界的规模浮现在脑海(这不是地球表面大小的8倍吗?)。伪无限,我认为最好的术语是。 这篇文章讨论了分形佩林噪声。我不是专家,但是我有一个大概的主意(它是某种随机产生的噪声,是半相干的,因此不仅仅是随机像素值)。 我可以按大小定义X的X区域,添加一些区域加载类型的东西,并产生一点噪声来生成一个区域。但这将导致大量的岛屿。 在另一个极端,我认为我真的不能产生出巨大的珀林噪声表。我认为,那将是一个大岛。 我很确定Perlin的噪音或某种噪音会以某种方式解决。我的意思是,该地图看起来非常好看。而且您可以用瓷砖替换ascii,并获得非常漂亮的外观。

6
如何优化Minecraft风格的体素世界?
我发现即使使用四核和多肉的显卡,《我的世界》奇妙的大世界也极难导航。 我认为Minecraft的运行缓慢来自: Java,因为空间分区和内存管理在本机C ++中更快。 弱世界分区。 两种假设我都可能错了。但是,这让我开始思考管理大型体素世界的最佳方法。由于这是一个真实的3D世界,其中块可以在世界的任何部分存在,它基本上是一个大的3D阵列[x][y][z],其中在世界的每个块具有类型(即BlockType.Empty = 0,BlockType.Dirt = 1等) 我认为要使这种世界表现良好,您需要: 使用某种树(oct / kd / bsp)将所有多维数据集拆分出来;似乎oct / kd会是更好的选择,因为您可以仅在每个多维数据集级别而不是每个三角形级别进行分区。 使用某种算法来确定当前可以看到哪些块,因为距离用户最近的块可能会混淆后面的块,从而使其变得毫无意义。 保持块对象本身轻巧,因此可以快速将其从树中添加和删除。 我想对此没有正确的答案,但是我很想看到人们对此问题的看法。 在大型体素世界中,您将如何提高性能?

3
程序生成的地形中的降雨+河流创建算法
最近,我对程序化地形可以完成的事情着迷,并开始尝试一些构建世界的尝试。我希望能够通过将各种地图网格化而创建的生物群系来制作像矮人要塞这样的世界。 因此第一步已经完成。使用菱形平方算法,我创建了一些不错的hieghtmaps。下一步是我要添加一些水特征,并根据降雨实际生成它们。我已经读过几种不同的方法,例如从地图的最高点开始,然后“逐步”下降到最低的相邻点,在其下降到海平面时进行合并/腐蚀。 是否有任何记录在案的算法,还是袖手旁观? 会喜欢任何建议/想法。

6
程序地在岛上生成区域
我目前有一些看起来像这样的岛屿: 我想按程序将其细分为多个区域,如下所示: 我要寻找什么算法?您对下图所示的如何创建连贯区域有建议吗?感谢您的帮助。

2
如何减少渲染树的性能影响?
我正在制作一款低聚风格的游戏。我的地形上有一些水,我想要很多树木。目前,我已经放置了10,000棵树。每棵树包含不超过200个三角形,因此它们不太费力。 主要问题是有湖泊,而且湖泊很大。您实际上看不到湖另一侧的任何树木,这看起来真的很糟糕,尤其是当您走到那里而突然出现树木时。 要解决此问题,我必须增加树的距离,以便您可以在湖的另一侧看到相当多的树,但这会降低性能至40-50fps,并且游戏中几乎没有其他内容。我正在使用GTX 1080,如果可以的话。 我怎样做才能使游戏在更多树木下运行得更快?


4
构建3D地形编辑器时该从哪里开始?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 我正在寻找构建(作为开始)一个简单的工具,该工具可以升高,降低,平滑和纹理化地形。 那么,要做这样的地形编辑器我需要经历什么? 也许有关于该主题的宝贵资源可用? 是的,忘记了,我对3D地形编辑器感兴趣。

6
如何使用3d perlin噪声函数生成地形?
我可以使用2d perlin杂讯功能来产生高度值,但我不明白为什么要使用3d perlin杂讯功能。在Notch的博客中,http ://notch.tumblr.com/post/3746989361/terrain-generation-part-1,他提到在我的世界上使用3d perlin噪声函数生成地形。有谁知道该怎么做以及为什么会有用吗?如果传递x,y和z值不表示您已经具有高度?


4
应该使用哪种数据结构来表示体素地形?
根据维基百科有关体素的页面,“根据体素相对于其他体素的位置(即,其在构成单个体积图像的数据结构中的位置)来推断体素的位置。” 一个人应该如何实现这样的数据结构?我当时正在考虑使用八叉树,但我想知道是否还有其他我从未听说过的东西。

2
如何生成类似于《帝国时代II》随机地图的随机地图?
我喜欢《帝国时代II》生成随机地图的方式(种类繁多,生物群落过渡不错,地图感觉随机而不混乱),但仍在努力复制样式。我尝试使用例如Perlin噪声,但是所有结果要么太均匀,要么不一样,Perlin值->地形启发法过于敏感和脆弱,无法创建各种世界类型。 我记得AoE2地图类型“未知”广告了“ 100,000张可能的地图”,暗示了一些种子编号的用法,但是我不确定如何使用种子编号来产生我所看到的品种。 我可以使用什么算法和启发式方法来生成类似于AoE2随机图的随机图? 编辑更具体: 进一步思考我的问题,并研究我对AoE2随机地图引擎的喜欢,我认为我最大的问题是管理地图上水和植物生命的分布。我现在看到我也将其与“有意义的生物组转换”联系在一起,但这是一个不同的问题(尽管我希望继续使用Perlin噪声将使其难以解决)。 我添加了几张AoE2随机映射,突出显示了我对它们的映射引擎的喜好,但我自己的努力未能重现。所有屏幕截图均取自随机地图类型“自定义”->“未知”。我没有指示游戏使用特定地理位置,例如群岛。 以下是来自我自己的地图引擎的图像。每个像素对应一个AoE2地图图块。 我的项目的一个难题是我希望地图比AoE2地图大很多倍。因此,无论我使用哪种引擎,都必须能够在每个地图中创建完整的生物群系,而不能像AoE2那样在每个地图中创建一组狭窄的生物群系。 帝国时代II地图 这是一个具有内陆湖泊和类似河流的事物的示例。我喜欢地图上包含大量散布的水的方式,但是水仍然有些集中-有大量土地可用于建立帝国。您无需花费整个游戏就可以在水上规划城市。 这是一个类似的示例,其中游戏足够聪明,可以将岛屿与可穿越的沼泽相连。我无法想象基于噪声的算法将如何在那以及只有那些地方造成沼泽。另外,请注意游戏是如何创造土地的,以便每个玩家都拥有自己的私人大片土地。它并没有创造出一片随机的土地,然后就每位玩家开始时哪怕是最糟糕的猜测。 我喜欢这张地图也大量使用水,但其中不包括许多内陆湖泊。将其与第一个图像进行对比。我喜欢AoE2使用相同的构建块创建完全不同的地理位置的方式。我尝试使用Perlin噪音的尝试在这里失败了-我要么获得了广阔的海洋,使陆地或10,000个湖泊的土地相形见war。我还发现很难同时到达岛屿和相连的大洲(想想北美/南美)。 将此图像与其上方的图像进行对比。他们表明地图的干旱度不取决于水位。第一张图片的地图几乎没有水,但包含森林和草丛。第二张图像的水量适中,却是沙漠。我喜欢那是可能的(想想您的世界既有新墨西哥,又有撒哈拉和哥斯达黎加)。 我自己的地图 我在很多地方都读到,构建地图的一种好方法是对Perlin噪声的多个级别进行分层,每个级别代表不同的数据维度。按照流行的建议,我选择了海拔和湿度,并从此处的Whittaker表中选择了地形类型。 我拍了两个珀林图,通过一个简单的量化每个值成整数if perlin_val < x { i=some_int } else if perlin_val < y...,然后将(海拔,湿度)整数对映射到地形类型表(例如[1,0]->热带沙漠,[1,1 ]->草原)。该系统中包括海洋-海拔= 0定义的海洋。 有很好的变化,并且在许多方面感觉都像真实世界,但是存在一些问题: 首先,海洋深度没有规律。您可能希望靠近岸边的浅水区和更远的深水区,没有哪个韵律或原因 第二,所有的水都集中在海洋中。没有湖泊或河流,因为Perlin噪声不会在大洲中部突然下降到较低的值。 在每个生物群落的数量之间取得平衡非常非常困难。我将此归因于: Perlin噪声遵循正态分布,因此很难估计如何调整每个尺寸映射的概率 试图平衡多个维度很困难-也许我想要更多(2,3),所以我提高了获得(n,3)的几率。好吧,现在我有太多(3,3)了,一切看起来都错了。 当我将噪声放大到足够接近以获取平滑数据时,我没有得到非常完整的Perlin值样本。因此,我需要调整我面前地图的分布,重新加载新的随机地图,并获得截然不同的结果。 我试图通过使用第三组Perlin值制作水来解决河流/湖泊问题。根据水/土地的二元决策,然后将以上所有内容应用于土地。这使控制水的分布变得非常容易(仍然不完美,但是更好),但是引入了一个问题,那就是存在许多没有意义的生物群落过渡。例如,茂密的草原中莫名其妙的沙漠,沙滩上的雪等。由于上述原因,仍然很难控制陆地生物群落的比例。 考虑到上述问题,我尝试了一种更简单的算法,该算法仅将Perlin噪声映射到一个维度。我现在有一系列的地形类型,从0 =深海-> 1 =浅海-> 2 =沙滩...-> N =雪。虽然这产生了岛屿和大洲,并且使平衡每个地形的比例变得容易得多,但地形类型却过于聚集。每个陆地块看起来都像一张海拔图,通常没有分散在其表面的地形类型。每个陆地块都具有大致相同的特征,始终具有相同的顺序,并且始终具有相同的环形形状。

1
揭开“大量细节的神秘面纱”
就在最近,试图在Unity中实现分块的细节系统。我将生成四个网格平面,每个平面都有一个高度图,但我想目前这并不是太重要。在阅读完有关此技术的内容后,我有很多疑问,我希望这不是一口气就能提出的,但是我非常感谢有人帮助我理解这种技术。 1:我无法理解在块状LOD管道的哪一点网格被分割成块。是在初始网格生成过程中执行此操作,还是执行此操作的单独算法? 2:我知道四叉树数据结构用于存储块状LOD数据,我想我有点遗漏了点,但是四叉树是否为每个细分级别存储了顶点和三角形数据? 3a:通常如何计算相机距离。在阅读有关四叉树的知识时,经常会提到与Axis对齐的边界框。在这种情况下,每个块都会有一个碰撞边界框来检测相机或播放器是否在附近?还是有更好的方法呢?(也许是射线广播?) 3b:大块自己计算相机距离吗? 4:每个块都具有相同的“分辨率”。例如,在顶层,网格将为32x32,每个细分节点也将为32x32。下面的例子:

2
2d程序宇宙生成
我想创建一个平坦的宇宙,首先整个宇宙是空白的。 那将由视差滚动星云背景图像表示。 我要做的是将行星表示为宇宙中的圆盘状物体。它们可以是各种尺寸。 圆盘的内部将由一个陆地组成,然后外部将是一个水体,其后是空气。 程序上创建这些瓷砖的最佳方法是什么,例如空气将由各种气体以及各种矿产和资源的土地组成。 我的第一个想法是创建纹理图像,然后从这些纹理中划出圆圈,但是问题是这些纹理必须水平和垂直地包裹。是否有完整的程序方式来做到这一点?

1
基于图块的2D Platformer的地形生成
我目前在某种程度上正在开发类似于Terraria的基于图块的2D平台游戏,尽管我在地形生成方面遇到了困难。我完成了一些基础工作,尽管它们没有任何有用的作用。 我尝试了几种不同的技术,例如Perlin Noise,并了解了其他一些技术,例如Midpoint Displacement,尽管我不确定哪种方法最好,或者无法结合使用不同的技术来生成不同的区域。(例如中点位移表示地形的一般形状,Perlin Noise表示洞穴的形状。) 我已经找到了一个很好的解释,说明如何使用“ 意外噪声库”将其分层,尽管它是C ++语言,而且我不了解足够的C ++语言将其编译成可从C#中使用的DLL。尽管我不知道如何将两个效果(通用基的渐变,然后是详细的分形)合并在一起,但我尝试用C#复制它。 目前,我正在使用等离子分形,结果差异很大。例如,它可以生成几乎没有任何表面的地形,也可以生成根本没有任何表面的地形。 好的地图的示例会有所改进,但会更好。(黑色为实心,白色为空): 还有一个可怕的地图的例子。(黑色为实心,白色为空): 基本上,我要问的是,什么是生成地形的更好方法,或者强迫它确保有合理的表面积,并且尽快生成。或者,或者,如何使用C#实现与“意外噪声库”相同的结果。 任何例子将不胜感激。

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.