- #1
GPundergrad
- 4
- 0
Hello all, this is my first topic here at PF, though I have been using this site as a homework aid for quite a while. Just to clarify, this problem is NOT a homework problem.
I have been attempting to create a MOD for the 3D lego-like indy game called minecraft. Minecraft features a procedurally generated fractal terrain which makes for interesting and engaging gameplay through use of perlin simplex noise. For most players, the terrain generator is sufficient. Ores are generated as random conglomerations of 1m x 1m x 1m blocks dependent only on surface depth, and replace the existing blocks of 'stone' when they are made.
Having a background in geology, minecraft's terrain generator leaves much to be desired. Mountain ranges are the result of a pure fractal process without the regard for faults, rock types, and erosion. I understand that for game programmers it may be overly complex and involved to include geologic principles in their generators.
I approached one of my professors with this idea, and she immediately recommended that I create this mod for my senior thesis. As I am currently a mathematical physics & Earth system science major (my university does not have a geophysics program), this senior thesis, if completed, will hopefully give me a good shot at getting into a decent geophysics graduate program.
I am initially coding the entire generator in Matlab. Once the generator works, I will work on getting the methods to work in minecraft's native java code.
Soo on to the interesting stuff. So far, this is what the generator does:
-1 it creates a 3D matrix (100x100x256) filled with integer values which correspond to the types of material at that x,y,z index
-2 it partially fills in this matrix (we will call this matrixA) with three layers of rock:
* alluvium, which is 10 layers thick
* Metamorphic rock, which is 30 layers thick
* Intrusive igneous rock (aka granite) which is 20 layers thick, with the lowest layer being at the bottom of the map
-3 it uses a 10x10 matrix filled with random values to create an interpolated 2D heightmap which is used to offset the starting elevation of MatrixA
-4 it fills in the space between 'bedrock'/z coordinate index 1 and the bottom of the resulting granite offset so that there are no voids under the terrain.
-5 renders the side and the top of matrixA as cubes colored corresponding to their rock types.
My next step in this mod will be to add kimberlite pipes (it may seem like a weird jump, let's just roll with it for now):(http://en.wikipedia.org/wiki/Volcanic_pipe)
Kimberlite pipes are basically explosion pits from ancient volcanoes which take the form of a steep cone from ~75m wide to 1.5km wide, and are the primary source of natural diamonds.
I would like my world to at this time include an algorithm for producing kimberlite pipes, however I'm not very sure how to do this. Its easy enough to produce a 3d structure of a cone in matrixA, but a perfect cone isn't what I'm going after:
notice that though the diatreme (volcanic pipe) follows a roughly conical shape, there are plenty of wiggles and uncomformities which make for a very organic looking structure. additionally, the whole of the pipe is not necessarily conical in nature:
So my question is this: what algorithm should I use to create similar 3D structures inside matrixA without using a simulation of physical processes/without utilizing empirical volumetric data? I need to be mindful of both computational efficiency and the discreet nature of matrixA.
I have been attempting to create a MOD for the 3D lego-like indy game called minecraft. Minecraft features a procedurally generated fractal terrain which makes for interesting and engaging gameplay through use of perlin simplex noise. For most players, the terrain generator is sufficient. Ores are generated as random conglomerations of 1m x 1m x 1m blocks dependent only on surface depth, and replace the existing blocks of 'stone' when they are made.
Having a background in geology, minecraft's terrain generator leaves much to be desired. Mountain ranges are the result of a pure fractal process without the regard for faults, rock types, and erosion. I understand that for game programmers it may be overly complex and involved to include geologic principles in their generators.
I approached one of my professors with this idea, and she immediately recommended that I create this mod for my senior thesis. As I am currently a mathematical physics & Earth system science major (my university does not have a geophysics program), this senior thesis, if completed, will hopefully give me a good shot at getting into a decent geophysics graduate program.
I am initially coding the entire generator in Matlab. Once the generator works, I will work on getting the methods to work in minecraft's native java code.
Soo on to the interesting stuff. So far, this is what the generator does:
-1 it creates a 3D matrix (100x100x256) filled with integer values which correspond to the types of material at that x,y,z index
-2 it partially fills in this matrix (we will call this matrixA) with three layers of rock:
* alluvium, which is 10 layers thick
* Metamorphic rock, which is 30 layers thick
* Intrusive igneous rock (aka granite) which is 20 layers thick, with the lowest layer being at the bottom of the map
-3 it uses a 10x10 matrix filled with random values to create an interpolated 2D heightmap which is used to offset the starting elevation of MatrixA
-4 it fills in the space between 'bedrock'/z coordinate index 1 and the bottom of the resulting granite offset so that there are no voids under the terrain.
-5 renders the side and the top of matrixA as cubes colored corresponding to their rock types.
My next step in this mod will be to add kimberlite pipes (it may seem like a weird jump, let's just roll with it for now):(http://en.wikipedia.org/wiki/Volcanic_pipe)
Kimberlite pipes are basically explosion pits from ancient volcanoes which take the form of a steep cone from ~75m wide to 1.5km wide, and are the primary source of natural diamonds.
I would like my world to at this time include an algorithm for producing kimberlite pipes, however I'm not very sure how to do this. Its easy enough to produce a 3d structure of a cone in matrixA, but a perfect cone isn't what I'm going after:
notice that though the diatreme (volcanic pipe) follows a roughly conical shape, there are plenty of wiggles and uncomformities which make for a very organic looking structure. additionally, the whole of the pipe is not necessarily conical in nature:
So my question is this: what algorithm should I use to create similar 3D structures inside matrixA without using a simulation of physical processes/without utilizing empirical volumetric data? I need to be mindful of both computational efficiency and the discreet nature of matrixA.