Annonce

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


#1 2012-06-21 12:47:42 réalitée augmentée processing mac

marion
membre
Date d'inscription: 2011-11-28
Messages: 12

réalitée augmentée processing mac



Hello world,

Je travail en ce moment sur un projet visuel et sonore via la réalitée augmentée, mais une manip m'échappe j'aimerais j'aimerais une fois appelé, qu'elles puissent lorsqu'elles sont cachées ce poursuivre mais de façon muette!!!
Si cela est possible!! je commence à en douter!, Sinon les arrêter une fois le pattern caché est peut être plus abordable pour une novice comme moi!!!
Qu'en pensez-vous? Pourriez vous m'apporter votre aide? je vous remercie

Marion

Voici le code:



/**
NyARToolkit for proce55ing/1.0.0
(c)2008-2011 nyatla
airmail(at)ebony.plala.or.jp

人マーカの上に右手系、Hiroマーカの上に左手系の立方体を表示します。

This sample program shows rotation of 2 coordinate system.(left and right).
The marker is "patt.hiro" and "patt.kanji"
*/

import processing.video.*;
import processing.core.*;
import jp.nyatla.nyar4psg.*;


Capture cam;
MultiMarker nya_1;
MultiMarker nya_2;
MultiMarker nya_3;
MultiMarker nya_4;

import ddf.minim.*;
Minim minim;
AudioPlayer song;
AudioPlayer song2;
AudioPlayer song3;
AudioPlayer song4;
AudioPlayer player;

float t;

void setup() {
  size(640, 480, P3D);
  colorMode(RGB, 100);
  println(MultiMarker.VERSION);

  //キャプチャを作成
  cam=new Capture(this, 640, 480);
  nya_1=new MultiMarker(this, width, height, "camera_para.dat", new NyAR4PsgConfig(NyAR4PsgConfig.CS_LEFT_HAND, NyAR4PsgConfig.TM_NYARTK));
  nya_1.addARMarker("4x4_85.patt", 80);

  nya_2=new MultiMarker(this, width, height, "camera_para.dat", new NyAR4PsgConfig(NyAR4PsgConfig.CS_RIGHT_HAND, NyAR4PsgConfig.TM_NYARTK));
  nya_2.addARMarker("4x4_89.patt", 80);

  nya_3=new MultiMarker(this, width, height, "camera_para.dat", new NyAR4PsgConfig(NyAR4PsgConfig.CS_LEFT_HAND, NyAR4PsgConfig.TM_NYARTK));
  nya_3.addARMarker("4x4_95.patt", 80);

    nya_4=new MultiMarker(this, width, height, "camera_para.dat", new NyAR4PsgConfig(NyAR4PsgConfig.CS_RIGHT_HAND, NyAR4PsgConfig.TM_NYARTK));
  nya_4.addARMarker("4x4_100.patt", 80);

  minim = new Minim(this);
  song = minim.loadFile ("data/lien01.mp3");
  minim = new Minim(this);
  song2 = minim.loadFile ("data/ambient02.mp3");
  minim = new Minim(this);
  song3 = minim.loadFile ("data/melo03.mp3");
  minim = new Minim(this);
  song4 = minim.loadFile ("data/rythme04.mp3");
  // load a file, give the AudioPlayer buffers that are 2048 samples long
// player = minim.loadFile("data/lestroisfrere01.wav", 2048);
  // play the file
  //player.play();
}

int c=0;
void drawgrid()
{
  pushMatrix();
  stroke(0);
  strokeWeight(2);
  line(0, 0, 0, 100, 0, 0);

  line(0, 0, 0, 0, 100, 0);

  line(0, 0, 0, 0, 0, 100);

  popMatrix();
}
void draw()
{
  c++;
  if (cam.available() !=true) {
    return;
  }
  cam.read();
  nya_1.detect(cam);
  nya_2.detect(cam);
  nya_3.detect(cam);
  nya_4.detect(cam);
  background(0);
// nya_r.drawBackground(cam);//frustumを考慮した背景描画
nya_1.drawBackground(cam);//frustumを考慮した背景描画


  //left
  println(song.left.get(2));
  t=song.left.get(2);
  t=constrain(t, -1.0, 1.0);
  t=map(t, -1, 1, 1, 140);
  println("transform="+t);

  if ((nya_1.isExistMarker(0))) {
    nya_1.beginTransform(0);
    fill(26, 28, 28);
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    box(t);
    nya_1.endTransform();

    println("is playing"+song.isPlaying());
    if (song.isPlaying()==false) {
      song.rewind();
      song.play();
    }
  }
  //right
   println(song2.left.get(2));
  t=song2.left.get(2);
  t=constrain(t, -1.0, 1.0);
  t=map(t, -1, 1, 1, 140);
  println("transform="+t);

  if ((nya_2.isExistMarker(0))) {
    nya_2.beginTransform(0);
    fill(59, 43, 53);
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    box(t);
    nya_2.endTransform();
    println("is playing"+song2.isPlaying());
    if (song2.isPlaying()==false) {
      song2.rewind();
      song2.play();
    }
  }
   println(song3.left.get(2));
  t=song3.left.get(2);
  t=constrain(t, -1.0, 1.0);
  t=map(t, -1, 1, 1, 140);
  println("transform="+t);

if ((nya_3.isExistMarker(0))) {
    nya_3.beginTransform(0);
    fill(184, 182, 174);
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    box(t);
    nya_3.endTransform();
    println("is playing"+song3.isPlaying());
    if (song3.isPlaying()==false) {
      song3.rewind();
      song3.play();
    }
  }

   println(song4.left.get(2));
  t=song4.left.get(2);
  t=constrain(t, -1.0, 1.0);
  t=map(t, -1, 1, 1, 140);
  println("transform="+t);

  if ((nya_4.isExistMarker(0))) {
    nya_4.beginTransform(0);
    //nofill();
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    sphere(t);
    nya_4.endTransform();
    println("is playing"+song4.isPlaying());
    if (song4.isPlaying()==false) {
      song4.rewind();
      song4.play();
    }
  }
}

