Annonce

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


#1 2016-05-02 22:01:24 Recadrer la vidéo avec Nyartoolkit

leoof60
nouveau membre
Date d'inscription: 2016-05-02
Messages: 4

Recadrer la vidéo avec Nyartoolkit



Bonjour,
Je me suis lancé dans la conception d'un petit programme de réalité virtuelle sur processing :

-Le programme doit capturer un flux vidéo, y détecter des marqueurs et exécuter des instructions quand un marqueur est détecté ( dans mon cas charger un .obj et l'afficher  )
Pour cela j'utilise les librairies OpenGL, NyARToolkit et OBJLoader
Cette partie est réalisé ( cf.le code plus bas) j'ai une fenêtre avec la vidéo en réalité augmenté.

-Deuxièmement je doit créer une interface graphique autour de ce programme, je souhaite donc diviser la fenêtre en deux parties : Une partie avec la vidéo et une autre partie avec diverses commandes et infos (boutons, textes, images etc.)
Pour cela j'ai simplement ajouté la librairie controlP5 pour ajouter des boutons.

Seulement j'ai un problème, je n'arrive pas à réduire la vidéo "augmenté" pour qu'elle n'occupe qu'une partie de la fenêtre...
Quelqu'un aurait-il une idée de comment résoudre ce problème ? Car si je ne peut pas réduire la vidéo dans un cadre et qu'elle occupe toute la fenêtre je vais avoir du mal à réaliser mon interface graphique hmm

Mon code :

import java.io.*;
import processing.opengl.*;
import codeanticode.gsvideo.*;
import jp.nyatla.nyar4psg.*;
import saito.objloader.*;

//initialisation des variables :
GSCapture cam;
MultiMarker nya_1;
MultiMarker nya_2;
MultiMarker nya_3;
MultiMarker nya_4;
int fps = 30;
GSMovieMaker mm;
OBJModel model_1 ;
OBJModel model_2 ;
boolean bTexture = true;
boolean bStroke = false;

//initialisation d'une police de texte:
PFont p=createFont("FFScala", 32);

void setup() {
 
//Void devant la fonction définit le fait qu'elle ne renvoie pas de valeur.
//La fonction setup() sert à indiquer les options par défaut tel que la définition du cadre vidéo (sa taille), le lancement de la vidéo, de l'enregistrement vidéo et la détection des marqueurs.

//enregistrement :
  size(1280,720,P3D); //definition de la taille de la fenetre d'affichage
  colorMode(RGB,100); //définit le mode couleur interprété par processing, en RGB ici
  println(MultiMarker.VERSION); //affiche dans la zone de texte l'évolution d'un type de variable
  cam = new GSCapture(this,1280,720); //definit la taille de capture du flux vidéo
  cam.start(); //lance l'aquisition du flux vidéo

//déclaration des marqueurs, on associe un marqueur à un pattern
  nya_1 = new MultiMarker(this,1280,720,"camera_para.dat",NyAR4PsgConfig.CONFIG_DEFAULT);
  nya_1.addARMarker("cube.patt",80);

  nya_2 = new MultiMarker(this,1280,720,"camera_para.dat",NyAR4PsgConfig.CONFIG_DEFAULT);
  nya_2.addARMarker("troisd.patt",80);
 
  nya_3 = new MultiMarker(this,1280,720,"camera_para.dat",NyAR4PsgConfig.CONFIG_DEFAULT);
  nya_3.addARMarker("patt.hiro",200);
 
  nya_4 = new MultiMarker(this,1280,720,"camera_para.dat",NyAR4PsgConfig.CONFIG_DEFAULT);
  nya_4.addARMarker("patt.kanji",200);
 
//setup obj :
  frameRate(30);
  model_1 = new OBJModel(this, "Pf5.obj","absolute", TRIANGLE_FAN);
  model_1.enableDebug();
 
  model_1.scale(4000);
  model_1.translateToCenter();
 
  model_2 = new OBJModel(this, "Cf4.obj","absolute", TRIANGLE_FAN);
  model_2.enableDebug();
 
  model_2.scale(4000);
  model_2.translateToCenter();

  stroke(255);
  noStroke();

}

void draw() {
  //initialisation des marqueurs à détecter
  cam.read();
  background(0);
  PImage cSmall= cam.get();
  nya_1.detect(cSmall);
  nya_2.detect(cSmall);
  nya_3.detect(cSmall);
  nya_4.detect(cSmall);
  nya_1.drawBackground(cam);
  nya_2.drawBackground(cam);
  nya_3.drawBackground(cam);
  nya_4.drawBackground(cam);
 
  //marqueur1
  if ((nya_1.isExistMarker(0))) { //Fonction if , si le marqueur 1 est présent on execute la suite
    nya_1.beginTransform(0); //début des modifications virtuelles
    lights();
    pushMatrix();
    translate(0,0,50);
    //rotateX(5);
    rotateX(4.7);
    model_1.draw();
    popMatrix();
    nya_1.endTransform(); //fin des modifications virtuelles
  }
 
  //marqueur2
  if ((nya_2.isExistMarker(0))) {
    nya_2.beginTransform(0);
    lights();
    pushMatrix();
    translate(0, 0, 20);
    model_2.draw();
    popMatrix();
    nya_2.endTransform();
  }
 
  //marqueur3
// if ((nya_3.isExistMarker(0))) {
//   nya_3.beginTransform(0);
//   lights();
//   pushMatrix();
//   translate(0, 0, 20);
//    model.draw();
//   popMatrix();
//   nya_3.endTransform();
//  }
 
  //marqueur4
  if ((nya_4.isExistMarker(0))) {
    nya_4.beginTransform(0);
    fill(0,100,100);
    rotate(0);
    textFont(p);
    text ("Hello World",-50,0);
    nya_4.endTransform();
  }
}

Merci d'avance à ceux qui auront pris le temps de me lire smile

Dernière modification par leoof60 (2016-05-02 22:05:43)

Hors ligne

 

#2 2016-05-03 00:25:50 Re : Recadrer la vidéo avec Nyartoolkit

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Recadrer la vidéo avec Nyartoolkit



Bonsoir,

Quand tu affiches une image, tu lui donnes ses coordonnées, mais tu peux aussi lui donner une largeur et une hauteur d'affichage :
https://processing.org/reference/image_.html

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024