Can I receive a liitle explanation about the effect of usage of
SrpiteRenderSession and why is moving of the Pivot contributes to correct z
sorting  . Is the upgrading Z sorting is important part of performance
improvement?.


On Thu, Oct 8, 2009 at 10:28 AM, enguer <[email protected]> wrote:

>
> Hi Michael,
> In order to optimize textures of town, i use a custom clipping script.
> I figured out that away3d do clipping but when a lot of objects are
> "added" to the scene, performance goes down.
> So I put a script that remove object when they are far or behind the
> camera.
> I used a lot of SrpiteRenderSession and movePivot to correct the Z-
> sorting.
> For texture i put in array 3 kind of bitmap for each texture: High/
> Medium/Low. The textures switches depends on the distance from the
> camera.
>
> And the 100 first frame calculate the average fps of the project and
> switch automatically this parameters:
> -Max Distance Clippin
> -Medium Texture Distance
> -High Texture Distance
> -Quality of flash player
> -Resolution of the frustum clipping thing.
>
> It's a sample of tick :
>                public function update(cam:Camera3D,Conf:Object):void{
>                        if (!reset){
>                                //Distance processing
>                                //DISTANCE
>                                var c:Number3D = new
> Number3D(cam.x,cam.y,cam.z);
>                                //ANGLE
>                                var mc = cam.viewMatrix;
>                                for (var o in Objects) {
>                                        //TRANFORM CENTER TO THE CAMERA
>                                        var ct:Number3D = new Number3D();
>                                        ct.clone(Objects[o].extra.center);
>                                        ct.transform(ct,mc);
>                                        if
> (c.distance(Objects[o].extra.center)<Conf.Clipping.MaxDist&&
> (ct.z>-200)){
>                                                if (!Objects[o].extra.set){
>                                                        if
> (Objects[o].extra.container){
>
>  Objects[o].extra.container.addChild(Objects[o]);
>                                                        }else
> addChild(Objects[o]);
>                                                        Objects[o].extra.set
> = true;
>                                                }
>                                                if
> (!Objects[o].extra.noswitch){
>                                                        //Quality selection
>                                                        if
> (c.distance(Objects[o].extra.center)<Conf.Clipping.High){var
> Q = 2;
>                                                        }else{
>                                                                if
> (c.distance(Objects[o].extra.center)<Conf.Clipping.Medium)
> var Q = 1;
>                                                                else Q = 0;
>                                                        }
>
>                                                        if
> ((Objects[o].extra.Quality!=Q||Objects[o].extra.Blur)){
>                                                                //Texture
> loading and switching
>                                                                var
> faceMat:BitmapMaterial = Objects[o].extra.Materials
> ["Front"][Q];
>                                                                var
> nullMat:ColorMaterial = new ColorMaterial(0x000000,{alpha:
> 0});
>
>  faceMat.smooth=true;
>                                                                var
> sideMat:BitmapMaterial = (Objects[o].extra.Materials
> ["Side"]!=undefined)?Objects[o].extra.Materials["Side"][Q]:Objects
> [o].extra.Materials["Front"][Q];
>
>  sideMat.smooth=true;
>                                                                if
> (Objects[o].extra.dim.ry==90){
>
>  Objects[o].cubeMaterials.left = faceMat;
>
>  Objects[o].cubeMaterials.right = faceMat;
>
>  Objects[o].cubeMaterials.front = sideMat;
>
>  Objects[o].cubeMaterials.back = sideMat;
>                                                                }else{
>
>  Objects[o].cubeMaterials.front = faceMat;
>
>  Objects[o].cubeMaterials.back = faceMat;
>
>  Objects[o].cubeMaterials.left = sideMat;
>
>  Objects[o].cubeMaterials.right = sideMat;
>                                                                }
>
>  Objects[o].cubeMaterials.top = nullMat;
>
>  Objects[o].cubeMaterials.bottom = nullMat;
>
>  Objects[o].extra.Quality=Q;
>
>  Objects[o].extra.Blur=false;
>                                                        }
>                                                }
>                                        }else{
>                                                if (Objects[o].extra.set){
>                                                        Objects[o].extra.set
> = false;
>                                                        if
> (Objects[o].extra.container)Objects
> [o].extra.container.removeChild(Objects[o]);
>                                                        else
> removeChild(Objects[o]);
>                                                }
>                                        }
>                                }
>                                if (time>=ticktime){
>                                        for (var Co in Conts) {
>                                                //Processing of pivot
> displacment in order to fight z-sorting
>                                                var Ca = new
> Number3D(cam.x,cam.y,cam.z);
>
>  Ca.transform(Ca,Conts[Co].inverseSceneTransform);
>                                                var Y = Ca.y;
>                                                var X = Ca.x;
>                                                var Z = Ca.z;
>                                                if (Ca.x>Conts[Co].maxX) X =
> Conts[Co].maxX;
>                                                if (Ca.x<Conts[Co].minX) X =
> Conts[Co].minX;
>                                                if (Ca.z<Conts[Co].minZ) Z =
> Conts[Co].minZ;
>                                                if (Ca.z>Conts[Co].maxZ) Z =
> Conts[Co].maxZ;
>                                                var Piv = new
> Number3D(X,Y,Z);
>
>  Piv.transform(Piv,Conts[Co].sceneTransform);
>                                                if
> (Conts[Co].pivotPoint!=Piv){
>
>  Conts[Co].movePivot(X,Y,Z);
>
>  Conts[Co].moveTo(Piv.x,Piv.y,Piv.z);
>                                                        if
> (DEBUG_PIVOT)Conts[Co].extra.pivot.moveTo
> (Piv.x,Piv.y,Piv.z);
>                                                }
>                                        }
>                                        time=0;
>                                }else time++;
>                        }
>                }
>
> Hoping this will help
>
> Cheers
>
>
>
> On 8 oct, 09:16, Michael Iv <[email protected]> wrote:
> > Enguer Hello , I am in shock of the preformance of your website.Can you
> > share a few tips about texture optimization that you have done
> there.Because
> > i am finishing a game project right now that involves a lot of different
> > textures and I am struggling to encrease performance by optimizing
> different
> > parts . But so far I am not succeeding much .
> > I will very appreciate any tip.
> >
> >
> >
> > On Thu, Oct 8, 2009 at 12:36 AM, enguer <[email protected]> wrote:
> >
> > > Hi,
> > > I finally release this project; you can find it athttp://
> www.bandit3.com
> > > I will be glad to know your opinion about this project.
> >
> > > cheers
> >
> > > Enguer
> >
> > > On 28 sep, 14:42, Rob Bateman <[email protected]> wrote:
> > > > Hey Enguer
> >
> > > > please see my previous response to this. it may not be the answer you
> > > were
> > > > looking for, but it should at least explain why you see what you do
> >
> > > > the site demo look simply amazing - be sure to let us know when it is
> > > live!
> >
> > > > cheers
> >
> > > > Rob
> >
> > > > On Wed, Sep 23, 2009 at 5:52 PM, enguer <[email protected]>
> wrote:
> >
> > > > > Oups
> > > > >http://bandit3.kob-eye.com/TestBB2.swf
> >
> > > > > On 23 sep, 18:52, enguer <[email protected]> wrote:
> > > > > > And again with 2 box in a objectContainer3D :
> > > > >http://bandit3.kob-eye.com/TestBB.swf
> >
> > > > > > On 23 sep, 18:43, enguer <[email protected]> wrote:
> >
> > > > > > > I know why my script doesnt work well... There is a bug in
> > > maxX/minX
> > > > > > > etc.... values.
> >
> > > > > > > I've create a simple example with debugbb = true and debugbs =
> > > true;
> > > > > > > I've supposed minX,maxX,minZ,maxZ... would be the bouding box
> > > > > > > geometry.
> >
> > > > > > >http://bandit3.kob-eye.com/TestBB.swf
> >
> > > > > > > But in this example we see that the boudingbox is containing
> the
> > > > > > > bounding sphere, and that's why minX,maxX.... doesnt represent
> the
> > > > > > > real geometry but the geometry of the bouding sphere ....
> That's
> > > not
> > > > > > > the same.
> >
> > > > > > > So how can i get the real minX/maxX.... values ?
> >
> > > > > > > On 23 sep, 16:10, enguer <[email protected]> wrote:
> >
> > > > > > > > I've placed this inside the tick method (processed at each
> frame)
> > > of
> > > > > > > > each objectContainer3D (one for each block of buildings).Each
> > > > > > > > objectContainer contain a spriterendersession.
> > > > > > > > cam => is the camera on the scene
> > > > > > > >                                 var Ca = new
> > > > > Number3D(cam.x,cam.y,cam.z);
> > > > > > > >                                 Ca.transform(Ca,);
> > > > > > > >                                 var Y = Ca.y;
> > > > > > > >                                 var X = Ca.x;
> > > > > > > >                                 var Z = Ca.z;
> > > > > > > >                                 if (Ca.x>maxX) X = maxX;
> > > > > > > >                                 if (Ca.x<minX) X = minX;
> > > > > > > >                                 if (Ca.z<minZ) Z = minZ;
> > > > > > > >                                 if (Ca.z>maxZ) Z = maxZ;
> > > > > > > >                                 var Piv = new
> Number3D(X,Y,Z);
> >
> > > Piv.transform(Piv,sceneTransform);
> > > > > > > >                                 movePivot(X,Y,Z);
> > > > > > > >                                 moveTo(Piv.x,Piv.y,Piv.z);
> >
> > > > > > > > This script move the pivot near the camera but inside the
> bouding
> > > box
> > > > > > > > of the objectContainer .
> > > > > > > > This should Zsort each "sprite" in the right order without
> > > > > > > > intersection... but it seems it doesnt work as well as it
> > > should....
> >
> > > > > > > > On 23 sep, 15:09, Peter Kapelyan <[email protected]>
> wrote:
> >
> > > > > > > > > You can move the pivot like
> >
> > > > > > > > > myObject.movePivot(newX,newY,newZ);
> >
> > > > > > > > > is this what you needed?
> >
> > > > > > > > > -Pete
> >
> > > > > > > > > On Wed, Sep 23, 2009 at 5:16 AM, enguer <
> [email protected]>
> > > > > wrote:
> >
> > > > > > > > > > Hi again :)
> > > > > > > > > > Property pushback / push worked well for green plane, but
> > > i've
> > > > > again
> > > > > > > > > > problems with z-sorting :
> > > > > > > > > > Is there a way to move pivot dynamically inside his
> container
> > > to
> > > > > use
> > > > > > > > > > with spriterendersession ?
> > > > > > > > > > I would use this for buildings in order to eliminate
> > > intersection
> > > > > > > > > > between buildings and front scene objects.
> >
> > > > > > > > > > the pivot should place nearest to the camera inside his
> > > objects
> > > > > only
> > > > > > > > > > on x and z axis.
> >
> > > > > > > > > > Have you an idea about this or should i create a custom
> > > script ?
> >
> > > > > > > > > > On 22 sep, 18:35, enguer <[email protected]> wrote:
> > > > > > > > > > > Thank you again, i will give the official link here
> when we
> > > put
> > > > > it
> > > > > > > > > > > online :)
> >
> > > > > > > > > > > On 22 sep, 17:28, Peter Kapelyan <[email protected]>
> > > wrote:
> >
> > > > > > > > > > > > You are welcome! Your website is probably the most
> > > amazing
> > > > > use of
> > > > > > > > > > away3d
> > > > > > > > > > > > I've seen yet, and I'm sure you'll be winning some
> awards
> > > for
> > > > > it.
> >
> > > > > > > > > > > > Can you let us know when your website is live,
> please?
> >
> > > > > > > > > > > > -Pete
> >
> > > > > > > > > > > > On Tue, Sep 22, 2009 at 10:48 AM, enguer <
> > > > > [email protected]> wrote:
> >
> > > > > > > > > > > > > Thank you for your compliment and your good tip :p
> >
> > > > > > > > > > > > > On 22 sep, 16:24, Peter Kapelyan <
> [email protected]>
> > > > > wrote:
> > > > > > > > > > > > > > Did I mention it looks super awesome? :)
> >
> > > > > > > > > > > > > > Also you can use:
> >
> > > > > > > > > > > > > > myThinginBack.pushBack=true;
> >
> > > > > > > > > > > > > > And if those things don't help, theres more ways
> to
> > > do
> > > > > sorting, so
> > > > > > > > > > let us
> > > > > > > > > > > > > > know if you have problems!
> >
> > > > > > > > > > > > > > -Pete
> >
> > > > > > > > > > > > > > On Tue, Sep 22, 2009 at 10:04 AM, enguer <
> > > > > [email protected]>
> > > > > > > > > > wrote:
> >
> > > > > > > > > > > > > > > WOW !! it works !!
> >
> > > > > > > > > > > > > > > thanks a lot , now i need to set this on other
> bugs
> > > :)
> >
> > > > > > > > > > > > > > > On 22 sep, 15:50, Peter Kapelyan <
> > > [email protected]>
> > > > > wrote:
> > > > > > > > > > > > > > > > Try this:
> >
> > > > > > > > > > > > > > > > myGreenPlane.pushFront=true;
> >
> > > > > > > > > > > > > > > > It looks really good!
> >
> > > > > > > > > > > > > > > > Let me know if it works for you.
> >
> > > > > > > > > > > > > > > > -Pete
> >
> > > > > > > > > > > > > > > > On Tue, Sep 22, 2009 at 9:37 AM, enguer <
> > > > > [email protected]>
> > > > > > > > > > > > > wrote:
> >
> > > > > > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > > > > > > I have a little problems with a plane
> against a
> > > > > wall. this
> > > > > > > > > > plane is
> > > > > > > > > > > > > > > > > distant from about 5 px.
> > > > > > > > > > > > > > > > > Some parts of this plane is disappearing.
> > > > > > > > > > > > > > > > > You can see this plane (the green one) on
> this
> > > url
> > > > > :
> > > > > > > > > > > > > > > > >http://bandit3.kob-eye.com/index2.html
> >
> > > > > > > > > > > > > > > > > A triangle disapear at the top left of this
> > > green
> > > > > plane, when
> > > > > > > > > > you
> > > > > > > > > > > > > > > > > place your mouse at the top left of your
> > > screen.
> >
> > > > > > > > > > > > > > > > > if someone could give an advice ?
> >
> > > > > > > > > > > > > > > > --
> > > > > > > > > > > > > > > > ___________________
> >
> > > > > > > > > > > > > > > > Actionscript 3.0 Flash 3D Graphics Engine
> >
> > > > > > > > > > > > > > > > HTTP://AWAY3D.COM
> >
> > > > > > > > > > > > > > --
> > > > > > > > > > > > > > ___________________
> >
> > > > > > > > > > > > > > Actionscript 3.0 Flash 3D Graphics Engine
> >
> > > > > > > > > > > > > > HTTP://AWAY3D.COM
> >
> > > > > > > > > > > > --
> > > > > > > > > > > > ___________________
> >
> > > > > > > > > > > > Actionscript 3.0 Flash 3D Graphics Engine
> >
> > > > > > > > > > > > HTTP://AWAY3D.COM
> >
> > > > > > > > > --
> > > > > > > > > ___________________
> >
> > > > > > > > > Actionscript 3.0 Flash 3D Graphics Engine
> >
> > > > > > > > > HTTP://AWAY3D.COM
> >
> > > > --
> > > > Rob Bateman
> > > > Flash Development & Consultancy
> >
> > > > [email protected]

Reply via email to