Skip navigation


warning: Creating default object from empty value in /var/www/vhosts/ on line 33.
Original author: 
marius watz

From the Catenary Madness series (created with Toxiclibs, see code on OpenProcessing)

Workshop: Advanced Processing – Geometry and animation
Sat June 29th, Park Slope, NYC

Processing is a great tool for producing complex and compelling visuals, but computational geometry can be a challenge for many coders because of its unfamiliar logic and reliance on mathematics. In this workshop we’ll break down some of the underlying principles, making them more comprehensible and showing that we can create amazing output while relying on a set of relatively simple techniques.

Participants will learn advanced strategies for creating generative visuals and motion in 2D/3D. This will include how to describe particle systems and generating 3D mesh geometry, as well as useful techniques for code-based animation and kinetic behaviors. We will use the power of libraries like Modelbuilder and Toxiclibs, not just as convenient workhorses but as providers of useful conceptual approaches.

The workshop will culminate in the step-by-step recreation of the Catenary Madness piece shown above, featuring a dynamic mesh animated by physics simulation and shaded with vertex-by-vertex coloring. For that demo we’ll be integrating Modelbuilder and Toxiclibs to get the best of worlds.

Suitable for: Intermediate to advanced. Participants should be familiar with Processing or have previous coding experience allowing them to understand the syntax. Creating geometry means relying on vectors and simple trigonometry as building blocks, so some math is unavoidable. I recommend that participants prepare by going through Shiffman’s excellent Nature of Code chapter on vectors) and Ira Greenberg’s tutorial on trig.

Practical information

Venue + workshop details: My apartment in Park Slope, Brooklyn. Workshops run from 10am to 5pm, with a 1 hour break for lunch (not included). Workshops have a maximum of 6 participants, keeping them nice and intimate.

Price: $180 for artists and freelancers, $250 for agency professionals. Students (incl. recent graduates) and repeat visitors enjoy a $30 discount.

Price: $180 for artists and freelancers, $250 for design professionals and institutionally affiliated academics. Students (incl. recent graduates) and repeat visitors enjoy a $30 discount. The price scale works by the honor system and there is no need to justify your decision.

Basically, if you’re looking to gainfully apply the material I teach in the commercial world or enjoy a level of financial stability not shared by independent artists like myself, please consider paying the higher price. In doing so you are supporting the basic research that is a large part of my practice, producing knowledge and tools I invariably share by teaching and publishing code. It’s still reasonable compared to most commercial training, plus you might just get your workplace to pay the bill.

Booking: To book a spot on a workshop please email with your name, address and cell phone # as well as the name of the workshop you’re interested in. If you’re able to pay the higher price level please indicate that in your email. You will be sent a PayPal URL where you can complete your payment.

Attendance is confirmed once payment is received. Keep in mind that there is a limited number of seats on each workshop.

Your rating: None

Stephen Weiner's seminal Rise of the Graphic Novel has had a second edition. Rise builds on Weiner's influential work in cataloging and charting a course through the field of graphic novels for librarians around America and the world, spinning out a compact, fascinating narrative of the history of graphic novels, from the Yellow Kid to the modern explosion of Pulitzer-winning, "respectable," multi-media, highly lucrative graphic novels of today. For such a short book -- 70 pages -- Rise covers a huge amount of ground, from The Spirit to R Crumb, from indie comix to Cavalier and Clay, from Death Note to Understanding Comics and Sandman. Even Boing Boing's own Elfquest gets a chapter.

This is a perfect book for anyone trying to wrap her or his head around the field of comics, a quick and smart overview of the field that spans both decades and genres. Whether you're developing a syllabus, improving your library's collection, or just trying to get a better sense of the field and the good stuff you might have missed, Rise is well worth a read, and worth keeping around afterwards for reference.

Plus: there's a dandy introduction by Will Eisner himself!

Faster Than a Speeding Bullet: The Rise of Graphic Novel (Second Edition)

Your rating: None

Peter Curet: Generative Origami (built w/ Modelbuilder)

Corrected: The 3D printed trophy is by Chevalvert.

I just found this by accident, and what a nice accident it was: Peter Curet took my Processing Paris Master Class back in March, and subsequently produced the above video of origami structures continuously being created and unfolding. Not only is a great piece, it was apparently built with Modelbuilder. (Soft rendering courtesy of joons-renderer, which plugs the Sunflow radiosity rendered into Processing.)

I guess I finally get to feel a fraction of the pride Karsten Schmidt must feel seeing people doing awesome things with Toxiclibs. Not that I’m anywhere near reaching the awesomeness of his Toxiclibs Community showreel, but it’s a very good start.

Not that Peter’s origami is the first time Modelbuilder is spotted in the wild. Last year Paris studio Chevalvert used it to produce this 3D printed trophy for a dance award, and Greg Borenstein’s O’Reilly book Making Things See demonstrates how to combine Modelbuilder with a Kinect.

Do you know of any other examples of Modelbuilder being part of a project that made it past the “Messy Sketch” stage and on to the next level of “Thing of Beauty”? Let me know: marius at mariuswatz com.

Better yet, post it to Flickr in the new Modelbuilder group I just created:

