Making Origami Instructional Symbolics Interactive
Final Project for ICM and Communications Lab
Josh Nimoy, Nov 2002

Click this link to launch the interactive piece
This Java Applet requires the latest Java plugin.
Development cancelled until I find more funding.
This is a preliminary mockup of an origami folding interface which appropriates the original language of folding symbols into a graphical interface for operations on virtual paper. This interface will also serve as a way to teach newcomers what each symbol means in an interactive manner. This interface is intended less as "origami simulation" so much as it aims to celebrate the beautiful illustrated instruction books intended to teach origami folding. it presents the folding instructional symbols as an interactive interface.

The following is a collection of intermediary applets which move torward the final interface described in this document.

(requires Java2 Plugin)

Final project, presented at ITP's Introduction to Computational Media taught by Dan O'Sullivan.

#9 - early folding test

#8 - the arrow is affixed

#7 - the arrow is born

Crease to see colors.

#5 - division of many facets

#4 - division of facet

#2 - Added Crease Line

#1 - Found intersections

The user is provided an array of creasing guides. Although beautiful and capable of teaching EXACTLY what each of these popular line patterns signify, I aim to simplify all of these "line" devices into a single mouse-manipulated object. This is both in order to reduce screen clutter, and in order to simplify the interface. The hard part of the design is keeping the tradition respected.
Instead, I will create an interactive line object whose two points can be dragged around. It has a trailing option buttons:

- valley fold
- mountain fold
- cut here
- crease both ways

Clicking one of these buttons will alter the visual appearance of the line object, giving it the traditional line dot pattern as seen in printed instruction.
And so you move this line over the paper in order to define creases and such.
After placing the line, you click the appropriate operation, and in the case of modes such as folding, one must choose which side will remain stable while the other side folds down onto it.

And so an arrow points in either direction of the line, depending on where your mouse lies.
If you move your mouse to the other side of the line, the fold-direction arrow will change direction.
Click once, and the paper should fold along that crease, in that direction.
So what happens when you have several leaves to choose from in folding? in the example to the left, you can either fold the entire thing, or you can just fold that little corner up. How does one make this distinction? The answer can be drawn from traditional origami instructional symbols.
The draggable "Hold Here" object acts as a paper weight. Two option buttons will send the circle up and down between layers of paper.
And so a "Hold Here" circle will eliminate any ambiguity about which layers are folded and which are not. Notice that the circle can be seen x-ray style through the paper.
  It seems we have the very very basics down, but I am more than sure that it will take more than this to even make a preliminary base. Let's try it.
Immediately, we realize that there is no way to fold and unfold creases.
The solution: a transient folder / unfolder arrow. This draggable arrow is assigned to any pair of polygons with a creased hinge. You can either position this arrow pointing from one fold-segment to another adjacent one - or you can point the arrow completely into the blank surrounding space - signifying that the crease should be unfolded. The option buttons will change according to the context of the arrow.
Now it is possible to do a squash fold, among other things. The valley and mountain options of the line folding tool now seem like shortcuts when compared to the crease/folder arrow teamwork!
This is both the easiest and the hardest part. The above symbol directly translates from the book as "turn model over" - which in computationese terms means "rotate 180 degrees about the Y-axis." This is a priveledged flipping action because it switches to "the other 2D part of this 2-part 2D model." All other Z-rotation operations are not notated in the books - and instead, the new view of the model simply appears rotated. This does not mean we should not allow a mouse to turn the model around the Z-axis. Hence, I appropriate three symbols from graphics manipulation interface culture.
From left to right, counter-clockwise Z-rotation, clockwise z-rotation, and the ball is a quaternion tumbler (also the "study" tool in VRML) - which i will need to include for final presentation positioning. I will, however, automatically bring the model back to an orthogonal view angle should any of the creasing or folding tools get touched. This is tricky issue #1. - How many traditional models need to be manipulated outside the ortho view, and is there a distinction that can be drawn between the act of folding/unfolding, and the act of spreading the crane's wings apart? For this, I will need to go through all my origami books. I think that providing support for the most wacky 3D origami models (Lang's cube for example) would need an entirely seperate partial-folding and edge selection system. I do not even know how to begin to design an interface for tucking a corner into a 3D pocket (although i know this is essential for the traditional rabbit - but that's a 2D process).

