简单程序3D洞穴生成?

简单程序3D洞穴生成?,3d,minecraft,procedural,3d,Minecraft,Procedural,我已经在3D程序世界工作了一段时间,现在我想开始添加洞穴系统 我想找到一种以程序方式创建3D洞穴系统的相当简单的方法。我目前正在使用柏林噪音生成我的世界,2D用于立面/细节,3D用于雕刻突出部分和较小的洞穴,但当涉及到相互连接的长洞穴时,我感到困惑 我希望得到更像Minecraft洞穴系统的东西。它们似乎非常紧密地联系在一起,几乎在任何方向上随机分支,洞穴中的几乎任何一点都会有一个相当圆的外观,整个半径相当相等(这不是最好的措辞,但不太确定该怎么说) 生成我想要的洞穴的最大挑战是,我想动态生成世

我已经在3D程序世界工作了一段时间,现在我想开始添加洞穴系统

我想找到一种以程序方式创建3D洞穴系统的相当简单的方法。我目前正在使用柏林噪音生成我的世界,2D用于立面/细节,3D用于雕刻突出部分和较小的洞穴,但当涉及到相互连接的长洞穴时,我感到困惑

我希望得到更像Minecraft洞穴系统的东西。它们似乎非常紧密地联系在一起,几乎在任何方向上随机分支,洞穴中的几乎任何一点都会有一个相当圆的外观,整个半径相当相等(这不是最好的措辞,但不太确定该怎么说)

生成我想要的洞穴的最大挑战是,我想动态生成世界。当前,世界是一块一块地生成的,从玩家所在的位置开始,然后从那里向外生成。我想生成世界上的任何一个,然后使用漫游模式、细胞自动机等挖掘洞穴

一个很好的例子:


在生成世界时,我将对生成算法做出一些重要假设

你正在创造一个类似于Minecraft的世界。这意味着世界是由方块组成的,没有这些方块就构成了“空气”或玩家空间。所以,当你在世界上制作积木时,你不想在你希望有洞穴的地方放置积木,或者相反地移除放置的积木。好吗

如何生成洞穴,本质上是负空间,这完全取决于你。但在你的问题中可能隐藏着你的答案。洞穴“非常相连,几乎在任何方向上都随机分支,洞穴中的几乎任何点都会有一个相当圆的外观,整个半径相当相等”。然后,您只需要一个生成算法,该算法根据该规范生成,或者不在那里放置块,或者删除已经放置的块,或者用您自己的话“挖出”


顺便说一句,让生成算法从玩家所在的位置生成是一个相当糟糕的主意,但我想如果它能工作的话。

我生成的结果确实是空中对陆地(-1比1)。我用行进中的立方体来平滑地形。是的,我正在寻找一种算法来创建负空间,正如我所描述的,但这正是我的不足之处。什么算法会做这样的事情?从球员所在的位置出发向外移动到底是一件坏事吗?我不会从他们下面的区块开始,因为他们可能站在他们当前区块内的泥土上,导致玩家向上移动而不是“坠落”。我会尝试将世界视为一回事(需要根据您的规范生成的东西,该规范可能包括独立的洞穴,但通知世界布局算法,柏林噪声的一种衍生声音,负空间的存在)。如果您正在创建高度贴图,则不可能创建凸面对象,例如洞穴,您必须首先将其转换为某种网格。将玩家视为不同的对象,一旦生成,就可以放置在世界上。明白吗?如果您每x/z迭代每个Y值,您可以对噪音进行一次采样然后,用你的3d噪音抵消那些正密度值,雕刻出你的洞穴/突出物/等等。这消除了浮动地形。不管怎样,我知道我可以用我的方法雕刻出洞穴,就像我已经做的那样,但以我想要的方式获得它们是逃避我,因此我在这里。