- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在开发一个小项目,只是为了一点乐趣。它是一个使用 OpenGL 的 C++、WinAPI 应用程序。
我希望它能变成一款在六边形网格上玩的 RTS 游戏,当我完成基本的游戏引擎时,我计划进一步扩展它。
目前,我的应用程序由一个保存顶点和高度图信息的 VBO 组成。高度图是使用中点位移算法(菱形方形)生成的。
为了实现六边形网格,我采用了解释的想法 here 。它将正常网格的奇数行向下移动,以允许相对容易地渲染六边形,而不会产生太多进一步的复杂性(我希望)。
几天后,它开始融合在一起,我添加了鼠标拾取,这是通过以独特的颜色渲染网格中的每个六角形,然后对该 FBO 中给定的鼠标位置进行采样以识别 ID 来实现的所选单元格的位置(在下面屏幕截图的右上角可见)。
在项目的下一阶段,我想考虑生成更多“可玩”地形。对我来说,这意味着每个六边形的形状应该比上图中看到的更规则。
最后我想说的是:
编辑:对于任何正在寻找有关如何使点共面的信息的人 here is a great explination .
需要明确的是,我并不是试图实现具有凸起边缘或平台的扁平六角网格(如下所示)。
)
我希望所有的几何体都加入并引导到下一个位。
我希望能够实现与我现在所拥有的类似的目标(相对漂亮的起伏山丘和地形),但具有更可控的高原。这使我可以在以后灵活地划分区域(无法播放的图 block ),如果需要,我可以在其中添加更高细节的网格。
欢迎任何反馈,我将其用作学习练习,所以请 - 欢迎所有评论!
最佳答案
这取决于您实际想要什么以及您所说的“更多控制”是什么意思。
您是否希望能够说“坐标 [11, -127] 上有一座半径为 20 的山”?这个的复杂性取决于你想要走多远。如果您只想要山脉,那么径向梯度就足够了(只需将梯度值添加到噪声值中)。但如果您想要一些更复杂的形状,那么您就可以享受到了。
我在我的 project 中深入探索了这个想法。 (请注意,发布的版本只是一个原型(prototype),目前正在进行重大重新设计,但它完全可以用作 map 生成器)。
另一种方法是使生成更加程序化 - 您只需指定一系列数学函数,并将其应用于地形。即使是简单的值(value)转换也能让您走得更远。
所有这些方法都应该适用于六角网格。如果由于奇数行移位而出现伪影,那么您可以对奇数行进行插值(只需使用简单的线性插值公式从其所在的两个顶点计算顶点的高度值)。
考虑一个函数,它将紫色线映射到蓝色曲线 - 它强调较低的定位高度以及非常高的定位高度,但使它们之间的过渡更陡峭(此示例只是一个余弦函数,使曲线更陡峭)平滑会使转变更加突出)。
您也可以只使用曲线的下半部分,使峰值更尖锐,位置较低的区域更平坦(因此更具可玩性)。
曲线的“锐度”可以通过功率(使效果更加引人注目)或平方根(降低效果)轻松调节。
这个的实现实际上非常简单(特别是如果您使用余弦函数) - 只需在 map 中的每个像素上应用该函数即可。如果函数在数学上不是那么简单,查找表就可以正常工作(在表值之间进行三次插值,线性插值会产生伪影)。
几种更简单的随机噪声地形“游戏化”的方法可以在这篇论文中找到:“Realtime Synthesis of Eroded Fractal Terrain for Use in Computer Games”。
祝你的项目顺利
关于terrain - 调整六边形网格的高度图生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006238/
目前我正在开发一个小项目,只是为了一点乐趣。它是一个使用 OpenGL 的 C++、WinAPI 应用程序。 我希望它能变成一款在六边形网格上玩的 RTS 游戏,当我完成基本的游戏引擎时,我计划进一步
我想实现一个 3D 赛车游戏,我需要近似地形上任意点的坡度的大小和方向。 地形数据格式: - heights[ ][ ]: 2D 浮点数组(以米为单位表示高度) - unit: (i, j) - (i
我在我的 gwt 项目中使用 cesium,我在地形中使用 cesium-terrain-server。 (不是 cesium-gwt ,用 jsni 开发我自己的代码)我的问题:我在地形上创建图形(
我最近正在探索和研究 Sebastian Lague 的 Procedural Landmass Generation 的部分内容系列。绝对优秀的系列,我会推荐给任何想要了解更多关于 Unity 和
我可以使用 2D Perlin 噪声函数来生成高度值,但我不明白为什么要使用 3D Perlin 噪声函数。在 Notch's blog ,他提到在 Minecraft 上使用 3D Perlin 噪
我正在尝试实现我找到的一些源代码 online使用柏林噪声生成高度图。我已经成功地使用 Noise3 函数获取了高度图,其中第三个坐标是随机“种子”,以允许随机高度图。 我的问题是生成的地形相当沉闷
问题:我想使用具有自己样式的 google maps v3 地形图作为自己的 mapType。 我从这段代码开始: var mapOptions = { scrollwheel: false,
我在 Three.js 中开发了一个带有纹理散布的地形生成系统,但我无法对其应用法线贴图。我该怎么办?此代码目前功能齐全。 我查看了一些 WebGL 着色和法线贴图的教程,但找不到适合我的代码的教程。
我正在使用带有 VBO 和索引等的现代 OpenGL。 首先我从高度图加载地形,然后我把它分成 block (在我的例子中是 128x128)我将所有顶点加载到 VBO(对于每个地形 block )然
我有一个程序生成的 Terrain,它基于 Unity 的地形系统。 现在我想要一张来自Terrain 的Map,不是迷你 map 而是完整 map ,保存为2D Texture。 首先我想到了一个R
你好我可以同时将水变暗并更改为样式化 map ,以便重置其他值。我想要的是一张像 MapTypeId.TERRAIN 这样的绿色景观和深色水域的 map 。我可以设法让水变暗,现在也想要像 MapTy
我尝试使用以下代码将树木添加到我的地形中: // Create Trees for (int x = 0; x (); TreeInstance treeTemp =
我想使用 Mapbox 的 terrain-rgb 瓦片作为 Mapbox GL map 中的图层。我看到的操作 terrain-rgb 数据的示例使用 L.tileLayer 为新层构建图 bloc
我非常喜欢 Google map 的 Terrain map 类型。 但是 map 的默认背景不是绿色,我怎样才能把颜色变成黄色呢? 最佳答案 Terrain 没有黄色版本 map type .您可以
我正在使用 Libtcod 和 Python 构建一个回合制策略游戏。游戏 map 具有可变地形,每个方 block 可以是 5 种类型中的一种: 平原 - 移动成本 1 森林 - 成本 2 河流 -
我有一条随时间移动的路径。我使用 Cesium.sampleTerrain 获取位置高度并将它们覆盖在地形上。问题是,即使所有点都在地形上,连接 2 个点的线有时也会在地形下方。我怎样才能在地形上也覆
我目前的理解是,当用户将鼠标悬停在 map 按钮 (MapTypeId.ROADMAP) 上时,google maps api3 MapTypeId.TERRAIN 显示为一个复选框选项。我想把它分成
我正在尝试为我的地形映射的第一部分绘制一个三角形网格,但是有一个小错误,我不确定我哪里出错了。有人可以指出我的错误或解释如何正确构建此网格。 为了澄清,请查看网格的右侧,这不应该发生。 顶点: vec
使用这个 stackoverflow question ,我尝试将一些自定义样式应用于 Android map View 。 造型基本上就是把水弄黑 mapstyle_json.js: [ {
所以我创建了一些自定义 JSON 来使海洋呈现更饱和的蓝色,但现在似乎无法将 map 默认设置为 TERRAIN View ,它只是转到标准 ROADMAP View ,似乎无法正常工作为什么会这样,
我是一名优秀的程序员,十分优秀!