Thank you rob :D
Yes of course, i would like to be in the next showcase post.

Enguer

On 11 oct, 02:38, Rob Bateman <[email protected]> wrote:
> that is an incredible site enguer, well done! would it be ok for us to
> feature it in the next showcase post on away3d.com?
>
> Rob
>
>
>
>
>
> On Thu, Oct 8, 2009 at 10:10 AM, enguer <[email protected]> wrote:
>
> > But not for performance...
>
> > On 8 oct, 11:09, enguer <[email protected]> wrote:
> > > Yes of course,
> > > SpriteRenderSession z-sorting is based on the pivot position.
> > > So il you want z-sorting well ordered you will move the pivot of each
> > > object the nearest from the camera.
> > > So yes it's very important for z-sorting issue.
>
> > > On 8 oct, 11:04, Michael Iv <[email protected]> wrote:
>
> > > > 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
>
> > > ...
>
> > > plus de détails »
>
> --
> Rob Bateman
> Flash Development & Consultancy
>
> [email protected]

Reply via email to