Nathan Koch

Procedural Systems: Week 4

Sunday, July 1st 2018

Week 4: Project One

Week 4 1

This week I decided to create a set of procedurally generated spaceships inspired by No Man's Sky. My goals were ambitious:

  1. Box-up model a ship.
  2. Reverse-engineer that model parametrically.
  3. Add "tuned" controls that keep those settings within sane ranges.
  4. Hook up those controls to one central random seed, driving the entire ship-generation engine.
  5. Calculate the UV's for the ship based on the above parameters.
  6. Texture the ship accordingly.

I found myself caught looping through steps 1 and 2 of the above for most of the week. I'm an inexperienced modeler, and adding the complexity of accomodating future parametric tweaks to a model while in the process of building it, turned out to be unexpectedly difficult.

In order to continue to make some progress, I kept the base mesh fairly simple with limited details, and only about a dozen parameters. Keeping those parameters in sane ranges across a huge range of different ship body sizes turned out to be difficult, leading to a dense web of expression references on top of the visible lines in the below network diagram:

Week 4 screenshot

As a result, I ended up with manual parameters like "z-scale offset" and "x-balance" that weren't really randomizable. The ship images below were created parametrically, rather than procedurally.

Week 4 2 Week 4 3 Week 4 4 Week 4 5

If I continue with this project, my goals will be to reverse-engineer these parameters into a framework that generates ships with "one button" as well as making sense of dynamic UV map calculation and properly texturing some ships. As a stretch goal I would love to also add more detail to these meshes, more inset pieces and external equipment to add detail and ambient occlusion.