This is my entry into Zach Kron's 6th Annual Parametric Pumpkin Competition.
I have wanted to enter this Competition for a few years, I finally got my act together and put something together. The following is a bit of a journal of my entry.
The concept was rather simple, create a Lego family that can be applied to Mass forms to give the effect that it is made out of Lego. From this simple concept began a very long journey of experimentation and refinement.
My initial inspiration was to create a family that was nested into a curtain panel pattern based family that was then loaded into the divided surfaces of the mass forms. It all went really well, I got a fairly simple parametric Lego block modelled, not too many formulas, and loaded it in did some testing and it worked great....then I started to make a few refinements.....What about if the Lego block got very narrow and how about the buttons on the top and the circular voids below? Then how about being able to apply different coloured blocks, pretty boring if they are all the same colour!!!
First things first, getting the Lego block modelled properly….. so the family now has some formulas that control the buttons on the top and the circular modelling underneath all controlled by the length of the block. I made the Lego size correspond with a typical concrete block module size (standard in Australia), 200mm wide 200mm high and 400mm long (with the length being flexible). An added little bonus is that if we want an actual real life Lego block size I put in a scale factor parameter that would scale everything down to an actual Lego block size, 16mm wide 9.6mm high and 24mm long. The last step was probably a bit of overkill but I wanted to push the family. (I thought I would even put the word Lego on the top of the buttons but that would be going too far......it was already going to take ages to populate the mass!!!)
The model now worked fantastic, and could be applied to forms as a curtain panel pattern.......
The next step was the colours......this I found to be much more of a challenge....I have a randomiser add-in so I though great, use that.....but it only works in a project file and it will not work on the individual blocks in the Curtain panel....We also use BIMLink, I created some individual materials for the Lego colours and then I created a schedule, exported it out and using excel to randomise the materials imported it back in to my model.....same result, you can't individually control the materials of a curtain pattern family. I then had a look at creating a filter to change the colours of the Lego blocks based on their length, this worked great but I thought it was sort of the easy way out and it created bands of colours in my model, not really the random result I was after. So back to the drawing board....then I decided that I needed to look at using a different family type. So I hosted the Lego block into a 2 point adaptive family and then loaded it into the mass on the nodes of the divided surface. Then using the repeat tool, I created my logo blocks. Worked great (almost), unfortunately I had the same problem with randomising the colours as I did before. This is when I thought about a reactive component. So placing a control point in the adaptive family I created a sin wave formula and used family types to create the randomness. This was the answer and when it was loaded into the mass family with a control point I got my random blocks, plus you can change the randomness by moving the control point. Hooray!!!
It was ready to go.
I tested it, hosting it into a few different forms and it worked great. It was ready for the pumpkin.
Creating the pumpkin form was relatively easy in comparison, creating a profile from a couple of reference circles and hosted points (using the measurement type and specifying an angle), some splines for the segments, overall radius parameter controls it all. This then gets loaded into my pumpkin mass hosted to a few reference planes and then created the form and dragged the top reference plane down to create the shape. Same process for the little stalk at the top. Parametric Pumpkin Done!
The pumpkin was ready to be Lego'ed......
The surfaces were divided up and nodes activated, the U and V grids were adjusted to allow the blocks to stack nicely for the heights, and an ok length for the grids set. Then I started placing the Lego into the individual segments. Each segment took Revit about 15 minutes to repeat the component pattern, a bit of a side effect from having such a detailed Lego family. To add a little bit of a bonus I created the stalk of the pumpkin using my actual real life Lego blocks, 9.6mm high!!! In total there are a total of 22752 Lego blocks in the pumpkin (4212 Big blocks and 18540 Actual size), probably a good reason why it took hours to transform it into Lego. The mass family file size is now over 100Mb!!!
Happy with my result, I had to now get it into a project so that I can produce some renders.....Let me just say that Revit does not like Mass families that big! A straight insert didn't work, so I had to insert a basic mass pumpkin form with the same name to get it into the model and then reload in the Lego pumpkin over the top, this actually took overnight to get into a project file!!!
With the final mass family in I was able to render the file out, and schedule all of the blocks.
I was also wondering how it would go rendering it in 3DS, so I exported an FBX and loaded it into 3DS (also left for overnight). What was surprising....26 million polygons.....and it still rendered fairly quickly.
So in conclusion, my simple idea of creating a Lego Pumpkin turned into an epic task, but so worth it!!!!
PS. I take responsibility for creating more detail in my Lego block than probably required but I really wanted to push Revit to see if it could handle it. In the end Revit was able to do it, but I don't think I will get a Christmas card from my computer this year.....