Le Blog

  • : Le blog de Romain Dedenis
  • : Un blog relatif à la programmation web, vous trouverez ici des tutoriels sur différents langages tel que le flash, le php... Ainsi que différentes astuces et articles. Bonne visite :)
  • Contact

Contacts

viadeo-icone-5757-48.png linkedin.png

Liens Utiles

 

Documentation Flash as 3.0 :

Flash as 3.0

 

Documentation moteurs 3D Flashs :


Documentation Utilitaires 3D Flashs :

Et bien sûr, le fil RSS du Blog ! rss

8 mars 2010 1 08 /03 /mars /2010 23:30

Nous voici maintenant arrivé à un moment assez sympa de notre "formation", nous allons maintenant voir comment intégrer des flux vidéos sur nos objets 3D. Je prends l'exemple des flux vidéos, car pour beaucoup cela représente quelquechose de plutôt symbolique et complexe ;).

Le flux vidéo que nous allons utiliser ne sera autre que notre... WebCam !

I/ Intégration de notre flux vidéo sur une Plane

Je vais appliquer notre flux sur une Plane. Pour les autres objets 3D, rien ne change vu que le flux est lié à un materiel que l'on peut ajouter sur n'importe quel objet :).

Commencez par jetter un petit coup d'oeil par ici si vous ne savez pas comment intéragir avec une webcam.
Nous allons partir de notre exemple sur la création de Plane que nous avons vu dans un précédent tutoriel( Away3D : Premier Objets 3D simples (Plane, Triangle) ).

Code Source
package {
   import away3d.containers.Scene3D;
   import away3d.containers.View3D;
   import away3d.cameras.Camera3D;
   import away3d.primitives.Plane;
   //Ajout
   import away3d.materials.MovieMaterial;

   import flash.display.*;
   //Ajout
   import flash.events.*;
   import flash.media.Camera;
   import flash.media.Video;
 
   public class Main extends Sprite {
      private var scene:Scene3D;
      private var view:View3D;
      private var camera:Camera3D;
      private var plane:Plane;
      //Ajout
      private var mc_video: MovieClip;
      private var video:Video;
      private var webCam:Camera;
      private var movieMaterial:MovieMaterial;
    
      public function Main():void {
         initialisationList();
      }
    
      private function initialisationList():void {
         initA3D();
         //Ajout
         initVideo();
         initMaterials();
         initObjects();
         initListeners();
      }
    
      private function initA3D():void {
         scene = new Scene3D();
         camera = new Camera3D({zoom:10, focus:50, x:0, y:0, z:-300});
         view = new View3D({scene:scene, camera:camera, x:stage.stageWidth/2, y:stage.stageHeight/2});
         addChild( view );
      }

      private function render(e:Event):void{
         view.render();
      }

      private function initObjects():void{
           plane = new Plane({material:movieMaterial, width:320, height:240, segmentsW:8, segmentsH:8});
           plane.rotationX = 90;
           scene.addChild(plane);
      }
     
      //Ajout des 3 prochaines fonctions
      private function initVideo():void{
          mc_video = new MovieClip();
          webCam = Camera.getCamera();
          video = new Video(320, 240);
          video.attachCamera(webCam);
          mc_video.addChild(video);
      }
     
      private function initMaterials():void{
          movieMaterial = new MovieMaterial(mc_video);
         }
     
      private function initListeners():void{
          addEventListener(Event.ENTER_FRAME, render);
      }
   }
}



Résultat Obtenu

img1

Explications


Nous avons introduit un nouveau type de matériel, le MovieMaterial(MovieClip), qui va nous permettre de texturer un objet avec un MovieClip. Pour afficher notre flux vidéo, nous créons un objet Vidéo que nous lions au flux de la WebCam via la méthode attachCamera().
La seule difficulté est de bien comprendre qu'il est nécessaire d'ajouter l'objet Vidéo à un MovieClip, puis d'ajouter notre MovieClip au MovieMaterial et le tour est joué!


Nous voici à la fin de ce tutoriel, la prochaine fois nous verrons l'import d'objets Collada avec Away3D.


Ce tutoriel vous a été utile? rssAbonnez-vous au fil RSS !




Cordialement, Romain Dedenis.
Partager cet article
Repost0

commentaires