Pantograph


After reviewing the structure of Freestyle, I’m still left with the belief that Pantograph provides a necessary vector-rendering alternative for Blender. The parts of Freestyle that are missing for me: lack of vector fills, lack of cutting/sectioning tools, and no post-processing/tweaking possibilities.

I’m starting the tenative steps to re-write Pantograph again, with the following priorities:

  1. Good memory management
  2. Stability
  3. Speed
  4. Integration with Blender
  5. Ease of installation

I’m looking at using a mixture of C++ and Python,  and implementing some sort of multi-processing.  Output will be restricted to SVG and PNG: enough good convertors exist that maintaining extra exporters doesn’t make sense.

cheers,

Severn

I’m pleased to announce the formation of my new multidisciplinary design studio, Studio Les Bêtes.   For more information and updates on that enterprise, please visit http://lesbetes.wordpress.com.

This blog will continue to support my software development work – I’ve been on a bit of a hiatus lately, focusing on my design work.  Pantograph is currently on hold until the new Blender 2.5 API stabilizes – after that, I’m still deciding whether to work to support Freestyle as a Blender vector-rendering option or to continue to develop PantographFreestyle shows a lot of promise, has the weight of solid developers behind it, and also is able to create vector (svg) output – the style modules seem to have enough flexibility to add features pretty easily.

cheers,

Severn/rocketship

Clipping is…better.  Here.

Its been an exhausting month – my son was born on October 7, and everything takes longer when you’re trying to bounce a baby with one hand and type with your right hand!

I’m moving to a slightly different system – putting out a pretty stable release and keeping a less-stable bleeding-edge version as well (basically, the version I’m using). YMMV. So, without further ado:

Pantograph 0.5 changeLog (yeah, we’ve got that too)

  • the GUI has been thoroughly replaced by a Blender user-interface.  Its a little spare, but its growing on me and the experience is much smoother running it from Blender.  pyGTK is no longer required.
  • The clipping has been re-written  – with the hopes of dealing with the memory hole for larger meshes.
  • There’s now a “raster fill” option – you can use a rendered version of the scene (a PNG file, to be exact) as a clipped fill – you get sharp linework but also soft shading, textures, shadows.  You could take this into Inkscape and poTrace your way back to resolution independence.
  • There’s now a proper frustum cull – things outside of the camera view are clipped and not rendered.

Known Bugs:

  • The Blender GUI doesn’t yet work properly in Windows – to get changes in buttons to register, you have to raise another window and then go back to Blender.  Works fine in Linux.  Upstream bug?
  • There’s a mysterious, unrepeatable seg fault that happens every once in a while, though I’ve only noticed it in Linux.
  • SWF output is broken.  No, its just not hooked up yet – I’ve been developing on a 64-bit system, and Ming is only 32-bit… if people are clamoring for this, it might happen sooner.

Happy Halloween,

Severn

I have a new full-time job (yay!), which means I haven’t had nearly the same luxury of time to work on Pantograph (boo!).  I have, however, been patiently working through the debugging of Pantograph 0.5 – I’m hoping to have it done by the end of the Summer, if not sooner.

Spurring things on is the discovery that pyGTK doesn’t seem to work with Blender 2.46.  Since 2.46 hasn’t hit the Ubuntu repos yet, I didn’t realize this until people started complaining.  The new version will have a Blender-native GUI, so this should fix the problem.

I’ve also started to look at re-coding parts of it in C or C++.  Very preliminarily – I haven’t written much C since college, and the thought of all those semi-colons makes my head hurt.  At some point it would be great to get help/advice from somebody who has experience cross-compiling between Windows and Linux, or even just somebody who has experience compiling from source in Windows.  I have a copy of MS Visual Studio, though I have to admit I’ve never even installed it.

I’ve been finishing up my studies the past couple of weeks, so not much work has been done on Pantograph. I have, however, been getting to use Pantograph quite a bit, and have some observations:

  • Pantograph is now memory-limited, not cpu-limited. Change is good! The culprit seems to be the Polygon library – my hackish misuse of it is beginning to show, and things aren’t pretty. There don’t seem to be any good clipping libraries out there that do exactly what I need, so I need to write a true 2D geometry core. I’m much more confident in the potential speed of Python, though, so I’m still hoping to match the speed of the 3D geometry functions in the 2D clipping.
  • The program needs a Blender-native UI. After using the GTK UI in KDE for the past few months, and from peoples’ hassles trying to install GTK in Windows, I have decided to not fight it and rebuild the UI using the Blender toolkit. One less dependency is a good thing.
  • Pantograph is still really buggy. Sorry.

I’ve got two weeks in mid-May to sit down and address the bugs and write the 2D clipping code – stay tuned!

Tamito Kajiyama has written a very comprehensive guide to installing Pantograph in Windows.  Thanks, Tamito!

I’m still working on a few more basic tutorials, and hoping to put some more examples in the gallery.

Some highlights:

  • Export an animation to SWF – requires ming-python package
  • Export to PDF
  • option to re-load last settings
  • curve rendering

Enjoy it here!

dirigible

The problem with ming was trivial and stupid. Here’s an animation. This is the last piece of 0.4 left to work out, so barring any big bugs the next version of Pantograph should be out some time this weekend.

I’ve been trying to render a larger file with around 160,000 triangles, and there seems to be a memory hole. Things have gotten a lot faster, but it eats up 8GB way too fast.

prehistoric fish is your new bicycle

Pantograph 0.4 is coming along nicely – quite a few features that had been planned for a while have almost reached fruition. Plus, I’ve been able to do a lot of stress-testing with large data-sets, and necessity is a good optimizer. I’ve closed a few huge memory holes, and tightened up a lot of the data structures. Needless to say, the code will need a good laundering after 0.4 – its a mess, and some fundamental paradigms have been shifting.

I’ve been replacing a lot of the lists in Pantograph with sets – it seems I was spending a lot of time removing items from the scene, which can become quite costly when the number of faces is over 100,000.  I’m hoping that sets can squeeze a bit more performance in places where I don’t need ordered sequences.

I’ve got libming (mostly) working – it will make an swf file, but I can’t figure out why its not showing all the frames:

test.swf

Ming won’t do dashed lines, unfortunately (that I can discover). And the Python documentation seems to have been written by accident…

Next Page »