Blog Papervision3D

Blog Français sur Papervision3D

BitmapFireEffect, effet de flamme sur vos objets 3D.

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

Nous allons voir comment ajouter un magnifique effet de flamme sur vos objets 3D.

Tout d’abords, nous allons chercher une texture pour notre objets 3D qui sera la planète Terre, vous pouvez en trouver ici, la carte de la Terre sera parfaite pour notre exemple, faites attention à en choisir une qui ne soit pas trop grande ou réduire la taille de votre image dans votre logiciel de retouche d’image favoris, une trop grande image réduirait fortement les performances de notre application.

Pour réaliser notre effets de feu sur notre objets nous allons utiliser un BitmapEffectLayer et lui ajouter un BitmapFireEffect.

Nous avons besoin d’une texture Bitmap pour que notre effet fonctionne, la première étape est donc de chargé l’image qui nous servira de texture (ligne 25 à 27), faites attention à passer le bon lien vers votre image, pour mon cas elle se trouve à cette adresse  « assets/earth.jpg » (ligne 27)

L’image chargée par notre flash, nous l’ajoutons dans un objet BitmapData (ligne 34-35).

Nous créons notre BitmapEffectLayer auquel nous passons notre Viewport (ligne 45) et nous créons notre BitmapMaterial auquel nous affectons notre objet BitmapData précédent (ligne 47).

Enfin nous créons, notre BitmapFireEffect (ligne 54), et affectons ce dernier à notre BitmapEffectLayer créé précédemment (ligne 55).

Nous pouvons enfin nous amuser avec les propriétés de notre BitmapFireEffect (ligne 56-57), tel qu’activer la propriété blueFlame pour rendre le feu bleu (qui rend très bien sur notre pauvre planète), changer la valeur de la propriété flameHeight pour changer la taille du feu.. Je vous laisse regarder les différentes propriété que nous pouvons modifier pour personnaliser votre flamme.

Enfin il nous reste à ajouter notre Sphere au BitmapEffectLayer (ligne 59) et ajouter le BitmapEffectLayer à notre Viewport (ligne 61).

  1. package {
  2. import org.papervision3d.core.effects.BitmapFireEffect;
  3. import org.papervision3d.materials.BitmapMaterial;
  4. import org.papervision3d.objects.primitives.Sphere;
  5. import org.papervision3d.view.BasicView;
  6. import org.papervision3d.view.layer.BitmapEffectLayer;
  7.  
  8. import flash.display.BitmapData;
  9. import flash.display.Loader;
  10. import flash.events.Event;
  11. import flash.net.URLRequest;
  12.  
  13. public class FireBall extends BasicView
  14. {
  15.  
  16. public function FireBall(){
  17. loadingImage();
  18. }
  19.  
  20. //_______________________________________________________________
  21. //                                                    L O A D I N G
  22.  
  23. private function loadingImage() : void
  24. {
  25. myLoader = new Loader();
  26. myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
  27. myLoader.load(new URLRequest("assets/earth.jpg"));
  28. }
  29.  
  30. private function onLoadComplete(event : Event) : void
  31. {
  32. myLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
  33.  
  34. bmpData = new BitmapData(myLoader.width, myLoader.height);
  35. bmpData.draw(myLoader);
  36.  
  37. buildFireball();
  38. }
  39.  
  40. //_______________________________________________________________
  41. //                                                  F I R E B A L L
  42.  
  43. private function buildFireball() : void
  44. {
  45. var bitmapEffectLayer:BitmapEffectLayer = new BitmapEffectLayer(viewport);
  46.  
  47. var material:BitmapMaterial = new BitmapMaterial(bmpData);
  48.  
  49. sphere = new Sphere(material, 100, 10, 10);
  50. scene.addChild(sphere);
  51.  
  52. sphere.z = ( camera.zoom * camera.focus )Math.abs( camera.z );
  53.  
  54. var bitmapFireEffect : BitmapFireEffect = new BitmapFireEffect();
  55. bitmapEffectLayer.addEffect(bitmapFireEffect);
  56. bitmapFireEffect.blueFlame = true;
  57. bitmapFireEffect.flameHeight = 1;
  58.  
  59. bitmapEffectLayer.addDisplayObject3D(sphere);
  60.  
  61. viewport.containerSprite.addLayer(bitmapEffectLayer);
  62.  
  63. startRendering();
  64. }
  65.  
  66. override protected function onRenderTick(event:Event=null):void
  67. {
  68. sphere.rotationY ++;
  69. super.onRenderTick(event);
  70. }
  71.  
  72. //_______________________________________________________________
  73. //                                                V A R I A B L E S
  74.  
  75. private var myLoader : Loader;
  76. private var bmpData : BitmapData;
  77.  
  78. private var sphere : Sphere;
  79. }
  80. }
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
septembre 24th, 2009 at 9:04

[...] cela nous allons utiliser un BitmapMaterial (ligne 44) dont nous avions déjà parlé dans ce tutoriel, un PhongShader (ligne 45)qui va être le material qui affichera notre ombre, comme le [...]

Laisser un commentaire

Currently browsing BitmapFireEffect, effet de flamme sur vos objets 3D.

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)