Blog Papervision3D

Blog Français sur Papervision3D

Vos premiers pas avec Alternativa3D.

Posté par Ocelyn le 22 juin, 2008
Publié dans Tutoriaux

En exclusivité sur papervision3d-fr.com, un tutoriel vidéo dédié à Alternativa3d, c’est une première Française, voir mondiale, j’vous le dis ma bonne dame !

Les pré-requis :

Télécharger et installer : Flash Player 10

Vous inscrire puis télécharger la libraire Alternativa3D ici.

Télécharger les fichiers utilisés dans ce tutoriel ici.

Et de lancer la vidéo (Exemple sous Windows) ;)

Get the Flash Player to see this player.

Attention ! Il semblerait que la propriété setMaterialToAllSurfaces(maTexture); ne soit plus d’actualité depuis la date de diffusion du tutoriel, veuillez utiliser la propriété cloneMaterialToAllSurfaces comme ceci :

“geosphere.cloneMaterialToAllSurfaces(terreTextureMaterial);”

Merci à Fab pour m’avoir remonté l’erreur :)

  1. package {
  2. import alternativa.engine3d.controllers.CameraController;
  3. import alternativa.engine3d.core.Camera3D;
  4. import alternativa.engine3d.core.Object3D;
  5. import alternativa.engine3d.core.Scene3D;
  6. import alternativa.engine3d.display.View;
  7. import alternativa.engine3d.materials.WireMaterial;
  8. import alternativa.utils.FPS;
  9.  
  10. import alternativa.engine3d.primitives.GeoSphere;
  11. import alternativa.engine3d.materials.TextureMaterial;
  12. import alternativa.types.Texture;
  13.  
  14. import flash.display.Sprite;
  15. import flash.display.StageAlign;
  16. import flash.display.StageScaleMode;
  17. import flash.events.Event;
  18.  
  19. public class HelloAlternativa3D extends Sprite  {
  20.  
  21. private var scene:Scene3D;
  22. private var view:View;
  23. private var camera:Camera3D;
  24. private var cameraController:CameraController;
  25.  
  26. private var geosphere:GeoSphere;
  27. private var terreTexture:Texture;
  28. private var terreTextureMaterial:TextureMaterial;
  29.  
  30. public function HelloAlternativa3D()    {
  31. addEventListener(Event.ADDED_TO_STAGE, init);
  32. }
  33.  
  34. public function init(e:Event): void {
  35. removeEventListener(Event.ADDED_TO_STAGE, init);
  36.  
  37. stage.scaleMode = StageScaleMode.NO_SCALE;
  38. stage.align = StageAlign.TOP_LEFT;
  39.  
  40. // Creating scene
  41. scene = new Scene3D();
  42. scene.root = new Object3D();
  43.  
  44. //Textures
  45. terreTexture = new Texture(new TerreMap(100,100), "terre");
  46. terreTextureMaterial = new TextureMaterial(terreTexture, 1, false);
  47.  
  48. //geoSphere
  49. geosphere = new GeoSphere(60, 6);
  50. geosphere.setMaterialToAllSurfaces(terreTextureMaterial);
  51. scene.root.addChild(geosphere);
  52. //
  53.  
  54. // Adding camera and view
  55. camera = new Camera3D();
  56. camera.x = 100;
  57. camera.y = -150;
  58. camera.z = 100;
  59. scene.root.addChild(camera);
  60.  
  61. view = new View();
  62. addChild(view);
  63. view.camera = camera;
  64.  
  65. // Connecting camera controller
  66. cameraController = new CameraController(stage);
  67. cameraController.camera = camera;
  68. cameraController.setDefaultBindings();
  69. cameraController.checkCollisions = true;
  70. cameraController.collisionRadius = 20;
  71. cameraController.lookAt(geosphere.coords);
  72. cameraController.controlsEnabled = true;
  73.  
  74. // FPS display launch
  75. FPS.init(stage);
  76.  
  77. stage.addEventListener(Event.RESIZE, onResize);
  78. stage.addEventListener(Event.ENTER_FRAME, onEnterFrameMe);
  79. onResize(null);
  80. }
  81.  
  82. private function onResize(e:Event):void {
  83. view.width = stage.stageWidth;
  84. view.height = stage.stageHeight;
  85. }
  86.  
  87. private function onEnterFrameMe(e:Event):void {
  88. // User input processing
  89. cameraController.processInput();
  90. // Scene calculating
  91. scene.calculate();
  92.  
  93. }
  94. }
  95. }

13 commentaires dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback
mygif
87. nico dit,
3 juillet, 2008 à 14:22

Merci pour ce tutoriel,

mais attention, il est un peu chiant a entendre, ça avance lentement.

Bonne continuation.

mygif
97. kevglx dit,
11 juillet, 2008 à 12:38

je ne pensais pas que cela supporterait si mal les mouvements d’objets et les tween…
c’est vraiment dommage

wait and see…

mygif
112. city31 dit,
17 juillet, 2008 à 11:23

Bonjour,

A quand un nouveau tuto ?

merci d’avance

mygif
119. josefM9 dit,
29 juillet, 2008 à 6:52

cool comme tuto!
Thinks et bonne continuation

mygif
137. itch dit,
26 août, 2008 à 0:23

Bonjour,
Je ne voulais pas te solliciter, mais là je craque ! Tu es le seul initié-à-papervision francophone que je connaisse, et les explications en aglais, même si je me débrouille, j’en peux plus !

Voilà mon problème : je cherche tout simplement à réutiliser ce bout de code là : http://www.dehash.com/?page_id=147

Pour avoir toutes les classes qu’il faut (même en suivant ton tuto d’install de pv3d ça suffit pas apparemment), j’ai réutilisé le zip téléchargé ici : http://modern-carpentry.com/talk/?p=28#comment-211

