Credited the ThreeJS demo that this is based on.