Welcome to this talk on: "KnitGIST: A Programming Synthesis Toolkit
for Generating Functional Machine-Knitting Textures" I'm Megan
Hofmann and my co authors are Jennifer Mankoff and Scott
Hudson. We contributed to the burgeoning field of algorithmic
machine knitting, which is largely focused on creating
knitted shapes like a Stanford bunny or generating soft
actuated objects like this lampshade. But we contribute to
the field of knit texture, which determines the mechanical
aesthetic properties of a knit fabric, which are largely
defined by programming languages like KnitSpeak, which are based
off of the hand knitting instruction shown here. Knit
textures present us an interesting opportunity to
generate knitted objects with target physical and aesthetic
properties. We presented KnitGIST, a generative
instantiation synthesis toolkit for knitting, which allows
programmers to generate knit objects based off of higher
level goals using an extensible API of objectives and tactics
which can be mixed and matched in order to create both genetic
algorithms and hill climbing algorithms. Currently, this is a
programming interface, but it's structured to support
constructing interactive tools. In this talk, I will present an
overview of the framework and the optimization loop at its
core, as well as heuristic maps, which are the core contribution
of this work. Followed up by an example of an objective and a
demonstration of how you might program a heuristic map.
KnitGIST starts with a library of synthesizers, objectives, and
tactics. The objectives and tactics are combined by a
programmer into a heuristic map, which will define the objective
function for the optimization loop and synthesizers which
generate random textures that start off with a width and a
height defined by the programmer. Then we go into the
optimization loop with a population of the N best
randomly generated textures. We score a candidate based off of
our objectives, and then we select a candidate with a bias
choose the one that is currently performing the best, we don't
necessarily select the one that is performed the best so that we
can quickly jump around the search space. If the candidate
we select is good enough for the programmer, we move on and knit
our object. If not, we choose a tactic and apply it to the
candidate to create a new texture, which we then feed into
the population. Heuristic maps are a weighted mapping of
objectives which measure how well given texture performs
on a given metric to tactics, which are small operations on a
texture producing new textures. Objectives are weighted based
off of their value to the designer and tactics are
weighted based off of how likely they are to improve an objective
score. We use a simple objective function to select tactics,
which is just the weighted sum of the current scores of every
objective. We determine the value of a tactic for improving
particular texture and multiply it by the importance of
improving any particular objective. The expected
improvement score of a particular tactic across all
objectives is just the sum of the value of that tactic for
every objective times the importance of each objective.
Conceptually, a greater EIS score, or expected improvement
score, implies the tactic is more likely to greatly improve
an objective function, we select tactics with a bias towards the
ones that have the greatest EIS score, but we leave some small
probability of selecting low value tactics, which widens our
search space. We provide an extensible KnitGIST objective
and tactic library which is made up of functional objectives of
curl, shrinkage, stretch and opacity, and aesthetic objectives
of style, symmetry and imagery. We provide tactics which modify
textures by either flipping stitch orientations, leaning
stitches left to right, replacing stitches, mirroring
stitches across an axis of symmetry, or swapping stitches
between two textures. Consider a yellow loop of yarn, if you
pulled on either ends, it would fall apart. But if you pulled
that yellow loop through green loop and pulled on either ends
of the green loop, the green loop would remain stable. We can
knit a stitch by pulling it from back to front or purl stitch by
pulling it from front to back, and each of these curl in
different directions. And if we align a bunch of knit stitches
and purl stitches across the fabric, we can create properties
such as curl, shrink and stretch. So an example objective
is to estimate the curl of a loop where we first consider the
average orientation, knit or purl between a child loop, l,
and a parent, p. Then we consider, recursively, the
effect of child loops which are pulled through l, m, and how
far they are curling. And in order to estimate the curl
across a whole fabric, we simply take the average curl of all of
the loops on the bottom row. I the paper we present three
demonstrations of creating a heuristic map using our
extensible KnitGIST library. In order to create a lamp you first
define a few objectives such as curled edges that cling to the
frame, maximizing elasticity so it can stretch around the frame,
and adding some aesthetic properties like reducing the
opacity so that it lets light through and adding cabled
stitches to just make it a little bit more complex. We then
apply tactics that are based off of domain knowledge from
knitting that will support these objectives. And as a result, we
get a texture that has this gray area, which clings to the frame,
these blue stripes which led a little bit of light through, and
green cables, which increase the complexity of the texture. It's
worth noting that this is a rectangular swatch, but it is
stretched around the conical lampshade because it has
increased elasticity. In summary KnitGIST enables programmers to
map valuable objectives to tactics which take small steps
through a search space. Those steps are chosen with a bias
towards improving the target texture, but still widely
searched the space. KnitGIST produces textures that match
functional and aesthetic goals and can create whole objects. In
future work, this system has been structured in such a way
that we can create an interactive generative design
tool for whole garments. Thank you so much. If there are any
questions, please let me know or reach out at:
hofmann.megan@gmail.com