Contacts

viadeo-icone-5757-48.png linkedin.png

Liens Utiles

 

Documentation Flash as 3.0 :

Flash as 3.0

 

Documentation moteurs 3D Flashs :


Documentation Utilitaires 3D Flashs :

Et bien sûr, le fil RSS du Blog ! rss

Samedi 26 février 6 26 /02 /Fév 16:48

Alternativa nous permet d'importer des objets 3D type 3ds Max puisqu'il intègre un parser de fichier 3ds Max.

 

3dsMax


I/ Import d'un fichier 3ds Max

Pour se faire, nous allons repartir de notre tout premier tutoriel où nous avons écrit notre squelette Alternativa.
L'import d'objets 3ds Max est très simple donc pas de panique :).

Pour notre exemple, nous allons utiliser le modèle 3D suivant : lampion.3ds (Remerciements à Florian Morelet pour le modèle 3ds ). Placer le dans le même dossier que notre projet Alternativa 3D.

Code Source

package{
    import flash.display.Sprite;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.display.Loader;
   
    import alternativa.engine3d.core.Camera3D;
    import alternativa.engine3d.containers.ConflictContainer;
    import alternativa.engine3d.controllers.SimpleObjectController;
    import alternativa.engine3d.core.View;
    import alternativa.engine3d.loaders.Parser3DS;
    import alternativa.engine3d.core.Object3D;
    import alternativa.engine3d.materials.TextureMaterial;
    import alternativa.engine3d.materials.FillMaterial;
    import alternativa.engine3d.objects.Mesh;
   
    public class Main extends Sprite{
        private var scene:ConflictContainer = new ConflictContainer();
        private var camera:Camera3D;
        private var cameraController:SimpleObjectController;
       
        //ByteArray qui contiendra  notre model 3DS
        private var bytes3DS:ByteArray;
        //Le parser 3DS qui va interpréter le ByteArray
        private var parser:Parser3DS;
       
        public function Main(){
            camera = new Camera3D();
            addChild(camera.diagram);
            camera.view = new View(550, 400);
            addChild(camera.view);
            camera.x = -179;
            camera.y = 172;
            camera.z = -12;
            camera.rotationX = 1.8;
            camera.rotationY = 0;
            camera.rotationZ = 0.54;
            scene.addChild(camera);
           
            cameraController = new SimpleObjectController(stage, camera, 400, 3);
           
            //On charge notre modèle 3DS
            var loader:URLLoader = new URLLoader();
            loader.dataFormat = URLLoaderDataFormat.BINARY;
            loader.addEventListener(Event.COMPLETE, loadComplete);
            loader.load(new URLRequest("Lampion.3ds"));
        }
       
        private function loadComplete(e:Event):void{
            //Une fois charger, on sauvegarde les données dans notre ByteArray
            bytes3DS = e.target.data as ByteArray;
           
            //On instancie notre parser et on lui fait parser le ByteArray pour pouvoir l'utiliser
            parser = new Parser3DS();
            parser.parse(bytes3DS);
           
            //On ajoute à la scène toutes les Meshs présentent dans le fichier 3DS
            for each (var child:Object3D in parser.objects){
                //Si vous souhaiter appliquer des textures différentes en fonction du nom des Meshs, utiliser child.name pour effectuer le test
                //Ici nous n'avons qu'une Mesh donc pas de test, on affecte une texture filaire bleue à notre modèle
                Mesh(child).setMaterialToAllFaces(new FillMaterial(0x0, 0, 1, 0xff6699CC));
                //On ajoute à la scène la Mesh
                scene.addChild(child);
            }
                       
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
       
        private function onEnterFrame(e:Event):void{
            //On pointe automatiquement la caméra sur notre Objet 3D à chaque rafraichissement
            cameraController.lookAtXYZ(parser.objects[0].x, parser.objects[0].y, parser.objects[0].z);
            cameraController.update();
           
            camera.render();
        }
    }
}

Résultat Obtenu

 

Utiliser flêches du clavier pour naviguer

 


Voili voilou pour ce tutoriel sur l'import de modèle 3D. Nous avons fait à peu près le tour des principales fonctionnalités d'Alternativa 3D.




Ce tutoriel vous a été utile? rss Abonnez-vous au fil RSS !




  Romain Dedenis.
Par Romain Dedenis - Publié dans : Flash AS3 : Alternativa3D 7.6 tutoriels
Ecrire un commentaire - Voir les 1 commentaires
Retour à l'accueil
 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés