The Two Nucleic Symmetries of Rhombohedral Tessellation

It was discovered through play that by wrapping the outlying vertices of a group of tessellated Rhombic Dodecahedra with a convex hull, an approximation of a Truncated Octahedron was produced.  Upon further investigation, it was discovered that an approximation of a Rhombic Dodecahedron emerged by wrapping the outlying vertices of a group of tessellated Truncated Octahedra with a convex hull.

The Rhombic Dodecahedron and its Strange Twin

A space-filling polyhedron is one that can be used to generate a tessellation in space. That means that by duplicating and translating (not rotating) the shape, we can create a three-dimensional tiling that leaves no gaps between its constituent shapes. This is of course easy to visualize with a cube; things begin to get both messy and interesting when you explore tessellations with other non-platonic space-filling shapes. And so began my brief but exciting journey into the lands of the Rhombic Dodecahedron.

Lerping Cameras in Unity

In Unity projects, especially for newcomers, creating a smooth camera action can be especially frustrating (it has always been frustrating for me). A camera script feels like it should be a simple piece of code, and generally, it can be – if you know the right API calls to make and how they work. This post describes the process of creating a simple, free-floating, lerping camera.

Recursing and Repacking the Observation Region

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.


As some of you might know, I moonlight as a musician. For the past two years, I’ve been working on a full-length record entitled Startide. I guess it should come as a surprise to nobody tracking this blog that it’s about, well, space.

The Issue of Scale

One of the most challenging issues in the Solar Scope is the issue of scale. On one hand, we want PISES to represent the realistic scales and distances between celestial objects – but on the other hand, we need PISES’ views to be intuitive, tractable and visually appealing.

The Paradox of Multiple Autonomous Entities in a Procedural Environment

The software user may be the one to trigger the generation of a new world, but they are not the only entity in PISES which may be autonomously exploring new worlds. A procedurally generated species in PISES may very well be conducting explorations of its own, which can sometimes result in paradoxical outcomes.

Propagating Orbital Bodies in Unity Gaming Engine

For the past few months, we have been working on generating an orbital hierarchy of a solar system. We then took this abstract hierarchy and ascribed it with a set of Keplerian Orbital Elements. Finally, we used these orbital elements to build up hard position and velocity data for our orbital bodies. We now have everything we need in order to render and propagate these orbital bodies in Unity Gaming Engine.

Generating the Positions and Velocities of Orbital Bodies

In our final step before visualization, we must actually generate a series of positions and velocities for these orbital bodies, so we can draw them to screen and animate them. At this point, we have all the data we need.

The Fall of Species -F978

…direct Ancestral Memory provided many survival advantages for this species (In fact, it was a random neurological mutation they received while still in pre-society). By directly inheriting their parent’s memory, the creatures were able to very quickly excel at anything their parents excelled at. If one parent was a brilliant mathematician, then so too would be their offspring; no need to spend decades in school to reach their parent’s level of skill (if the offspring even COULD reach the parent’s level skill). The skill was inherent, and for this reason, species -f978 was able to advance at an explosive velocity.

Generating Orbital Elements from Abstract Solar Hierarchies

We have managed to generate an abstract simplex solar hierarchy.
This abstract hierarchy contains no geometric data, only a binary tree of orbital nodes. We wish now to translate this abstract tree into a series of legitimate Orbital Elements, whose ellipses we want to render to screen.

Simulation Hypothesis as Deism

If Simulation Theory posits that this universe is an artificial simulation, it therefore supposes that something must have created this simulation. This proposal is synonymous with Deism (and possibly Theism), which propose that an intelligent god created our universe.

Monthly Media: August

It’s rare enough to find early 20th century science fiction which manages to hold up in the present day as anything but a nostalgic time capsule – but it’s rarer still to find a novel that not only holds up, but is also both entertaining and timely.

The Keplerian Orbital Elements and Orbital Perturbations

In order to ascribe actual orbital data to the various stars and barycenters of a solar system, we will need a way to describe orbits in PISES. In this post, we’ll get spun up on the 6 Keplerian Orbital Elements and what their limitations are.

Generating Random Simplex Solar Hierarchies and Architecture Discussion

In this post we will create a system which produces random, abstract simplex solar hierarchies for an N-ary solar system. We emphasize abstract here because these orbital hierarchies will contain no information about the actual Keplerian elements of the various solar bodies they describe: only their hierarchical arrangement.

Simplex Solar Hierarchies: Problem Specification

The “Solar Hierarchy” of a solar system in PISES describes how the various stars of an N-ary solar system arrange themselves. If this seems like it might be an unsolvable, n-body gravitational problem that would require warehouses full of supercomputers to model with even vague realism, it absolutely is. However, it turns out that most N-ary solar systems arrange themselves in such a way that can be simplified to a series of very manageable, idealistic 2-body problems.

Interaction with the Icosphere; Live Software Demo

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.

Detecting the Observation Region: The Coupled Ring Adjacency Search

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.

Monthly Media: June

Every month, I will be sharing some of the media that has been inspiring me and fueling my own creative energy.

Rendering the Static Icosphere in Unity Gaming Engine

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.

Recursion of the Icosphere and Maintaining Adjacency

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.

Building the Unit Icosahedron

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.

The Icospherical World Model: Problem Specification and Preliminary Data Structure

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.

Procedural Galactic Structures

PISES has already come a long way and is able to model a number of basic galactic structures along the Hubble sequence. This video provides a neat, top-level summary of how PISES forms galaxies, ages galaxies, and models gravitational interaction.

P.I.S.E.S. – The Story So Far

It’s 2014: my junior year of college. It’s 3 A.M. on a Saturday night, and tomorrow is the big day. I scan my notes, check my maps, make sure my minis are organized and my dice pools are set. Tomorrow is the final episode of our three-years long science fiction D&D campaign. It is the culmination and climax of hundreds of hours of writing and hundreds more hours of play.

Introduction and Full Disclosure

Hello! My name is Keegan Tawa, and I’m a 27 year old Software Engineer from Philadelphia, US. I have a Bachelor’s of Science in Computer Engineering from Penn State, I’m an active musician, a practicing martial artist and have a passion for Science Fiction and space exploration.


Success! You're on the list.