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.
-
package {
-
import org.papervision3d.objects.parsers.DAE;
-
import org.papervision3d.view.BasicView;
-
-
import flash.events.Event;
-
-
public class BasicScene extends BasicView {
-
-
public function BasicScene()
-
{
-
loadDae();
-
startRendering();
-
}
-
-
private function loadDae() : void
-
{
-
eiffel = new DAE();
-
eiffel.load("Untitled/models/model.dae");
-
eiffel.scale = 0.1;
-
eiffel.y = -500;
-
scene.addChild(eiffel);
-
}
-
-
override protected function onRenderTick(event:Event=null):void
-
{
-
eiffel.rotationY++;
-
super.onRenderTick(event);
-
}
-
-
private var eiffel : DAE;
-
}
-
}


