You need to disable triangle caching like so:
this.view = new View3D(...);
view.forceUpdate = true;
Tony
On Dec 2, 12:05 pm, DrMcCleod <[EMAIL PROTECTED]> wrote:
> Code that worked under version 2_1_0 & 2_2_0 no longer seems to work
> under version 3_0_0 (fresh from the SVN repo).
> The class below opens a flash video source and maps it onto a plane -
> to use it, just
>
> var myvid:videoPlane;
> myVid = new videoPlane("/path/to/flvfile");
> view.scene.addChild(myVid);
>
> myVid.updateVideo(); //run to update frame
>
> The initial frame is mapped in the constructor and displays OK (when
> the movie is run in an external player (flash 9)) but when the
> updateVideo() function is called (every Event.ENTER_FRAME) I can see
> the pixel values in the plane changing as the video animates but the
> updated frame is never re-rendered (by a view.render() call).
>
> Has something changed in the latest build that I should worry about?
>
> package
> {
> import away3d.primitives.Plane;
> import away3d.materials.BitmapMaterial;
> import flash.geom.Point;
> import flash.geom.Rectangle;
>
> import flash.display.*;
> import flash.events.*;
> import flash.net.*;
> import flash.media.Video;
>
> /**
> * ...
> * @author DefaultUser (Tools -> Custom Arguments...)
> */
> public class videoPlane extends Plane
> {
> private var video: DisplayObject;
> private var videoURL:String;
> private var videoBitmapData: BitmapData;
> private var videomaterial: BitmapMaterial;
>
> private var alphaMap:BitmapData;
>
> private var vidConnection:NetConnection;
> private var vidStream:NetStream;
> private var vid:Video;
> private var infoClient:Object;
> private var alphax:Number;
> private var alphay:Number;
> private var asset:String;
> private var alphaBool:Boolean;
>
> //private var pix:Number;
>
> private var aspectRatio:Number;
>
> public function videoPlane(assetLocation:String)
> {
>
> asset = assetLocation;
>
> alphaBool = true;
>
> trace("videoPlane()");
> this.segmentsH = 8; //increases the number of
> triangles in the
> plane, and hence improves the accuracy of
> this.segmentsW = 8; //the mean z algorithm used to
> determine Z-
> depth when rendering
>
> vidConnection = new NetConnection();
> vidConnection.connect(null);
> vidStream = new NetStream(vidConnection);
>
> infoClient = new Object();
> vidStream.client = infoClient;
>
> vid = new Video();
> vid.attachNetStream(vidStream);
>
> vidStream.play(asset);
>
> this.videoBitmapData = new BitmapData(vid.width,
> vid.height, true,
> 0xFF00ce);
>
> videomaterial = new
> BitmapMaterial(this.videoBitmapData);
> videomaterial.precision = 5;
>
> this.material = videomaterial;
> this.bothsides = true;
> this.videoBitmapData.draw(vid);
>
> aspectRatio = 1024 / 576;
>
> this.height = 50;
> //trace(vid.videoWidth + " " + vid.videoHeight + " " +
> aspectRatio);
> this.width = this.height * aspectRatio;
>
> alphaMap = new BitmapData(vid.width, vid.height, true,
> 0x7F000000);
>
> vidStream.addEventListener(NetStatusEvent.NET_STATUS,
> vidStreamCompleteHandler);
>
> }
>
> private function
> vidStreamCompleteHandler(ns:NetStatusEvent):void
> {
> //TODO: add functionality to restart video stream here
> // vidStream.play(asset);
> }
>
> public function adjustAlphaMap():void
> {
> trace("adjustAlpha" + alphaBool);
>
> if (alphaBool)
> {
> alphaMap = new BitmapData(vid.width,
> vid.height, true,
> 0xFF000000);
> }
> else
> {
> alphaMap = new BitmapData(vid.width,
> vid.height, true,
> 0x7F000000);
> }
>
> alphaBool = !alphaBool;
> }
>
> public function updateVideo():void
> {
> //trace("updateVideo");
> if(vid != null)
> {
> //trace("vid");
> this.videoBitmapData.draw(vid);
> videoBitmapData.copyChannel(alphaMap, new
> Rectangle(0, 0,
> vid.width, vid.height), new Point(0, 0), 8, 8);
>
> trace(videoBitmapData.getPixel(100,
> 100).toString());
> }
> }
> }
>
>
>
> }- Hide quoted text -
>
> - Show quoted text -