Questions tagged «terrain»

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

2
如何在2.5D透视图中渲染地形,例如在《不要挨饿》游戏中?
我在制作2D侧面滚动游戏(例如Terraria)方面有经验,但是现在我想挑战自己,制作一款具有2.5D视角的游戏。我要模仿的游戏是《不要挨饿》。现在,我的重点是弄清楚如何渲染地面。我很难弄清楚它们是如何生成地面,然后渲染地面的。我认为他们渲染地面的方式是,首先在某些绘画程序中对地面进行绘画,然后以某种方式处理该平面图像,使其看起来具有深度。 我对如何实际渲染这种类型的地形完全感到困惑。我希望地形具有以下特征: 看起来像《不要挨饿》中的地形,这是一个视频,显示了《不要挨饿》中的地形 地形将是平坦的,并且摄像机的角度和视角将被固定 任何提示和提示将不胜感激,在此先感谢您。 (我正在使用轻量级Java游戏库(LWJGL)在Java中工作。)

2
使用3D Perlin Noise生成时如何去除浮动地形?
我目前正在使用3D Perlin Noise与Marching Cubes结合生成随机地形。 我的问题似乎在于缩放噪声函数以在我的地形中获得合理的高度。如果仅使用一个八度音程,则显然会插入与噪声有关的所有点,从而获得相当平滑的数据。但是,要获得悬垂/凹面/锯齿状的地形,我必须使用振幅变化的多个八度音和/或将结果值缩放到我想要的“最大”高度。 我可能会丢失一些东西,但是通过使用具有3D Perlin噪声的行进立方体,我经常得到一些浮动的地形。 关于如何纠正此问题或是否有其他噪声函数可以用来获得我所描述的结果的任何想法?我想要丘陵/山谷/山脉/湖泊/等。无需将浮动位与其他映射区分开。我相信,这与Minecraft的地形在生成时偶尔会漂浮在天空中的情况类似。 感谢您的协助,神话

2
具有不同高度的相邻图块的图块地图/地形实现
! 我正在寻找有关切片地图的一些信息,或更确切地说,是什么类型的切片地图被称为。 我对过山车大亨或运输大亨系列游戏中使用的实现方式感兴趣,并且一直在研究矢量场地形和高度图地形,但我不确定它们是否适合我的期望发展。 很难找到任何像样的信息,因为大多数人将其称为等轴测图,但是我正在寻找以固定的正交透视图创建3D图像的方法。我了解磁贴图的基础存储与渲染方式无关,但我不希望像老式的口袋妖怪/塞尔达游戏一样创建2D磁贴图,更像暗黑破坏神那样具有包含功能悬垂的悬崖和倾斜的地形。 我只是想找到合适的条件来搜索google和stackoverflow的资源,以帮助我确定要走的道路。 到目前为止,我已经设法在不使用存储在VBO中并渲染为线框的height / y分量的情况下充实了基本的贴图。到目前为止,这看起来还不错,但是我设想在尝试操纵单个顶点以创建悬崖和坡度而不影响相邻图块时会遇到问题。 我应该研究一种特定类型的实现吗?我以为如果在矢量场地形上找到了相当数量的信息,就可以破解它,但我不确定这是否也会产生正确的结果。 如果有人可以帮助我了解一下,将非常感谢您的帮助:) 更新资料 我提供了一张图片,以进一步阐明我想要实现的目标: 从如何创建倾斜(高度)等距图块借来的图像 此图像显示了我要生成的地形类型,但不包括我对建模感兴趣的“悬崖”或悬垂的地形类型。但是它确实提出了我没有考虑的其他一些问题,即; 如何处理“水”等图层(在图像的左上方)以包括水之下的可见地面? 如何适应地图的“边缘”,以便渲染泥土来将世界描述为非平坦的实体? 是否可以使用这种地形的基础存储来建模物理模型,例如滚下山坡的球或穿越斜坡的运动员的运动速度? 我的想法是,可以使用8个顶点对地形的每个图块进行建模,其中4个主顶点覆盖实际图块本身,而其余4个顶点用于对每个图块的侧面/墙进行建模。我在此实现中看到的两个问题是:a)世界地图的尺寸​​实质上增加了一倍,b)鉴于并非所有图块都将包含“墙”,因此某些图块最终将具有未使用的冗余顶点。 我想创建一个地形编辑器,该编辑器允许每个图块变形以及在游戏过程中更改地形的功能。这本身带来了其他问题,例如;VBO可以在即时修改的同时用于存储和渲染地形吗?是否可以在不影响相邻图块的情况下修改顶点? 我的印象是我要么使事情变得过于复杂,要么陷入分析瘫痪,因为我忽略了编写任何代码来解决问题而又不清楚我将如何实现自己想要的目标。 再说一次,我真的只是在寻找正确的方向。有没有一种特定类型的tilemap / terrain实现,可以满足3D地图在地图编辑器以及游戏过程中变形的需要,或者我必须自己滚动一下?我并不想在这里重新发明轮子,但是由于我不确定要寻找的内容,我正在努力寻找任何资源。 如果任何人都可以提供任何信息,资源或代码片段,将不胜感激,因为我急于弄脏我的手,并开始生产除我现有的扁平线框以外的其他东西。 谢谢阅读!

