Pantograph requires that the following dependencies be installed and working properly on your system:

Python >= 2.4

Blender >= 2.44


python-cairo >= 1.4

python-ming >= 0.3 (required only for output of SWF animations)


Unpack the installation files into a single directory of your choice.

Add this directory to your PYTHONPATH environmental variable:

    export PYTHONPATH=/path/to/your/installation

Open up in a text editor, and find the HOMEDIR variable. Change this to the path to your install directory:

    HOMEDIR = '/path/to/your/installation/'


Pantograph is set up as an extension to Blender, not a stand-alone program. That said, I’ve tried to make it as easy as possible to maintain settings outside of Blender.

Pantograph uses a system of materials and pens to organize line-weights, colors, fills, etc. The material corresponds to the material assigned to the geometry in Blender. When you start Pantograph, it uses the material names to organize the objects being rendered. Thus, if you want two objects to render differently, you must give them separate materials. Pantograph also derives the initial fill color from your material’s diffuse color.


When you start up Pantograph, it puts your meshes (it only works on meshes currently) into a BSP tree to render them. This stage takes the longest. Once you get an image, you can go into the “Material” or “Pen” tabs to change how the materials are rendered without going through the BSP tree again.

Crease Edges

There are two ways to define crease edges. First, you can choose “Auto-detect crease edges”, which gets a threshold angle from the “Mesh” menu (F9 – under “Auto smooth”). Any edges smaller than this angle will be marked as a crease for this material. You can also mark your crease edges in advance for greater control, using Mark Sharp in Blender (ctrl-e with the edge selected).

Hidden Edges

Edges which are obscured are rendered as Hidden Edges if they are either Crease or Silhouette edges.

Material Silhouettes

This draws a line around areas of the same material. It is useful for delineating intersections between different materials.

Global Silhouette

Draws a line around all fills.


You can use a convex mesh to cut away part of your model. Assign a material called “CUT” to the object (color and material details don’t matter – you won’t see this mesh in the final rendering).


Curves lines can be modified by changing attributes under the “Curve” linetype under the proper material. Where the curve is obscured by an object, it is rendered with the “Hidden” linetype.

Rendering an Animation

There are two ways to render an animation to an SWF Flash file. First, you can choose “Render animation” from the opening menu. This will use the frame range under the Blender animation menu and the previous line settings you have used for these materials (or the defaults if you have not set anything). Alternately, after rendering normally, you can choose “Animate” from the main menu, which will render the animation with the line settings you have just set. The ming library does not seem to support dashed lines.

Installation on Windows

I have not installed Pantograph on Windows, but here are some links to get you started:

GTK+ Win32 runtime

PyGTK and PyCairo



Let me know how it goes!


10 Responses to “A User’s Guide to Pantograph”

  1. kaosbeat Says:

    Hey I tried following your instructions. I run pantograph(0.4) from within blender with Alt-P after I loaded in a text window. The next second a window (gtk?) pops up and blender 2.45 crashes with this error (yes really weird characters).

    KaOS:~/Desktop/Polygon-1.17$ blend
    Compiled with Python version 2.5.1.
    Checking for installed Python… got it!
    /opt/blender-2.45-linux-glibc236-py25-x86_64/blender:110: GtkWarning: gtk_table_set_col_spacing: assertion `column ncols’ failed
    &=3b&Î0å@$i?Wc(8,ø!35Éq.’ ÑAª¯3##|BÂ?ÏEÙP!FÁ*­!ø/*DQ6y¼,m82.¶Hæ3D ¸6?¤>{1A>[>ç<@ù·EÎä2
    x÷*@GZ)K¡)Ê>B( =ÕYõ)B5¯ðA|%Ý6¼1k ù@ÒÑ »)/
    ^[[?1;2c/usr/bin/blend: line 2: 20418 Segmentation fault (core dumped) /opt/blender-2.45-linux-glibc236-py25-x86_64/blender -w

    i’m stuck there… too bad because it looks promising

  2. severnclay Says:


    Yeah, GTK seems to hose the debugging output! Try

    blender -w &> ~/debug.txt

    This will send the console output to the file ~/debug.txt. You should be able to open this text file and see more info about the crash.

    What system are you running it on?

  3. rubenmendoza Says:

    hi, I tried to follow instructions to:
    1- Paste folder :/usr/share/blender/scripts/blender/pantograph/
    2- On a Terminal: export PYTHONPATH=$PYTHONPATH:/usr/share/blender/scripts/blender/pantograph/
    3- On Blender: in a text editor view: open: ./blender/scripts/blender/pantograph/

    and script can’t compile, stops on line:
    import pantographLib

    My version is blender 2.45 too, and is running in Ubuntu Hardy 8.04.

    Am I doing something wrong? Could someone help me?


  4. severnclay Says:


    Try it without the trailing slash:
    export PYTHONPATH=$PYTHONPATH:/usr/share/blender/scripts/blender/pantograph

    Hope that works 😉

  5. rubenmendoza Says:


    Does not work.
    Could be a way to include path on code?
    Because stops on line:
    import pantographLib

  6. tomk999 Says:

    I had the (probably) same issue (using kubuntu 8.04)

    Looking at the console (for more details), it said it could not find polygon. apparently the problem was the .deb package provided on the site which was for python2.4, but my blender uses 2.5.

    So I have built and installed from source, and now I’m getting… A segmentation fault 😦

  7. severnclay Says:


    What version of Blender?

    I managed to get Polygon working by adding a soft link in the python2.5 folder to the python2.4 folder – it complains, but it works ok.

    In any case, you shouldn’t be getting a seg fault!


  8. tomk999 Says:

    well, I’m using a SVN version (revision 15217 : 2008-06-13). I’ll try to use a stable version later.

    Before building&installing from source I had tried to just copy the polygon things installed in /usr/lib/python2.4/site-packages into /usr/lib/python2.5/site-packages, it complained:

    /usr/lib/python2.5/site-packages/ RuntimeWarning: Python C API version mismatch for module cPolygon: This Python has API version 1013, module cPolygon has version 1012.
    from cPolygon import *

    …and finally crashed with a segmentation error…

  9. tomk999 Says:

    OK, what’s cool is that there are two official linux 32-bit builds: one with 2.4 and one with 2.5

    -with 2.4 (uses the .deb polygon package): looks like it works!

    -with 2.5 (uses the built-from-source version): WHAT THE??

    ./blender:110: GtkWarning: gtk_table_set_col_spacing: assertion `column ncols’ failed
    �?Z3�:�Y2 L0�4�W�L�\R G\
    N$N�S~@�D�.9″,R�O�S�2{UH V� PN�Z�N�V7;M�;�WJ?�KsGPEP5 ” Bi3= �\ ]�E*8″>>:W �\�.n”�JV�4m SL.�Pr 34�X�
    v<�R.B& �UyH �M�S @�L�3
    Erreur de segmentation
    (“Erreur de segmentation” = segfault)

    Well, for some reason the built-from-source version does not work… I wonder why

  10. gconrads Says:

    I’m curious about using this on a mac, 2.5 or 2.4

    I’m not sure if this is possible. I love the output style and the potential for print uses.

    Any thoughts on this?

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s