hi, i am new in this world.
i use Tuio library.
when a marker goes out then an effect starts in a video loop.
A video flip and an addition of a mask with alpha channel. But this is not seen. I think it’s a problem on:
image(overlayVideo, 0, 0); but I’m not sure.
Can some good soul check and fix the code? thanks!!
import TUIO.*;
import processing.video.*;
TuioProcessing tuioClient;
boolean showOverlay = false;
boolean flipVideo = false;
boolean videoLoaded = false;
Movie video;
Movie overlayVideo;
void setup() {
size(600, 352);
frameRate(30);
video = new Movie(this, "movie.mov");
overlayVideo = new Movie(this, "overlay.mov");
tuioClient = new TuioProcessing(this);
video.loop();
overlayVideo.loop();
}
void movieEvent(Movie video) {
video.read();
}
void movieEvent2(Movie overlayVideo) {
overlayVideo.read();
}
void draw() {
background(0);
loadPixels();
video.loadPixels();
overlayVideo.loadPixels();
if (showOverlay) {
PImage overlayVideo = video.get(); // Create a copy of the video frame
overlayVideo.mask(video); // Apply overlay as a mask
image(overlayVideo, 0, 0); // Display masked video
}
if (flipVideo) {
video.pixels = flipPixels(video.pixels);
}
image(video, 0, 0);
image(overlayVideo, 0, 0);
video.updatePixels();
}
int[] flipPixels(int[] pixels) {
int[] flippedPixels = new int[pixels.length];
int width = video.width;
for (int y = 0; y < video.height; y++) {
for (int x = 0; x < video.width; x++) {
flippedPixels[y * width + x] = pixels[y * width + (width - x - 1)];
}
}
return flippedPixels;
}
void addTuioObject(TuioObject tobj) {
println("Marker aggiunto: " + tobj.getSymbolID());
if (tobj.getSymbolID() == 0) {
showOverlay = false;
} else if (tobj.getSymbolID() == 1) {
flipVideo = false;
}
}
void removeTuioObject(TuioObject tobj) {
println("Marker rimosso: " + tobj.getSymbolID());
if (tobj.getSymbolID() == 0) {
showOverlay = true;
} else if (tobj.getSymbolID() == 1) {
flipVideo = true;
}
}
void updateTuioObject(TuioObject tobj) {
println("Marker aggiornato: " + tobj.getSymbolID());
}
void keyPressed() {
if (key == 'r' || key == 'R') {
tuioClient.stop();
tuioClient = new TuioProcessing(this);
tuioClient.stop();
}
}
void stop() {
video.stop();
video.dispose();
overlayVideo.stop();
overlayVideo.dispose();
tuioClient.stop();
super.stop();
}