203 — Automatic Machine Knitting of 3D Meshes
Narayanan et al (10.1145/3186265)
Read on 11 March 2018How often have you generated a model of a gear or mechanical component in CAD software and then thought, “aw gee, I wish I could cuddle this!”? Because that happens all the time.
Previously, there was no good, reliable way to generate knitting patterns from an arbitrary 3D mesh. In fact, it wasn’t even an easy matter to determine if you could knit an arbitrary mesh. The geometry of certain shapes, after all, make them unknittable in their native 3D form. (Naturally, it’s a lot easier to make a shape out of planar components that are then stitched together. But that’s a solution to a different problem.)
This procedure automates the knitting of complex 3D shapes using cylindrical primitives, which enables a machine to generate the full shape using fully automated processes, without the need for a human plane-stitching step. Cylinders can meet or change in size, but they cannot intersect. (Intersection works only with “ideal” zero-volume yarn, which is not a real thing.) Corners or endcaps can be represented by a scale-change of the cylinder to zero or near-zero.
Can a mesh be represented by a manifold $\mathcal{M}$? If so, $\mathcal{M}$ must have two boundaries (a start and stop point) and must be oriented (since the cylinders can’t change orientation on the knitting machine). It also means that the constituent cylinder components do not cross, and a function $f$ which traverses the manifold $\mathcal{M}$ from the start point to the stop point is a Morse function whose only extrema are the two endpoints.
This can be augmented by checking for a Reeb graph — essentially a directed “skeleton” of the mesh — which acts as the loading directions for the cylinder components.
The team produces optimizations that improve the quality of knitting steps: This includes reducing the occurrence of “helix” structures in the pattern by adding short-rows, and converts all stitch expansion or reduction steps to ${2, 1}\rightarrow1$ or $1\rightarrow{1, 2}$ so that it remains knittable on machinery.