Blog Papervision3D

Blog Français sur Papervision3D

Coordonnées 2D du centre d’une Plane.

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

Dans cet article, nous allons voir comment récupérer les coordonnées 2D (x et y) d’une Plane dans Papervision, grâce à la propriété autoCalcScreenCoords.

Pour cet exercice nous allons créer une Plane et un rectangle 2D, ce dernier ira récupérer les coordonnées 2D de notre Plane pour se positionner en son centre, ceci étant la méthode la plus facile.

Nous créons notre Plane (lignes 21-25) et passons la propriété autoCalcScreenCoords de cette dernière à true (ligne 27), cette propriété nous permet d’activer la possibilité de récupérer les coordonnées 2D de notre Plane.

Puis nous créons notre rectangle 2D un Sprite (lignes 31-34) qui sera positionné au centre de la Plane, vous pourrez noter que à la création du rectangle (ligne 34) nous le centrons en lui même.

A partir de là dans notre fonction onRenderTick (ligne 37) nous déplaçons notre Plane en x et en y (lignes 39-40) pour voir le déplacement de notre Sprite que nous bougeons (lignes 42-43) grâce à la formule pour l’axe X par exemple :

centerSprite.x = ( plane.screen.x + (this.width / 2 ) );

Vous remarquez qu’au lieu de faire plane.x nous rajoutons la propriété screen qui permet d’obtenir la coordonnée X de la Plane sur le plan 2D et nous ajoutons à cette dernière, le centre de notre classe BasicScene grâce à la formule, largeur de notre classe (this.width this faisant référence à notre classe BasicScene) divisé par deux.

Il ne nous reste plus qu’à faire la même manipulation pour l’axe Y en remplaçant :

centerSprite.y = ( plane.screen.y + (this.height/ 2 ) );

  1. package {
  2.         import org.papervision3d.materials.ColorMaterial;
  3.         import org.papervision3d.objects.DisplayObject3D;
  4.         import org.papervision3d.objects.primitives.Plane;
  5.         import org.papervision3d.view.BasicView;
  6.  
  7.         import flash.display.Sprite;
  8.         import flash.events.Event;
  9.  
  10.         public class BasicScene extends BasicView {
  11.                
  12.                 public function BasicScene()
  13.                 {      
  14.                         centerPlane();
  15.                        
  16.                         startRendering();
  17.                 }
  18.  
  19.                 private function centerPlane() : void
  20.                 {
  21.                         var mt : ColorMaterial = new ColorMaterial(0×0000ff);
  22.                        
  23.                         plane = new Plane(mt, 80, 80);
  24.                         scene.addChild(plane);
  25.                         plane.z = ( camera.zoom * camera.focus )Math.abs (camera.z);
  26.                        
  27.                         plane.autoCalcScreenCoords = true;
  28.                          
  29.                         //—-
  30.                          
  31.                         centerSprite = new Sprite();
  32.                         centerSprite.graphics.beginFill(0xff0000, 0.2);
  33.                         centerSprite.graphics.drawRect(-20, -20, 40, 40);
  34.                         addChild(centerSprite);
  35.                 }
  36.  
  37.                 override protected function onRenderTick(event:Event=null):void
  38.                 {
  39.                         plane.x += 0.2;
  40.                         plane.y += 1;
  41.                         //—-
  42.                         centerSprite.x = ( plane.screen.x + (this.width / 2 ) );
  43.                         centerSprite.y = ( plane.screen.y + (this.height / 2 ) );
  44.                         //—-
  45.                         super.onRenderTick(event);
  46.                 }
  47.                
  48.                 private var plane                       : Plane;
  49.                 private var centerSprite        : Sprite;
  50.         }
  51. }
Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Technorati
  • Digg
  • Netvibes
  • Wikio FR
  • Live
  • Google Bookmarks
  • email
  • Print

1 commentaire dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback

Pingback And Trackback

pingback and trackback from various blogs
mygif
novembre 13th, 2009 at 0:07

[...] le 13 novembre, 2009 Publié dans Tutoriaux Suite à l’article sur comment obtenir les coordonnées 2D du centre d’une Plane, je vous présente ici une astuce pour trouver les coordonnées 2D du somment haut gauche [...]

Laisser un commentaire

Currently browsing Coordonnées 2D du centre d’une Plane.

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)