Papercraft is a tool to unwrap 3D models.

Overview

Papercraft

Introduction

Papercraft is a tool to unwrap paper 3D models, so that you can cut and glue them together and get a real world paper model.

The main purpose of this program is to do the unwrapping, that is, it takes a 3D model as input and outputs a PDF file with the pieces to cut. It is not a 3D modelling program. For that I recommend using Blender.

The interface looks like this:

image

Note: the model in the example is based on the Low-Poly Pikachu by Agustin "Flowalistik" Arroyo, published under CC BY-NC-SA 4.0. You can get this Papercraft project from the examples directory, with the same license.

License

This program is published under the GPL-3.0-or-later license. See the LICENSE file for the full text.

PDF files generated with this program are not affected by this license but by that of the 3D model you use, as it will be a derivative work. If in doubt contact a real lawyer.

If you create any nice paper model, I'd appreciate if you open an issue and send some pictures.

Installation

If you use Windows, this program does not use any installation, you just copy it into a local folder and run it. Just download the latest package from here and uncompress it to your destination folder.

Select the Win32 or Win64 version depending on your particular Windows and preferences. If you do not know which one you need, try both and see what happens.

Then run the program directly by double-clicking or create a shortcut to your desktop.

If you use Linux you can compile it from source (quite easy, really) or use the precompiled AppImage from the releases page. Remember to set the downloaded file to executable, then just run it.

If you use any other OS you can try compiling from source, but I don't know if you will succeed. Let me now either way.

Basic usage

In the left side of the screen there is a 3D view of the model. In the right side there is the current 2D unwrapping.

First of all you need a 3D model. Currently it only understands the Wavefront OBJ format, that is exportable by most (or all) usual 3D editing programs. Just remember that the material definition (textures) of an OBJ file is in a separate file with MTL extension. And the textures themselves, if any, are in separate image files, so if you move the model around remember to move all the dependent files too.

When you load a model into Papercraft it will start with all faces split and distributed around the paper. Before startint cutting you should join them in big pieces and reorder them in the paper.

For that the program has three basic working modes, selectables with the buttons in the toolbar or the Edit menu:

Edge mode

This is probably the most important mode. If you click an open edge, faces to both sides of the edge will snap together. If you click on a closed edge it will split. If the Shift key is pressed while an open edge is clicked, then it will join a whole strip of faces, as long as they are composed of simple quads. This is useful for big meshes that are mostly made of quads and are usually unwrapped as parallel strips.

With this tool you can create the pieces to be cut as big as you want.

Tab mode

In this mode, if you click an open edge the tab will switch to the other side.

Face mode

In this mode you can select and move the pieces in the 2D paper. Press the shift key while dragging to rotate the pieces.

You can also move the pieces in any other mode, but this one disables clicking on edges, making the handling of smaller pieces much easier.

Document properties

In the menu Edit / Document properties you can edit many options related to the document as a whole:

image

  • Model scale: the units in the original OBJ model are assumed to be millimeters. This value scales up or down that measure to make the final model bigger or smaller. You can check the final size of the model in the information box below.
  • Textured: you can disable the texture images so that in the 2D output you get only the outline of the pieces. Useful if you intend to paint it by hand.
  • Tab style: how are the tabs (those paper flaps here the glue goes) generated:
    • Textured: they get the texture of the neighboring face, so that small imperfections when gluing them together are not so noticeable.
    • Half-textured: as textured but fading to white at the far edge. It makes them more easy to see, particularly if there are many small faces.
    • White: tabs are colorless.
    • None: no tabs. How will you glue the pieces together?
  • Tab width: the maximum with of the tab, in millimeters. The may be smaller if the neighbor face is smaller.
  • Tab angle: the angle of the sides of the tab, in degrees. 90 will make them rectangles. 45 is a more useful value. Real angles may be smaller depending on the shape of the neighbor face.
  • Fold style: how the fold lines that instruct you where to fold are drawn:
    • Full line: a full line is drawn. The line will be solid when it is a mountain, dashed when it is a valley.
    • Out segment: only a small line to the sides of each fold will be drawn, outside the piece itself. This is so in the final model no lines will be visible. If you do this, you probable will want to do a rough cut keeping these segemnts, then fold the model and finally do the real cut-out.
    • Full & out segment: A combination of full line and out segment.
    • In segment: Like out segment but inside the model, only two small lines are drawn to each side of the fold.
    • Out & in segment: A combination of in and out segments.
    • None: No fold line. How to fold them is up to you. You you use very thin paper you can even try to glue the model without folding.
  • Fold length: when using in or out segments, the length of the segment.
  • Line width: with of the folded printed lines, in millimeters.
  • Pages: the number of pages of the output PDF.
  • Columns: how many columns are used to order the pages in the 2D view. It does not have any effect in the final PDF file.
  • Print Papercraft signature. You can disable the signature that is printed in the PDF linking to this Internet page. It is useful if you want to let your friends know how you create all these awesome paper models. Or you can disable it to keep your secrets.
  • Print page number: big models can be a bit of a mess, adding the page numer may help in keeping order.
  • Paper size: the size of the paper, in millimeters. The most usual paper sizes are listed in the drop-down menu.
  • DPI: (dots-per-inch) the resolution of the final PDF. Usual values are 300 and 600. Higher values mean better resolution but bigger files.
  • Margins: the margins of the page, in millimeters. The margins are shown in the 2D view but have no effect in the final PDF.

