Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// partage de liens //// une carte des membres//// (apéros) codelab


#1 2017-03-31 21:53:41 "OSC Multitouch smartphone Android / Ordinateur " le retour désespéré!

akherraz
nouveau membre
Date d'inscription: 2016-09-26
Messages: 2

"OSC Multitouch smartphone Android / Ordinateur " le retour désespéré!



Bonjour à toutes et à tous !

J'ai déjà posté il y a un petit moment un post similaire mais je viens de reprendre mon projet et je patine encore.
J'espère qu'avec ce post ci je serai plus clair :

J'ai réussi à créer une communication entre mon smartphone et mon ordinateur via osc.
A l'aide de mon portable, sans fil (réseau wi-fi) je peux intéragir sur l'interface de mon ordinateur.
En clair lorsque je clique sur mon écran de smartphone avec mon doigt, le code récupère la position x et y de mon doigt et les envoie sur mon ordi. De là j'obtiens un curseur
qui possède les même coordonnées que celles de mon doigt.

Voici le code (partie client / smartphone):

    if (mousePressed) {
     
      goBouton02=false;
      variable01 = mouseX;
      variable02 = mouseY;
     
      myMessage.add(mouseX);
      myMessage.add(mouseY);
      oscP5.send(myMessage, myRemoteLocation);
  }

Lorsque je j'appuis sur mon écran, j'enregistre les coordonnées "mouseY" et "mouseX".

Voici le code (partie serveur / ordinateur) :

void oscEvent(OscMessage theOscMessage) {
  // si l'applet reçoit un messag OSC avec l'address pattern "/positionsCurseur"
  if (theOscMessage.checkAddrPattern("/positionsCurseur")==true) {
    //on assigne les valeurs de l'index 0, de type integer (.intValue)  du message OSC
    //à la variable positionX que l'on assignera à la coordonnée x de notre cercle
    positionX = theOscMessage.get(0).intValue();
    //on assigne les valeurs de l'index 1, de type integer (.intValue)  du message OSC
    //à la variable positionY que l'on assignera à la coordonnée y de notre cercle
    positionY = theOscMessage.get(1).intValue();   
    record=true;
  }}

Je récupère ces coordonées ("theOscMessage.get(0)" équivaut à "mouseX" et "theOscMessage.get(1)" à "mouseY") que je mets dans des variables afin de les exploiter par la suite.
Il ne me reste pus qu'a créer un cercle qui a comme position positionX et positionY et hop ce cercle sur mon ordi suit mon doigt qui est sur mon smartphone !


Jusqu'ici tout vas bien. Cependant j'aimerai réitérer l'opération avec plusieurs pointeur, c'est à dire imaginer la situation ou plusieurs personnes touchent l'écran de mon smartphone.
Il y aura donc plusieures zones touchées et donc plusieurs coordonnées à interpreter (dans le but d'avoir plusieurs cercles sur mon ordi qui bougent).

Pour cela j'ai testé le multi touch.
Avec l'aide de ce code (partie client / smartphone) :


int TouchEvents;
float xTouch[];
float yTouch[];
int currentPointerId = 0;
boolean printFPS;


   //multitouch
  for (int i = 0; i < xTouch.length; i++) {
    ellipse(xTouch[i], yTouch[i], 50, 50);
   
  color c1 = #FFFFFF;
  color c2 = #FFFFFF;

  float x = random(w);
  float y = random(h);
  float t=15+random(20);

  color c = lerpColor(c1, c2, random(1));
  Part p = new Part(xTouch[i], yTouch[i], random(5)+1, c); 
  p.velocity.x=0;
  p.velocity.y=0;
  p.acceleration.x=random(1)-.5;
  p.acceleration.y=random(1)-.5;
  p.life=1;
  parts.add(p);
  }
}

Mon smartphone arrive à distinguer le fait que je clique avec plusieurs doigts sur l'écran, et (ici) dessine des particules à chaque endroit où mes doigts sont.

J'aimerai juste savoir comment je peux récuperer les positions de chaque doigts (X et Y) et les envoyer à mon ordi via osc en suivant le même principe explicité auparavant (avec un doigt).

J'espère que tout cela est compréhensible et que quelqu'un connait ce problème et la solution, merci d'avance ! smile

Je vous mets en lien une vidéo illustrant la partie que j'ai réussi à faire pour le moment smile

Hors ligne

 

#2 2017-04-04 12:40:29 Re : "OSC Multitouch smartphone Android / Ordinateur " le retour désespéré!

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1568
Site web

Re: "OSC Multitouch smartphone Android / Ordinateur " le retour désespéré!



Salut,

Les coordonnées des curseurs sont définies dans deux tableaux : xTouch[] et yTouch[].
En faisant une boucle, tu pourras envoyer un message par curseur, en utilisant son numéro d'index dans le tableau

Ce qui devrait donner ça :

// une boucle pour traiter tous les curseurs

for (int i = 0; i < xTouch.length; i++) {
    envoyer_position(i);
}


// une fonction pour envoyer les messages de position de chaque curseur

void envoyer_position(int index) {
    OscMessage message = new OscMessage("/position_curseur");
    
    // ajouter le numero d'index du curseur
    message.add(index);
    
    // ajouter la position en x de ce curseur
    message.add(xTouch[index]);
    
    // ajouter la position en y de ce curseur
    message.add(yTouch[index]);
    
    oscP5.send(message, myRemoteLocation); 
}

Hors ligne

 

#3 2017-04-07 04:03:51 Re : "OSC Multitouch smartphone Android / Ordinateur " le retour désespéré!

akherraz
nouveau membre
Date d'inscription: 2016-09-26
Messages: 2

Re: "OSC Multitouch smartphone Android / Ordinateur " le retour désespéré!



Salut !

Merci d'avoir pris le temps de me répondre! smile
Si j'ai bien compris la partie de code que tu m'as envoyé c'est pour la partie client (smartphone).
Pour la partie serveur (ordinateur) tu saurais quel code il faut écrire pour récupérer les messages de positions ?

Car pour l'instant je n'arrive qu'à le faire qu'avec un (comme expliqué au dessus) et là vu qu'il y a une boucle dans la partie client je ne sais pas s'il faut également créer une boucle côté serveur pour récupérer ces messages de positions.

Encore merci à toi !

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017