Papervision Tuto : import de Collada
J’ai trouvé que trop peu de tutos présentaient l’import de Collada détaillé. En voici un essai :
Le but de ce tuto est donc très simple : Importer un objet modélisé avec 3DS MAX dans un SWF.
Il vous faudra donc 3DS MAX et de son plugin Collada, Flash CS3 (ou 9 alpha) et un éditeur AS ainsi que le package Papervision.
1. Modéliser l’objet.
Ouvrer donc 3DS et créer un nouvelle scène si ce n’est pas déja fait (File > New)
L’objectif n’étant pas d’apprendre à modeliser (de nombreux sites expliques déja très bien cette partie), nous allons utilisé la fameuse TeaPot prémodélisé.
Sélectionner l’onglet “Create”, puis “Geometry” et enfin “TeaPot”.
Aller maintenant sur la scene, cliquer et tout en laissant appuyer bouger legerement la souris pour donner la dimension choisit à l’objet, ensuite relacher. Vous avez votre “TeaPot” ! Pour attribuer une matériel à l’objet, cliquer sur “Material Editor”. Pour faire simple, nous allons juste changer le parametre “Diffuse Color” en y mettant un joli Bitmap (Maps > Diffuse Color > Bitmap et sélectionner votre image).Pour terminer, faites un glissé du materiel sur l’objet (içi, le “TeaPot”).
2. Exporter notre objet en DAE
L’export est simple. Faites “File” > “Export” > Sélectionner l’extension .dae et valider. Confirmer ensuite la seconde fenetre.
3. Import de l’objet dans Flash
Nous avons désormais notre .dae avec sa texture, préparons maintenant son import. Lancer Flash et créer un nouveau document Flash ActionScript 3.0 (File > New… > Flash File ActionScript 3.0).
Créons maintenant la classe principale qui va importer l’objet. Nous allons l’appeller TeePot.as (pour faire original) et allons l’attachée au document.

Ci dessous, la classe “TeaPot” documentée.
package { import flash.events.Event; import flash.display.*; import org.papervision3d.scenes.*; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import org.papervision3d.cameras.Camera3D; import flash.display.StageScaleMode; import flash.display.Stage; public class TeaPot extends Sprite { private var container:MovieClip; protected var scene : Scene3D; protected var camera : Camera3D; protected var rootNode : DisplayObject3D; /** * Constructeur */ function TeaPot() { init(); } /** * Initialisation du document */ private function init():void { var s:Stage = stage; s.scaleMode = StageScaleMode.NO_SCALE; setupScene(); addEventListener(Event.ENTER_FRAME, onEnterFrame); } /** * Construction de la scène */ private function setupScene():void { //Création du container de la scène container = new MovieClip(); addChild( container ) ; //On place le container container.x = 250; container.y = 200; //Création de la scène scene = new MovieScene3D( container ); //Création de l'objet rootNode //qui va contenir tous les DisplayObject3D var rootNode:DisplayObject3D = new DisplayObject3D(); scene.addChild( rootNode , "rootNode"); //Création et placement d'une caméra camera = new Camera3D(); camera.y = 0; camera.x = 0; camera.z = -1900; camera.zoom = 10; camera.sort = false; //Création du teaPot. //On indique sont chemin, //son materiel (déja dans mentionné dans le .dae) //et sa taille var teaPot:Collada = new Collada("teePot.dae", null, .1); teaPot.x = 0; teaPot.y = -100; rootNode.addChild( teaPot , "teaPot"); } /** * A chaque nouvelle Frame, on réoriente la caméra * et on fait le rendu. */ private function onEnterFrame( e : Event ) : void { camera.x += ( ( -container.mouseX * 5 ) - camera.x ) ; camera.y += ( ( -container.mouseY * 5 ) - camera.y ) ; scene.renderCamera( camera ); } } }
Download this code: collada/TeaPot.as
Il ne reste plus qu’a copier le fichier .dae et la texture dans le même répertoire que notre fla sans oublier de vérifier que le chemin de la texture inscrit dans le fichier dae est correct :
<library_images>
<image id=”C__Documents_and_Settings_manu_Mes_documents_3dsmax_sceneassets_images_texture-bois_jpg” name=”C__Documents_and_Settings_manu_Mes_documents_3dsmax_sceneassets_images_texture-bois_jpg”>
<init_from>texture-bois.jpg</init_from>
</image>
</library_images>
On peut ensuite compiler le tout et admirer notre fabuleux “teePot”.
juin 6th, 2007 at 15:08
Bonjour,
J’experimente papervision en ce moment et notamment l’import de fichiers collada. J’ai compilé le fla et voila la sortie du compilateur :
TypeError: Error #1009: Il est impossible d’accéder à la propriété ou à la méthode d’une référence d’objet nul.
at org.papervision3d.objects::Collada/::getTexture()
at org.papervision3d.objects::Collada/::addMaterial()
at org.papervision3d.objects::Collada/::parseGeometry()
at org.papervision3d.objects::Collada/::parseNode()
at org.papervision3d.objects::Collada/::parseScene()
at org.papervision3d.objects::Collada/::buildCollada()
at org.papervision3d.objects::Collada/::onComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/flash.net:URLLoader::onComplete()
juin 19th, 2007 at 18:41
Super ! Merci encore, dur dur de rassembler tout les softs, mais au moins c’est fait une bonne fois pour toute.
En plus ca marche nickel meme avec un modele 3D complexe ! Impressionnant ce paper vision !!!
août 3rd, 2007 at 1:00
Hello,
Moi jsuis dans le même cas que stef. Quelqu’un aurait-il la solution please ?
Merci d’avance a celui qui prendra la peine de répondre
août 3rd, 2007 at 8:19
As tu bien tout installer ? En Particulier le plugin Collada et met a jour ta version Papervision.
août 30th, 2007 at 2:16
Bonjour,
J’aimerais pousser la chose un peu plus loin et savoir si c’est possible de superposer 2 choses?
Soit la texture de base et une photo sur une des surfaces de l’objet?
Merci à l’avance!
septembre 16th, 2007 at 2:17
Et si on a pas 3D Max on fait comment?
octobre 8th, 2007 at 21:14
on prend blender