node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »



Voxel origami generator. Works in node.js and browserify.

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)


Page 1:

Page 2:


npm install orthogami


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


(c) 2014 Mikola Lysenko. MIT License