O Processing é voltado para

Por padrão, o Processing é tem recursos limitados

O Processing pode ser estendido através de bibliotecas

Bibliotecas são conjuntos de arquivos que permitem a utilização de novos recursos no Processing

Bibliotecas são conjuntos de Classes e Métodos

Chamadas de "core libraries"

Não precisa instalar nada

"Contributed Libraries"

Core libraries

Acesse a documentação da biblioteca

Ir no menu Sketch > Import Library

import ddf.minim.signals.*;

import ddf.minim.*;

import ddf.minim.analysis.*;

import ddf.minim.effects.*;

Definir as variáveis (objetos) que representam a instância de uma classe da Biblioteca

Minim minim;
AudioPlayer player;
AudioInput input;

Inicializar as variáveis

Chamar os métodos da biblioteca

Contributed Libraries

Fechar o Processing

Fazer o download da biblioteca

Descompactar o arquivo, se necessário

Abrir a pasta de projetos do Processing

SE não existir a pasta libraries, dentro da pasta de projetos do Processing, criar esta pasta

Copiar a biblioteca para dentro da pasta libraries

Abrir o Processing

import ddf.minim.*;

 

// Objetos necessários para trabalhar com som

Minim minim;

// Cada um dos sons

AudioPlayer song;

 

import ddf.minim.*;

 

// Objetos necessários para trabalhar com som

Minim minim;

// Cada um dos sons

AudioPlayer song;

 

void setup()

{

  size(100, 100);

 

  // Instancia o objeto

  minim = new Minim(this);

 

  // Carrega o som "ocupado.mp3" que está dentro da pasta 'data'

  song = minim.loadFile("ocupado.mp3");

  song.play();

}

 

void draw()

{

  background(0);

}

 

void stop()

{

  // Importante para interromper o som!

  song.close();

  minim.stop();

  super.stop();

}

import hypermedia.video.*;

// Objeto do OpenCV

OpenCV opencv;

void setup() {

  size( 160, 120 );

  // Instancia o objeto

  opencv = new OpenCV( this );

  // Executa o filme

  opencv.movie( "bunny.avi" ); 

}

void draw() {

  // Lê um frame

  opencv.read();

  // Exibe o frame na tela

  image( opencv.image(), 0, 0 );

}

import hypermedia.video.*;

// Objeto do OpenCV

OpenCV opencv;

// Tamanho da Imagem a ser capturada da webcam

final int IMG_WIDTH  = 320;

final int IMG_HEIGHT = 240;

void setup() {

  // Tamanho da tela

  size( IMG_WIDTH, IMG_HEIGHT);

  // Instancia o OpenCV

  opencv = new OpenCV(this);

  // Inicializa a captura

  opencv.capture(IMG_WIDTH, IMG_HEIGHT);

}

void draw() {

  // Lê imagem

  opencv.read();

  // Mostra na tela

  image( opencv.image(), 0, 0 );

}

// Para tudo

public void stop() {

  opencv.stop();

  super.stop();

}

// Ver manual das funções em:

// http://www.box2d.org/manual.html

// http://jbox2d.nfshost.com/processing/doc/index.html

// Bug!

// Ver: http://processing.org/discourse/yabb2/YaBB.pl?num=1213404906/15

//import org.jbox2d.testbed.tests.*;

//import org.jbox2d.util.blob.*;

//import org.jbox2d.testbed.timingTests.*;

import org.jbox2d.testbed.*;

import org.jbox2d.dynamics.contacts.*;

import org.jbox2d.p5.*;

import org.jbox2d.dynamics.*;

import org.jbox2d.common.*;

import org.jbox2d.collision.*;

import org.jbox2d.dynamics.joints.*;

Physics physics;

void setup() {

  // Inicializa a tela

  size(640,480,P3D);

  // Cria a engine de física (o mundo)

  // escala: 10 pixels = 1 metro

  physics = new Physics(this, width, height);

  //

  physics.setDensity(1.0f);

}

void draw() {

   background(0);

   if (mousePressed) {

    //Create a body

    float x0 = mouseX;

    float y0 = mouseY;

    // Cria círculo com posição x, y e raio

    Body randomBod = physics.createCircle(x0, y0, random(5.0f,15f));

    // Cria uma velocidade

    Vec2 vel = new Vec2(random(-30.0f,30.0f),random(-30.0f,30.0f));

    // Seta a velocidade para o corpo criado

    randomBod.setLinearVelocity(vel);

  }

}

// Ver manual das funções em:

// http://www.box2d.org/manual.html

// http://jbox2d.nfshost.com/processing/doc/index.html

// Bug!

// Ver: http://processing.org/discourse/yabb2/YaBB.pl?num=1213404906/15

//import org.jbox2d.testbed.tests.*;

//import org.jbox2d.util.blob.*;

//import org.jbox2d.testbed.timingTests.*;

import org.jbox2d.testbed.*;

import org.jbox2d.dynamics.contacts.*;

import org.jbox2d.p5.*;

import org.jbox2d.dynamics.*;

import org.jbox2d.common.*;

import org.jbox2d.collision.*;

import org.jbox2d.dynamics.joints.*;

Physics physics;

void setup() {

  // Inicializa a tela

  size(640,480,P3D);

  // Cria a engine de física (o mundo)

  // escala: 10 pixels = 1 metro

  physics = new Physics(this, width, height);

 

}

void draw() {

   background(0);

}

// MousePressed é chamado quando o botão do mouse é pressionado

