
Unformatted text preview: Knitting with Directed Graphs by
Jared B. Counts B.S., Massachusetts Institute of Technology (2017)
Submitted to the Department of Electrical Engineering and Computer
Science
in partial fulfillment of the requirements for the degree of
Master of Engineering in Electrical Engineering and Computer Science
at the
MASSACHUSETTS INSTITUTE OF TECHNOLOGY
June 2018
c Jared B. Counts, MMXVIII. All rights reserved.
○
The author hereby grants to MIT permission to reproduce and to
distribute publicly paper and electronic copies of this thesis document
in whole or in part in any medium now known or hereafter created. Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Department of Electrical Engineering and Computer Science
May 25, 2018
Certified by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hiroshi Ishii
Jerome B. Wiesner Professor of Media Arts and Sciences
Thesis Supervisor
Accepted by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Katrina LaCurts
Chair, Master of Engineering Thesis Committee 2 Knitting with Directed Graphs by
Jared B. Counts
Submitted to the Department of Electrical Engineering and Computer Science
on May 25, 2018, in partial fulfillment of the
requirements for the degree of
Master of Engineering in Electrical Engineering and Computer Science Abstract Knitting has historically been communicated by its means of construction. For hand
knitting, this is typically a list of instructions or a pictorial grid with knitting symbols. For machine knitting, a similar pictorial grid is used to express needle-level
instructions. However, these formats suffer by the nature of their tight coupling with
the method used to construct the garments they represent. Alternatively, we use
Knit Meshes, which represent knitting structures by their geometry separate from a
directed graph description of their topology. This thesis presents an algorithm that
can generate a natural, deformed two-dimensional layout of Knit Meshes as well as a
conversion pipeline that converts written hand knitting instructions to and from Knit
Meshes and an algorithm that converts certain Knit Meshes into knitting machine
code.
Thesis Supervisor: Hiroshi Ishii
Title: Jerome B. Wiesner Professor of Media Arts and Sciences 3 4 Acknowledgments I would like to show gratitude to girlfriend Catalina Nguyen for all of her love and
support over these last 3 years. Her positivity and affection has kept me sane through
difficult times.
Thanks to Professor Hiroshi Ishii for his countless opportunities given to me during
my time here at MIT. It has been an amazing privilege to work with someone with
his energy and insight.
I had a tremendous time working with my colleagues in Tangible Media Group.
The group administrator Deema Qashat has been a crucial part in the success of my
thesis. My mentor Jifei Ou has been incredibly helpful in his counsel and creative
ideas, and without his help I would have had little direction.
This research was made possible thanks to Shima Seiki and Matsuya for providing
access to their knitting machines. 5 6 Contents
1 Introduction 13 2 Background 15 2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Knit Mesh
3.1 15 17 Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1.1 Related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2 Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.3 Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4 Shape Prediction 23 4.1 Related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2 Distance Metric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.3 Embedding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.4 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Algorithms 5 Hand Knitting 31 5.1 Virtual Hand Knitter . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.2 Instructions to Knit Mesh . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2.1 Hand knitting procedures . . . . . . . . . . . . . . . . . . . . 34 5.2.2 Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7 5.2.3
5.3 5.4 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Knit Mesh to Instructions . . . . . . . . . . . . . . . . . . . . . . . . 39 5.3.1 Node Processing . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.3.2 Pin to stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.3.3 Node dropping . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3.4 Decreases and PSSOs . . . . . . . . . . . . . . . . . . . . . . . 44 5.3.5 Other additions . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.3.6 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6 Machine Knitting
6.1 6.2 51 Generating Knitting Machine Code . . . . . . . . . . . . . . . . . . . 53 6.1.1 Related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.1.2 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.1.3 Virtual Knitting Machine . . . . . . . . . . . . . . . . . . . . 55 6.1.4 Machine Knitting Graph . . . . . . . . . . . . . . . . . . . . . 56 6.1.5 Knitting Code . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.1.6 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7 Conclusion 65 8 List of Figures
2-1 On the left, a knitted structure with a single stitch shaded. On the
right, a woven structure, not to be confused with knitting. . . . . . . 15 3-1 An example of a knit graph overlaying a stockinette pattern. The black
circles are nodes, the horizontal orange arrows are yarn edges, and the
vertical blue arrows are loop edges. . . . . . . . . . . . . . . . . . . . 19 4-1 Hand knitted 2x2 Waves Edging pattern from "Up, Down, All-Around
Stitch Dictionary" [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4-2 Embeddings of different knitted patterns. From top to bottom: stockinette, Tilted Blocks, Waves Edging, and Horseshoe Lace. Each of
these patterns were taken from the book, "Up, down, all-around stitch
dictionary" [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5-1 Illustration of stitch creation in hand knitting. On the left, a knitting
pin is inserted through a loop, after which another loop is formed
around the end of this knitting pin. On the right, the loop formed on
the knitting pin is pulled through the other loop, forming a complete
stitch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-1 Screenshot of machine knitting code from Matsuya’s SPJWin [2]. 9 . . 31
54 10 List of Tables
5.1 Mapping of common abbreviations to procedures. . . . . . . . . . . . 5.2 Interpreter results showing the Python [24] generated hand knitting 36 instructions compared with the automatically generated knit graphs,
embedded. Knitting patterns are from "Up, down, all-around stitch
dictionary" [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 40 Handling incoming loops to a given node that is being processed (circled in green). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.4 Generated instructions for various knit graphs. . . . . . . . . . . . . . 47 5.5 Instructions were automatically generated from each of these knit
meshes, which were then followed to hand knit these samples. . . . . 6.1 Terms used to describe hand knitting and their analogous counterparts
for machine knitting. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 49 52 Examples of machine knitting graphs. Note that, although transfers
happen on two separate beds, the displayed graphs doesn’t make a
differentiation between which bed each node is transferring to or from.
It may be assumed that every transfer alternates the beds that the
node is occupying. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11 59 6.3 Knitting machine graphs and their corresponding knitting machine
pseudocode. Cells indicating SWAP correspond to a transfer from one
bed to the opposite at the same wale position. Cells indicating XFER refer to a transfer operation to the opposite bed with some offset. Each
grid cell is labeled with the operation name and a number to indicate
their ordering.
6.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Results from computer generating machine code from a given knit
graph. The machine knitted samples were knitted on the Matsuya
M-100 knitting machine. The patterns for the sample were borrowed
from the book, "Up, down, all-around stitch dictionary" [4]. . . . . . 12 63 Chapter 1
Introduction
The concept of knitting has been around for a millenium. Despite the long existence
of knitting, computational tools have been underutilized within the textile industry.
Aside from computation, the way we describe knitting structures has greatly limited
the kinds of structures we knit.
Current computational tools are designed for the purpose of programming knitting
machines, where the very structure of knitting is treated as an afterthought. Consequently, the design of garments is tightly coupled with various knitting machine
procedures, making the process of designing knitted structures cumbersome and awkward. Furthermore, the tools used for knitting machines tend to be proprietary, where
each knitting machine company uses their own formats and computational tools.
More broadly, knitting has always been viewed through the lens of a two-dimensional
grid. Yet, when we look at knitting structures topologically, there doesn’t seem to be
anything necessarily two-dimensional about it.
My thesis explores a description of knitted structures that separates topology
from geometry, called Knit Meshes. Topologically, I describe knitted structures using
directed graphs. Through topology, the knitted structures we describe no longer
have to be 2D grid embeddable, nor do we need to concern ourselves with how it is
physically knitted in practice. The geometric part further describes components of
knitted patterns such as loop orientation and position.
I examine two groups of algorithms for Knit Meshes. First, it is shown that the
13 Knit Mesh topology is the only thing necessary to produce a 2D embedding that can
predict the shape of its physically knitted product. Second, two conversion pipelines:
one for converting Knit Meshes back and forth from hand knitting instructions and
another for converting Knit Meshes into machine knitting instructions. This allows us
to manufacture arbitrary Knit Meshes as well as translate hand knitting instructions
into machine knitting code. 14 Chapter 2
Background
2.1 Overview Knitting broadly refers to the construction of soft structures by intermeshing loops formed from one or more yarns. This is not to be confused with weaving, which refers
to a lattice of overlapping, mostly straight pieces of yarn. Figure 2-1 illustrates the
differences between knitting and weaving. Figure 2-1: On the left, a knitted structure with a single stitch shaded. On the right,
a woven structure, not to be confused with knitting.
A stitch is a basic unit of knitting. Each stitch is a loop that is intermeshed with one or more other loops.
Stitches in knitted structures are typically arranged along courses and wales. Each
course corresponds to a row of stitches, and each wale corresponds to a column of
15 intermeshed loops.
Knitted structures may be constructed in the warp or weft direction. The warp runs parallel to each wale, where-as the weft direction is parallel to each course. The
methods that I will discuss in this thesis, both hand knitting and machine knitting,
primarily relate to knitting in the weft direction.
There are many different ways to produce knitted garments. Two of the ways
that I discuss include hand knitting and flat bed weft machine knitting. These will
be explored in more depth in Chapters 5 and 6. Furthermore, related work will be
further discussed in each chapter as they become relevant. 16 Chapter 3
Knit Mesh
Hand knitters typically communicate knitting in one of two ways. The first is as a
list of abbreviated instructions, organized by row. The second is pictorially in a grid,
where each cell contains some symbol corresponding to a certain knitting instruction,
known as a stitch chart. Programmers for industrial knitting machines usually work with a pictorial programming language similar to the stitch charts that hand knitters use, such as Shima
Seiki’s KnitPaint [13]. They’re a good way for programming a knitting machine, but
it takes experts to design new structures or shapes with these languages. Machine
knitting will be explored in more depth in Chapter 6.
Consider, by analogy, 3D printers. A native format for 3D printers might be
some numerical control programming language, dictating the paths that the extruder
or laser needs to follow in order to manufacture the 3D object one layer at a time.
However, when a designer wants to create or modify a virtual object to be 3D printed,
they don’t typically work with this path-based representation. One usually designs
the 3D object using an intermediate format, which represents the shape of the virtual
object in a way that makes it easier to computationally deal with. Only after the
design is finished, the user run slicing and path-planning algorithms to generate the
necessary format for 3D printing.
In theory, one can virtually represent 3D objects by these paths, but making
changes, running algorithms, or converting to other formats is less than trivial when
17 dealing with paths. The path information is a convoluted way of representing 3D objects for most purposes, so a more generalized form is used instead, i.e. 3D polygonal
meshes.
3D polygonal meshes are separated into two parts. First is the mesh geometry,
usually stored as a list of points in space. The second part is the mesh topology,
whichs gives the connectedness of these points. The topology is given by some set
of point index pairs or tuples, indicating edges and triangles respectively. There
are many benefits to keeping geometry and topology separate. One may perform
transformations on the mesh simply by applying functions to the geometry, without
worrying about the topology. Likewise for topology, one can analyze or make changes
to certain properties of the mesh’s connectedness without affecting geometry.
Knitting machine code is analogous to the path-planning code used to 3D print.
Unlike in 3D printing, however, there doesn’t seem to be a well understood format for
representing knitting structures in the same way that 3D polygonal meshes directly
represent 3D objects.
Consider a long strand of yarn. To knit, one forms two loops in the yarn, and
then pulls one through the other. The process of forming and intermeshing loops is
repeated until some desired shape or structure is reached. From this, we can think
of two ways of describing this structure. First, in what order along the yarn do we
form loops? Second, what loops intermesh with what other loops? Central to my
thesis is the concept of knit graphs, which provide a topological description of knitting
based on the relationship between loops and the yarn they lie on. We will also briefly
explore what makes up the geometry of knitted structures.
The topology of a knitted structure combined with its geometry constitutes what
may be known as a 3.1 Knit Mesh. Topology Let = {, , } be a knit graph, which topologically describes some knitted struc- ture. = {} is a set of nodes, each representing some point along a yarn. The yarn
18 edges, = {(, ) | , ∈ }, is a set of directed edges between pairs of nodes. Yarn
edge ∈ describes the adjacency and ordering of two nodes along a yarn. The
loop edges, = {(, ) | , ∈ }, is another set of directed edges. Loop edge ∈ describes a loop of yarn by the point along the yarn it is formed, i.e., ’s starting point , and another point along the yarn from which this loop is intermeshed around, i.e.,
’s ending point . A diagram of a knit graph overlaying a stockinette pattern can be
seen in Figure 3-1. Figure 3-1: An example of a knit graph overlaying a stockinette pattern. The black
circles are nodes, the horizontal orange arrows are yarn edges, and the vertical blue
arrows are loop edges.
One can immediately consider 3 rules for what can be considered a valid knit
graph.
1. No cycles may be formed in , as the yarn is assumed to be cut at some point.
2. Every connected set of edges in must form a directed path. While there may
be multiple, separate yarn, none of them may branch and form tree structures.
And, since determines an ordering of nodes, all edges must be oriented in one
direction.
3. No self edges in or . A loop formed around itself would either be two
loops, or would simply unravel. In yarn, we expect nodes to be ordered relative
to each other, not to themselves.
19 It’s also worth noting a certain limitation of knit graphs. In knit graphs, a loop
may overlap multiple loops only if those loops start from the same node. Certain
knitting patterns contain stitches that involving looping yarn around multiple groups
of loops. For example, the Pelerine eyelet [23]. 3.1.1 Related Stitch Meshes by Cem Yuksel et al. [26] is one interesting topological interpretation
of knitting structures. Their idea is to use a 3D polygonal mesh, where the edge
adjacency of polygons indicate how stitches are connected. This is an excellent way
of generating knitting patterns for Kaldor et al.’s yarn level simulator [11], however
it is restrictive as a knitting structure are not necessarily 3D surface embeddable.
Knit graphs are not novel. In 2011, Jonathan Kaldor [10] describes knit geometry
as a set of loops that are related to each other by predecessor and successor. In 2017,
the papers by Jiang et al. [8] and Popescu et al. [19] describe network-like ways of
representing knit structure. The paper by Narayanan et al. [18] describes a directed
graph construction very similar to the one used in this thesis. 3.2 Geometry So far, with knit graphs, we’ve only described the topology of knitting structures.
Earlier we drew an analogy with 3D polygonal meshes, which separates topology
from geometry. Certain geometric aspects of knitting structures are left undescribed
by knit graphs alone.
Geometric properties may include
1. Node positions describing the 2 or 3 dimensional layout of nodes in a knitted
structure. This is ambiguous, as knitted structures are pliable and may take
many different relaxed forms. For example, one may describe node positions
along a grid using their course and wale numbers, or by some 2 or 3D spatial
position determined by some physically based relaxation.
20 2. Loop face describing whether a stitch loop is technical front or technical back.
Technical front means that the loop is inserted behind some other loop, whereas technical back means the loop is inserted in front of another loop. Each of
these creates a different appearance in knitting.
3. Loop plane determining how loops stack when they overlap. This would be
especially useful in cable patterns, where some number of vertical loops overlap
another group of vertical loops to create a twisting cable appearance.
4. Loop twistedness, the number of times a loop is twisted left or right.
The geometric properties here are somewhat ambiguously defined. For instance,
the loop face, plane, and twistedness are dep...
View
Full Document