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 !

Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Technorati
  • Digg
  • Netvibes
  • Wikio FR
  • Live
  • Google Bookmarks
  • email
  • Print

14 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.

mygif
247. vanish dit,
27 mai, 2009 à 8:24

Salut, je me met à la 3D flash,et je découvre avec plaisir ces tutos qui me permettent de démarrer facilement. Donc merci beaucoup.

Je tiens seulement à signaler quelques changements nécessaires, dus aux mises à jour de papervision3d depuis la publication de ces tutoriels :

- freeCamera3d n’existe plus, il faut utiliser camera3d, une class cameraType permettant de régler (d’après ce que j’ai vaguement compris en lisant la doc) le type.
- le viewPort3D possède également une propriété interactive:Boolean sur false par défaut, il faut la passer a true pour que ce tutoriel soit possible.

Voilà, enfin comme ça on est obligé de se bouger et d’explorer un peu la doc lol.

mygif
460. Scion Lucifer dit,
16 mars, 2010 à 18:16

Bonjour,

J’aimerai savoir comment faire pour placer une liste planes par rapport à un « centre de gravité » (qui se trouve par exemple au coordonnées x=y=z=0; )

En effet, ce que que souhaiterai c’est faire une rotationY de toutes mes planes, et qu’elles tournent autour d’un même point comme le ferrai des planètes.

PS: (ça n’a rien à voir avec ma demande sur les planes).

Voici ce que j’ai réussi à faire grâce à toi :http://usallunited.com/tmp/Cube-V2.1/main.html
En utilisant un cube.

/ Merci beaucoup !

mygif
463. Ocelyn dit,
23 mars, 2010 à 17:58

Salut à toi, amis fan de Jpop,

Tu trouveras un de mes tutos qui explique comment faire ça en ajoutant tes planes dans un DisplayObject3D, il ne te restera plus qu’à faire la rotation sur ce dernier pour faire tourner toutes les planes.

Ocelyn.

Laisser un commentaire

Currently browsing Interactivité sur une Plane

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)