Origami and The Context Aware Panel: being a good neighbor

SANYO DIGITAL CAMERA

I was looking at these fantastic modular origami tesselations and thinking (as I tend to) “Vasari Panel?  Sure!”

2013-01-07_2314

2013-01-19_0000

Turns out origami is hard!  One of the first issues that comes up is that each panel needs to have some amount of awareness about what its neighbor is doing.  In general, Revit/Vasari panels operate in isolation, each one’s behavior having very little, if anything to do with the panels that it shares edges with.  For most cases, this is fine, as the creation of seamless relationships can be handled by referencing shared point normals. In this case, however, there turn out to be more than one place where geometry in PanelA needs to reference the same geometry as PanelB. 

The kernel of this solution is a 9 point adaptive component that is repeated 4 different times over a surface. The center of a 9 bay grid defines the center of any given panel, and the remaining 8 reference the centers of all neighbors. 

2013-01-19_0822

With this solution in mind, let’s take a look at our origami pattern

2013-01-13_0803

If you break the pattern down into repeated elements, at first you can do the standard thing of identifying a rectangular set of points. 

2013-01-13_0804

Here I am identifying the low point of each module and just connecting the dots.

2013-01-13_0813

That module is built on a “seamless panel base”, where I just look at where are the lines intersect with an imagined cubic space projected off the surface of the form, and connect the dots.

3D View 1

2013-01-13_0827

Q.E.D., right?  Now we can all go back to doing important work, please?

NO!  This solution leaves out an important piece of information

2013-01-13_0822

Look carefully at the resulting pattern, and you will see a kink in what should be a straight line connection between the high points of the modules!

2013-01-13_0808

Each panel piece needs to REACH OVER into the neighboring panel and make a straight line connection between interior geometry in itself and interior geometry in the neighbor!

SANYO DIGITAL CAMERA

A minor detail?  No!  This simplicity is what lends clarity and readability to the pattern.

In a completely flat, regular system, this would be no problem, as there would be no kink.

3D View 1

But with irregular curvature, where angles are changing, you can’t pre-calculate where that reach-over is going to need to land.

What’s a  girl to do?

If you conceive of each high, square area as the center of each module, each panel needs to know about 4 other similar centers:

2013-01-13_0839

But with this configuration of 5 points, you can’t determine the extents of each cell.  For that you also need to get the geometry of the centers of the remaining 4 corner neighbors.

2013-01-19_0748

Therefore, for every one cell that gets placed, it must have one point to identify its center, and 8 to identify its neighbor’s placements.

2013-01-18_2242

So you have a 9 point adaptive component where point #5 represents the center of one square we will model, and the remaining 8 points represent the neighboring cell centers

2013-01-13_0905

If you connect #5 diagonally to the corner neighbors, you can derive the lines out from the center that will define the lowest points of the pattern. 

2013-01-18_2228

Imagine that points  2, 4, 6, and 8 will similarly be the center of their own high, square areas and connect them

2013-01-18_2224_002

Host points at he intersections and you will have the corners of the lowest points of the pattern.

2013-01-18_2224

These corners are where the panel will connect at the lowest point with its neighbor

2013-01-19_0751

Ok, head hurting?  Hang on, it gets worse.  This is a fully 3 dimensional pattern, that offsets from an arbitrarily curving surface.  So we need to attack the Z-direction by placing points on the horizontal workplane of each adaptive point and offsetting the desired thickness.

 2013-01-18_2247

Connect the diagonals again and we can define the high, square area.

2013-01-18_2302

Now we connect more dots to create the folds:

2013-01-18_2342 

One last piece.  We place 4 of these little monsters on our divided surface, overlapping so that each block of 9 control points relates to its neighbor.   Note that there are multiple areas of alignment in 3 dimensions of neighboring panels.

2013-01-18_2347

Select each of the 4 families, one at a time, and hit the Repeat button:

2013-01-18_2349

This will result in 4 different Repeater elements on the surface.

2013-01-18_2351

Tada!

There are still 3 missing features that are not solved with this.  1.  Edges only match up on surfaces that have planar panels: revolves, translation, single curvature, and flat surfaces. Paper will stretch, crinkle and bend a little, mine doesn’t.  2. The high, square areas do not rotate, that is, they stay in a gridded orthogonal relationship to each other.  In the actual origami example, they rotate against each other.  3. Perhaps more interestingly, there is no necessity for the panel elements to remain dimensionally static while only changing their angular relationship.  I think there is some interesting math to be done that might solve this last problem, and I can approximate it with some formulas that adjust the height of the family with changes in size of the cell, but it isn’t perfect.

unfold_loop

(animation made with BoostYourBIM’s Image-O-Matic and Gimp)

2013-01-11_2322

2013-01-19_0859

 

Download the family from here.  ContextPanel_seamless.rfa is a base family that can be used to make your own patterns that need to reference neighbors.  ContextPanel_hosted has the origami panel module hosted 4 times on a surface.  Select each one and Repeat for each to cover the surface.

Suggestions for improvements or totally alternate approaches welcome!

Comments

  1. You are MUCH to brilliant for me my friend... I will definitely have to take some time to digest this post.

    ReplyDelete
  2. Is this going to simulate folding like how Kangaroo already does?

    ReplyDelete
  3. Nope, this isn't a physics based simulation. This is using the logic of a modular origami to inform a parametric system. Pretty different thing.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. This comment has been removed by a blog administrator.

    ReplyDelete
  6. Hey Danny P. Sorry, I accidentally deleted your post. This book does look awesome:
    http://www.amazon.com/gp/product/1856697215/ref=oh_details_o00_s00_i00

    ReplyDelete
  7. Hi there - this is a fantastic post, I'm enthralled.

    as an origami artist who specializes in tessellations, it's very interesting to see people approaching these topologies from a completely different viewpoint!

    ReplyDelete
  8. Hi Eric!
    Wow, I'm a big fan, thanks for commenting, and my apologies for playing fast and loose with your honorable discipline :)

    ReplyDelete
  9. Stealthnyc,
    Yep, nothing you are doing worng, I bet you a donut the problem is that, if you look in the draw gallery, you are set to "draw on workplane". Switch it to "draw on face" or just type "DF".

    ReplyDelete
  10. When I'm trying to place host points at the intersections something goes wrong. The center snap is turned off, and it shows the intersection snapping, when I place points, but in the final component lowest points still connected to centers of diagonal lines, so that lowest points of adjacent components a bit deviating from each other.

    ReplyDelete
  11. and which orientation type do You use for adaptive points?

    ReplyDelete
  12. to make the lowest points to be in the same place within adjacent components I used a little trick: two corners use midpoint of 2-4 and 6-8, while two others use midpoint of 1-5 and 5-9
    thus adjacent components has their lowest points in the same places, thou they are not at intersection of rectangles' diagonals.

    ReplyDelete

Post a Comment