1
程序生成的地形图。混合地形类型之间的过渡
这个问题不是最抱歉的措辞。 我一直在学习一些有关纹理和地形生成的东西并对其进行原型制作,并且遇到了可能可以帮助我的事情。 工作原理:我正在按程序生成地形高度图。它可以在任何方向无休止地滚动。(图1)我根据高度图的值钳制并混合颜色(图2) 这工作得很好,并且当前运行非常快,毕竟目前还很简单。 我需要找到一种在地形过渡之间模糊/扭曲的好方法。如您所见,目前它的线条非常凸凹,看起来并不自然。鉴于整个过程都是程序生成的,所以我显然需要找到一种可以即时运行的混合算法。我尝试了一些像素抖动,但看起来很糟糕。同样,我曾经使用过的东西也必须能够播种,以便保持一致性(尽管我怀疑这将是一个问题,因为它们很可能全部是随机运行的)。 任何见解将不胜感激。如果我在匆忙中遗漏了任何需要的信息以发布此信息,请告诉我。

4
查找导弹和位图地形的交点的最有效方法是什么?
在回答了我先前关于查找2D位图地形的坡度的问题后,我现在需要了解在导弹上击中的2D地形上找到点的最佳方法。显然,我可以看到导弹下方是否有任何像素与地形相交,但是可以说它已经深入到地形中。 返回到最初碰撞位置的最佳方法是什么?我可以一次将X像素移回导弹的先前位置,但是X的一个好值是多少?还有更聪明的方法吗?也许移动一半的距离,然后移动四分之一,等等?

1
在GPU上生成地形
在我的引擎中,我使用在CPU上计算的Perlin噪声算法来创建无限地形。 创建地形的过程如下: 如果相机靠近卸载的补丁,请创建它 计算给定边界的513x513噪声阵列 计算法线,切线,双法线,索引 将数据传递给vbo 优点: 仅在需要时才需要渲染 容易发生碰撞 骗局 在3,1s(一个线程)中创建了缓慢的64513x513补丁。对于每个图块,约20ms的噪声产生,约25ms的顶点,法线,切线,双切线,索引。当摄像机快速移动时,用户会注意到瓷砖正在加载。 内存消耗??? 现在我想知道如何通过在GPU上完全生成地形来加快速度,但是存在一些疑问: 如果着色器每帧都运行一次,难道这种计算能力会浪费一遍又一遍地计算噪声吗?可以通过将结果写入RBGA纹理中并随后在顶点着色器中进行置换来避免这种情况,但会增加内存使用量。另一方面,如果创建速度非常快,则只有可见的图块应保留在内存中。但是,分离缓冲区会导致gpu-cpu同步,这可能会使应用程序变慢(我对吗?) 如果地形只是由顶点着色器置换的平坦网格,则需要在CPU上执行相同的工作来计算给定点处的碰撞高度和法线。 这只是一个概念,但是为了加快所有速度,我考虑将网格投影到视口上,因此只使用了很少量的顶点。您认为这行得通吗? 我的最后一个问题是: 在GPU上创建无限地形的最佳/最快/广泛使用的技术是什么?
9 terrain 

