241
edits
Line 88: | Line 88: | ||
==VIDEO IMPORT ON PROCESSING== | |||
import oscP5.*; | |||
import netP5.*; | |||
import processing.video.*; | |||
oscP5 | Movie myMovie; | ||
myRemoteLocation | OscP5 oscP5; | ||
NetAddress myRemoteLocation; // IP of Computer running captury, Port configured in software | |||
long lastMillis=0; // used to periodically send subscribe messages | |||
ArrayList <PVector> joints=new ArrayList <PVector>(); // used to buffer joint positions between oscEvent callbacks and "draw" calls | |||
void | void setup() { | ||
// | fullScreen(); | ||
//size(800, 600); | |||
oscP5 = new OscP5(this, 1065); | |||
myRemoteLocation = new NetAddress("141.54.159.160", 1065); // our computer... | |||
// | |||
myMovie = new Movie(this, "es.mov"); | |||
myMovie.loop(); | |||
} | |||
} | |||
/* | void draw() { | ||
strokeWeight(4); | // periodically ask the captury server to send us data. | ||
// go through list of joints and draw them all | tint(255); | ||
frameRate(5); | image(myMovie, -400, -500); | ||
fill(101, 50); | if (millis()-lastMillis>5000) { | ||
stroke(255, 30); | // The format is as follows: | ||
background(0); | //"/subscribe/<Actor_name>/<skeleton_data_type>/<joint_name>/<data_format>" | ||
for (int i=0; i<joints.size(); i++) { | //most of the placeholders can be replaced by a "*" for "everything" | ||
//draw everything here | // unfortunately, if you subscribe to too many things, a bug in the captury will lead to malformed OSC-bundles that in turn crash OSCP5 | ||
point(joints.get(i).x/5+width/2, joints.get(i).y/5+height/2); | |||
line(random(600), random(600), joints.get(i).x/5+width/2, joints.get(i).y/5+height/2); | OscMessage myMessage = new OscMessage("/subscribe/*/blender/Head/vector"); // get positions ("vector") of all joints of actor "felix_braun_rot" in mm | ||
} | oscP5.send(myMessage, myRemoteLocation); | ||
joints.clear(); | } | ||
}*/ | for (int i=0; i<joints.size(); i++) { | ||
//draw everything here | |||
point(joints.get(i).x/5+width/2, joints.get(i).y/5+height/2); | |||
} | |||
joints.clear(); | |||
} | |||
/* | |||
strokeWeight(4); | |||
// go through list of joints and draw them all | |||
frameRate(5); | |||
fill(101, 50); | |||
stroke(255, 30); | |||
background(0); | |||
for (int i=0; i<joints.size(); i++) { | |||
//draw everything here | |||
point(joints.get(i).x/5+width/2, joints.get(i).y/5+height/2); | |||
line(random(600), random(600), joints.get(i).x/5+width/2, joints.get(i).y/5+height/2); | |||
} | |||
joints.clear(); | |||
}*/ | |||
// Called every time a new frame is available to read | // Called every time a new frame is available to read | ||
void movieEvent(Movie m) { | void movieEvent(Movie m) { | ||
m.read(); | m.read(); | ||
} | } | ||
/* incoming osc message are forwarded to the oscEvent method. */ | /* incoming osc message are forwarded to the oscEvent method. */ | ||
void oscEvent(OscMessage theOscMessage) { | void oscEvent(OscMessage theOscMessage) { | ||
println(theOscMessage); // debug out | println(theOscMessage); // debug out | ||
// only use packages that contain position data as three floats | // only use packages that contain position data as three floats | ||
if (theOscMessage.checkTypetag("fff")) { | if (theOscMessage.checkTypetag("fff")) { | ||
joints.add(new PVector(theOscMessage.get(0).floatValue(), theOscMessage.get(1).floatValue(), theOscMessage.get(2).floatValue())); | joints.add(new PVector(theOscMessage.get(0).floatValue(), theOscMessage.get(1).floatValue(), theOscMessage.get(2).floatValue())); | ||
println( theOscMessage.get(0).floatValue()); | println( theOscMessage.get(0).floatValue()); | ||
println( theOscMessage.get(1).floatValue()); | println( theOscMessage.get(1).floatValue()); | ||
println( theOscMessage.get(2).floatValue()); | println( theOscMessage.get(2).floatValue()); | ||
} | } | ||
} | } |
edits