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 »
