Away3D
– Site »
– Téléchargement »
– Documentation »
– Tutorial »
Concurrent direct de Papervision3D, Away3D était, avant les dernières versions de PV3D, plus simple à mettre en place, et cela reste le cas, même si PV3D a pas mal fait évoluer les choses…
La mécanique reste la même : une Scene3D, une Camera3D, une View3D et… c’est tout pas de CameraController, ni de BasicRenderEngine…. on s’arrête là, rien de plus simple !
Pour faire le rendu, il faut appeler la fonction :
- View3D.render();
Voici une utilisation du moteur :
/**
*
* Auteur: Vincent Helwig
* Date: 30.09.2008
* Website: http://www.tsoin.com
* Description: Away3D – Intégration du moteur
*
**/
import away3d.cameras.Camera3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]
public class Away3D_001 extends Sprite {
private var scene:Scene3D;
private var camera:Camera3D;
private var view:View3D;
public function Away3D_001() {
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(event:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
setupScene();
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function setupScene():void {
scene = new Scene3D();
camera = new Camera3D({zoom:10, focus:50, x:0, y:0, z:-300});
view = new View3D({scene:scene, camera:camera});
addChild(view);
}
private function onEnterFrame(event:Event):void {
view.render();
}
}
}
Voyons maintenant l’ajout d’un cube, vous remarquerez l’ajout du package net.hires.utils.Stats, afin de visualiser les performances de l’animation :
/**
*
* Auteur: Vincent Helwig
* Date: 30.09.2008
* Website: http://www.tsoin.com
* Description: Away3D – Création d’un cube
*
**/
import away3d.cameras.Camera3D;
import away3d.containers.ObjectContainer3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.materials.WireColorMaterial;
import away3d.primitives.Cube;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import net.hires.utils.Stats;
[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]
public class Away3D_002 extends Sprite {
private var scene:Scene3D;
private var camera:Camera3D;
private var view:View3D;
private var objectContainer:ObjectContainer3D;
private var cube:Cube;
public function Away3D_002() {
addEventListener(Event.ADDED_TO_STAGE, init);
var __stats:Stats = new Stats();
__stats.width = 75;
__stats.x = 525;
addChild( __stats );
}
private function init(event:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
setupScene();
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
private function setupScene():void {
scene = new Scene3D();
camera = new Camera3D({zoom: 10, focus: 50, x:0, y:0, z:-300});
view = new View3D({scene:scene, camera:camera});
view.x = stage.stageWidth / 2;
view.y = stage.stageHeight / 2;
addChild(view);
cube = new Cube({ width:100, height: 100});
cube.material = new WireColorMaterial(0×000000, {wirecolor:0×789789});
scene.addChild( cube );
}
private function onEnterFrame(event:Event):void {
view.render();
}
private function onMouseMove(event:Event):void {
cube.rotationX = ( stage.mouseY * 180 ) / stage.stageHeight – 90;
cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth – 90;
}
}
}
Laisser un commentaire
|
RechercheCatégories
|
||