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