2
体素面爬行(简化网格,可能使用贪婪)
编辑:这只是出于我自己的学习经验,并不是出于性能原因而问这个问题。 这是关于Minecraft类地形引擎的。我以块的形式存储块(以块的形式存储16x256x16块)。生成块时,我使用多种过程技术来设置地形和放置对象。生成时,我为整个块(是否有实体)保留一个1D数组,并为实体块保留一个单独的1D数组。 生成后,我遍历实体块以检查它们的邻居,以便仅生成没有实体邻居的块面。我将要生成的面孔存储在自己的列表中(这是6个列表,每个可能的面孔/正常面孔一个)。渲染块时,我渲染相机当前块中的所有列表,而所有其他块中仅渲染面向相机的列表。通过将所有6个列表存储在一个缓冲区中来完成此操作,然后只需更改绘制的范围即可。 结合使用2D地图集和Andrew Russell提出的这个小技巧,我想将相似的面孔完全融合在一起。也就是说,如果它们在相同的列表中(相同的标准),彼此相邻,具有相同的光照水平等。我知道我仍然会以矩形结尾,但是这样可以轻松地将我的顶点数减少50%如果我的估计正确的话,还是更好。 我的假设是将6个列表中的每个列表按其所在的轴排序,然后再按其他两个轴排序(块顶部的列表按其Y值,X,Z排序)。 仅此一项,我就可以很容易地合并面带,但我希望尽可能地合并多个面带。我已经阅读了这个贪婪的网格划分算法,但是在理解它时遇到了很多麻烦。 所以,我的问题是:要按照描述的那样进行人脸合并(忽略对动态地形/照明是否是个坏主意),也许有一种算法更易于实现吗?我也很乐意接受一个答案,它以一种更简单的方式(链接或解释)引导我完成贪婪算法。 我不介意如果它更容易实现,甚至比仅做剥离要好一点,性能都会略有下降。我担心大多数算法都将注意力集中在三角形而不是正方形上,并以我的方式使用2D地图集,我不知道我可以根据当前的技能来实现某些三角形。 PS:我已经对每个块都进行了截锥体剔除,并且如上所述,我也剔除了实体块之间的面。我还没有遮挡剔除,可能永远不会。 *编辑:我实现了自己的小技巧,可能有一个名字,但是我只是简单地浏览了我的6个列表,这些列表按照它们所靠的轴,其次是块类型,然后是照明级别进行了排序。我遍历它们,同时创建新的矩形并同时进行扩展(偏向某个轴)。绝对不是最佳选择,但确实非常快,并且确实使我的顶点数平均降低了近50%。Byte56的评论是我认为是真正答案的壁橱,但我不能选择它作为答案/赏金。 这是在生成完整的初始地形后无需进行任何优化的情况下处理此问题的快速简便的方法。假定给定的所有正方形都是相同的图像,光照水平,法线等。每种颜色都是我要渲染的不同四边形。根据我的列表的排序方式,这是一种非常简单/快速的方法。

1
Starcraft 2使用什么技术绘制地图?
我有一个在运行时按程序生成的地图,目前正在研究渲染该地图的方法。我对星际争霸2的外观很感兴趣,我想就它采用什么方法来实现它提出一些建议。其次,如果可能的话,我想看任何教程,文章甚至源代码示例。 我想提供一些主要建议,但也请提出其他可能对我有所帮助的建议。 可捕捉的图块-一张典型的星际飞船地图似乎由一组模型图块组成,人们可以将它们组合在一起以创建悬崖,坡道和其他高地地形。他们采用什么方法使它们看起来如此自然?我的意思是,很难发现重复。 地形纹理-地形纹理是如此变化,甚至是动态的(虫族蠕变)。用什么方法做到这一点? 谢谢。

2
如何使角色从高角度的斜坡上滑下来?
我目前正在Unity3D中研究角色的动作。我设法使他相对于鼠标光标移动。我将坡度限制设置为45°,这不允许角色以更高的角度爬山。但是他仍然可以跳起来。 当他跳到坡度过高的地方时,如何使他再次滑落? 提前致谢。 编辑:我的基本动作的代码片段。使用UnityEngine; 使用System.Collections; public class BasicMovement : MonoBehaviour { private float speed; private float jumpSpeed; private float gravity; private float slopeLimit; private Vector3 moveDirection = Vector3.zero; void Start() { PlayerSettings settings = GetComponent<PlayerSettings>(); speed = settings.GetSpeed(); jumpSpeed = settings.GetJumpSpeed(); gravity = settings.GetGravity(); slopeLimit = settings.GetSlopeLimit(); } void Update() …

3
正确“随机”生成流动地形的方法
我正在创建一个简单的自上而下的RTS游戏。我计划在需要时“随机地”即时生成地图。我计划所有这些都以“通过”的方式工作: 全草填满地形 返回并添加一些随机的砾石 磨碎碎石 在第二层上绘制山地景观 圆山 等等等 现在,请看下面的图片: 我是使用地图编辑器手动创建的,但我希望将其传递给第3步后,我基本上打算将其作为结果。 我应该如何确定何时以及将砾石放置的位置,使其至少具有不规则的形状和零星的外观,看起来自然呢? 谢谢,如果可以!任何和所有帮助表示赞赏! 附带说明: 基本上,每次通过都是遍历我所有的图块(该地图分为40x40图块),类似于以下内容: for (int x = 0; x <= GRIDMAX - 1; x++) { for (int y = 0; y <= GRIDMAX - 1; y++) { //Terrain(x, y, 0) = SomethingHere; } }

3
生成随机池或湖泊
我已经实现了可以绘制任何多边形的函数,但是我无法生成模仿湖泊圆角的平滑形状。我尝试生成两个圆并连接边缘,但是没有足够的变化或平滑度。是否有人有可能产生这样的形状的指针或想法?
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.