Blog Papervision3D

Blog Français sur Papervision3D

Tutoriel Papervision3D 3.0 – Classe Squelette

Posté par Ocelyn le 29 octobre, 2009
Publié dans Tutoriaux

Salut à tous,

Comme demandé dans un commentaire voici une classe squelette de la nouvelle monture de Papervision : Papervision3D 3.0.

En pré-requis, il vous faudra bien entendu le package Papervision3D 3.0 que vous pouvez récupérer ici.

La possibilité de compiler en Flash Player 10 (avec Flash CS4, ou autre) et le Flash Player 10 pour pouvoir lire la scène. (si vous avez des erreurs à l’ouverture du swf ça viens surement de ça)

Une classe comme BasicView n’ayant pas encore été implanté, il nous faudra recréer notre scène à la main (ce qui n’est pas plus mal pour comprendre les nouveautés).

La première Chose est de créer notre Viewport (lignes 38-39), notre scene (ligne 41), qui maintenant est un DisplayObject3D en attendant la création de la classe Scene3D, notre caméra (lignes 43-44) qui maintenant doit être ajoutée à notre scene !

Et enfin nous créons notre rendrerer (ligne 49).

Puis nous créons notre Cube (lignes 52-54) en lui passant un WireframeMaterial , pour l’instant notre cube ne peu recevoir qu’un seul material et qu’une seule taille (on peu le scaler en X ou en Y pour le transformer par contre).

Enfin nous obligeons notre camera à regarder le cube, grâce à la propriété lookAt (ligne 56).

Le reste ne change pas, dans notre fonction EnterFrame, nous lançons le rendu de la scène :)

Papervision3D 3.0 débute mais ça annoncera surement que du bon !

  1. package
  2. {
  3. import flash.display.Sprite;
  4. import flash.events.Event;
  5.  
  6. import org.papervision3d.cameras.Camera3D;
  7. import org.papervision3d.materials.WireframeMaterial;
  8. import org.papervision3d.objects.DisplayObject3D;
  9. import org.papervision3d.objects.primitives.Cube;
  10. import org.papervision3d.render.BasicRenderEngine;
  11. import org.papervision3d.view.Viewport3D;
  12.  
  13. public class BasicScene extends Sprite
  14. {
  15.  
  16. public function BasicScene()
  17. {
  18. addEventListener(Event.ADDED_TO_STAGE, addedToStage);
  19. }
  20.  
  21. private function addedToStage(e:Event):void
  22. {
  23. removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
  24.  
  25. init();
  26. }
  27.  
  28. private function init() : void
  29. {
  30. initScene();
  31. buildCube();
  32.  
  33. addEventListener(Event.ENTER_FRAME, render);
  34. }
  35.  
  36. private function initScene():void
  37. {
  38. viewport = new Viewport3D(0, 0, true);
  39. addChild(viewport);
  40.  
  41. scene = new DisplayObject3D();
  42.  
  43. camera = new Camera3D();
  44. scene.addChild( camera );
  45. camera.z = 1000;
  46.  
  47. renderer = new BasicRenderEngine();
  48. }
  49.  
  50. private function buildCube():void
  51. {
  52. var wfm : WireframeMaterial = new WireframeMaterial(0xff00ff);
  53. cube = new Cube(wfm, 200);
  54. scene.addChild( cube );
  55.  
  56. camera.lookAt(cube);
  57. }
  58.  
  59. private function render(event:Event=null):void
  60. {
  61. cube.rotationX++;
  62. cube.rotationY++;
  63.  
  64. renderer.renderScene(scene, camera, viewport);
  65. }
  66.  
  67. private var cube : Cube;
  68. private var camera : Camera3D;
  69. private var viewport : Viewport3D;
  70. private var scene : DisplayObject3D;
  71. private var renderer : BasicRenderEngine;
  72. }
  73. }
Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Technorati
  • Digg
  • Netvibes
  • Wikio FR
  • Live
  • Google Bookmarks
  • email
  • Print

9 commentaires dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback
mygif
415. sukei dit,
29 octobre, 2009 à 16:07

Merci, c’est vachement sympa! C’est à cause de la caméra que j’ai eu du mal. L’API est vraiment jeune et limitée, mais ça reste de bonne augure.

mygif
417. bill dit,
11 novembre, 2009 à 10:58

Bonjour,

J’ai 2 erreurs avec ce code. voila la premiere, ligne 53.

col: 23 Error: Contrainte implicite d’une valeur du type org.papervision3d.materials:WireframeMaterial vers un type sans rapport org.papervision3d.materials.utils:MaterialsList.

cube = new Cube(wfm, 200);

une idee ?

mygif
418. bill dit,
11 novembre, 2009 à 11:29

pour info, j’ai la version Papervision3D_2.1.920.zip

ici: http://code.google.com/p/papervision3d/

mygif
427. Ocelyn dit,
12 novembre, 2009 à 10:21

Ils ont dut implémenter les material list pour le cube dans la version que tu as (ils sont rapide d’ailleurs), je te laisse voir le tuto pour créer un cube dans l’ancienne version de Papervision et ça devrait fonctionner :)

mygif
428. sukei dit,
12 novembre, 2009 à 11:07

Il semble surtout être sur la version 2 de papervision3d ^^. Ce code n’est valable que pour la mouture 3.0.

mygif
429. Ocelyn dit,
12 novembre, 2009 à 11:25

Hé hé, j’avais cru lire version 3.2.1 :)

mygif
430. sukei dit,
12 novembre, 2009 à 11:38

Une progression si rapide de la version 3.0 aurait été si belle!

mygif
431. bill dit,
12 novembre, 2009 à 12:39

oups.
merci.
je vais chercher le v3 !

mygif
432. Ocelyn dit,
12 novembre, 2009 à 14:22

Bill je te conseille de rester sur la version 2, comme je l’explique dans ce billet, la version 3 est trop jeune pour être utilisable dans n’importe quel projet :D

Laisser un commentaire

Currently browsing Tutoriel Papervision3D 3.0 – Classe Squelette

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)