Interesting.  I'm swinging between 15 and 60 - bounces up and down
every second or so.  That's on a very similar system - Core2Duo and
GeForce 8600M GS.

Does the browser make a difference - I'm on FF4.0?

On Jun 9, 11:21 pm, Michael Iv <[email protected]> wrote:
> My PC is far from being "non-crap" The card is GForce 8600gt. Dual Core
> pentium4.
>
>
>
>
>
>
>
> On Fri, Jun 10, 2011 at 12:58 AM, Fabrice3D <[email protected]> wrote:
> > try avoid using mouseEvents if you can or at least try another way.
> > on my 2 1/2 yo mac 17'', it runs 60/60 if the mouse is not on the window,
> > if on, I get 30/60 in Safari.
>
> > Fabrice
>
> > On Jun 9, 2011, at 11:40 PM, wagster wrote:
>
> > > 60FPS?  You must be using a non-crap machine!
>
> > > I have no idea why there's the amount of polys that there are - I'm
> > > just pulling vector data out of GraphicsPath commands, then extruding
> > > it, code below.  If you can think of a cleaner approach then I'm all
> > > ears!
>
> > > package
> > > {
> > >       import Singularity.Geom.Bezier2;
>
> > >       import __AS3__.vec.Vector;
>
> > >       import away3d.containers.ObjectContainer3D;
> > >       import away3d.entities.Mesh;
> > >       import away3d.extrusions.LinearExtrude;
> > >       import away3d.tools.Merge;
>
> > >       import com.codeazur.as3swf.exporters.AS3GraphicsDataShapeExporter;
> > >       import com.codeazur.as3swf.tags.TagDefineShape;
> > >       import com.codeazur.as3swf.tags.TagDefineSprite;
> > >       import com.codeazur.as3swf.timeline.FrameObject;
>
> > >       import flash.display.GraphicsPath;
> > >       import flash.display.IGraphicsData;
> > >       import flash.geom.Vector3D;
>
> > >       public class Walls extends Mesh
> > >       {
>
> > >               private var _data:Vector.<IGraphicsData>;
> > >               private var _bezier:Bezier2 = new Bezier2();
> > >               private var _graphicsExporter:AS3GraphicsDataShapeExporter;
> > >               private var _curveSegments:int = 4;
> > >               private var _buildContainer:ObjectContainer3D;
>
> > >               public function Walls(tag:TagDefineSprite)
> > >               {
> > >                       super();
>
> > >                       _graphicsExporter = new
> > > AS3GraphicsDataShapeExporter(Main.structureSwf);
> > >                       // Initialise a Bezier2 class to calculate points
> > on a curve
> > >                       _bezier = new Bezier2();
> > >                       _bezier.addControlPoint(0, 0);
> > >                       _bezier.addControlPoint(0, 0);
> > >                       _bezier.addControlPoint(0, 0);
> > >                       // Create a holder to add the walls to before
> > merging
> > >                       _buildContainer = new ObjectContainer3D();
>
> > >                       // Grab the graphics data from the Sprite, extrude
> > only the paths
> > >                       for each (var frameObject:FrameObject in
> > tag.frames[0].objects)
> > >                       {
> > >                               var shape:TagDefineShape =
> > > (Main.structureSwf.getCharacter(frameObject.characterId) as
> > > TagDefineShape);
> > >                               shape.export(_graphicsExporter);
>
> > Main.testOverlay.graphics.drawGraphicsData(_graphicsExporter.graphicsData);
>
> > extrudePaths(_graphicsExporter.graphicsData);
> > >                       }
>
> > >                       var merge:Merge = new Merge(false, true, false);
> > >                       merge.apply(this,
> > merge.applyToContainer(_buildContainer));
> > >                       _buildContainer = null;
> > >                       material = Main.wallsMaterial;
>
> > >               }
>
> > >               private function
> > > extrudePaths(graphicsData:Vector.<IGraphicsData>):void
> > >               {
> > >                       for each (var graphicsCommand:IGraphicsData in
> > graphicsData)
> > >                       {
> > >                               if (graphicsCommand is GraphicsPath)
> > >                               {
> > >                                       extrudePath(graphicsCommand as
> > GraphicsPath);
> > >                               }
> > >                       }
> > >               }
>
> > >               private function extrudePath(path:GraphicsPath):void
> > >               {
> > >                       var profile:Vector.<Vector3D>;
> > >                       profile = new Vector.<Vector3D>;
>
> > >                       //loop through the remaining commands
>
> > >                       for (var i:int = 0; i < path.commands.length; i++)
> > >                       {
> > >                               // GraphicsPathCommands: 0 - NO_OP  |  1 -
> > MOVE_TO  |  2 -
> > > LINE_TO  |  3 - CURVE_TO
> > >                               switch (path.commands[i])
> > >                               {
>
> > >                                       case 1: // MOVE_TO - extrude
> > profile if exists, start new profile
> > >                                               if (profile.length > 0)
> > addExtrusion(profile);
> > >                                               profile = new
> > Vector.<Vector3D>;
> > >                                               profile.push(new
> > Vector3D(path.data.shift(), 0, -
> > > path.data.shift()));
> > >                                               break;
> > >                                       case 2: // LINE_TO - add a new
> > profile point
> > >                                               profile.push(new
> > Vector3D(path.data.shift(), 0, -
> > > path.data.shift()));
> > >                                               break;
> > >                                       case 3: // CURVE_TO - add profile
> > points along curve
> > >                                               addCurve(profile, path);
> > >                                               break;
> > >                               }
> > >                       }
> > >                       addExtrusion(profile);
> > >               }
>
> > >               private function addCurve(profile:Vector.<Vector3D>,
> > > path:GraphicsPath):void
> > >               {
> > >                       _bezier.moveControlPoint(0, profile[profile.length
> > - 1].x,
> > > profile[profile.length - 1].z);
> > >                       _bezier.moveControlPoint(1, path.data.shift(),
> > -path.data.shift());
> > >                       _bezier.moveControlPoint(2, path.data.shift(),
> > -path.data.shift());
>
> > >                       for (var i:Number = 1/_curveSegments; i < 1; i +=
> > 1/_curveSegments)
> > >                       {
> > >                               profile.push(new Vector3D(_bezier.getX(i),
> > 0, _bezier.getY(i)));;
> > >                       }
> > >                       profile.push(new
> > Vector3D(_bezier.getControlPoint(2).X, 0,
> > > _bezier.getControlPoint(2).Y));
>
> > >               }
>
> > >               private function
> > addExtrusion(profile:Vector.<Vector3D>):void
> > >               {
> > >                       var linearExtrude:LinearExtrude = new
> > LinearExtrude(null, profile,
> > > LinearExtrude.Y_AXIS, 20, 3, false, 2, 3, null, false, false, "",
> > > false);
> > >                       _buildContainer.addChild(linearExtrude);
> > >               }
> > >       }
> > > }
>
> > > On Jun 9, 9:50 pm, Michael Iv <[email protected]> wrote:
> > >> I get 60/60 FPS. But can you tell me why you have almost 100000 polys? I
> > >> think with such a model you can reduce the poly count at least to 20-30%
> > >> less.
>
> > >> On Thu, Jun 9, 2011 at 11:33 PM, wagster <[email protected]>
> > wrote:
> > >>> Sure - here's a 3 storey hotel built programmatically:
>
> > >>>http://www.pictureandword.com/test_platforms/floorplan_viewer/v2/inde.
> > ..
>
> > >>> That's pretty much worst case scenario - I don't actually need the
> > >>> third storey, I just added it to see at what point the frame rate will
> > >>> start dropping.  It's just on the edge now with 100k polys.  Any tips
> > >>> on squeezing a bit more performance from it?  I can't imagine I'll get
> > >>> much more than that.
>
> > >>> The absence of floors will tell you why I'm waiting for a concave
> > >>> DelaunayMesh or preferably a Swf class.  Guests will immediately fall
> > >>> into infinity with this kind of setup.
>
> > >>> Wag
>
> > >>> On Jun 9, 4:16 pm, Fabrice3D <[email protected]> wrote:
> > >>>> screendump or url of these "seriously complex building layouts" we
> > could
> > >>> see???
>
> > >>>> Fabrice
>
> > >>>> On Jun 9, 2011, at 4:46 PM, wagster wrote:
>
> > >>>>> I know - patience is a virtue and all that :)
>
> > >>>>> I ended up using Wumedia Swf class for the floor and LinearExtrusion
> > >>>>> for the walls in 3.6 (everything is drawn in Flash IDE as we need to
> > >>>>> production-line our building layouts).  This has the advantage that
> > >>>>> you can draw labels and all sorts of things on the floor - perfect
> > for
> > >>>>> me.  Think I'll probably do the same when Swf resurfaces.
>
> > >>>>> BTW - LinearExtrude + Merge allows for some seriously complex
> > building
> > >>>>> layouts at high framerates!
>
> > >>>>> On Jun 9, 3:14 pm, Fabrice3D <[email protected]> wrote:
> > >>>>>> no, that would be one of next classes coming.
> > >>>>>> this one simply "connects" vectors as Mesh. It doesn't have any
> > >>> awareness of a "path" or defined contours/constrains.
>
> > >>>>>> Regarding architectural applications, one that I've started a while
> > >>> ago and hope to finish one of these days, will allow you to define one
> > or
> > >>> more "holes", basically closed shapes, rects, circles etc
> > >>>>>> and eventually another class would use that result to extrude. think
> > >>> here the wall with door and window, extruded at wall thickness. But as
> > some
> > >>> features required are very near of booleans operations,
> > >>>>>> so I started do more research in that field first, to see if I could
> > >>> do this via a smarter way...
>
> > >>>>>> I will gradually add these (hopefuly) usefull classes as I go. But I
> > >>> can't garanty they will be released in a logical order. By that I mean
> > that
> > >>> like in case above of the wall being extruded
> > >>>>>> the class doing this might be released before the one actually
> > >>> generating the base mesh with "holes".
>
> > >>>>>> There are still many 3.6 classes that need to join the 4.0 packages
> > >>> and get enhanced in the process.
> > >>>>>> As said before, all happends 1 by 1 :))
>
> ...
>
> read more »

Reply via email to