Processing \ Hacks

There's a tremendous amount that you can do with Processing that extends beyond the officially supported language and environment. Processing Hacks is an effort to document some of the trickier and more advanced topics that Processing users are stumbling across as they gain experience and cross-fertilize their work with other platforms, languages, and libraries. This effort may be seen as a more stable complement to the Processing Discourse.

Processing Hacks is a wiki and contributions are encouraged. You can log-in with your discourse name and password.

Processinghacks.com was originally started by Tom Carden and Karsten Schmidt (aka toxi) as a distant cousin to the old Technotes page from Processing's alpha days. The technote links have been recreated here for contributors to pick over and convert to Processing beta.

Processing In Detail

  • The Editor (creating tabs, java mode tabs, exporting apps, etc.)

Graphics

2D techniques

3D techniques

  • Arcball (with and without quaternions?)
  • More primitives - cone, cylinder, regular n-gon (filled and stroked, Processing style), Extrusion object?
  • 'toon rendering
  • P3D Display lists (ties in with Scene Graph somewhat… build the triangle list in world coordinates and then directly copy it to the triangles array?)

OpenGL Stuff

  • pure JOGL 'pure' JOGL in Processing without processing.opengl.*
  • JOGL Display lists, vertex arrays

Over-riding Default Behaviour

  • Framerate adjustments for sketches with occasional heavy computations

Libraries

There is some overlap with file formats here, since that's what lots of the libraries do.

Import/Export and Working with Data

Signing an Applet

  • How to sign an applet
  • Controlling the mouse with AWT's Robot
  • Accessing the camera/video in an applet
  • Loading files from any web server using PHP/Perl/etc. to get around the need to sign
  • OpenGL accelerated applets

Using built-in Java classes

  • Using Swing/AWT interface-elements (Sliders, Buttons, ..) with Processing

AWT

  • Using AWT's Color class to convert RGB/HSB.

Writing your own versions of the above?

Alternative Development Methods

  • Editing with JEdit/Vim/Emacs (syntax highlighting etc)
  • Editing Java in the Processing environment “public class blah extends PApplet” / tab.java / etc.
  • Using core.jar in Swing/AWT apps

General Java/OO Programming

  • Deep copying/shallow copying/copying arrays/expanding arrays/inserting/removing in arrays
  • Proper explanations of break/continue/switch/?: *= /= += -= %= ++
  • Inheritance / interfaces / polymorphism
  • Design patterns

Interaction

  • Robustly accepting typed input (catching BACKSPACE/TAB/ENTER etc and not adding it to your String)

Optimisation/Numerical Stuff

  • Verlet integration / Runge-Kutta integration
  • Random number distributions

Web Services

  • HTTP POST/GET - RESTian things
  • XML-RPC and friends

Deployment/Presentation

  • Changing screen resolution for full-screen apps
  • Displaying on multiple monitors
  • Starting applets with keyboard focus

Website Integration

Other Platforms

Converting to and from:

  • Old Processing (particularly the loop/draw problem, what constants were renamed, etc)

And comparisons with these platforms, transition methods to/from those platforms, gotchas, etc.

Mapping

Experimental/Aspirational

  • Using a Processing file as a screensaver (export to applet, use args properly … add a config option? Is a preview possible?) … on Mac/Linux?
  • Using “headless” processing for generating images (in TomCat?)
  • Scene Graph using underlying triangle libraries and caching the matrices (not abstracting on top of exposed functions)

Computer Vision and Image Processing

Communication

Miscellaneous / Things to Sort / What Else?

  • I've said nothing about sound, textures, lighting
  • Has anyone got joysticks working? What about Sony PS2 pads?
  • Capturing video from any source (e.g. DVD) using a Digital Video camera
  • Vector fonts? (Fry was doing stuff for OpenGL, and Java2D already used TT fonts if available… what else?)
  • Threading? Asynchronous operations… posting to a website.
  • Image Processing / Colour Tracking / etc.
  • Gesture recognition (mouse, and… video?)
  • Video manipulation / image compression - is in-memory compression feasible?
  • What else would be needed for games? AI? Pathfinding?
  • Specific stuff on info-vis?
  • Specific stuff on OSC?
  • Read email with Processing (directly open POP/IMAP, or bounce it off a webservice)
  • Receive SMS with Processing (gotta be an extension of the email one really)
  • Mo-cap hardware (ask Chiron?)
  • Make a movie - can the Quicktime libraries, or some other Java libraries, compile a folder of images into a movie?
  • Time-based animation
  • GUI libraries etc.
  • Orthographic/perspective rendering (is that a hack any more?)
  • Vector/Matrix libraries?
  • Convex hulls
  • Marching squares / cubes
  • Particle systems
  • Physics/collision detection
  • RDF vs CSV etc.
  • Other metadata formats (e.g. ID3 for Mp3?)
  • Installable libraries (like JSyn, JOGL perhaps)
  • Glen Murphy's Fasttext?
hacks/contents.txt · Last modified: 2008-06-27 05:54 by toxi