Hors ligne

 

#2 2012-06-21 14:11:44 Re : réalitée augmentée processing mac

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

Re: réalitée augmentée processing mac



Bonjour

Ça ne devrait pas être très compliqué, dans le code il y a des tests conditionnels pour vérifier que les marqueurs sont affichés

if ((nya_1.isExistMarker(0))) {
...
}

En exécutant une deuxième partie avec else, dans laquelle tu mets le volume à zéro ou le son en pause, avec setVolume() ou pause(), quelque chose comme ça :

if ((nya_1.isExistMarker(0))) {
...
} else {
  song.pause()
}

Bon en fait, ce sera plus compliqué que ça, mais c'est un bon début!

Hors ligne

 

#3 2012-06-21 15:34:08 Re : réalitée augmentée processing mac

marion
membre
Date d'inscription: 2011-11-28
Messages: 12

Re: réalitée augmentée processing mac



Merci pour la réponse!!
je réussie à l’arrêter en le remontrant mais pas au moment ou je le cache!!
J'ai mal fais la manip je crois


  println(song.left.get(2));
  t=song.left.get(2);
  t=constrain(t, -1.0, 1.0);
  t=map(t, -1, 1, 1, 140);
  println("transform="+t);
 
  if ((nya_1.isExistMarker(0))) {
    nya_1.beginTransform(0);
    fill(26, 28, 28);
    smooth();
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    box(t);
    nya_1.endTransform();
    println("is playing"+song.isPlaying());
    if (song.isPlaying()==false) {
      song.rewind();
      song.play();
    }else
      song.pause();
      }
   }

Hors ligne

 

#4 2012-06-21 15:59:58 Re : réalitée augmentée processing mac

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: réalitée augmentée processing mac



plutôt comme ça que l'a écrit emoc:

if ((nya_1.isExistMarker(0))) {
    nya_1.beginTransform(0);
    fill(26, 28, 28);
    smooth();
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    box(t);
    nya_1.endTransform();
    println("is playing"+song.isPlaying());
    if (song.isPlaying()==false) {
      song.rewind();
      song.play();
    }
   }
else{
   song.pause();
}

Dernière modification par Makio135 (2012-06-21 16:36:45)

Hors ligne

 

#5 2012-06-21 17:30:00 Re : réalitée augmentée processing mac

marion
membre
Date d'inscription: 2011-11-28
Messages: 12

Re: réalitée augmentée processing mac



Merci pour ton aide, ça marche!!!!
maintenant j'ai faire en sorte que le son s’arrête et reprenne la ou il s’arrête!!! mais j'aimerais une fois le son fini qu'il le rejoue! J'ai vraiment du mal avec Minim.

Des idées?
Merci encore
Marion

Hors ligne

 

#6 2012-06-21 17:56:04 Re : réalitée augmentée processing mac

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: réalitée augmentée processing mac



Si je comprends bien ton code, la musique redémarre à chaque fois que tu affiches un marqueur, non?
C'est à cause du song.rewind();

Tu peux ajouter un boolean au début de ton programme pour vérifier si la musique était arrêtée après une mise en pause ou si elle est arrivée au bout et que le morceau doit faire un rewind:

boolean musicPause=false;


if ((nya_1.isExistMarker(0))) {
    nya_1.beginTransform(0);
    fill(26, 28, 28);
    smooth();
    drawgrid();
    translate(0, 0, 20);
    rotate((float)c/100);
    box(t);
    nya_1.endTransform();
    println("is playing"+song.isPlaying());
    if (song.isPlaying()==false) {
      if(musicPause==false) song.rewind();
      song.play();
      musicPause=false;
    }
   }
else{
   musicPause=true;
   song.pause();
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024