Reminders:
Mini project 1: Lantern (finally) due Thu 3/5, please bring to class on Tue 3/10 to show off!
PullupStructs: Digital Fabrication for Folding Structures via Pull-up Nets
One String to Pull Them All: Fast Assembly of Curved Structures from Flat Auxetic Linkages
For your next mini project, you will need to use the algorithm to decide where to put the holes on the polyhedral net you chose in Waypoint 4: polyhedral nets.
To get there, you'll spend today In pairs or trios (or more!):
Your goal: use the algorithm presented to decide where to put the holes on the octahedron and the dodecahedron
A suggested "algorithm" for how to learn the algorithm!
This is my starting point, but you should figure out what works for you! (This is the "plan" in plan/do/evaluate)
[Do] Take 20 minutes to engage with the provided resources. Read the research article and figure out where the algorithm is presented.
You can also use any other resources!
[Evaluate] Pause. Try to write down what you do (not) understand.
What terms did you see that you knew?
What terms did you see that you do not know?
Are they being defined just for this paper?
If an example was provided, do you understand it?
Could there be typos?
Do you think you can apply the process to a new (simple) example?
What are the simple examples?
Tetrahedron, cube, octahedron...?
[Revise plan]
Inventory your resources -- what is available to you?
Identify what you think needs to be clarified.
Are there parts that you think can be left as a black box or aren't relevant?
The algorithm is described in section 3, which is copied below
We looked closely at Figure 4 to help decode the text and verify our interpretation of it.
We started with the paragraph "Join vertices"
We think the line below means : find vertices whose number of net faces is the same as the number of polyhedral faces. For example, the green vertex in the polyhedron is adjacent to 3 faces of the cube; since it is adjacent to 3 faces in the unfolded net, it satisfies the condition.
We identify vertices in the net that are already adjacent to n connected faces, where the vertex is adjacent to n faces in the 3D mesh.
We suspect this is equivalent to:
"interior" vertices of the net
vertices from the polyhedron that only appear once in the net
indeed, the first sentences indicates that this process is attempting to find the ones that must be joined... so this first set are ones that DO NOT have multiples?
Then we think the next sentence says to "breadth-first" traverse from all these starting vertices and label each layer. (If a vertex is already labeled, we do not expand the traversal to it, as illustrated by the blue 2s.)
For each of these vertices: the vertex will be adjacent to two boundary edges in the net. The vertices at the other ends of these edges will need to be joined, and we sore these two vertices in a set and mark their rigidity depth as 1.
This section introduces our algorithm for constructing an optimal net and string path for a given 3D mesh (Figure 4).
Unfold the geometry: We begin by generating unfoldings of the mesh using a set of heuristic algorithms, including a steepest-edge cut tree, greatest-increase cut tree from Schlickenrieder [24] and a naive breadth-frst unfolding from the largest face. If no non-overlapping nets are found, we randomly split the mesh in half (e.g., by cutting along edges that are nearest to a plane that passes through the center of mass) and repeat the search on each half.
Join vertices: Next we use a breadth-frst search to identify pairs of vertices that need to be joined (Figure 4): We identify vertices in the net that are already adjacent to n connected faces, where the vertex is adjacent to n faces in the 3D mesh. These vertices have a rigidity depth of 0. For each of these vertices: the vertex will be adjacent to two boundary edges in the net. The vertices at the other ends of these edges will need to be joined, and we sore these two vertices in a set and mark their rigidity depth as 1. Next, we join any sets with overlapping vertices. We fnally iterate this joining procedure through the vertices of rigidity depth 1, until all vertices have been marked.
Prune unwanted connections: We next remove unnecessarily joined vertices. The criteria for removing a vertex from a joined set are: (1) if removing the vertex from the set leaves only one vertex, then the other vertex must also be removed; (2) one of the vertices in the set must be connected by a single boundary edge to a joined vertex of greater rigidity depth; and (3) removing the vertex must leave each face with at least three joined vertices.
Optimize string path: Using the fnal set of vertex sets to be joined, we lastly fnd the string path that passes through each pair of joined vertices which minimizes a combination of its turning angles and total length. If the mesh has been partitioned into multiple pieces, we optimize the string path on each piece separately.
Figure 4: (A) Illustration of the algorithm to identify vertex sets that need to be joined by string. Color represents vertices of the net that are joined; numbers represent the rigidity depth of each vertex. Small arrows indicate the direction of the search from each vertex. Additionally, vertices of rigidity depth 1 do not need to be joined by string in order to assemble the fnal cube. In the 3D inset, cut edges are indicated by dotted lines. (B) The same concept illustrated with a portion of a dodecahedron net. The vertices of depth 1 and 2 do not necessarily have to join in order to determine a fully-joined geometric structure. Adding strings between all of these vertex pairs would require at least twice the amount of string, and would likely need to accommodate several sharp turns in its path, therefore increasing friction during assembly and complicating the assembly process. Depending on the assembled object’s function and expected load, this may be a worthwhile tradeof for extra rigidity in the fnal structure.