问题标签 [terrain]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1467 浏览

storage - 游戏地形数据库模型

我正在为网络开发游戏。该游戏的地图将至少为 2000 公里乘以 2000 公里。我希望能够以某种粒度级别对海拔和地形类型进行编码 - 例如 100m X 100m。

对于 2000 公里乘 2000 公里的地图,将此信息存储在 100m 2桶中意味着数据库中有 20000 乘 20000 个元素或总共 400,000,000 条记录。

还有其他存储此类信息的方法吗?

更多信息

地图本身永远不会完整显示。单位将以回合制方式在地图上移动,玩家将获得有关他们所在位置和当地情况的反馈。地形将决定速度和禁止移动。

我想我想说的是地图将用于游戏,不一定用于图形或显示目的。

0 投票
2 回答
1853 浏览

3d - AS3 3D 地形纹理生成:寻找中级/高级思路

我一直在抨击 AS3 的 Away3D,并制作了一个小地形生成器,使用 Perlin Noise 创建高度图,然后用于纹理,将 5 个图像拼接在一起(非常通用的基于噪声的水、海滩、草、岩石和雪) 取决于高度。

下一步去哪里?我怀疑我是否有能力直接为 3D 引擎做出贡献,但我想知道是否有人对诸如雨影和其他地理现象之类的东西胡作非为。例如,当云在山脉上空移动时,它的温度会下降,从而降低其保持水分的能力,因此在某些天气模式下,山脉的一侧会比另一侧更加茂盛。

我想知道是否有人可以推荐任何阅读材料。

非常感谢

编辑:放松认为我应该添加一张图片。网上有我醉醺醺的照片,一个可悲的不发达地形的东西应该不会更尴尬!感谢迄今为止的想法......嗯...... Lod'ing可能很有趣,也许在开始添加细节之前我应该​​看看我可以制作多大的地图。植被很有意义(呃……植物,当然!),我想知道我能在程序上做多少。

替代文字 http://assemblism.com/terrain/images/stage1.jpg

0 投票
6 回答
6685 浏览

opengl - 多个纹理图像混合到 3D 地面上

电脑游戏如何渲染它们的地盘?我将使用几何高度图(尽管我稍后会对其进行优化)但我想知道最好的技术是什么,例如,“绘制”我的地面;到处都是草,到处都是土路,城镇内的砾石,以及每种材料之间的平滑过渡。

我只使用一个巨大的预烘焙纹理吗?当我可以平铺现有纹理时,这似乎非常低效。那么我是否为每个现有纹理使用一个巨大的 alpha 贴图?从理论上讲,这对我来说听起来不错,但我实际上该如何去做,后果是什么?我真的不知道从哪里开始,而且我的 Google 搜索也不是很有效。

我宁愿不必将纹理“捕捉”到网格(即空间(0,0)是草,空间(0,2)是泥土,空间(0,1)是草土过渡);我宁愿能够随意画,这样看起来更有说服力。当然,这将是一种简单的方法,但它在图形质量和“真实感”方面的牺牲太大了。

我主要只是在这里寻找理论和选择。我正在使用 OpenGL,所以如果你能提供关于 OpenGL 做事方式的提示,以及我可能从未听说过的功能,那就太好了。

只是为了澄清,Oblivion 是我正在寻找的一个很好的参考。我不知道地面的几何形状如何(高度图、静态 3D 模型等),但它们的地形具有不同的地面类型和它们之间的平滑过渡,就像我在说的那样。这是一个示例图像,请注意鹅卵石如何融入草丛中,不切实际但平滑:http ://www.elitistsnob.com/images/Oblivion%202006-05-21%2008-38-25-15.jpg

另外,我想我在一本 Game Programming Gems 书籍中读到了这一点,但当时我并没有太在意它,现在是夏天,我无法访问我大学的图书馆查看!我现在正在寻找目录,如果找到了会进行编辑,但直到 8 月中旬我仍然无法阅读它。

编辑:啊,伙计,Game Programming Gems 7 有一个第 5.8 章,标题为“为户外地形渲染映射大型纹理”,这听起来正是我所需要的,但我的 U 图书馆甚至没有那本书!我在其他 Game Programming Gems 书籍中找不到与此完全相同的内容,尽管有几本有一些地形几何文章。

0 投票
4 回答
15697 浏览

2d - 逼真的 2D 地形图生成

我正在寻找一些允许我生成逼真的 2D 地形图的算法。现实是指人们会将此类地图视为“正常”地形图,而不是人为创建的。我不想创建逼真的地图。只是类似于可以在地理地图集中查看的地图。

