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.
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.
Love your work, but you should really consider 3Ds max design!
ReplyDeleteI know, I know. Not that I want to abandon doing funky stuff in Revit, but I would love to bring 3Ds into my workflow. Just need to find another 2 or 3 days in the week :)
ReplyDeleteBut, if he didn't do this stuff in Revit, who would? ;) Besides, Character rigging in 3DS Max wouldn't be much of a challenge.
ReplyDelete