Skip to content

mikolalysenko/orthogami

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

orthogami

Turn voxel models into foldable origami! For example, you can turn this mario model:

Into this foldable model:

If you want to try making a Mario yourself, here is a PDF in A4 format.

This module works in any reasonable CommonJS environment (includes node.js and browserify). You can also use it with the voxel critter creator (select "Export Orthogami").

Example usage

//First create a voxel set
//  0 = empty
var voxels = require('ndarray-pack')([
  [[0, 1],
   [2, 3]],
  [[0, 0],
   [0, 4]]
])

//Require the module (works with browserify)
var orthogami = require('orthogami')

//Set up options (can skip this if you like)
var options = {
  units: 'mm',            //Units
  bounds: [210, 297],     //Page size
  scale: 10,              //Size of voxel
  lineWidth: 0.1          //Size of dashed line
}

//Then run orthogami
var svgs = orthogami(voxels, options)

//Print out the result
var fs = require('fs')
svgs.forEach(function(svg, idx) {
  fs.writeFileSync('page' + idx + '.svg', svg)
})

Output

Page 1:

Page 2:

Install

npm install orthogami

API

require('orthogami')(voxels[, options])

Generates an origami template for folding a model from the given voxel object.

  • voxels is a 3D ndarray of integer values. 0 values indicate empty voxels.

  • options is an optional object containing any of the following extra parameters:

    • colorMap a function mapping color values in the voxels to SVG color names, or alternatively an array of SVG color names.
    • bounds a 2D array representing the size of each page (default [Infinity, Infinity])
    • scale a number giving the size of each voxel (default 64)
    • convexColor the color of the convex creases (default 'black')
    • concaveColor the color of the concave creases (default 'white')
    • tabColor the color of the tab lines (default 'black')
    • lineWidth the width of the crease lines (default 1)
    • units the units for the coordinate system (default 'px')

Returns An array of SVG files encoding the pages of the origami printout

Credits

(c) 2014 Mikola Lysenko. MIT License

About

Orthogonal polyhedra origami

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages