2012-08-03 89 views
2

我一直在研究3D程序世界一段時間,並且想要開始添加洞穴系統。簡單的程序3D洞穴生成?

我想找到一個相當簡單的方法來創建一個程序化的3D洞穴系統。目前,我正在使用Perlin Noise產生我的世界,二維用於提升/細節,3D用於雕刻懸垂物和較小的洞穴,但是當談到長長的互連洞穴時,我會感到困惑。

我希望能找到更像Minecraft洞穴系統的東西。它們似乎非常連接,在幾乎任何方向上都是隨機分支的,幾乎洞穴中的任何一點都會有一個相當圓形的外觀,而且整個過程的半徑相當相等(不是最好的措詞,但不太確定該如何放置它)。

產生像我想要的洞穴最大的挑戰是我想要在飛行中產生世界。當前世界是由大塊生成的塊,從玩家所在的位置開始,並從那裏向外生成。我會要產生任何對世界和然後挖洞穴出使用徘徊格局,細胞自動機等

一個很好的例子:

enter image description here

回答

0

我在生成你的世界時,要對你的生成算法做出一些可觀的假設。

你創建類似的Minecraft的世界。這意味着世界是由塊組成的,缺少這些塊是什麼構成了「空氣」或玩家空間。因此,當你在世界上建立街區時,你不想放置街區,或者反過來去掉你希望有洞穴的街區。好?

你如何生成洞穴,這本質上是負面的空間,真的取決於你。但在你的問題可能是你的答案。洞穴「非常連接,幾乎在任何方向上隨機分支,並且洞穴中幾乎任何一點都將具有相當圓形的外觀,並且具有相當相等的半徑」。所有你需要的是一個產生該規範的生成算法,或者不在那裏放置塊,或者移除已經放置的塊或用你自己的語言「挖出」。

作爲一個方面說明,從玩家所在的地方生成生成算法聽起來是一個相當糟糕的主意,但是我想假設它是有效的。

+0

我這一代的結果確實只是空氣VS土地(-1到1)。我使用Marching Cubes來平滑地形。是的,我正在尋找一種算法來完全按照我所描述的方式創建負空間,但那正是我缺乏的地方。什麼算法會做這樣的事情? 究竟是從玩家的位置產生,並向外移動一件壞事?我不會從他們下面的大塊開始,因爲他們可能站在他們當前塊的泥土中,導致球員向上移動與「下降」。 – Mythics 2012-08-03 21:16:47

+0

我會盡量想世界的一件事(即需要生成到您的規範的東西,該規範可包括作爲獨立的洞穴,但告知世界佈局算法,柏林噪聲由它的聲音衍生物,是的負空間的存在)。如果你正在創建一個高度圖,那麼它不可能創建凸面的東西,如洞穴,你將不得不首先轉換成某種網格。把玩家想象成一種不同的東西,一旦它被生成就可以放置在世界上。理解? – ceorron 2012-08-03 21:40:38

+0

如果遍歷每個x/z的每個Y值,則可以對整列進行一次採樣,並隨時設置密度值。然後,用你的3d噪音抵消這些正面密度值,以便挖出你的洞穴/懸垂物等。這消除了浮動地形。無論哪種方式,我知道我可以像我那樣使用我的方法雕刻洞穴,但按照我想要的方式讓它們逃離我,因此我就在這裏。 – Mythics 2012-08-04 00:09:01