Peter Curet: Conway Origami City

BLoc-D: IDILL 2011

Your rating: None

Welcome to the preview release of codename "Alchemy." Alchemy is a research project that allows users to compile C and C++ code that is targeted to run on the open source ActionScript Virtual Machine (AVM2). The purpose of this preview is to assess the level of community interest in reusing existing C and C++ libraries in Web applications that run on Adobe® Flash® Player and Adobe AIR®.

With Alchemy, Web application developers can now reuse hundreds of millions of lines of existing open source C and C++ client or server-side code on the Flash Platform.  Alchemy brings the power of high performance C and C++ libraries to Web applications with minimal degradation on AVM2.  The C/C++ code is compiled to ActionScript 3.0 as a SWF or SWC that runs on Adobe Flash Player 10 or Adobe AIR 1.5.

Alchemy is primarily intended to be used with C/C++ libraries that have few operating system dependencies. Ideally suited for computation-intensive use cases, such as audio/video transcoding, data manipulation, XML parsing, cryptographic functions or physics simulation, performance can be considerably faster than ActionScript 3.0 and anywhere from 2-10x slower than native C/C++ code. Alchemy is not intended for general development of SWF applications using C/C++.

Download and Discuss

With Alchemy, it is easy bridge between C/C++ and ActionScript 3.0 to expand the capabilities of applications on the Flash Platform, while ensuring that the generated SWCs and SWFs cannot bypass existing Flash Player security protections.

Adobe is providing some example libraries, and developers are encouraged to share their ported libraries.

Your rating: None


Gaming platforms and game designs place requirements on game software which differ from requirements of other platforms. Most significantly, game software requires large amounts of memory but has a limited amount to work with. Gaming software is also faced with other limitations such as weaker processor caches, weaker CPUs, and non-default memory alignment requirements. A result of this is that game software needs to be careful with its use of memory and the CPU. The C++ standard library's containers, iterators, and algorithms are potentially useful for a variety of game programming needs. However, weaknesses and omissions of the standard library prevent it from being ideal for high performance game software. Foremost among these weaknesses is the allocator model. An extended and partially redesigned replacement (EASTL) for the C++ standard library was implemented at Electronic Arts in order to resolve these weaknesses in a portable and consistent way. This paper describes game software development issues, perceived weaknesses of the current C++ standard, and the design of EASTL as a partial solution for these weaknesses.


The purpose of this document is to explain the motivation and design of EASTL so that it may help the C++ community better understand the needs of game software development. This document is not a proposal, though some of EASTL's changes and extensions could form the basis for such discussions. The large majority of EASTL would be useful to any kind of C++ software development.

This document describes an STL implementation (EASTL) developed within Electronic Arts as an alternative to and extension of the STL defined by the C++ standard library. By STL, we mean the container, iterator, and algorithm components of the C++ standard library, hereafter referred to as std STL (with std referring to the std namespace, whereas the S in STL refers to standard C++). By C++ standard, we mean ISO 14882 (1998) and the 2003 update. The large majority of the design of std STL is excellent and achieves its intended purpose. However, some aspects of it make it hard to use and other aspects prevent it from performing as well as it could. Among game developers the most fundamental weakness is the std allocator design, and it is this weakness that was the largest contributing factor to the creation of EASTL. Secondarily was the lack of std STL containers designed to be memory-friendly. There are additional reasons that will be discussed below.

We hope that those reading this document have an open mind to the idea that std STL may not be ideal for all purposes. Before this document was written, sketches of it were shown to some outside of the game development industry. In some cases we found that there was an initial reaction to dismiss an alternative STL and assume that the somebody must be misunderstanding or misusing the STL. But upon explaining game development and high performance software issues and comparing these to std STL's design and implementation by current vendors, people usually reduce their skepticism. Indeed we have found that those have the most extensive and deep STL experience have been those most enthusiastic about EASTL. We nevertheless have a great respect for the C++ standard library and the great work that has gone into its design and implementation, especially after having gone through the long and difficult process of implementing it.

This document is divided into the following sections. The first section summarizes the motivation for the creation of EASTL and its design; the subsequent sections flow from this.

Throughout this document there are references to the Appendix. The Appendix contains supplementary material which provides more detail about some item of discussion. This material is placed there in order to avoid getting in the way of the primary text, as the material is a bit verbose and is sometimes tangential to the discussion of EASTL. It was nevertheless felt to be important that the Appendix exist in order to provide a better understanding of practical game development issues.

Your rating: None

CityGML (City Geography Markup Language) is an XML-based schema for the modelling and exchange of georeferenced 3D city and landscape models that is quickly being adopted on an international level.

libcitygml is a small and easy to use open source C++ library for parsing CityGML files in such a way that data can be easily exploited by 3D rendering applications (geometry data are tesselated and optimized for rendering during parsing). For instance, it can be used to develop readers of CityGML files in many 3D based applications (OpenGL, OpenSceneGraph, ...) Most metadata are not lost, they are available through a per-node hashmap.

libcitygml is developed by the 3D team of BRGM (the French leading public institution involved in the Earth Science field for the sustainable management of natural resources and surface and subsurface risks) for the research project DeepCity3D.

