Blog Papervision3D

Blog Français sur Papervision3D

Accèder aux propriétés de la BasicView et à son rendu

Posté par Ocelyn le 11 septembre, 2009
Publié dans Tutoriaux

Très vite après avoir créé sa scene 3D avec la BasicView, on va vouloir en modifier les propriétés, modifier la caméra, accéder au rendu pour par exemple faire bouger des objets en EnterFrame…

On pourra modifier les propriétés de la scène 3D, tout simplement en les appelants, pour modifier le Viewport par exemple (ligne 12) viewport.interactive, viewport.alpha… pour la caméra (ligne 22) , camera.zoom, camera.z…

Si on veut accéder au rendu de la scène 3D il faudra overrider la fonction de rendu onRenderTick, c’est à dire écraser la fonction présente dans la BasicView pour pouvoir l’utiliser dans notre classe (ligne 27), du fait qu’on écrase la fonction, il ne faudra pas oublier de réécrire sa fonctionnalité de base :  super.onRenderTick(event); (ligne 31).

  1. package {
  2. import org.papervision3d.materials.ColorMaterial;
  3. import org.papervision3d.objects.primitives.Plane;
  4. import org.papervision3d.view.BasicView;
  5.  
  6. import flash.events.Event;
  7.  
  8. public class BasicScene extends BasicView {
  9.  
  10. public function BasicScene()
  11. {
  12. viewport.interactive = true;
  13. buildPlane();
  14. }
  15.  
  16. private function buildPlane() : void
  17. {
  18. var colorMaterial : ColorMaterial = new ColorMaterial(0xff00ff);
  19. plane = new Plane(colorMaterial, 50, 50, 4, 4);
  20. scene.addChild(plane);
  21.  
  22. plane.z = ( camera.zoom * camera.focus )Math.abs(camera.z);
  23.  
  24. startRendering();
  25. }
  26.  
  27. override protected function onRenderTick(event:Event=null):void
  28. {
  29. plane.rotationX ++;
  30. plane.rotationY ++;
  31. super.onRenderTick(event);
  32. }
  33.  
  34. private var plane : Plane;
  35. }
  36. }
Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Technorati
  • Digg
  • Netvibes
  • Wikio FR
  • Live
  • Google Bookmarks
  • email
  • Print

18 commentaires dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback
mygif
352. djé dit,
16 septembre, 2009 à 11:25

Bonjour,
Merci pour ce tuto, parcontre j’ai un probleme: au lancement de l’animation flash m’affiche le message suivant:
« TypeError: Error #1009: Il est impossible d’accéder à la propriété ou à la méthode d’une référence d’objet nul.
at test/onRenderTick() »

Cordialement,

Jérémie

mygif
353. Ocelyn dit,
16 septembre, 2009 à 11:32

Tu as bien créé une private var pour ton objet Plane (ligne 34) ou bien étendu ta classe avec une BasicView ( ligne 8 ) ?

Là il te dis que tu fais appel dans ta fonction onRendreTick à un objet ou une fonction qui n’existe pas donc soit ton objet Plane n’existe pas car dans cette fonction on fait tourner la plane soit c’est ta fonction qui n’existe pas mais il me semble que dans ce cas il aurait fait une autre erreur.

mygif
354. djé dit,
16 septembre, 2009 à 12:09

J’ai modifié « private var plane:Plane = new Plane; », là l’anim tourne mais la plane ne bouge pas, bizarre…

mygif
355. Ocelyn dit,
16 septembre, 2009 à 13:20

Tu créé comment ta plane ?

« plane = new Plane(colorMaterial, 50, 50, 4, 4); » ou « var plane : Plane = new Plane…) ?

mygif
364. empj dit,
28 septembre, 2009 à 15:24

Bonjour,

le code me retourne pour la ligne 22.

1084: Erreur de syntaxe : rightbrace est attendu devant Math.

mygif
365. empj dit,
28 septembre, 2009 à 17:51

Bonjour,

Concernant la ligne 22 du code. Un simple copier/coller a mis le bronx. En retapant les signes – et * tout est OK.

mygif
374. maxime dit,
2 octobre, 2009 à 16:17

s’il te plait donne des noms explicatifs à tes fonctions… pas comme onRenderTick qui fait penser à une méthode ou autre chose.
Pareil dans pour les 1er tutos, appeler sa fonction onEnterFrame, ça porte à confusion.

mygif
375. Ocelyn dit,
2 octobre, 2009 à 16:41

J’override la fonction onRenderTick, fonction qui appartient à la classe BasicView, classe qui fait partie du moteur Papervision3D, ça risque d’être difficile de la renommer :)

Pour le onEnterFrame, je suis ouvert à toutes suggestion, tu l’aurais nommée comment ?

mygif
380. maxime dit,
5 octobre, 2009 à 16:59

dsl pour la 1ère remarque alors. Ca ressemble à une déclaration de fonction banale, donc je pensais que c’était un nom que tu avais donné toi même.
pour les enterFrame bah enAvantMartine j’aime bien ^^

mygif
381. Ocelyn dit,
5 octobre, 2009 à 17:17

Pas mal :D J’en connais qui aurait des bonnes crises de rires en reprenant du code avec des noms de fonctions comme ça. :)

mygif
390. grunam dit,
10 octobre, 2009 à 19:45

Voila mon erreur:

5008: Le nom de la définition ‘BasicScene’ ne reflète pas l’emplacement de ce fichier. Veuillez changez le nom de définition dans ce fichier, ou renommez le fichier. C:\Users\pc\Documents\papervision\main.as

Merci pour le coup de main.

mygif
391. grunam dit,
10 octobre, 2009 à 23:59

J’ai moi même trouvé:
J’ai oublié de modifier le nom de mon fichier Main.as en BasicScene.as…

mygif
434. Nico dit,
14 novembre, 2009 à 2:32

Salut,

Je démarre avec papervision, et merci à toi pour ces tutos.
Mais, y’en a toujours un, pourquoi faut-il overrider une fonction pour par exemple effectuer des rotations ? Y’a rien de prévu à cet effet ???

Merci !

mygif
437. arne dit,
18 novembre, 2009 à 14:57

salut

je me retrouve avec ces 2 erreurs

1093: Erreur de syntaxe.

mygif
438. arne dit,
18 novembre, 2009 à 14:59

c’est mal passé voilà les erreurs

1093: Erreur de syntaxe.

mygif
439. arne dit,
18 novembre, 2009 à 15:00

 » 1093: Erreur de syntaxe.

mygif
454. leonhard dit,
16 février, 2010 à 16:37

Félicitations et merci beaucoup pour ces tutoriels. J’ai par contre une petite question, je voudrais faire une rotation de la camera et ca ne fonctionne visiblement pas dans la fonction override avec camera.rotationY+=5; Comment ca se fait? y a t il un autre moyen?

mygif
455. leonhard dit,
16 février, 2010 à 16:52

bon ben en fait je viens de trouver un moyen. je le mets ici au cas où:
1) rajouter
import org.papervision3d.cameras.CameraType;
2) et super( 800, 512, true, false, CameraType.FREE ); au debut de la fonction principale.

Laisser un commentaire

Currently browsing Accèder aux propriétés de la BasicView et à son rendu

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)