Issue #2 - where do these things go in the space? They seem like "world-operations" so it seems sensible to place them at the bottom right corner of the window - but everything other than the traditional "flip over" are better off as mouse-modes, and not buttons. So it might be confusing to have 3 mouse-modes and one action-button together at the bottom of the screen.
In bringing a kite-creased preliminary base upward to form the traditional bird base, one must perform a petal fold. This can already be done with the provided interface by sending a holder circle down one level. I feel as though this is counter intuitive, and that it deserves some kind of redundant shortcut-type "petal fold" tool.

Notice that I could not have placed the circle at the bottom right edge because it would have held the the bottom flaps from folding upwards. This brings up the interesting thing about why some people I know cannot do the petal fold: it requires changing holding positions in the middle of the folding action. Until I or someone else can come up with a more intuitive solution to this esential action, I will just have to provide an example so they learn that this is the way to do a virtual petal fold.
Okay, how do we go about doing reverse folds? It seems that the matter is more about where do I hold and what do I fold, how? The unique thing about a reverse fold is that there are identical crease lines on two layers - one needs to valley and the other needs to mountain.
Solution: modify the transient folder arrow tool to include mountains, and make them networkable such that more than one arrow action can be performed in one session.

In fact a slight variation of this tool can empower the entire interface with simultaneity.

Instead of clicking a button, one would pull out this thing, and drag an infinite number of lines from it onto buttons that need pushing all at the same time. After all the connections have been set up, simply hit the button and they should all happen at the same time.
Now, let us fold the limbs of the crane.

Notice that in both arrows, "valley" is selected. This is because when you flip the model over, valley and mountain are inverted.

This is an example of an outward reverse fold, but if you want the limb to come up through the inside, you would simply select "mountain" for both sides.
Alternatively, I could provide a sink symbol - but I am using it in a strange way in this picture. Traditionally, it points at the flap that needs to be either pushed inward or flipped outward. Again, there is a lot of implied action in that symbol but I will see about making a system which can find the most recently produced crease or something like that. Also, this sink acts for reverse folding and the "other" reverse fold (for which i have not found a name) where you flip the flap outward and around, rather than in and through. There is a strange symbol for this - a combination mountain + valley arrows. I will also look into the feasability of this sort of interface object. If I can do that, then it will be closely tied to this object.
Partial folding allows the model to pop out in 3D and fluff just right. By default, the folding arrow will simply turn the paper in 180 degrees. But what if you do not want the paper to fold quite that far? Perhaps the folding arrow needs an adjustable degree gage attached to it so that you can specify the strength of the fold - and the unfold.

Note: this large thing would only appear if you hit that bottom button.

My problem with this thing is that it does not correctly mirror what's in the books. I am willing to stick with it for now - until a more intuitive solution can be drawn. This issue is similar to the "implied rotation" problem.
Or perhaps the partial fold should be a property of the folded edge - and not the folding action.

Or pehaps the partial folding action makes a special fold whose partiality can be adjusted by an attached button.

And then a partial-izer would be needed to add one of these modifiers to an edge.
I see that a lot of instructions require manipulation of paper that is underneath other paper. Here is a cut away viewer. It should have a way of growing and shrinking. These x-ray views can be nested inside each other to take you deeper and deeper into the model.

