Various cutting methods in foreach loops. Initially some points are selected based on a colour range and cuts are made from those in random 90° directions. Then some faces are deleted based on area. Then another round of cuts are made on another group of remaining faces based on area using an upper and lower limit. That second round of cuts produces different shapes to the first round. Finally a random polyextrude adds a random height to each block.
I've started a 30" x 40" photorealistic oil painting based upon my render for this image and that will be completed by around July/August 2018.