geek space web solutions

Cube 3D avec images - Papervision VS Away3D

Monday, 13 December 2010 16:50
There are no translations available.

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 );
}


}
}
 

Add comment


Security code
Refresh

Sections


Last articles

firstElementChild / firstChi... Lien web dans une applicatio... Placer un DisplayObject en p... Perspectives d'emploi encour... Cube 3D avec images - Paperv... Application mobile Dadabovic... Utiliser la Squeezebox de Jo... Effet Noir et blanc ou Nivea... Ouvrir une page Web depuis u... div absolute ou fixed et sen...

Sondages

Do you think HTML5 can completely replace Flash ?
 
Would you be interested in an online XML editor ?
 

Paypal

paypal

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