The topic of these blog posts will be to share our findings and journey in the makings of foldMation. Let's start with why.
There should be a way to digitally create origami folds. Before foldMation, the there are apps where you drag the virtual paper from one corner to another. That modality is very limiting and won't be able to produce anything but the most basic folds. In order to able to to produce most of the common origami folds, we need to rethink how the user interacts with and manipulate the paper. In a sense, we need to be able to program the folds. Hmm, program, programming. We have solutions for those; we use programming languages!
Let's first define what our goals are. Our goals are to create the following:
For learners, what is wrong with learning from videos? Not too much actually. No simulator can simulate the folds needed for complex folds, no for quite some time. For simpler folds however, we can do much better than videos. If you have learned from origami videos before, I bet that you had repeated one or a sequence of folds a few times because the folds were difficult (or due to the folder's hands in the way). Or you may have scrolled back trying to find the sequence where you may have misfolded. Or perhaps you wished you can somehow pan the camera to see how the other side of the model looks like. These are all the features videos can not provide yet should be possible with a good simulator.
For creators, creating a simple origami tutorial should be simpler (and cheaper) than needing to purchase and set up a good camera, lighting and sound system to make a good recording of the fold, then editing it, and finally having to upload it. That's if you had not made any mistakes for retakes. A good simulator will not only free you from all the expensive equipment, setup, post-processing, and burden of getting it right on one take; it should also provide all the interactivity and great user experience for your audience.
But how do we make this possible? We have already established that the current way of dragging the paper around won't do. What we need is specifity. We need to describe exactly how a certain fold is done. With the advent of LLMs, perhaps mining videos will produce the necessary data to train a model to do this. But the technology wasn't there when I started working on this. But the UX is similar. We need to be able to specify the kinds of folds such that an engine can simulate them. What we need is a domain specific language (DSL) for origami folding. Like how to use a programming language to provide instructions to form a sequence of commands to perform a task. The DSL needs to be both well structured and reads like English for the intended audience. After searching for a tool that is can be adopted to the task and not finding it, I have created one myself and open sourced it at mation-spec. More on it in the Mation-spec post.
Having a DSL is great, but it's not enough. We need to be able to tell it to create fold at precise point locations. A text input box isn't the way to go due to needing to context switch to search for the exact point to fold from and to. Context switching between panning the model and going back to the text box does not make a good user experience. This is especially true when working on a tablet. Needing to bring up the virtual keyboard everytime after manipulating the fold is an unpleasant experience. Since the vocabulary of the DSL is small, it is much easier to have the user click on the keywords and labeled model points to compose the fold instructions. This User Interface Design is the core driving principle behind the foldMation creator. The viewer or player -- the side where learners use it learn to fold can be the same viewer as the creator, but with a read-only mode and different layer of tools to play and control the play back and interactivity.
This is the design principle behind foldMation. Most of the common folds such as squash, petal, crimp, rabbit ear, inside & outside reverse folds are possible to do in foldMation already. This is the first time a tool is capable of creating these folds in an algorithmic step by step manner. It is not too much of a stretch in calling this Origami Programming since we are programming/describing exactly how to fold them. In fact, this should be an excellent tool for kids to learn how to describe command instructions to a computer due to the limited keyword space they need to learn and work with. It can foster their spatial intelligence and problem solving skills.
In general, the technical parts of the goals have been achieved. Most critical bugs have been fixed at the time of this writing. However, I know many are still lurking in the Engine, so please let me know if you run into any. The primary near focus will be fixing more bugs found from new creations. So keep them coming and report any bugs you find and any short comings of the application. The third goal depends on you! Help us build a community by spreading the word and share your joy or creations with others.
Keep up to date with our progress by visiting the Change log.
Future posts will cover more technical details from the making of foldMation.
Give it a try and let me know what you think. Let's create some origami folds together!