In the last technical post about the Icosphere, we designed and employed a Coupled Ring Search to detect the observation region. This is the region that we will break down into descendant triangles when the observer draws near enough – and eventually, pack back up into ancestor triangles when the observer retreats far enough.
At this point in our development of the Icosphere, we can render our Abstract Icosphere. We can recurse the Icosphere uniformly and non-uniformly. Additionally, we can detect an "observation region" of configurable radius. In this post, we'll tie together all of the work we've done so far in order to make our Icosphere interactive. I've also put together a live, video software demo of the Icospherical World Model.
At this point, we have an Icosphere which we can uniformly recurse to any depth we like. We also know that we can asymetrically recurse any arbitrary face of the icosphere, but we have no system for detecting or determining which face(s) to recurse. Ultimately, we want the faces directly "below" the observer to be the faces under recursion - and the rest of the icosphere to remain unaffected.
We now have all of the information we need to harvest our mesh data from the Abstract Icosphere. We will begin with a simple Awake() method, which Unity will run before all else on program start. This awake method will initialize the icosphere, acquisition the Mesh from the Game Object to which this script is attached, initialize a few other variables which we'll come to later, and call our heavier methods, HarvestMeshData and CreateMesh.
Now that we have a basic unit Icosahedron, consisting of twenty indexed Triangle objects, all of which have adjacency knowledge, we are ready to begin recursing the faces of our Icosahedron to form an Icosphere. The recursing of the Icosphere would be a relatively simple task were it not for the fact that our triangles must maintain Adjacency data at all times. Maintaining adjacency data would also not be too daunting a task, were it not for the fact that we are planning on asymmetrically recursing this Icosphere.
In this post, we would like to use our atomic icospherical building block, the Triangle, to build up the basic Icosahedron, which is an icosphere of recursive depth zero.
PISES currently contains worlds and planetary systems which are completely abstract and without geometry. Worlds at the moment can only be interacted with by rifling through thousands of lines of log output, a task which I often relegate to scripts. Ultimately, we would like for worlds in PISES to be tactile and visual. We want worlds with geometry, that can be spun about like a globe, panned across, zoomed in upon.