到目前为止,我使用柏林噪声作为高度图,然后我添加了湖泊、河流、山脉、沼泽等。您可能会在下面的图片中看到它的外观:

地形图 http://www.freeimagehosting.net/uploads/1f1e9372bf.png

我对此不满意。这不现实,但我无法自己找出更好的东西。时间不是问题,因此算法可能需要大量计算。

谢谢你的时间。

编辑后:

我想我找到了一篇有用的文章: http://portal.acm.org/citation.cfm?id= 1255047.1255077

但是它不能免费获得,所以我仍在寻找答案或想法。

0 投票
5 回答
4845 浏览

map - 从哪里获得地形数据 - 免费和付费?

在哪里可以获得地形数据?您可以免费获得哪些分辨率数据?购买数据时可以获得哪些分辨率数据?那个数据是多少?我发现这个网站有免费的地形数据。分辨率为 30m x 30m。这是可以免费找到的最好的吗?

0 投票
1 回答
2019 浏览

c++ - OpenGL:纹理坐标实时变化的地形的最佳渲染方法?

我需要为我的地形纹理实时渲染动画;这样做的最佳渲染方法是什么?动画是通过调整纹理坐标来完成的。

我有一个用于所有动画帧纹理坐标的预构建数组,如果你让 opengl 知道所有动画帧或其他东西,有没有办法让动画更快地渲染?

此外,地形多边形位置可能几乎实时变化......这不是高度图。我想用for循环或其他东西一次只渲染一部分地形。

目前我正在使用显示列表,更新它们非常慢......但渲染它们是我迄今为止尝试过的最快的。

0 投票
1 回答
1977 浏览

terrain - 如何计算地形数据上的点的斜率(例如数字高程矩阵)

我想实现一个 3D 赛车游戏,我需要估计地形上任意点的坡度的大小和方向。

地形数据格式:
- heights[ ][ ]:二维浮点数组(以米为单位表示高度)
- 单位:(i, j) - (i, j+1) 和 (i, j) - ( i+1, j) 以米为单位

前任:

例如,(x = 1.75 米,y = 2.25 米)处的坡度值和方向是多少?

你的插值算法是什么?

0 投票
3 回答
17390 浏览

c# - 如何在 XNA 中实现蠕虫式可破坏地形?

我想为我拥有的游戏制作一个想法的原型。这个游戏的想法是玩家将挖掘地面,创造隧道并寻找宝藏。

我正在寻找创建“蠕虫风格”的地形,为在隧道周围徘徊和跳跃的玩家提供碰撞检测。在这些图片中可以看到这种类型的动态地形的示例。 示例 1 示例 2

我的问题是如何实现这种可破坏地形的最佳方式?我正在使用 XNA 游戏工作室。

0 投票
12 回答
59482 浏览

algorithm - 寻找一个好的世界地图生成算法

我正在开发类似文明的游戏,并且正在寻找一种生成类似地球的世界地图的好算法。我已经尝试了一些替代方案,但还没有找到真正的赢家。

一种选择是使用Perlin 噪声生成高度图,并添加一定水平的水,以使世界上大约 30% 是陆地。虽然 Perlin 噪声(或类似的基于分形的技术)经常用于地形并且相当逼真,但它并没有提供太多控制所产生大陆的数量、大小和位置的方式,我想从游戏的角度来看。

柏林噪声

第二种选择是从随机放置的单瓦种子开始(我正在处理瓦片网格),确定大陆所需的大小,每轮添加一个与现有大陆水平或垂直相邻的瓦片,直到您已达到所需的大小。重复其他大陆。这种技术是文明 4 中使用的算法的一部分。问题是在放置前几个大陆之后,有可能选择一个被其他大陆包围的起始位置,因此不适合新大陆。此外,它倾向于生成过于靠近的大陆,导致看起来更像河流而不是大陆的东西。

随机扩展

有没有人碰巧知道在基于网格的地图上生成逼真的大陆同时控制它们的数量和相对大小的好算法?

0 投票
1 回答
2045 浏览

map - 实时生成二维地形

我正在尝试创建一个类似的游戏注意:当您单击“播放”时,游戏中有 SFX,您似乎无法关闭,因此您可能需要检查音量)。特别是,我有兴趣了解“无限”景观是如何产生的。有没有描述这个的教程/文章?我遇到了procedural generation,但我不太确定我应该寻找什么主题(或者它是否甚至是 procedural generation)。

(我使用的是 C#,但我不介意这种语言,因为我认为它背后的理论保持不变)