VideoMaterial on Plane with Away3D
I was looking for examples of how to add a video onto a Plane primitive in Away3D 3.6. I couldn’t find many examples online, so I have posted up a quick example.
package
{
import away3d.containers.View3D;
import away3d.cameras.Camera3D;
import away3d.containers.Scene3D;
import away3d.materials.VideoMaterial;
import away3d.primitives.Plane;
import flash.display.*;
import flash.events.Event;
[SWF(backgroundColor="#ffffff", frameRate="60", quality="HIGH", width="800", height="600")]
public class Main extends Sprite
{
private static var VIDEO_URL:String = "vid.flv";
private var scene:Scene3D;
private var camera:Camera3D;
private var view:View3D;
private var plane:Plane;
public function Main()
{
createView();
createScene();
}
private function createView():void
{
//setup away3D
scene = new Scene3D();
camera = new Camera3D();
camera.z = -1000;
view = new View3D();
view.scene = scene;
view.camera = camera;
view.x = stage.stageWidth / 2;
view.y = stage.stageHeight / 2;
addChild(view);
//initialise enter frame listener
addEventListener(Event.ENTER_FRAME, ef);
}
private function createScene() : void
{
//video material
var vidMat:VideoMaterial = new VideoMaterial();
vidMat.file = VIDEO_URL;
vidMat.loop = true;
vidMat.smooth = true;
vidMat.interactive = false;
//add plane
plane = new Plane();
plane.material = vidMat;
plane.width = 640;
plane.height = 360;
plane.yUp = false;
plane.bothsides = true;
scene.addChild(plane);
}
private function ef(event : Event) : void
{
plane.rotationY += 0.5;
view.render();
}
}
}
I ran into some issues getting the FLV file to play locally. It was the ‘SecurityError: Error #2148’. To get this working in FDT I added following compiler argument: -use-network=false
If you are using the Flash IDE, in the publish settings set the Local playback security: Access local files only
Alternatively, you can upload your files on to a web server and view the files. If you are using a Mac enable personal web sharing and add the files into the web sharing folder.



0 comments:
Post a Comment