Ok, so scales do not work how I was thinking. Maybe I should just explain what I am attempting. I would like to be able to draw a curvy path in 3d, and have a profile extrude and taper along the path without modifying the path positions. I attempted to divide each path point's position by it's scale value to offset the scale multiplication, and I ended up with a sloppy looking extrude:
http://sibhod.com/away3d/scalesTestInvert.swf I created a quick visual of what I am attempting with a cylinder and modifiers here: http://sibhod.com/away3d/taperExample.swf I would like to be able to keep the extrude path the same, while scaling only the extruded profile. Does that make sense? Thanks Fabrice! On Feb 6, 1:01 pm, Fabrice <[email protected]> wrote: > Hey Sibhod, > yes, you do wrong :) > > The scale Number3D's are multipliers, when smoothscale is true their > respective values are interpolated on a linear way. They are applied > on the transformed vertexes. > if you mulitply by zero a vector property, chances are high you will > have some vertexes going wild in the final piece. If you want they > remain unchanged it must be (1,1,1). > This is also the default set when you do not pass a scales array. > > Look at previous example. only the z factor were changed. this depends > on the way you define the profile and how the shape is projected to > the path in case of aligntopath:true. > in this case it is using the xy plan for the profile. Try my code and > pass for a second one null, you will see they will have exact same > length. > > A quick tip: just pass (1,1,1) and on the second or third > CurveSegment, pas (1,1,3) , if its affecting the position, try (1,3,1); > in your case you affect the 3 axes. Witch is from what you explain, > not what you want. > > In case you are using different projection or path definitions, try > set the PathExtrude.worldaxis property. the default is 0,1,0, try > 0,0,1 instead. > > Fabrice > > On Feb 6, 2009, at 7:38 PM, sibhod wrote: > > > > > Hey Frabrice, > > > I updated from the svn, but unless I'm doing something wrong it's > > still not quite fixed. If you do a scale from a (0,0,0) point then > > scales can't affect the position. > > Here's a quick example I made to try and highlight the issue better: > > >http://sibhod.com/away3d/scalesTest.swf > > > These are two identical pathExtrudes, except the y positions are > > inverted. The top extrude is constructed with 'null' for the scales > > arg, and the bottom extrude has a scales array graduating from (2, 2, > > 2) to (1, 1, 1). This isn't how it's supposed to work, right? > > > Thanks! > > > On Jan 29, 11:00 am, sibhod <[email protected]> wrote: > >> Thanks for the quick response! I'll update my files. > > >> On Jan 29, 8:54 am, Fabrice <[email protected]> wrote: > > >>> Hey sibhod, > >>> thanks for pointing out that one. > >>> was little but nasty. > > >>>http://www.closier.nl/playground/PathExtrude_scalefix.swf > > >>> this is the test code I've quickly typed to make that fixe > > >>> var aPoints = []; > >>> //square > > >>> aPoints.push(new Number3D(-100, 100, 0)); > >>> aPoints.push(new Number3D(0, 100, 0)); > >>> aPoints.push(new Number3D(100, 100, 0)); > >>> aPoints.push(new Number3D(100, 0, 0)); > >>> aPoints.push(new Number3D(100, -100, 0)); > >>> aPoints.push(new Number3D(0, -100, 0)); > >>> aPoints.push(new Number3D(-100, -100, 0)); > >>> aPoints.push(new Number3D(-100, 0, 0)); > >>> aPoints.push(new Number3D(-100, 100, 0)); > > >>> var aPath:Array = [ new Number3D(-500, 0, > >>> 0), new Number3D(-250, 0, > >>> 0), new Number3D(0, 0, 0)]; > > >>> var path:Path = new Path(aPath); > > >>> var aScale = []; > >>> aScale.push(new Number3D(1, 1, 1)); > >>> aScale.push(new Number3D(1, 1, 3)); > > >>> pathextrude= new PathExtrude(path, > >>> aPoints, aScale, null, > >>> {smoothscale:true, flip:false, aligntopath:true, coverall:true, > >>> scaling:6, closepath:false, recenter:false, material:mat, > >>> subdivision: > >>> 10, bothsides:false}); > > >>> this.scene.addChild(pathextrude); > > >>> displays now exactly as expected. > > >>> svn is updated > > >>> Fabrice > > >>> On Jan 29, 2009, at 7:12 AM, sibhod wrote: > > >>>> I updated to the latest svn trunk, and tried many different > >>>> methods, > >>>> but the "scales" prop on PathExtrude still doesn't work the way I > >>>> expect it. > > >>>> For example, if I have a simple square profile extruded on a one- > >>>> segment path that runs from (100, 100, 100) to (-100, -100, -100) > >>>> it > >>>> appears like a diagonal rectangular box. The problems appear when I > >>>> attempt to usescales, with or without smoothscale. If I want the > >>>> box > >>>> to taper as it extrudes, I pass ascalesparam: new Array(new > >>>> Number3D > >>>> (1,1,1), new Number3D(3, 3, 3)). Not only does the profile scale, > >>>> but > >>>> the v1 point is now well beyond (-100, -100, -100), and appears > >>>> to be > >>>> multiplied by the scale as well. > > >>>> Also, the extrude seems to add an extra segment to the profile that > >>>> returns to the last point in the extrude path, unscaled. I've > >>>> found a > >>>> cheap work-around where my path generator divides each segment > >>>> position by its scale, but I wanted to see if I am doing something > >>>> wrong. > > >>>> Thanks again! > > >>>> On Jan 26, 7:46 pm, sibhod <[email protected]> wrote: > >>>>> I haven't had a chance to try out your suggestions, but I wanted > >>>>> to > >>>>> that you so much for your help! I'll be sure to post my results > >>>>> when I > >>>>> finally have some. > > >>>>> On Jan 15, 5:33 pm, Fabrice <[email protected]> wrote: > > >>>>>> ThepathExtrudedo not change the points coordinates except if you > >>>>>> pass aligntopath:true > >>>>>> the scale works per Curvesegments, and a scale Number3D is > >>>>>> required > >>>>>> for that segment. > >>>>>> you just pass a series of Number3D's in an array and they will > >>>>>> affect > >>>>>> the whole segment. Smoothscale prop will define if its > >>>>>> interpolating > >>>>>> the scale influence > >>>>>> or apply same value from start to end of the segment. the last > >>>>>> past > >>>>>> Number3D will be used until the code reaches the last point. > >>>>>> Look at the second example here > > >>>>>>http://www.closier.nl/blog/?p=73 > > >>>>>> You also need to use the lastest, some updates were done, where > >>>>>> indeed > >>>>>> last points were not taken in account. > >>>>>> especially when you use the smoothPath() to the path you pass > >>>>>> to the > >>>>>> class. I will check if indeed the problem is remaining in case of > >>>>>> scale. > > >>>>>> Note that there are some more changes done during past 2 days. > > >>>>>> theextrudesupports now > >>>>>> multiple textures > >>>>>> mapping per step/entire extrusion remains unchanged. But you > >>>>>> can now > >>>>>> in case of mulitple texture texture per segment. > > >>>>>> the default mapping is also changed, where the points were evenly > >>>>>> distributed on the texture, making very difficult to update > >>>>>> the geometry profile without ruining the texture, you have now by > >>>>>> default a projection that is applied based on percent/distance. > >>>>>> so what is left is your left point, what is right on the > >>>>>> texture the > >>>>>> right point as in the other mode "_mapfit:false", but now the > >>>>>> uv's > >>>>>> are > >>>>>> set respecting the distance between both. > > >>>>>> smoothpath and average path are fixed in Path class, but are > >>>>>> under > >>>>>> "rebuild" in thepathextrude, (its in comments) > >>>>>> and should be back online in few days. > > >>>>>> A few other details were improved/corrected as well. > > >>>>>> Fabrice > > >>>>>> On Jan 16, 2009, at 12:05 AM, sibhod wrote: > > >>>>>>> I've been doing some tests withPathExtrude, and I've noticed > >>>>>>> something odd with using thescalesprop. It appears that the > >>>>>>> scale > >>>>>>> value not onlyscalesthe projected points, but also the > >>>>>>> coordinates > >>>>>>> for that point. > > >>>>>>> For example if Iextrudea square along a circle path, I get a > >>>>>>> donut. > >>>>>>> When I try changing thescalesvalue it changes both the > >>>>>>> thickness of > >>>>>>> the donut, and their distance from the center of the donut. > >>>>>>> Also, > >>>>>>> the > >>>>>>> last point in the path doesn't seem to be affected by scale, > >>>>>>> neither > >>>>>>> path or position. > > >>>>>>> Am I using theextrudewrong? Is this how scaling is supposed to > >>>>>>> work?