This makes the send-down and bring-up options of the holder circle redundant (since you can just apply the holder through a cut-away) - but should I remove those two buttons from the holder? Redundancy is nice for a lot of reasons.
Models also require tucking into pockets, in addition to folding. A new tool would be needed in order to specify this sort of action.
A point manipulator is necessary in order to be able to send these polygonal vertices up and down just as you would to the holder circles.
A rabbit ear seems intuitive enough that I would not have to ask the user at all - and just split the polygons accordingly to distribute the tension, hence creating the curved ear. I wonder if this will get in the way of the real folds. How would I detect if it were time to make a rabbit ear, or if it were time to return an error? Perhaps no errors are ever necessary - just surprising results.

Another problem is inflation - when a "blow here to inflate" cloudy arrow is applied, will I be able to determine which parts of the shape need to be converted to the mesh & which ones will stay polygonal? And also, after that huge section of the model is converted to a mesh, there will not be very much manipulation possible. This is okay since backspacing should theoretically restore the non-mesh structure, and I have never seen a model that calls for additional folding on an inflated element. Another uncertainty I have with inflation is being able to provide a range of wind-pressure. Generating an interpolation between an accordion and a rounded mesh will be interesting. The beauty of inflation is that you have folded a structure which will hopefully guide the chaos - and a well-inflated model is never fully inflated.

Also, in the case of the inflated crane, there is no "blow here" applied. The bubble inflates because the two sides are being pulled apart - forcing the tension to distribute from the top point to it's supporting creases. So I believe this sort of thing is actually a special-case rabbit ear!
suggestions from Blake West

I think the cutaway need not have a jagged edge. I have seen diagrams in some books use a smooth circlular cutaway rather than a jaggeg edge, and I think this representation is easier to read.

It also occured to me that defining a fold by the crease may not always be the best for the user. Sometimes I might want to identify two points on the model (perhaps two verticies at the current edge of the model), specify a fold direction, and allow the application to determine where the crease line occurs. If I was interested in creating a fold that was not in a 30, 45, 60 , or 90 degree orientation to most of my folds, I might have an easier time defining my fold by the points.

comments from Jason Neal

Very interesting, a useful too for new folders who wish to have a sequence 'translated' in visual terms! Also, I guess, a useful tool for designers who wish to see how a design can 'translate' to paper! Will this process have the means to 'save' a set of diagrams?, and (dare I say!), how would this effect copyright!! (being that potentially a set of diagrams are being 'drawn' up by a 3rd party (albeit computer aided!). Would you have the means to edit the paper colour, after it has folded from a selection of colours, plain and patterned (say a selection of japanese print patterns?)
comments from Jerome Gout

Hi Josh,

I always thought that computer system would help creators to diagram, not to create. This is the main reason that I decided to write a diagramming oriented language first. I think a model creator use a real sheet of paper and need to manipulate it to get the inspiration. I think we could make the diagramming task easier for creator and so wonderfull models which can't be currently diagrammed because of the waste time. I often find awesome pictures of original creatio, and creators always say, "diagramming is so boring and hard that I prefere create .."

Doodle has been design to break this barrier.

Concerning your ideas. I think your "hold here" is a good idea. Nevertheless, I think the first example you give to introduce it is not good. You give both case of results implied of the application of a valley horizontal fold. In fact you need your new marker ("hold here") because your fold line can be apply to all layer of the paper. Imagine now that you drop your fold line (exactely the same as you are doing) but instead you your marker you point a moving element (vertex or edge). You know now which layer of paper is movind (which that contains the given element, thus you can deduce the move of all other part of the entire paper.

This is the way I use in Doodle II to make simple fold.
Both your cases can be "translated" using this way whether the moving point belong to topmost layer or not. If the moving face is the bottom one your folding algorithms should be enough realistic to make the fold correctly.

Anyway, I guess it's to early to conclude that this marker is useless but I think that case where we really need it are very few.

I think to another thing. I don't see using your interface how make a fold (simple valley) under a particular layer. Imagine one diagonal of the initial square has been folded and now you want to mountain fold the topmost layer (the free corner) inside the model.

You need to specify that the fold does not be made on the bottom layer.

Anyway I'm very interested of your ideas and I hope you will continue ...