Thursday, December 15, 2016

Dealing with the Great Big World

As I mentioned in previous posts, the world is very large.  Storing detailed data about the topography, hydrology, biological, and sociocultural aspects of an entire Earth-sized planet would be impractical without massive amounts of disk space.  Elevation data alone is voluminous.  Procedural techniques such as fractals and other functional approaches can help, but are not a full solution in and of themselves.

A potential compromise is generation of a coarse raster or vector map of the planet, with details provided procedurally and/or stored as vector data.  Simulations can
work with the data as required, retrieving coarse data and generating details as required.  The generation process, as it stands in my head, would work something like this:

Stage 1: Continental Shape Generation

Continental plates generated with my experimental code - send to stage 2!

This is what I was experimenting with several months ago.  A supercontinent land mass is created from a stochastically-generated polygon that is then split into continental plates that are shifted.  I also experimented with some of the ideas from the Experilous web site but in raster form, as well as some techniques from Soon Tee Teoh's 2008 paper "River and Coastal Action in Automatic Terrain Generation".  Only the continental shapes and plate data are required from my current experiment, for input to the next stage.

From Teoh "River and Coastal Action in Automatic Terra

Stage 2: Planet Generation

The Experilous planet generation techniques will be used to generate a coarse, vector-based three dimensional planet.  The basis for the continental plates will come from the stage 1 output.  A port of the Experilous code base from JavaScript to C# is required.  The Experilous techniques result in elevation, temperature, moisture, and biome data, which will feed into the next stage.  If fine details is not required, the output from this stage may be sufficient for biological or social simulation purposes.

Screenshot of Experilous planet generator

Stage 3: Mountain Generation

From Hnaidi et al. "Feature based terrain generation using diffusion equation"
Vectors for major mountain chains at colliding continental boundaries will be generated.  The shape of the mountain chains will derive from the cellular structure from stage 2.  The mountain chains can be rendered into detailed topography using techniques from Teoh, Houssam Hnaidi et al. ("Feature based terrain generation using diffusion equation"), Genevaux et al. ("Terrain Modeling from Feature Primitives").  The "erosive noise" / Swiss turbulence of de Carpentier and Bidarra ("Interactive GPU-based procedural heightfield brushes") could potentially be used here.

From de Carpentier and Bidarra "Interactive GPU-based procedural heightfield brushes"

Stage 4: Hydrology Generation

From Genevaux et al. "Terrain generation using procedural models based on hydrology"

Techniques from Genevaux et al. ("Terrain generation using procedural models based on hydrology"), Teoh, or Amit Patel could be used here. Additional terrain generation may occur after/as part of the hydrology work.

Example terrain generated from demo on Amit Patel's website

What Comes After

Biological and sociocultural simulations could follow.  This could lead to villages, towns, cities, and nations being formed.  That would likely require at least some additional storage, although procedural techniques can again be used to help reduce the storage requirements.  There's no need to retain extensive detailed geometry for every building in every city across the globe.

More thoughts later.  I may go see the new Star Wars movie and review it.

No comments:

Post a Comment