Field

Documentation and Standard Library

Basic interface elements

The three most important plug-in windows in Field are these:

  • TextEditor — where you write code, usually in Python.
  • Canvas — where you create the elements that contain the code and can arrange these elements into a visual interface.
  • The Palette — where you access the functionality of Field's many plug-ins. Including the Plugin Manager where you can tell Field where your own classfiles and source live.

Possible starting places

  • SimpleProcessingTutorial — a tutorial for those of you who are coming from the Processing environment. Field supports talking to Processing "Applets" and third-party Processing libraries.
  • BasicDrawing — an introduction to the 2d drawing facilities inside Field, ideally suited for procedural visualizations and printmaking. (Don't miss the image manipulation extensions: CoreGraphicsExtensions.) For those coming over from Processing (and perhaps NodeBox) there's a walkthrough for 2d graphics and a list of observations about the differences between these environments.

Key features

  • Embedding GUI elements directly in code — one of the most obviously "cool" features of Field's TextEditor is that it allows GUI elements (sliders, color wells, point-pickers and buttons) to be embedded directly into otherwise textual code.
  • Completion and Inspection — If you are interacting with a large Java codebase, you need some tricks to help you drill down into it. Field's autocomplete and inspection facilities have been made with this in mind.
  • Integration with other Apps — asked if Field could be used to talk to Maya, we responded (in fact anything you can talk to over telnet, OSC or AppleScript is fair game).
  • SwingIntegration — For rapidly making little interfaces, sometimes a little Swing is ideal.
  • TemplatingAndCopying — how to access what you've done before, and how to repeat yourself without getting bogged down.
  • Other languages — while the focus is very much on Python as our language of choice, we're not religious about it — we're working on Groovy, JavaScript and (on demand compiled) Java. We've been experimenting with mixing Scala and Python simultaneously as well.

Standard library

Examples of features that Field has made out of Python, to help the "improvising" code-writer and to encourage rapid, experimental programming:

  • KeyframingInCode — with its line drawing and time sliders, Field is ideally placed to have a unique take on the common Keyframe.
  • LazyFunctionalHelpers — the beginnings of some documentation of some of the magic Python glue that helps the Field programmer along, and some hopefully inspiring examples of how far Python's object model can be manipulated.
  • GeneratorExamples — Python has a concept of a generator which turn out to be wonderfully useful for "animations" of all sorts.
  • SelfAndProperties — Advanced users of Field — people who are really crafting the environment to support their own practice — know all about Properties and what the _self variable does. They are also aware of the ImportantPlugins — and familiar with the properties that they export.
  • ScopingInField — Q: how does Python's module structure map onto Field's boxes? A: it doesn't!.
  • SimpleLinearAlgebra — Making computer graphics always means dealing with a little bit of linear algebra. Field's Python bridged Vector library is easy to use.
  • DrawingPLines — describes all the methods in Plines, the central class for 2d drawing. This general discussion is augmented by two further pages: DrawingPLinesProperties, which talks about changing how Plines are rendered, and DrawingPLinesEditing, which describes how to manipulate the line geometry you've created.

Reference