Skip to content

IxxyXR/polyhydra-upm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polyhydra

This version is no longer being developed but I'm keeping it around for reference and backwards-compatibility.

All future dev will happen here: https://github.com/IxxyXR/polyhydra-core

Screenshot

A toolkit for the procedural generation of geometric forms in Unity. The above image is from a VR piece I made using it called "Gossamer" that is currently exhibited in the Museum of Other Realities: https://andybak.net/gossamer

Getting Started

  1. Download or clone the repo.
  2. Open it via Unity Hub in an appropriate Unity version (same or slightly newer should be fine)
  3. Open any of the example scenes and have a play

Alternatively you can install just the necessary package using the Unity Package Manager and this url: https://github.com/IxxyXR/polyhydra-upm.git

(See https://docs.unity3d.com/Manual/upm-ui-giturl.html for more info )

Try it on the web

This is one possible UI that I started working on: http://www.polyhydra.org.uk/media/fastui/ Only a prototype but a quick way to get an intro into one possibly application of this toolkit. Keyboard controls listed onscreen Experimental and a bit buggy. Save often...

NOTE! - keyboard controls only in this particular web version. (It's keyboard only because it was a variation on a UI I created originally using MIDI devices which was a really nice tactile way to create - but difficult to share with people who didn't own the same MIDI controller as you - hence this version. There is a more conventional mouse+keyboard UI here: https://andybak.itch.io/polyhydra - but it's more clunky and less immediate )

Features

Basic workflow is:

  1. Start by generating a base 3d shape
  2. Apply a Conway operator or similar modifier to some or all of the faces based on some rules
  3. Repeat
  4. Gasp in wonder at the beauty of your creation.
  • All (but one) Uniform Polyhedra using the Wythoff construction
  • Johnson(-esque) polyhedra - Prisms, pyramids, cupolae, rotundae
  • Most Conway operations are implemented and are parameterized and chainable. Can be applied to a subset of faces based on simple filters or complex rules
  • Regular tilings of the plane with various deformations
  • De Bruijn multigrids
  • A port of the Isohedral tilings from tactile.js

Credits

As far as possible I'd like to licence this under the MIT licence or similar but the code has a complex heritage.

Obviously the original work by Willem Wythoff and John Conway. And also countless other mathematicians who have formed a base for, contributed to and extended the work in this area. A special shout out to George Hart who is often co-credited with Conway due to the large amount of work he did exploring and extending Conway's original operators.

The actual Wythoff code was based on https://github.com/kaonasi (which in turn is based on the work of Zvi Har’El: http://www.math.technion.ac.il/S/rl/kaleido/ Zvi Har'El has sadly passed away. I've tried to contact all potential copyright holders to see if it's OK to make use of their work as a basis for this but I've had no luck in getting a response. Please get in touch if you're an interested party)

Conway operator code and the core halfedge mesh is based on work by Will Pearson @mcneel which can be found here: https://github.com/pearswj/buckminster

Multigrids is ported from work by Wolthera van Hövell tot Westerflier for https://github.com/kde/krita - they generously agreed that my version could be MIT licenced.

Portions of grids.cs is from Antiprism and is MIT but should be attributed to Adrian Rossiter and Roger Kaufman: https://github.com/antiprism/antiprism/blob/master/COPYING

Isohedral tilings are from tactile.js https://github.com/isohedral/tactile-js Thanks to Craig Kaplan @TriggerLoop

Triangulation code is from https://github.com/gpvigano/AsImpL

My original inspiration was 3DS Max's Hedra plugin which kept me entertained for quite a while nearly 2 decades ago. I think credit for that is due to Tom Hudson :-)

Screenshot