Hello everyone,
I've got a problem with the CubicEnvMapPBMaterial, i tried everything
and it didn't worked. I hope you'll help me ^^
I tested it on a simple cube in a skybox, with some basic
interactivity with the camera, all the bitmap pictures are imported in
the .fla
I work with Flash CS5 and Flash Develop.
Here's the error message :
ArgumentError: Error #2004: L'un des paramètres n'est pas valide.
at flash.display::ShaderJob/start()
at SinglePassShaderMaterial/updateRenderBitmap()
at away3d.materials::TransformBitmapMaterial/updateMaterial()
at PixelShaderMaterial/updateMaterial()
at away3d.core.base::Mesh/updateMesh()
at away3d.core.traverse::ProjectionTraverser/apply()
at away3d.core.base::Object3D/traverse()
at away3d.containers::ObjectContainer3D/traverse()
at away3d.containers::View3D/render()
at test_Cube()
Here's my code :
package
{
import away3d.cameras.HoverCamera3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.core.base.Mesh;
import away3d.core.utils.Cast;
import away3d.events.MouseEvent3D ;
import away3d.lights.DirectionalLight3D;
import away3d.materials.BitmapMaterial;
import away3d.materials.CubicEnvMapPBMaterial;
import away3d.primitives.Cube;
import away3d.primitives.Skybox;
import away3d.primitives.utils.CubeFaces;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Vector3D;
public class test_Cube extends Sprite
{
var View:View3D = new View3D({x:275,y:200});
var camera:HoverCamera3D;
var light:DirectionalLight3D;
var lastMouseX:Number;
var lastMouseY:Number;
var lastPanAngle:Number;
var lastTiltAngle:Number;
var move:Boolean = false;
public var currentPrimitive:Mesh;
var skyBox:Skybox;
var ciel:Ciel = new Ciel();
var cielNormal:CielNormal = new CielNormal();
var cielNormal2:CielNormal2 = new CielNormal2();
var orRose:OrRose = new OrRose();
var upBitmap:Up = new Up();
var downBitmap:Down = new Down();
var eastBitmap:East = new East();
var westBitmap:West = new West();
var northBitmap:North = new North();
var southBitmap:South = new South();
var upMaterial:BitmapMaterial = null;
var downMaterial:BitmapMaterial = null;
var eastMaterial:BitmapMaterial = null;
var westMaterial:BitmapMaterial = null;
var northMaterial:BitmapMaterial = null;
var southMaterial:BitmapMaterial = null;
public function test_Cube():void
{
//Définition caméra et scene 3D
camera = new HoverCamera3D({zoom:2, focus:100,
distance:200});
View = new View3D( { camera:camera, x:250, y:200 } );
addChild(View);
camera.panAngle = 90;
camera.tiltAngle = 0;
camera.minTiltAngle = -90;
camera.hover(true);
//Définition lumière
light = new DirectionalLight3D( { direction:new
Vector3D(500, -300,
-200), specular:0.3, color:"#FFC1B2" } );
View.scene.addLight(light);
//Définition des matériaux
upMaterial = new BitmapMaterial(Cast.bitmap(upBitmap),
{smooth:true});
downMaterial = new
BitmapMaterial(Cast.bitmap(downBitmap),
{smooth:true});
eastMaterial = new
BitmapMaterial(Cast.bitmap(eastBitmap),
{smooth:true});
westMaterial = new
BitmapMaterial(Cast.bitmap(westBitmap),
{smooth:true});
northMaterial = new
BitmapMaterial(Cast.bitmap(northBitmap),
{smooth:true});
southMaterial = new
BitmapMaterial(Cast.bitmap(southBitmap),
{smooth:true});
//Définition éléments 3D
currentPrimitive = new Cube( { width:200, height:200,
depth:200} );
skyBox = new Skybox(northMaterial, westMaterial,
southMaterial,
eastMaterial, upMaterial, downMaterial);
//Définition du matériau
var sky:Array = [];
sky[CubeFaces.LEFT] = westBitmap;
sky[CubeFaces.RIGHT] = eastBitmap;
sky[CubeFaces.FRONT] = northBitmap;
sky[CubeFaces.TOP] = upBitmap;
sky[CubeFaces.BOTTOM] = downBitmap;
sky[CubeFaces.BACK] = southBitmap;
var colorMaterial:CubicEnvMapPBMaterial = new
CubicEnvMapPBMaterial(ciel, cielNormal, sky, currentPrimitive,
{envMapAlpha:0.5});
currentPrimitive.material = colorMaterial;
View.scene.addChild(skyBox);
View.scene.addChild(currentPrimitive);
stage.quality = "MEDIUM";
View.render();
//Animation de la souris
this.stage.addEventListener(MouseEvent.MOUSE_DOWN,
MouseDown);
this.stage.addEventListener(MouseEvent.MOUSE_UP,
MouseUp);
addEventListener(Event.ENTER_FRAME, animation);
}
private function MouseDown(evt:MouseEvent):void
{
lastPanAngle = camera.panAngle;
lastTiltAngle = camera.tiltAngle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
move = true;
}
private function MouseUp(evt:MouseEvent):void
{
move = false;
}
private function animation (evt:Event):void
{
//Contrôle de la caméra avec la souris
var cameraSpeed:Number = 0.3;
if (move) {
camera.panAngle = cameraSpeed*(stage.mouseX -
lastMouseX) + lastPanAngle;
camera.tiltAngle = cameraSpeed * (stage.mouseY -
lastMouseY) + lastTiltAngle;
}
camera.hover();
View.render();
}
}
}
Thank you,
Maho