Là ça se complique : déjà, dans le zip précédemment cité, impossible de compiler le fichier videoCube.fla : erreur dans vertices3D “1020 la méthode marquée override doit neutraliser une autre méthode” (là j’ai versé ma première larme… xD)

Bref, en remplacant dans le main.as tout le code par le code fournit sur le premier lien et en allant modifier la classe de document sur le fla en “VideoStreamMaterialDemo” (c’est bien ça je pense ??) et en rajoutant une video en flv bidon qui remplace celle sollicitée dans le script, là, joli écran blanc, même pas d’erreur, encore plus frustrant…

Je fais tout mal, j’ai rien compris, ou j’ai vraiment pas de chance ?

Merci d’avance si tu prends le temps de me répondre !

mygif
152. Fab dit,
29 septembre, 2008 à 14:06

Bonjour,

j’ai suivi le tutoriel à la lettre, à la compilation j’ai un autre message d’erreur et il n’y a aucun cube lors de l’affichage du swf…

J’ai surement du rater une étape qui à mon avis est l’installation d’Alternativa3D.

Sur leurs site (http://docs.alternativaplatform.com/display/TDEN/Hello%2C+Alternativa3D), il n’y a apparemment qu’une seule ligne d’explication, donc même avec ça, rien ne se lance :(

Je laisse mon adresse e-mail si une âme charitable voudrait bien m’aider ;)

Infos :
Dév. sous Adobe Flash CS3
Imports précédents de Papervision3D (conflits?)

mygif
153. Ocelyn dit,
29 septembre, 2008 à 18:58

Bonjour,

Quel est le message d’erreur ?

Aucun soucis pour le conflit avec Papervision donc pas chercher de ce coté.

Je te laisse regarder :

http://docs.alternativaplatform.com/display/TDEN/Connecting+library

Il y a une explication détaillée de l’installation de Alternativa3D sous les différent IDE ;)

mygif
154. Fab dit,
2 octobre, 2008 à 9:51

Merci Ocelyn pour ta réponse et pr le lien,

il s’agit du message d’erreur suivant :

HelloAlternativa3D.as ligne 40
box.setMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF));

1061: Appel à la méthode setMaterialToAllSurfaces peut-être non définie, via la référence de type static alternativa.engine3d.primitives:Box.

Qd je compile par F12, le swf se lance bien ds mon navigateur (testé avec Firefox) mais on ne voit que le fond…

J’ai copié les 3 fichiers .swc d’Alternativa3D pour Flash 9
(car ils livrent aussi des fichiers du mm nom pr Flash 10) car je développe sous Flash CS3 (euh, c’est bien le 9 ça? :))
dans :
“C:\Documents and Settings\Fab\Local Settings\Application Data\Adobe\Flash CS3\fr\Configuration\Components”

et même dans :
“C:\Program Files\Adobe\Adobe Flash CS3\fr\Configuration\Components”

Snif, aucune amélioration…

mygif
155. Ocelyn dit,
2 octobre, 2008 à 10:43

Hmmm, je pense que c’est simplement que la propriété setMaterialToAllSurfaces n’est pas applicable sur une box.

Je l’utilise pour mes sphères sans problèmes dans le tutoriel au dessus.

Essaye : box.cloneMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF));

Pour l’installation elle me semble ok, si tu avais mal installé il n’aurait rien trouvé.

FlasCS3 permet de compiler en 9 oui, pour compiler en 10 il faut utiliser un flex SDK si ne je me trompe pas.

Dis moi ce qu’il en est ;)

mygif
156. openmind dit,
2 octobre, 2008 à 11:03

Salut Fab,

J’ai regarder les sources originaux sur le site alternativa et il semblerait que “setMaterialToAllSurfaces” n’existe pas mais ils utilisent “cloneMaterialToAllSurfaces”… j’avais le même problème que toi et FlashCS3 avec les 2 types de lib FP9 et FP10…avec “clone” ça marche ! Je comprends pas comment ça marche dans la video ???

@+

mygif
158. Fab dit,
2 octobre, 2008 à 13:51

Ca marche :-D

Bravo, tu as pu trouver la mauvaise ligne, j’ai remplacé par
“geosphere.cloneMaterialToAllSurfaces(terreTextureMaterial);”
dans ton listing et l’animation se lance.

Dommage que la rotation soit mal gérée comme tu le disais dans la vidéo, pour mon projet je voulais faire une sphère qui tourne sans arret (comme une planète) donc ça me posera peut-être problème…

Sinon, peut-on mélanger texture et paramètre d’alpha ?
Du genre : “MaterialToAllSurfaces(terreTextureMaterial, 0.5)” ?

mygif
159. Ocelyn dit,
2 octobre, 2008 à 20:27

J’ai envie de dire teste ;)

Pour la rotation, attend la prochaine version de Alternativa3D, le problème sera surement réglé.

Le setMaterialToAllSurfaces ne marche plus ?

C’est surement du à une différence de version, le tutoriel a été réalisé quelques jours après la sortie d’Alternativa, donc ils ont du changer ce paramètre :D

Sinon pour ton projet utilise Papervision, gestion de la transparence et rotation fluide sans aucun soucis :)

mygif
169. Loubiou dit,
20 octobre, 2008 à 3:10

Bonjour,

je voulais juste dire que j’utilise flash 9 et que j’ai copié également les classes swc dans : C:\Program Files\Adobe\Adobe Flash CS3\fr\Configuration\ActionScript 3.0\Classes suite à une erreur dans le panneau de sortie. Now, je n’ai plus d’erreurs mais pas de cube visible !! Pas simple du tout, même avec ce super tuto en Français (bravo !!)

Laisser un commentaire

Currently browsing Vos premiers pas avec Alternativa3D.

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)