OK, posted to http://code.google.com/p/away3d/issues/detail?id=91
with a simple reproducible test case. Thanks :)

On Tue, Feb 02, 2010 at 22:45:31 +0000, Rob Bateman wrote:
> hmm, thats a shame. If you feel like logging a bug, we can take a look at
> this in more detail:
> 
> http://code.google.com/p/away3d/issues/list
> 
> cheers
> 
> Rob
> 
> 
> 
> On Tue, Feb 2, 2010 at 9:27 PM, Post Mesteren <[email protected]> wrote:
> 
> > Well unfortunately the theory is busted, and having to wait until the first
> > render()
> > before calling update() really messes up my class/object design...
> >
> > This is what I ended up doing to avoid having to hack the away3d sources;
> > I extended MovieMaterial and overrode updateMaterial():
> >
> >
> >        public override function updateMaterial(source:Object3D,
> > view:View3D):void
> >        {
> >            var origAutoUpdate:Boolean = autoUpdate;
> >            if (_renderBitmap == null) {
> >                // Workaround for autoUpdate-false bug + update() before any
> > renders
> >                // See our post at
> > http://groups.google.com/group/away3d-dev/browse_thread/thread/7a398d69cb860756
> >                this.autoUpdate = true;
> >            }
> >            super.updateMaterial(source, view);
> >            this.autoUpdate = origAutoUpdate;
> >        }
> >
> > (Unfortunately "rendered" is private, not protected, so I had to check on
> > _renderBitmap instead)
> >
> > On Tue, Feb 02, 2010 at 19:03:57 +0000, Rob Bateman wrote:
> > > I would try leaving the MovieMaterial with autoUpdate = false - in theory
> > > this should trigger update() once on view.render() and copy the contents
> > to
> > > _renderBitmap, then only again if you set autoUpdate to true or call
> > update
> > > manually. If this doesn't work, try setting autopUpdate to true by
> > default,
> > > then false after the first view.render(). should do the trick
> > >
> > > Rob
> > >
> > >
> > > On Tue, Feb 2, 2010 at 1:50 PM, Post Mesteren <[email protected]>
> > wrote:
> > >
> > > > Hello, I'm having issues with MovieMaterials with autoUpdate = false,
> > > > especially wrt calling update() on the MovieMaterial instance before
> > > > being rendered. I.e.,
> > > >  1. Create a Sprite with some contents
> > > >  2. Create a new MovieMaterial(contentSprite, {autoUpdate:false,
> > > > transparent:false})
> > > >  3. Assign material to some object but don't add the object to the
> > scene
> > > > yet
> > > >  4. Call .update() on the moviematerial
> > > >
> > > > The material is rendered all black.
> > > >
> > > > I think this happens because the "movie" is only ever rendered by
> > update()
> > > > if the _renderBitmap is non-null, but it's null before any calls to
> > > > view.render().
> > > >
> > > > What do you think about the following patch, which seems to make things
> > > > work out nicely?
> > > >
> > > > Index: src/away3d/materials/MovieMaterial.as
> > > > ===================================================================
> > > > --- src/away3d/materials/MovieMaterial.as       (revision 2164)
> > > > +++ src/away3d/materials/MovieMaterial.as       (working copy)
> > > > @@ -158,7 +158,7 @@
> > > >         {
> > > >                super.updateMaterial(source, view);
> > > >
> > > > -               if (autoUpdate)
> > > > +               if (autoUpdate || !rendered)
> > > >                 update();
> > > >
> > > >             _session = source.session;
> > > >
> > > >
> > >
> >
 

Reply via email to