Blog Papervision3D

Blog Français sur Papervision3D

Interactivité sur une Plane

Posté par Ocelyn le 4 mars, 2008
Publié dans Tutoriaux

Tutoriel pour apprendre à créer une interactivité sur une Plane. (Code source sous la vidéo)

Get the Flash Player to see this player.

  1. package
  2. {
  3. import flash.display.Sprite;
  4. import flash.events.Event;
  5. import org.papervision3d.cameras.FreeCamera3D;
  6. import org.papervision3d.render.BasicRenderEngine;
  7. import org.papervision3d.scenes.Scene3D;
  8. import org.papervision3d.view.Viewport3D;
  9. import org.papervision3d.objects.primitives.*;
  10. import org.papervision3d.materials.*;
  11. import org.papervision3d.events.*;
  12.  
  13. public class Main extends Sprite
  14. {
  15.  
  16. private var viewport:Viewport3D;
  17. private var scene:Scene3D;
  18. private var camera:FreeCamera3D;
  19. private var renderer:BasicRenderEngine;
  20. private var plane:Plane;
  21. private var material:BitmapFileMaterial;
  22.  
  23. public function Main(){
  24. init();
  25. }
  26.  
  27. private function init():void{
  28.  
  29. initPapervision();
  30. initMaterials();
  31. initObjects();
  32. initListener();
  33. }
  34.  
  35. private function initPapervision():void
  36. {
  37.  
  38. viewport = new Viewport3D(640,480,false,true);
  39. addChild( viewport );
  40.  
  41. scene = new Scene3D();
  42.  
  43. camera = new FreeCamera3D;
  44.  
  45. renderer = new BasicRenderEngine;
  46.  
  47. }
  48.  
  49. private function initMaterials():void{
  50. material = new BitmapFileMaterial("logo.jpg");
  51. material.doubleSided = true;
  52. material.interactive = true;
  53. }
  54.  
  55. private function initObjects():void{
  56. camera.zoom = 8;
  57. plane = new Plane( material, 127, 128, 8, 8 );
  58. scene.addChild( plane );
  59. }
  60.  
  61. private function initListener():void{
  62. plane.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS,onPress);
  63. addEventListener(Event.ENTER_FRAME, onEnterFrame);
  64. }
  65.  
  66. private function onPress(e:InteractiveScene3DEvent):void{
  67. plane.pitch( 20 );
  68. }
  69.  
  70. private function onEnterFrame (e:Event):void{
  71. renderer.renderScene ( scene, camera, viewport );
  72. plane.rotationZ += 4;
  73. }
  74.  
  75. }
  76. }

Tutoriel réalisé grâce à l’aimable accord de John Lindquist, une partie du code source lui appartient !

11 commentaires dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback
mygif
19. kevglx dit,
7 mars, 2008 à 11:27

j’ai téléchargé les classes papervision depuis mais il me manque certaines classes, comme render, view etc,
ou peut-on les récupérer stp.
Sinon tres bon tuto. Bravo

mygif
20. admin dit,
7 mars, 2008 à 11:56

As-tu suivis le tutoriel pour installer Papervision ?

Si tu suis le tutoriel toutes les classes sont comprises à l’intérieur.

mygif
21. kevglx dit,
7 mars, 2008 à 12:10
mygif
48. totolabellevie dit,
6 avril, 2008 à 10:20

Une question…
Dans Viewport3d tu passes les variables :
largeur, hauteur, “AutoScapeToStage” c’est phonetique, ça sert à quoi ?
Merci

mygif
18 avril, 2008 à 21:19

C’est vraiment sympa ce que tu fais. Bien les tuto je pense je vais les regarder et tester un peu. En tout cas chapeau l’artiste.

mygif
54. Atula dit,
21 avril, 2008 à 18:32

Salut,

je vois que pour une plane tu cible directement ce dernier pour lui appliquer l’effet de pitch dans sa fonction onRelease mais dans le cas ou tu aurais plusieurs plane, tu retrouverais comment dynamiquement la plane sur laquelle on clique et a partir de l’objet InteractiveScene3DEvent ?

Merci

mygif
55. Ocelyn dit,
28 avril, 2008 à 15:56

private function onPress(e:InteractiveScene3DEvent):void{

e.currentTarget.pitch( 20 );

}

Normalement ça devrais marcher :)

(A confirmer)

mygif
111. KOMA dit,
15 juillet, 2008 à 21:49

Quelqu’un peut m’aider ?
J’ai le message d’erreur de compilation suivant :
Warning: 1090: Problème de migration : En ActionScript 3.0, le gestionnaire d’événement onPress n’est pas déclenché automatiquement par Flash Player lors de l’exécution. Vous devez d’abord enregistrer ce gestionnaire d’événement à l’aide de addEventListener ( ‘mouseDown’, callback_handler).

merci pour votre aide ..

mygif
161. Mato dit,
7 octobre, 2008 à 13:22

Bonjour,

tout d’abord bravo pour ces tutos qui m’ont permis de débuter avec papervision.

par contre j’ai un problème, c’est que dans ma fenêtre de sortie il me ressort en boucle :
ERROR: MaterialObject3D: transformUV() material.bitmap not found!
J’ai beau chercher, je sais pas pourquoi,
merci :)

mygif
170. ezekiel dit,
21 octobre, 2008 à 22:13

Salut,

Même problème que Mato, tous fonctionne mais

ERROR: MaterialObject3D: transformUV() aterial.bitmap not found! dans la fenêtre output.

Et merci à toi ocelyn pour le partage de ton travail!

mygif
181. Nore dit,
6 novembre, 2008 à 8:09

@ezekiel @Mato

ERROR: MaterialObject3D: transformUV() aterial.bitmap not found!

Apparait quand le fichier image n’est pas encore chargé, cela se règle lors de l’exécution.
Ou bien c’est que l’image est vraiment manquante.

Laisser un commentaire

Currently browsing Interactivité sur une Plane

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)