Blog Papervision3D

Blog Français sur Papervision3D

ReflectionView, les reflets avec Papervision, c’est facile.

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

Avec la BasicView une autre classe est apparue la ReflectionView, cette classe vous permet en l’étendant, de créer rapidement une scène 3D (comme la BasicView) mais en lui rajoutant des propriétés permettant de créer un reflet pour vos objets.

Il faut tout d’abord, étendre notre classe avec la ReflectionView (ligne 9), puis configurer notre reflet.

La ReflectionView consiste à prendre l’image de la caméra qui rend la scène, puis la retourne pour lui donner un effet de miroir, vous avez donc la possibilité d’appliquer des effets à cette image grâce à la propriété viewportReflection (ligne 31), comme un Blur, un Glow… setReflectionColor (ligne 32) permet de changer du reflet, et surfaceHeight (ligne 33) comme son nom ne l’indique pas, permet de rapprocher ou d’éloigner le reflet de la scène 3D.

Enfin chose importante, pour afficher le reflet il faut absolument créer un EnterFrame (ligne 16) et lui ajouter un singleRender(); (ligne 40)

  1. package {
  2.         import org.papervision3d.core.effects.view.ReflectionView;
  3.         import org.papervision3d.materials.ColorMaterial;
  4.         import org.papervision3d.objects.primitives.Plane;
  5.  
  6.         import flash.events.Event;
  7.         import flash.filters.BlurFilter;
  8.  
  9.         public class BasicScene extends ReflectionView {
  10.                
  11.                 public function BasicScene()
  12.                 {      
  13.                         buildPlane();
  14.                         configReflection();
  15.                                                
  16.                         addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  17.                 }
  18.  
  19.                 private function buildPlane() : void
  20.                 {
  21.                         var colorMaterial : ColorMaterial = new ColorMaterial(0xff00ff);
  22.                         colorMaterial.doubleSided = true;
  23.                         plane = new Plane(colorMaterial, 50, 50, 4, 4);
  24.                         scene.addChild(plane);
  25.  
  26.                         plane.z = ( camera.zoom * camera.focus )Math.abs(camera.z);
  27.                 }
  28.                
  29.                 private function configReflection() : void
  30.                 {
  31.                         viewportReflection.filters = [new BlurFilter(3,3,1)];
  32.                         setReflectionColor(.5, .5, .5);
  33.                         surfaceHeight = -100;
  34.                 }
  35.                
  36.                 private function enterFrameHandler(event : Event) : void
  37.                 {
  38.                         plane.rotationX ++;
  39.                         plane.rotationY ++;
  40.                         singleRender();                
  41.                 }
  42.                
  43.                 private var plane : Plane;
  44.         }
  45. }
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
mygif
450. tonio dit,
3 février, 2010 à 21:19

Bonjour,
Merci beaucoup !

Juste une minuscule erreur ligne 26..

plane.z = ( camera.zoom* camera.focus ) – (Math.abs(camera.z));

(et selon les claviers et les polices le « - » peut générer des erreurs au copier coller).

Merci encore Ocelyn pour tout ce travail!

Laisser un commentaire

Currently browsing ReflectionView, les reflets avec Papervision, c’est facile.

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)