Thursday, October 24, 2013

PUMP IT UP

This is quite ironic.  I'm doing a pumpkin piece as a kind of diversion, an  aside ... a pause to gather my breath before returning the the real business.

Can't even remember what set this off.  And it wanders all over the place.



It starts with a globe & a 9 point adaptive component.  It's a way to get a curved skin instead of the normal faceted, curtain panel look.



I want it to be scaleable, so the offset in the middle has to be related back to the width of the panel.  Which means "reporting parameter".  There is a very unhelpful message that sometimes pops up.  It almost had me fooled that I was trying to do something impossible.  Slowly the memory cells kicked in.  You need to dimension to the ref planes, not the point itself.  If only the message said that.



So what makes this different from my profile based pumpkins? The fact that I can vary the number of lobes.  That's the benefit of the repeater/divided surface approach.



And now that the reporting parameter trick is working the curvature of the lobes is consistent, from pole to equater & back again.



The underlying "globe" is lofted from profiles.  So we can make high-waisted versions, "squarish" versions etc.



Interestingly the number of lobes will reduce right down to 2, which is a bit odd.  3 is quite interesting though.



Inevitably I find myself growing mushrooms again.


At this point I just placed a 9 point on the deck & played around with the points.  It started to look like a manta ray and I thought about hanging one inside a box rig.


This didn't really work but it got me to thinking about shell roofs and Alfredo's excellent session at RTC Auckland.



Which brings me back to abstraction & simplification once more.  I realised that Alfredo had simplified some of the forms for didactic purposes.  I had been trying to create curved valleys and getting odd results.  He had wisely kept the valleys straight.  (Keep it simple - applies to everything, but especially teaching)



But how would you tackle a more accurate shell roof with curved valleys ?  My first attempts produced a surface with an off-centre seam.  Revit is looking for the nearest straight line, which in a hypar is always off at an angle somewhere.  Orthogonal sections will always give you a curve.  By the way, what a shame that we can't set a transparency for lines (over-ride graphics by element)  I would have like my red arrows to be slightly transparent.



I took a break and made some saddle shapes.  Just 3 curves hung on a cube rig.  Select them and create form.  Very simple and easy to flex.

Then it struck me that this could be a solution to my circular array if I just cut it with a void. The first version I made was symmetrical so you could only have even numbers of bays.  



Took a while to get this working in a circular repeater.  You have to link up the parameters and use a bit of trig so that the cut angle and the length of the nested family match up with the radius and number of segments in the host repeater family.  Not too hard.



Then I rebuilt the family from scratch to make a single bay version.  Simplified the construction slightly.  It's easier to make the cut as a solid at first (so you can see it) and convert it to a void once you are happy.



Nest it up in the same way and we are in business



Put in a bit of work manipulating the parameters so that all the lengths are functions of the radius.  Now you have a scalabel family with variable number of bays and controls over proportions.



Time to scatter a few around, explore the variants and set up a render.
 I'm happy with that.  A nice morning's work.



So back to pumpkins.  What about using a similar approach ?



What I came up with is a variation on the box rig.  Kind of a box with the corners cut off.  Use it to hang profiles on.  Pumpkins.



Not just surfaces, but solid pumpkins with a hollow centre



Oddly I managed to create self-intersecting geometry that didn't keel over and dime.  Kind of a ghost pumpkin.  Very weird.

It gets to me that sometimes you are trying to do something that seems perfectly achieveable and Revit just gives up.  Then you attempt something really impossible and Revit goes ahead and makes it. All part of the fun I guess.



Finally I found myself making domes.  Pumpkin domes.  Garlic Domes.  Domes with a wall thickness to them.  AND very parameteric.



So I really couldn't resist making up a building for them.



Had to be a Russian style church/palace.  Just a little fantasy.


So that was a weekend spent playing with pumpkins, more or less.  First weekend in October to be precise,

UP IN ARMS

These explorations took place about 6 weeks ago.  I went down a couple of blind alleys, or perhaps that is the wrong expression.  They were alleys that will almost certainly lead somewhere very interesting, one fine day.  But not today.  First thing you learn as an architecture student.  Don't get seduced by clever ideas.  Address the programme.



First idea was a box rig.  Wasn't quite sure how to use this to best effect, so the arrangement of rungs is a bit arbitrary. Tried hanging some ref lines first to simulate the variations in leg shape and proportions that might be possible.



The actual leg was going to be three instances of a two point adaptive component, nested into a 4 point adaptive.  Thigh, calf & foot.



Loaded into the box rig it seemed to have a lot of potential. Plenty of variation, from humanoid to frog-like.   But how to control the proportions of each segment in a coherent manner ?



I set up separate slenderness & bulge factors for each of the 3 components.  So you can create a named type, say "Frog" and set an appropriate box shape.  Then you tweak the slenderness & bulge factors until it looks right.  So far so good.



Obviously you need a pair of legs.  Link them together with a line representing the pelvis.  3d snapping will attach it to the "hip joints".  The next part is inspired by Marcello's famous hydraulic lifting family.  Host a circle on a point and a line from the centre to the circumference can be driven by an angle parameter.  Very stable.



So I've got a spine with a variable angle.  Easy enough to mount shoulders and neck on the end.



