Pour commencer cette série de tutos sur Alternativa3D 8 tournant avec le Flash Player 11, nous allons commencer par configurer notre Flash CS5 ou 5.5:
Pour pouvoir developper pour le Flash Player 11 avec CS5 ou 5.5, pas très compliqué, ça se passe par là : http://blogs.adobe.com/rgalvan/2011/11/adding-fp11-support-to-flash-pro-cs5-and-cs5-5.html
Ensuite, téléchargez la bibliothèque Alternativa3D 8 : http://alternativaplatform.com/en/download8/
Pour lier la bibliothèque à votre projet, regarder par ici (et profitez en pour créer et lier un fichier Main.as): http://romaindedenis.over-blog.com/article-alternativa-3d-premiers-pas-66018030.html
Nous voilà prêt à commencer!
Pour ce premier tutoriel, nous n'allons pas aller bien loin, juste un petit Plane :).
Code source
package {
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Resource;
import alternativa.engine3d.core.View;
import alternativa.engine3d.materials.FillMaterial;
import alternativa.engine3d.primitives.Plane;
import flash.display.Sprite;
import flash.display.Stage3D;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
public class Main extends Sprite {
//Le conteneur dans lequel nous allons ajouter nos objets
private var rootContainer:Object3D = new Object3D();
private var camera:Camera3D; //notre caméra
private var stage3D:Stage3D; //le stage3D qui va être associé à Alternativa3D
private var plane:Plane; //Notre plane
public function Main() {
//On aligne notre scène et l'empeche de se déformer
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
//On créer notre caméra et la vue associée
camera = new Camera3D(0.1, 10000);
camera.view = new View(stage.stageWidth, stage.stageHeight, false, 0, 0, 4); //C'est la zone dans laquelle notre contenu va être affiché
addChild(camera.view);
addChild(camera.diagram); //On affiche un moniteur pour voir les perfs
//On initialise la position de notre caméra
camera.rotationX = -120*Math.PI/180;
camera.y = -800;
camera.z = 400;
rootContainer.addChild(camera); //On ajoute la caméra à notre conteneur
//On créer notre plane et on la texture en orange
plane = new Plane(500, 500, 5, 5);
var material:FillMaterial = new FillMaterial(0xFF7700);
plane.setMaterialToAllSurfaces(material); //On applique la texture aux 2 faces de notre plane
rootContainer.addChild(plane);
//C'est ici que nous récupérons le stage3D.
stage3D = stage.stage3Ds[0];
stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContextCreate);
stage3D.requestContext3D(); //On demande au Flash Player d'initialiser notre stage3D(c'est un peu plus compliqué que cela, mais l'essentiel est là)
}
private function onContextCreate(e:Event):void {
//Ici, on passe nos objets 3D au stage3D pour qu'il puisse les envoyer au GPU
for each (var resource:Resource in rootContainer.getResources(true)) {
resource.upload(stage3D.context3D);
}
//Quand le stage3D est prêt à être utiliser, nous lui demandons d'effectuer nos actions toutes les frames
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void {
//Au cas où le stage soit redimensionné, nous adaptons la taille de notre View.
camera.view.width = stage.stageWidth;
camera.view.height = stage.stageHeight;
//Nous faisons tourner notre Plane de 0.01 radians/frame
plane.rotationZ -= 0.01;
//On demande au moteur 3D de redessiner notre scène
camera.render(stage3D);
}
}
}
Voilou pour notre première application d'Alternativa3D 8.
Résultat obtenu
Il vous faut impérativement la version Flash Player 11 ou supérieur pour voir tourner le résultat.
Dans le prochain article ( Alternativa 3D 8 : Cube et gestion de la lumière... ), nous créerons notre premier cube et nous affecterons une source de lumière à notre scène.
commenter cet article …