void mousePressed() {

  // Dá uma densidade aos corpos criados

    physics.setDensity(1.0f);

    //Cria um corpo (círculo) na posição do mouse

    float x0 = mouseX;

    float y0 = mouseY;

    Body randomBod = physics.createCircle(x0, y0, random(5.0f,15f));

    // Atribui uma velocidade em x e em y para o corpo

    Vec2 vel = new Vec2(random(-30.0f,30.0f),random(-30.0f,30.0f));

    randomBod.setLinearVelocity(vel);

 

}

// KeyPressed é chamado quando qualquer tecla é pressionada

void keyPressed() {

   // Dá uma densidade 0 aos corpos criados a partir deste ponto.

   // Corpos com densidade 0 são estáticos (parados)

    physics.setDensity(0);

    //Cria um corpo na posição do mouse

    float x0 = mouseX;

    float y0 = mouseY;

    Body randomBod = physics.createRect(x0, y0, x0+random(10, 20), y0+random(10,20) );

    // Atribui uma velocidade em x e em y para o corpo

    Vec2 vel = new Vec2(random(-30.0f,30.0f),random(-30.0f,30.0f));

    randomBod.setLinearVelocity(vel);

}

// Ver manual das funções em:

// http://www.box2d.org/manual.html

// http://jbox2d.nfshost.com/processing/doc/index.html

// Bug!

// Ver: http://processing.org/discourse/yabb2/YaBB.pl?num=1213404906/15

//import org.jbox2d.testbed.tests.*;

//import org.jbox2d.util.blob.*;

//import org.jbox2d.testbed.timingTests.*;

import org.jbox2d.testbed.*;

import org.jbox2d.dynamics.contacts.*;

import org.jbox2d.p5.*;

import org.jbox2d.dynamics.*;

import org.jbox2d.common.*;

import org.jbox2d.collision.*;

import org.jbox2d.dynamics.joints.*;

Physics physics;

float densidade = 0;

int tipo = 0;

int numCorpos = 0;

Body [] corpos;

void setup() {

  // Inicializa a tela

  size(640,480,P3D);

  // Cria a engine de física (o mundo)

  // escala: 10 pixels = 1 metro

  physics = new Physics(this, width, height);

  textFont(createFont("Arial",20));

  smooth();

  // Limita a quantidade de corpos!

  corpos = new Body[100];

 

}

void draw() {

   background(0);

   stroke(0);

   fill(255);

   rect(30, 30, 200, 100);

   fill(255,0,0);

   text("densidade = " + densidade, 50, 50); 

   text("tipo = " + tipo, 50, 70); 

   text("numCorpos = " + numCorpos, 50, 90); 

}

// MousePressed é chamado quando o botão do mouse é pressionado

void mousePressed() {

    // Dá uma densidade aos corpos criados (zero o corpo fica parado)

    physics.setDensity(densidade);

    //Cria um corpo (círculo) na posição do mouse

    float x0 = mouseX;

    float y0 = mouseY;

    Body randomBod = null;

    Body [] randomBodies = null;

    RevoluteJoint joint = null;

    // Cria cada um dos tipos diferentes de corpos

    switch(tipo)

    {

       case 0:

         // Cria um círculo

         randomBod = physics.createCircle(x0, y0, random(5.0f,15f));

         break;

       case 1:

         // Cria um retângulo

         randomBod = physics.createRect(x0, y0, x0 + random(5, 15), y0 + random(5,15));

         break;

       case 2:

         // Cria uma caixa

         randomBodies = physics.createHollowBox(x0, y0, random(20, 40),random(20,40), 3);

         break;

       case 3:

         // Na criação de um polígono a ordem dos pontos importa!

         randomBod = physics.createPolygon(x0+random(10, 20), y0+random(10,20), x0+random(10, 20), y0, x0, y0);

         break;

       case 4:

         // Cria uma junção entre corpos

         if(numCorpos>=2)

         {

           joint = physics.createRevoluteJoint(corpos[numCorpos-1], corpos[numCorpos-2], width/2, height/2);

         }

         break;

    }

   

    if(randomBod!=null) {

      // Atribui uma velocidade em x e em y para o corpo

      Vec2 vel = new Vec2(random(-30.0f,30.0f),random(-30.0f,30.0f));

      randomBod.setLinearVelocity(vel);

      corpos[numCorpos++] = randomBod;

     

    }

    if(randomBodies!=null) {

      // Atribui uma velocidade em x e em y para o corpo

      for(int i=0;i<4;i++)

      {

        Vec2 vel = new Vec2(random(-30.0f,30.0f),random(-30.0f,30.0f));

        randomBodies[i].setLinearVelocity(vel);

        corpos[numCorpos++] = randomBodies[i];

      }

    }

   

    // todo: Melhorar isso!

    if(numCorpos>=95)

    {

      numCorpos = 0;

    }   

 

}

// KeyPressed é chamado quando qualquer tecla é pressionada

void keyPressed() {

   if(key==CODED) // Teclas especiais

   {

     if(keyCode==UP) {

       densidade = densidade + 1;

     }

     if(keyCode==DOWN) {

       densidade = densidade - 1;

     }

     if(keyCode==LEFT) {

       tipo--;

     }    

     if(keyCode==RIGHT) {

       tipo++;

     }

    

    

   }

 

}

Listadas no web site

Maior probabilidade de funcionar nas versões mais novas do Processing.

Inclui bibliotecas não listadas e/ou não oficiais.

A maior parte delas foi testada, portanto, posso dar suporte.