geek space web solutions

Cube 3D avec images - Papervision VS Away3D

Lundi, 13 Décembre 2010 16:50
papervision 3d cube
Papervision permet de faire de la 3D facilement avec Flash. La 3D est de plus en plus présente sur le Web. Je donne ici un simple code pour créer un objet Cube en Papervision et en Away3D.


Dans le code ci-dessous je définis chaque facette de l'objet Cube. Vous pouvez y voir 2 cas de figure : 1°) on définit une couleur unie; 2°) on définit une image :
package {
import flash.events.Event;
import org.papervision3d.view.BasicView;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.BitmapFileMaterial;
//import org.papervision3d.materials.utils.BitmapMaterialTools;

public class Cube_Images extends BasicView {
private var cube:Cube;

public function Cube_Images() {
//stage.frameRate = 40;
init();
cube.z=-400;
startRendering();

addEventListener(Event.ENTER_FRAME, loop);
}

private function loop(event:Event):void {
cube.yaw(1.5);
//cube.pitch(.5);                      

}

private function init():void {
var white:ColorMaterial = new ColorMaterial(0xFDFFEA);
var back:BitmapFileMaterial = new BitmapFileMaterial("flash/images/back600x400.jpg");
var front:BitmapFileMaterial = new BitmapFileMaterial("flash/images/front600x400.jpg");
var tranche:BitmapFileMaterial = new BitmapFileMaterial("flash/images/tranche600.jpg");
var pages:BitmapFileMaterial = new BitmapFileMaterial("flash/images/pages600.jpg");


//mat.interactive = true;
//mat.doubleSided = true;
front.precise = true;
front.smooth = true;

back.precise = true;
back.smooth = true;

tranche.precise = true;
tranche.smooth = true;            

var materialsList:MaterialsList = new MaterialsList();
materialsList.addMaterial(front, "front");
materialsList.addMaterial(back, "back");
materialsList.addMaterial(pages, "top");
materialsList.addMaterial(pages, "bottom");
materialsList.addMaterial(pages, "left");
materialsList.addMaterial(tranche, "right");

cube = new Cube(materialsList, 400, 150, 600);
scene.addChild(cube);
}


}
}

Away3D est un autre moteur 3D performant, j'ai avec le code ci-dessous voulu tester ce moteur 3D, je me suis dit que ça pouvait être intéressant de comparer rapidement les 2 moteurs au niveau "script" :
package {
import flash.events.Event;
import flash.display.Sprite;

import away3d.cameras.*;
import away3d.containers.*;
import away3d.materials.*;
import away3d.primitives.*;
import away3d.events.*;
import away3d.primitives.data.CubeMaterialsData;



public class Cube_Images_away3d extends Sprite {

private var scene:Scene3D;
private var view:View3D;
private var camera:Camera3D;
private var cube:Cube;
private var cubeMaterialsData:CubeMaterialsData;

public var pre_url:String="";

public function Cube_Images_away3d() {
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}


private function onAddedToStage(evt:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
init2();
}

public function init2():void {
initA3D();
initMaterials();
initObjects();
initListeners();
}

private function initA3D():void {
scene = new Scene3D();
camera = new Camera3D({zoom:10, focus:50, x:0, y:0, z:-300});
view = new View3D({scene:scene, camera:camera, x:stage.stageWidth/2, y:stage.stageHeight/2});
addChild( view );
}

private function render(e:Event):void{
//cube.rotationX ++;
//cube.rotationY ++;            
cube.yaw(1.5);
view.render();
}

private function initListeners():void{
addEventListener(Event.ENTER_FRAME, render);
}

private function initMaterials():void{

cubeMaterialsData = new CubeMaterialsData();

var bfm_front:BitmapFileMaterial = new BitmapFileMaterial(pre_url+"images/front600x400.jpg");
bfm_front.smooth=true;
cubeMaterialsData.front = bfm_front;

var bfm_back:BitmapFileMaterial = new BitmapFileMaterial(pre_url+"images/back600x400.jpg");
bfm_back.smooth=true;
cubeMaterialsData.back = bfm_back;

cubeMaterialsData.top = new ColorMaterial(0x00FF00);
cubeMaterialsData.bottom = new ColorMaterial(0x00FF00);

var bfm_right:BitmapFileMaterial = new BitmapFileMaterial(pre_url+"images/tranche600.jpg");
bfm_right.smooth=true;
cubeMaterialsData.right = bfm_right;

var bfm_left:BitmapFileMaterial = new BitmapFileMaterial(pre_url+"images/pages600.jpg");
bfm_left.smooth=true;
cubeMaterialsData.left = bfm_left;

}

private function initObjects():void{
cube = new Cube({name:"cube", x:0, y:0, z:400, width:400, height:600, depth:130});
cube.cubeMaterials = cubeMaterialsData;
//Ajout
//cube.addOnMouseDown( faceClick );
scene.addChild( cube );
}


}
}
 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Sections

Éditeur de fichier XML en ligne


"XML Manager" est un éditeur sécurisé permettant d'administrer en ligne un fichier XML.
Il fournit des fonctions avancées de recadrage et de redimensionnement des images...

Sondages

Pensez-vous que le HTML5 puisse complètement remplacer Flash ?
 
Seriez-vous intéressé par un éditeur d'XML en ligne ?
 

Paypal

paypal

Code du plugin Joomla AutoSEO 1.2 par www.geek-space.fr