Blog Papervision3D

Blog Français sur Papervision3D

Chargement de modèle 3D, les fichiers DAE.

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

Aujourd’hui, nous allons voir une des manières possible pour charger un modèle 3D dans Papervision et plus précisément un fichier DAE tiré de Google Sketchup.

Google Sketchup propose une grande base de donnée de modèle 3D, vous trouverez facilement votre bonheur sur ce site :)

Dans le cadre de notre exercice, nous allons utiliser une tour Eiffel.

Vous verrez que vous avez la possibilité de télécharger plusieurs type de modèle, pour notre exemple nous téléchargerons le fichier Collada contenu dans un zip.

Astuce : Vous pouvez aussi télécharger le fichier Google Earth 4 .kmz et remplacer l’extension par un .zip vous aurez alors le même type de fichier qu’au dessus :)

Après avoir téléchargé votre .zip en le décompressant vous aurez un dossier nommé Untitled, dedans 2 fichiers et 2 dossiers, vous pouvez supprimer les deux fichiers doc.kml et textures.txt qui ne nous sont pas utile.

Enfin copiez votre dossier Untitled à coté de votre fichier .html

Nous pouvons passer au code :

Nous créons un nouveau objet DAE (ligne 17) et chargeons notre modèle (ligne 18) en lui passant le chemin vers le modèle DAE, ici le dossier Untitled / models / model.dae, si vous ouvrez votre swf dans une page HTML le chemin sera par rapport à la position de notre page HTML, si vous faites les tests en ouvrant directement votre fichier swf alors le chemin sera par rapport à ce dernier, le mieux est d’avoir notre fichier swf dans le même dossier que notre page HTML.

Puis nous changeons la taille de notre objet avec l’attribut scale (ligne 19) pour le réduire de taille si nous passons un chiffre inférieur à 1 ou l’agrandir si supérieur à 1.

Nous le déplaçons sur notre scène (ligne 20) et enfin l’ajoutons à notre scène (ligne 21).

Nous lui faisons subir une rotation sur Y (ligne 26) pour le voir sur toutes les coutures.

  1. package {
  2. import org.papervision3d.objects.parsers.DAE;
  3. import org.papervision3d.view.BasicView;
  4.  
  5. import flash.events.Event;
  6.  
  7. public class BasicScene extends BasicView {
  8.  
  9. public function BasicScene()
  10. {
  11. loadDae();
  12. startRendering();
  13. }
  14.  
  15. private function loadDae() : void
  16. {
  17. eiffel = new DAE();
  18. eiffel.load("Untitled/models/model.dae");
  19. eiffel.scale = 0.1;
  20. eiffel.y = -500;
  21. scene.addChild(eiffel);
  22. }
  23.  
  24. override protected function onRenderTick(event:Event=null):void
  25. {
  26. eiffel.rotationY++;
  27. super.onRenderTick(event);
  28. }
  29.  
  30. private var eiffel : DAE;
  31. }
  32. }
Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Technorati
  • Digg
  • Netvibes
  • Wikio FR
  • Live
  • Google Bookmarks
  • email
  • Print

11 commentaires dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback
mygif
400. Disage dit,
15 octobre, 2009 à 15:36

La choses que l’on ne sait pas, c’est la limite de résolution pour un object 3D (nombre de poly)
Si tu as une idée de la limite… ça m’interesse

mygif
401. Ocelyn dit,
15 octobre, 2009 à 17:13

C’est une question qui n’a qu’une seule réponse « le moins possible ».

Plus il y aura de poly dans ton objet moins la scène sera fluide, en plus ça dépend de la machine qui fera tourner le flash et si le flash est ouvert depuis un swf, une page html, ou à la compilation…

Enfin bref difficile de répondre, disons que pour un object 3D, il faut rester sous les 5000 pour que ce soit encore un peu fluide et si on parle de limite certains on fait des tests entre 130 000 et 300 000 pour une scène (je ne suis pas allez vérifier leur dires)