Other options

There are a few other options in this program, available from the main menu. These options do the expected thing:

  • File/Open: opens an existing Papercraft file. This program uses the .craft extension.
  • File/Save: saves the current project as a .craft file.
  • File/Save as: saves the project with a different name.
  • File/Import OBJ: creates a new project using a Wavefront OBJ file as model.
  • File/Quit: closes this program.
  • Edit/Undo: undoes the last action.
  • Edit/Document properties: opens the "Document properties" dialog.
  • Edit/Face,Edge,Tabs: switches to the given mode.
  • Edit/Reset views: If you move the 2D or 3D view too much and you lose yourself, this option will get you back to the initial view.
  • Edit/Repack pieces: If you have all the pieces overlapping each other, this option will tidy them up a bit.

More interesting are the following:

File/Update with new object

If you are unwrapping a model and you realize that there is some part that you don't like, you have to go back to your 3D editing tool and re-export the OBJ file. Then, do you have to start the Papercraft unwrapping from scratch? Of course not! Just use this option to update the current Papercraft projects with an updated 3D model. It will try to keep the current work as much as it can.

File/Export OBJ

Did you import an OBJ model into Papercraft and then lost the original model? No problem, you can re-export the OBJ with this option and then import it in your 3D model software.

Generate PDF

The main purpose of this program is to create a PDF with the 2D unwrapping of the 3D model. This option does it. Big models with big paper and high resolution may take a while, so be patient.

View/Textures

Hides/shows the texture from 3D and 2D views. It may be easier to see the geometry. It will not affect the PDF output

View/3D lines

Hides/shows the lines from the 3D view. It makes the model look nicer.

View/Tabs

Hides/shows the tabs in the 2D view. It may be easier to see the geometry, particularly with small pieces. It will not affect the PDF output

View/X-ray selection

Normally the selected face/piece is shown in the 3D view over the geometry, even if it is hidden behind something. That is to make it easier to find it, but sometimes it may get confusing. This option can be used to disable that behavior.

View/Highlight overlaps

When two pieces overlap, or even one piece overlaps with itself, it may not be obvious. This option will highlight in pink any overlapping pixels. It will also highlight pieces that are outside of the paper, although that is easier to see.

Note that some overlapping in tabs is perfectly acceptable, you just cut through them, but overlapping in real faces is not nice.

You might also like...
Szalinski: A Tool for Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations

Szalinski: A Tool for Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations

🦀 Example of serving deep learning models in Rust with batched prediction
🦀 Example of serving deep learning models in Rust with batched prediction

rust-dl-webserver This project provides an example of serving a deep learning model with batched prediction using Rust. In particular it runs a GPT2 m

Rust native ready-to-use NLP pipelines and transformer-based models (BERT, DistilBERT, GPT2,...)

rust-bert Rust native Transformer-based models implementation. Port of Hugging Face's Transformers library, using the tch-rs crate and pre-processing

High performance distributed framework for training deep learning recommendation models based on PyTorch.
High performance distributed framework for training deep learning recommendation models based on PyTorch.

PERSIA (Parallel rEcommendation tRaining System with hybrId Acceleration) is developed by AI platform@Kuaishou Technology, collaborating with ETH. It

Proof of concept for a web API that can export 3MF files from parametric OpenSCAD models

Model API About A proof of concept for a web API that can export 3MF files from a parametric OpenSCAD model. A typical use would be to have a form on

A high-performance renderer to render glTF models that use the `KHR_materials_transmission` and `KHR_materials_volume` extensions.
A high-performance renderer to render glTF models that use the `KHR_materials_transmission` and `KHR_materials_volume` extensions.

This is a high-performance renderer designed among other things to render glTF models that use the KHR_materials_transmission and KHR_materials_volume

A VtubeStudio plugin that allows iFacialMocap to stream data to the app, enabling full apple ARkit facial tracking to be used for 2D Vtuber models.

facelink_rs A VtubeStudio plugin that allows iFacialMocap to stream data to the app, enabling full apple ARkit facial tracking to be used for 2D Vtube

Tangram - makes it easy for programmers to train, deploy, and monitor machine learning models.
Tangram - makes it easy for programmers to train, deploy, and monitor machine learning models.

Tangram is the all-in-one machine learning toolkit for programmers. Train a model from a CSV file on the command line. Make predictions from Elixir, G

An example of using TensorFlow rust bindings to serve trained machine learning models via Actix Web
An example of using TensorFlow rust bindings to serve trained machine learning models via Actix Web

Serving TensorFlow with Actix-Web This repository gives an example of training a machine learning model using TensorFlow2.0 Keras in python, exporting

A fast, searchable, knowledge engine using various machine learning models to aggregate based on importance, association and relevance

NewsAggregator We live in an era where both the demand and quantity of information are enormous. However, the way we store and access that information

