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 <fabric...@gmail.com> 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 <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 > > -- Michael Ivanov ,Programmer Neurotech Solutions Ltd. Flex|Air |3D|Unity| www.neurotechresearch.com http://blog.alladvanced.net Tel:054-4962254 mich...@neurotech.co.il t...@neurotech.co.il