Ps : 400eme commentaires pas mal :)

mygif
402. bryanbeast dit,
16 octobre, 2009 à 4:59

Est il possible, depuis flash, de baisser la qualité des objets 3 importés?
En effet lorsque les .DAE importés sont lourd, le swf ne se compile pas, flash ne le permettant pas aux scripts mettant trop de temps à s’exécuter…

mygif
403. Ocelyn dit,
16 octobre, 2009 à 9:01

Non tu ne peu pas baisser la qualité du model 3D à l’import, en revanche tu peu aller dans Fichier -> Paramètre de publication (ctrl+shift+F12) onglet Flash, et augmenter le Script Time limit (en dessous de password) en gros c’est le temps maximum autorisé par Flash pour la compilation avant de l’annuler.

mygif
405. disage dit,
16 octobre, 2009 à 12:43

bien, sur ce que j’ai lu la tantôt il est recommandé de pas dépasser les 1500 poly => 3000 triangle.
Mais bon, faudrait s’amuser a faire des tests. Mais j’ai pas encore vu un object avec une belle définition sur aucun moteur flash.

mygif
407. Ocelyn dit,
16 octobre, 2009 à 15:56

Car ce n’est pour l’instant pas fait pour, malheureusement, il faudrait passer par Unity3D par exemple qui permet de charger des bons modèle 3D et qui peut être « piloté » par Flash :)

En attendant qu’Adobe se décide à mieux gérer les cartes graphique pour le rendu 3D.

mygif
444. Cédric dit,
30 décembre, 2009 à 18:49

Bonjour Ocelyn et merci bcp pour tes tutoriaux que je consulte avec intérêt.
——————————————-
en copiant ton code j’ai bien la tour eiffel mais sans texture (sur mon pc), par contre en ligne tout est ok (tu as une idée du problème ?)
——————————————-
par contre je n’arrive pas à afficher la tour eiffel en même temps que les éléments crées dans les exemples précedant (cube, plane, 3D object)
Peut être un indice : la première plane définie affiche bien sa texture mais avec au dessus les triangles en filaire

si je retire la tour tout se passe bien pour le reste mais sans tour :(

Merci

mygif
445. Ocelyn dit,
10 janvier, 2010 à 13:29

Salut à toi Cédric, pour ton problème de texture en ligne et en local, je ne peux pas trop t’aider as tu un message d’erreur ? Peut être le chemin des textures est mauvais en local ?

Pour l’affichage des objets en même temps que la tour, il faut attendre que la tour soit chargée car tu crée les objets avant qu’elle ne le soit, il faut ajouter un écouteur eiffel.addEventListener(FileLoadEvent.LOAD_COMPLETE, loadComplete); pour ensuite créer tes objets.

mygif
446. Cédric dit,
11 janvier, 2010 à 16:53

Merci, c’est réglé pour la tour avec le addEventListener.

Par contre en local pas de message d’erreur mais ces lignes :
INFO: BitmapFileMaterial: Loading bitmap from Untitled/images/texture0.jpg?nc=0.12084043817594647
INFO: BitmapFileMaterial: Loading bitmap from Untitled/images/texture0.jpg?nc=0.6945451721549034
INFO: BitmapFileMaterial: Loading bitmap from Untitled/images/texture0.png?nc=0.025898626074194908

mygif
452. yao dit,
8 février, 2010 à 12:28

Bonjour,

Et merci pour ces tuto…c dur mais c bon ;)

J’ai une erreure « 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\YAO\Desktop\TEST_PAPERVISION\ex_02\Main.as

suis un peu larguer la..

mygif
453. yao dit,
9 février, 2010 à 15:41

Concernant l’erreure 5008 c’est juste une class qui se chargeait pas..

Une autre question? Comment ajouter de l’interaction d’un fichier .DAE exemble pouvoir clicker dessus, oblier le texturing double face..etc?

Laisser un commentaire

Currently browsing Chargement de modèle 3D, les fichiers DAE.

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)