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 <explomas...@gmail.com> 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 <ja...@pictureandword.com> 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 <fabric...@gmail.com> 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 <fabric...@gmail.com> 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 :))
>> 
>>>>>> Fabrice
>> 
>>>>>> On Jun 9, 2011, at 3:48 PM, wagster wrote:
>> 
>>>>>>> Oh cool - another prezzie from the Fabrice factory!
>> 
>>>>>>> I put together a Delaunay class myself (for architectural generation)
>>>>>>> a couple of months ago but gave up because I couldn't make it handle
>>>>>>> concave shapes.  Did you get that figured out?  (I know, I know, I
>>>>>>> could just try it out, but I'm at work and I can't wait until I get
>>>>>>> home!)
>> 
>>>>>>> On Jun 9, 11:40 am, Fabrice3D <fabric...@gmail.com> wrote:
>>>>>>>> Hi all,
>> 
>>>>>>>> I've just added 2 new classes to Broomstick
>>>>>>>> and 1 example class.
>> 
>>>>>>>> - DelaunayMesh:
>>>>>>>> Located in "extrusions" package this class allows you to generate
>>> meshes from (random) vectors. At least 3 are required.
>>>>>>>> This is very usefull in many cases, such as terrain building from
>>> pointclouds data, closing shapes, architectural generation, editing tools
>>> (such as Prefab ;)  ) etc etc
>> 
>>>>>>>> - Trident
>>>>>>>> Our good old dev friend is back, but this time, located into "debug"
>>> package instead of primitives
>>>>>>>> It works exactly as the previous versions, except you are now also
>>> able to change it's position and it looks a bit more sexy :)
>> 
>>>>>>>> - Demo class
>>>>>>>> I've added a simple example of a random cloud of vector3d's to mesh
>>> using the Delaunay class, in the code
>>>>>>>> you'll find as well the Trident in action for those new to Away and
>>> even added a small snippet for the new MeshDebugger in case you've missed my
>>> post on this one.
>> 
>>>>>>>> Cheers,
>>>>>>>> Fabrice
>> 
>> --
>> Michael Ivanov ,Programmer
>> Neurotech Solutions Ltd.
>> Flex|Air |3D|Unity|www.neurotechresearch.comhttp://blog.alladvanced.net
>> Tel:054-4962254
>> mich...@neurotech.co.il
>> t...@neurotech.co.il
> 
> On Jun 9, 9:50 pm, Michael Iv <explomas...@gmail.com> 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 <ja...@pictureandword.com> 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 <fabric...@gmail.com> 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 <fabric...@gmail.com> 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 :))
>> 
>>>>>> Fabrice
>> 
>>>>>> On Jun 9, 2011, at 3:48 PM, wagster wrote:
>> 
>>>>>>> Oh cool - another prezzie from the Fabrice factory!
>> 
>>>>>>> I put together a Delaunay class myself (for architectural generation)
>>>>>>> a couple of months ago but gave up because I couldn't make it handle
>>>>>>> concave shapes.  Did you get that figured out?  (I know, I know, I
>>>>>>> could just try it out, but I'm at work and I can't wait until I get
>>>>>>> home!)
>> 
>>>>>>> On Jun 9, 11:40 am, Fabrice3D <fabric...@gmail.com> wrote:
>>>>>>>> Hi all,
>> 
>>>>>>>> I've just added 2 new classes to Broomstick
>>>>>>>> and 1 example class.
>> 
>>>>>>>> - DelaunayMesh:
>>>>>>>> Located in "extrusions" package this class allows you to generate
>>> meshes from (random) vectors. At least 3 are required.
>>>>>>>> This is very usefull in many cases, such as terrain building from
>>> pointclouds data, closing shapes, architectural generation, editing tools
>>> (such as Prefab ;)  ) etc etc
>> 
>>>>>>>> - Trident
>>>>>>>> Our good old dev friend is back, but this time, located into "debug"
>>> package instead of primitives
>>>>>>>> It works exactly as the previous versions, except you are now also
>>> able to change it's position and it looks a bit more sexy :)
>> 
>>>>>>>> - Demo class
>>>>>>>> I've added a simple example of a random cloud of vector3d's to mesh
>>> using the Delaunay class, in the code
>>>>>>>> you'll find as well the Trident in action for those new to Away and
>>> even added a small snippet for the new MeshDebugger in case you've missed my
>>> post on this one.
>> 
>>>>>>>> Cheers,
>>>>>>>> Fabrice
>> 
>> --
>> Michael Ivanov ,Programmer
>> Neurotech Solutions Ltd.
>> Flex|Air |3D|Unity|www.neurotechresearch.comhttp://blog.alladvanced.net
>> Tel:054-4962254
>> mich...@neurotech.co.il
>> t...@neurotech.co.il

Reply via email to