A Rust library with homemade machine learning models to classify the MNIST dataset. Built in an attempt to get familiar with advanced Rust concepts.

mnist-classifier Ideas UPDATED: Finish CLI Flags Parallelize conputationally intensive functions Class-based naive bayes README Image parsing Confusio

A machine learning library for supervised training of parametrized models

Vikos Vikos is a library for supervised training of parameterized, regression, and classification models Design Goals Model representations, cost func

Deduplicating Training Data Makes Language Models Better

Deduplicating Training Data Makes Language Models Better This repository contains code to deduplicate language model datasets as descrbed in the paper

Utility library for some Lenovo IdeaPad laptops. Supports IdeaPad Intel and AMD Models (15IIL05 and 15ARE05)

ideapad A Rust utility library for some Lenovo IdeaPad specific functionality. A Fair Warning This crate calls raw ACPI methods, which on the best cas

A rust library built to support building time-series based projection models

TimeSeries TimeSeries is a framework for building analytical models in Rust that have a time dimension. Inspiration The inspiration for writing this i

m2cgen (Model 2 Code Generator) - is a lightweight library which provides an easy way to transpile trained statistical models into a native code

Transform ML models into a native code (Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart, Haskell, Ruby, F#, Rust) with zero dependencies

Simple RESTful API in rust created with actix-web. (Routing, models, JWT auth).

rust-simple-api Simple RESTful API created with rust, actix-web, Diesel, JWT. Running application Manual Firstly generate a secret.key which will be u

command line tools for coprolite research (paleontology and archaeology): estimate the producer's body mass based on coprolite diameter by the use of regression models
command line tools for coprolite research (paleontology and archaeology): estimate the producer's body mass based on coprolite diameter by the use of regression models

OVERVIEW OF COPROSIZE coprosize employs power, exponential and cubic regression models allowing to estimate the producer's body mass based on coprolit

A tray application for Windows that gives you push notifications and instant downloads of new posts, messages and stories posted by models you subscribe to on Onlyfans.

OF-notifier A tray application for Windows that gives you push notifications and instant downloads of new posts, messages and stories posted by models

Comments
  • Cannot import .obj file

    Cannot import .obj file

    Installed papercraft on Windows 10, 64-bit. When I try to import an obj file, I get the following error message:

    Error reading Wavefront file C:\Users\vn\build\papercraft\body.obj

    Caused by: 0: Error reading matlib file C:\Users\vn\build\papercraft
    1: The system cannot find the path specified. (os error 3)

    Is this error message caused by something being wrong in my installation, or it has to do with papercraft itself?

    Thanks

    opened by vanneop 2
Releases(v1.1)
Owner
Rodrigo Rivas Costa
Rodrigo Rivas Costa
Rust native ready-to-use NLP pipelines and transformer-based models (BERT, DistilBERT, GPT2,...)

rust-bert Rust native Transformer-based models implementation. Port of Hugging Face's Transformers library, using the tch-rs crate and pre-processing

null 1.3k Jan 8, 2023
A command-line tool and library for generating regular expressions from user-provided test cases

Table of Contents What does this tool do? Do I still need to learn to write regexes then? Current features How to install? 4.1 The command-line tool 4

Peter M. Stahl 5.8k Dec 30, 2022
Difftastic is an experimental structured diff tool that compares files based on their syntax.

Difftastic is an experimental structured diff tool that compares files based on their syntax.

Wilfred Hughes 13.9k Jan 2, 2023
A build tool for illumos.

Eos Eos is a build tool for illumos. It works by locating build.toml files in the illumos source tree and generating a top-level ninja build specifica

Oxide Computer Company 5 Dec 16, 2022
A command line tool for renaming your ipa files quickly and easily.

ipa_renamer A command line tool for renaming your ipa files quickly and easily. Usage ipa_renamer 0.0.1 A command line tool for renaming your ipa file

Noah Hsu 31 Dec 31, 2022
Quickner is a new tool to quickly annotate texts for NER (Named Entity Recognition). It is written in Rust and accessible through a Python API.

Quickner ⚡ A simple, fast, and easy to use NER annotator for Python Quickner is a new tool to quickly annotate texts for NER (Named Entity Recognition

Omar MHAIMDAT 7 Mar 3, 2023
Unwrap Macros to help Clean up code and improve production.

unwrap_helpers Unwrap Macros to help Clean up code and improve production. This does include a pub use of https://github.com/Mrp1Dev/loop_unwrap to ga

Ascending Creations 2 Nov 1, 2021
wrap errors with automatic backtrace capture and print-on-result-unwrap

backtrace-error This is a tiny crate that provides a tiny error-wrapper struct BacktraceError with only two features: Captures a backtrace on From-con

Graydon Hoare 24 Nov 19, 2022
Rust-tokenizer offers high-performance tokenizers for modern language models, including WordPiece, Byte-Pair Encoding (BPE) and Unigram (SentencePiece) models

rust-tokenizers Rust-tokenizer offers high-performance tokenizers for modern language models, including WordPiece, Byte-Pair Encoding (BPE) and Unigra

null 165 Jan 1, 2023