All Projects → edemaine → Fold

edemaine / Fold

Licence: mit
FOLD file format for origami models, crease patterns, etc.

Programming Languages

coffeescript
4710 projects

Labels

Projects that are alternatives of or similar to Fold

Mesh
Traefik Mesh - Simpler Service Mesh
Stars: ✭ 1,571 (+767.96%)
Mutual labels:  mesh
Building Blocks
A voxel library for real-time applications.
Stars: ✭ 140 (-22.65%)
Mutual labels:  mesh
Medium
Independent telecommunication environment
Stars: ✭ 171 (-5.52%)
Mutual labels:  mesh
Mesh navigation
ROS Mesh Navigation Bundle
Stars: ✭ 114 (-37.02%)
Mutual labels:  mesh
Ipadlidarscanexport
Export an OBJ file of ARKit 3.5 iPad Pro LIDAR scans
Stars: ✭ 129 (-28.73%)
Mutual labels:  mesh
Gltfforue4
Import glTF 2.0 in Unreal Engine
Stars: ✭ 145 (-19.89%)
Mutual labels:  mesh
Gl Catmull Clark
A javascript implementation of the Catmull-Clark subdivision surface algorithm
Stars: ✭ 100 (-44.75%)
Mutual labels:  mesh
Meshlab
The open source mesh processing system
Stars: ✭ 2,619 (+1346.96%)
Mutual labels:  mesh
Django Netjsongraph
Network Topology Visualizer & Network Topology Collector
Stars: ✭ 131 (-27.62%)
Mutual labels:  mesh
Matgeom
Matlab geometry toolbox for 2D/3D geometric computing
Stars: ✭ 168 (-7.18%)
Mutual labels:  mesh
Openmvs
open Multi-View Stereo reconstruction library
Stars: ✭ 1,842 (+917.68%)
Mutual labels:  mesh
Wireguard Private Networking
Build your own multi server private network using wireguard and ansible
Stars: ✭ 124 (-31.49%)
Mutual labels:  mesh
Hole fixer
Demo implementation of smoothly filling holes in 3D meshes using surface fairing
Stars: ✭ 165 (-8.84%)
Mutual labels:  mesh
Dmsh
Simple mesh generator inspired by distmesh.
Stars: ✭ 113 (-37.57%)
Mutual labels:  mesh
Creature ue4
Unreal Engine 4 Runtimes for Creature, the 2D Skeletal + Mesh Animation Tool
Stars: ✭ 174 (-3.87%)
Mutual labels:  mesh
Polylidar
Polylidar3D - Fast polygon extraction from 3D Data
Stars: ✭ 106 (-41.44%)
Mutual labels:  mesh
Creature webgl
2D Skeletal Animation WebGL Runtimes for Creature ( PixiJS, PhaserJS, ThreeJS, BabylonJS, Cocos Creator )
Stars: ✭ 140 (-22.65%)
Mutual labels:  mesh
Inlets Pro
Secure TCP and HTTP tunnels that work anywhere
Stars: ✭ 179 (-1.1%)
Mutual labels:  mesh
Mmg
open source software for bidimensional and tridimensional remeshing
Stars: ✭ 174 (-3.87%)
Mutual labels:  mesh
Fusion360image2surface
Image2Surface Script for Autodesk Fusion 360
Stars: ✭ 166 (-8.29%)
Mutual labels:  mesh

FOLD [spec, viewer, API]

FOLD (Flexible Origami List Datastructure) is a file format (with extension .fold) for describing origami models: crease patterns, mountain-valley patterns, folded states, etc. Mainly, a FOLD file can store a mesh with vertices, edges, faces, and links between them, with optional 2D or 3D geometry, plus the topological stacking order of faces that overlap geometrically. A mesh can also easily store additional user-defined data. One FOLD file can even store multiple such meshes in "frames" (but this feature is not yet supported in any code).

This repository both documents the FOLD format (which is still in early stages so its definition is evolving) and provides web software tools and JavaScript libraries to aid in manipulation of FOLD files. FOLD is built upon JSON (JavaScript Object Notation) so parsers are available in essentially all programming languages. Once parsed, the format also serves as the typical data structure you'll want to represent foldings in your software. Our libraries also help build useful redundant data structures for navigating the mesh.

FOLD is similar in spirit to the OBJ format (and other similar formats) for storing 3D meshes; its main distinguishing features are easy parsing, easy extensibility, the ability to disambiguate overlapping faces with stacking order, and the ability to define edges and thus edge properties (such as mountain-valley assignments) and arbitrary polyhedral complexes. (Without edges, OBJ cannot distinguish between two faces sharing two consecutive vertices from faces sharing an edge.) In addition, FOLD can support linkages (with 1D edges but no 2D faces).

FOLD Format Documentation

FOLD Software Tools

Here is software supporting the FOLD format, built both within this project and by other people:

  • FOLD viewer loads and display a given .fold file, useful for visualization and testing
  • Amanda Ghassaei's Origami Simulator supports FOLD input and output
  • Tomohiro Tachi's Freeform Origami supports FOLD input and output
  • Robby Kraft's Rabbit Ear is based on FOLD. It includes a file converter (FOLD display, SVG import/export, and flat folding).

FOLD JavaScript Library

For simple web apps, add this tag to your HTML: <script src="https://edemaine.github.io/fold/dist/fold.js"></script> (or save a local copy of dist/fold.js and use that). Then, if you add FOLD = require('fold') to your JavaScript/CoffeeScript code, you can access the library via FOLD.moduleName.functionName, e.g., FOLD.filter.collapseNearbyVertices.

For Node apps, just npm install --save fold; then add FOLD = require('fold') to your JavaScript/CoffeeScript code; then access the library via FOLD.moduleName.functionName, e.g., FOLD.filter.collapseNearbyVertices.

The FOLD library API documents the available modules and functions for manipulating FOLD objects. If you have a .fold file, first parse it with JSON.parse(fileContents) to get a FOLD object.

The JavaScript library also provides a command-line interface called fold-convert. To use it, make sure you have Node.js installed, and then run npm install -g fold from the command line. Then you can use the following features:

  • fold-convert -o .fold *.opx: Convert ORIPA .opx files to .fold.
  • fold-convert --flat-fold -o B.fold A.fold: Flat fold crease pattern A into folded geometry B

Authors

The FOLD format was invented by three people:

We welcome your feedback and suggestions! The goal is for all software in computational origami to support FOLD as a common interchange format.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].