The neck angle & length (radius) follows the same principles as the spine. Parameters mounting up here.



By the time I add a couple more leg families to act as arms it's all getting a bit too complicated.  Angles coming off other angles, bulge factors coming out of my ears, and to top it all, they all look a bit insectified.  Not sure this is heading in the right direction.  Getting rather confusing for the end user.



Also I have the feeling that I need some kind of universal joint.  Isn't that what happens at the shoulder ?  More or less ?  I got an idea in my head about 2 semicircles at right angles.  One rides on the other, and the arm rides on that. If you can keep that assembly vertical you don't have to worry about compound angles any more.  Just one parameter for up/down angle and another for back/front.



That worked pretty well, but then I got the itch to play with vanilla again.  How far could I get with trying to do this kind of thing with ref lines in a standard Generic Model template ?



This turned out to be quite a revelation.  We all know that straight ref lines in vanilla are basically the same as the ones in Conceptual Massing.  They have planes at right angles running all the way down, and two more at right angles again closing off the ends.  You can surely host ref lines on the planes of other ref lines.



So the same concept of "up-down" & "back front" angles for the upper arm can be achieved using vanilla by hosting a ref line on the plane of another ref line (both locked to the same shoulder point)




I used a rectangular extrusions to represent the shoulder blades.  These remain vertical of course. You have angle up and angle back from the shoulder and an angle for the elbow joint.  Forearm ratio above 1 makes it bigger than the upper arm.  Below 1 has the reverse effect.  "Scale by forearm" sets the length of the forearm and is intended as a basic module for scaling purposes.  For example, "slenderness" is used to calculate the radius of the sweep.



How is this going to fit into a body plan ?  I felt the need for a diagram to guide me.  And what better drafting software than revit itself ?  The legs "grow" upwards from the ground, controlled by a "Pelvis Height" parameter.  The trunk (torso) needs to move up and down with the pelvis and swivel between almost horizontal and almost vertical.



Note how I naturally switch into orthographic mode to draw these abstractions that will guide me in the building process.  The power of orthographic is awesome, and one of the fundamental reasons why the BIM approach to modelling wins out over Max or Sketchup (for example) when you want to design something that will be manufactured or constructed by a third party.



My first attempt at building this tetrapod uses the universal egg as torso.  And it looks like a promising approach at this stage. Reptile, primate, hoofed mammal.



Then I experimented with a revolve for the torso, hosted on a rotating ref line.  I think this was my first time to use trig functions in Revit formulae to calculate the length and angle of a hypoteneuse.  Nice to know that I still remember this stuff after 45 years of neglect :-)



So I can get within say 1 degree of horizontal or vertical using the Length & Height parameters for the Torso.  Not quite the total freedom of the points riding on circles.  But this is good old fashioned, stable, vanilla.  Let's continue



This is a snapshot of my vanilla experiments so far.  Arms on their own.  Loosely assembled tetrapods, and tetrapods with rotating torsos.  All headless at this stage.  (and no hands, feedm, hooves, claws)

So I add a basic "Bird" (or Bat) body plan.  Stretching out the arms sideways.  And I bring in some heads and place them roughly where I want them, within the project environment.  I think this is about the right level of abstraction.



all very clever, but I couldn't help feeling that the original tetrapod made up of box rigs was rather simpler, potentially much more user friendly.

Another thing worries me.  The legs and arms use a rather different approach.  They are not true serial homologues of each other.  This is rather un-biological.  Basically all appendages are descended from a common root.  So I make the executive decision at this point to flip back into "Point World" and the original conception of box rigs.



One thing I did get out of the vanilla detour.  Keep the limbs cylindrical.  It's a more appropriate abstraction.  All those cigar shapes are too distracting.  Cylinders are much more neutral.  Allow the variation in size & proportions come to the fore.

So ... Generic Model Adaptive.  Set up ref planes.  Make two boxes with a gap between.  Parameters to control the lengths of the 3 sides, plus one more for the gap.



erect ladders using 3d snapping.  Hang sweeps on these to represent limbs.  The knee angle can be varied and/or reversed to form an elbow by varying the position of a point along a line (Normalised Curve Parameter)



This family is a generic "pair of limbs"  Nest 2 of these within another family which contains another Box Rig to control the torso.  The box for the arms is controlled by the same "pelvis height" parameter as the legs.  So a horse or a dog will stand on all fours (almost).  The offset from ground for arms is rigged up to equal the torso height (by a slightly devious method, hence the "xxx" label)



I will be uploading the families next week so you can figure this out if you feel the need. Basically both pairs of limbs grow upwards.  The legs are hosted on the base level, the arms are hosted on the base of a box.  This base of the box is "xxx" above the pelvis



At this stage the foot/hand/paw is included in the sweep.  Just the fingers are missing.  Later on I changed that.  The whole thing flexes quite nicely.  The torso is lofted from 3 circles (later 3 ellipses)  Simple enough, but you can control the amount of the bulge and whether it's up towards the shoulders or down in the beer belly.



You can also play around with ankle and toe positions.  I already mentioned the knee/elbow switch.  So this post ends with a snapshot of 4 abstracted body plans.  Have I found the right balance between variability and user friendliness ?  I think so.  The most expressive part should be the heads and hands. for primates at least.  So keep the rest simple.