The following screenshots were done using the CityGML reader implemented for OpenSceneGraph. The models used are freely available on the official CityGML site.

The following screenshots are the conversion to VRML97 of the examples of CityGML Tunnel and Bridge ADEs:

Supported features

libcitygml is not a strict implementation of the CityGML standard and is not based on a particular schema. However is has been tested successfully with CityGML version 0.3 to 1.0 files, all LOD (from 0 to 4) and supports most of the model features including:

  • Buildings and building furnitures
  • Digital Terrain Models as triangulated irregular networks (TINs)
  • Vegetation (areas, volumes and solitary objects)
  • Water bodies (volumes, surfaces)
  • Transportation facilities (both graph structures and 3D surface data) like roads or railways
  • City furnitures
  • Tunnels (subsurface structures) & Bridges

Materials & textures are also well supported.

Your rating: None


MIDI Implementation Chart


Gervill was designed to be generic synthesizer for Java.
By adding gervill.jar to your classpath you should be able to load SoundFonts/DLS files using MidiSystem.getSoundBank().
And MidiSystem.getSynthesizer() should return instance of Gervill Synthesizer.

Advanced features of Gervill are accessed thru the AudioSynthesizer interface.
Warning! This interface may change or be moved in future.

Gervill has been tested successfully with these applications:

Your rating: None

Here’s a list of the features & capabilities Cinder provides right out of the box.

Platform Core

  • Standalone Mac & PC applications

    Platform-native windowing and event handling

  • Screensavers

    Create native Mac OS X and Windows screensavers

  • Internet I/O

    Load media via HTTP and FTP natively

  • Full I/O abstraction

    Seamless I/O from flat files, memory, resources and networks

  • C++ Core

    Internally reference-counted design prevents leaks, C++0x std::thread for multithreading

  • iOS Support

    Targets the iPhone & iPad; provides a growing list of device-specific features

  • UI Events

    Full keyboard, mouse (including scroll wheel), window and file drag & drop

  • MultiTouch

    Consistent multiTouch APIs for Windows 7, iOS and Mac OS X 10.6

  • XML DOM parser

    Built-in object oriented XML parsing API

  • Communication APIs

    Serial port (enable Arduino applications), OSC and TUIO

3d Graphics

  • Core Classes

    Perspective and orthographic cameras, triangle meshes, OBJ loading, geometric primitives

  • OpenGL Core

    Multisampled antialiasing, dynamic switching between full-screen & windowed modes, convenience methods for rapid development

  • OpenGL Classes

    Full-featured classes for textures, FBOs, GLSL, VBOs, lights, materials and display lists

  • Tile-based renderer

    Render arbitrarily large images (for print & other applications)

  • GUI Parameters

    GL-based GUI for powerful, convenient manipulation of parameters


  • Math primitives

    Full-featured matrix, vector and quaternion classes

  • Utilities

    Colors, random numbers, Perlin noise (up to 4D, with analytical derivatives)

  • Geometric Primitives

    Poly-bezier paths, polygons, axis-aligned bounding boxes, B-splines, least-squares B-Spline curve fitting

2d Graphics

  • Robust Image I/O

    PNG, JPEG, TIFF, BMP & others via platform-native libraries. Preservation of premultiplication and high dynamic range information

  • 2D image processing

    Professional quality image resizing, edge detection, desaturation, adaptive thresholding

  • High Dynamic Range Imaging

    Full support for floating point HDR pixel processing in image I/O, OpenGL and software

  • Powerful 2D rasterizer via cairo

    Full featured vector renderer exports to SVG, PDF, Postscript, EPS, CoreGraphics, GDI and a pixel-based antialiasing rasterizer

  • Fonts & Text

    Font enumeration, glyph path extraction, Unicode text layout and rasterization, custom fonts via flat files or resources


  • Video Capture

    Webcam support via platform native libraries on Mac OS X, iOS and Windows

  • OpenCV

    Object-oriented lightweight wrapper for OpenCV 2.1

  • Full-featured QuickTime

    Frame extraction, native accelerated OpenGL path, audio playback, FFT analysis, asynchronous network loading

  • Audio support

    Loading standard file formats, synthesis, access to raw PCM data, FFT analysis (Mac-only), microphones (Mac-only)

Your rating: None

Tink posted a great library manager for using external assets in your flash projects. When you start getting deep in projects you end up either having to roll your own that might end up being project specific, or you can just grab this from Tink and it is nice and standardized now for you.

Here’s and example of our Library & LibraryManager classes that we use in some of our Flex and AS 3.0 projects to manage our external assets stored in SWF’s.

The classes enabled you to create multiple libraries of embedded (retaining and giving access to code) or loaded SWF’s.

You can create instance of Library wherever you want, but you can also create them through the LibraryManager giving you a single class to gain access to all your Library instances.

As you develop more and more flash/flex projects with AS3 these types of utilities come in handy. Another that comes to mind is Arthur Debert’s BulkLoader and polygonal labs Data Structures for Game Developers that are all great kits.

Add Tink’s Library and LibraryManager to your arsenal today! Thanks Tink.

Your rating: None