Thanks so much for your help. Looking through the classes made me
appreciate how much work goes into this. I'll definitely be checking
frequently to see what's new!

On Feb 9, 4:35 am, Fabrice <[email protected]> wrote:
> ah I see what you mean now...
> Note that if the rotations were done after the scale, this wouldn't be  
> necessary.
> I want to add support for multiple profiles soon, so I'll have to redo  
> this part of the code anyway.
>
> It's indeed a very good idea!
>
> Fabrice
>
> On Feb 8, 2009, at 4:46 AM, sibhod wrote:
>
>
>
> > Hi Fabrice,
>
> > I dug through the PathExtrude class because I was really curious, and
> > I noticed the scales were being applied after the projected points
> > were calculated. As a test I duplicated the class and played around
> > with it. I added a new profileScales prop that works just like scales,
> > except it applies to the _points array on line #348 before the major
> > calculations.
>
> > Instead of:
>
> > atmp = atmp.concat(_points);
>
> > I did:
>
> > atmp = pRescale ? _smoothscale ? atmp.concat(PathUtils.scalePoints
> > (_points, aPScales[j])) : atmp.concat(PathUtils.scalePoints(_points,
> > lastscale)) : atmp.concat(_points);
>
> > I make no claims to even begin to understand the complex math
> > performed in your class, but scaling the extrude this way doesn't
> > interrupt the original path. I uploaded a test using the modified
> > class:
> >http://sibhod.com/away3d/scaleTest3.swf
>
> > and I uploaded the class file here:
>
> >http://sibhod.com/away3d/PathScaleExtrude.as
>
> > On Feb 7, 3:55 pm, sibhod <[email protected]> wrote:
> >> I did try your code, but if a path point is on 0 there's no value for
> >> scales to multiply. I made an example. I tried only scaling the z
> >> value like you said:
>
> >> var scales:Array = new Array(
> >> new Number3D(1, 1, 4),
> >> new Number3D(1, 1, 3.6),
> >> new Number3D(1, 1, 3.2),
> >> new Number3D(1, 1, 2.8),
> >> new Number3D(1, 1, 2.4),
> >> new Number3D(1, 1, 2),
> >> new Number3D(1, 1, 1.6),
> >> new Number3D(1, 1, 1.4),
> >> new Number3D(1, 1, 1.2),
> >> new Number3D(1, 1, 1.1),
> >> new Number3D(1, 1, 1))
>
> >> I created two paths, both only moving along the x axis, but one is
> >> offset y and z by 100:
>
> >> var extrudePath:Path = new Path([
> >> new Number3D(-250, 100, 100), null, new Number3D(-200,100, 100),
> >> null, null, new Number3D(-150, 100, 100),
> >> null, null, new Number3D(-100, 100, 100),
> >> null, null, new Number3D(-50, 100, 100),
> >> null, null, new Number3D(0, 100, 100),
> >> null, null, new Number3D(50, 100, 100),
> >> null, null, new Number3D(100, 100, 100),
> >> null, null, new Number3D(150, 100, 100),
> >> null, null, new Number3D(200, 100, 100),
> >> null, null, new Number3D(250, 100, 100)
> >> ]);
> >> extrudePath.smoothPath()
> >> extrudePath.worldAxis = new Number3D(0,0,1);
>
> >> var extrudePath2:Path = new Path([
> >> new Number3D(-250, 0, 0), null, new Number3D(-200,0, 0),
> >> null, null, new Number3D(-150, 0, 0),
> >> null, null, new Number3D(-100, 0, 0),
> >> null, null, new Number3D(-50, 0, 0),
> >> null, null, new Number3D(0, 0, 0),
> >> null, null, new Number3D(50, 0, 0),
> >> null, null, new Number3D(100, 0, 0),
> >> null, null, new Number3D(150, 0, 0),
> >> null, null, new Number3D(200, 0, 0),
> >> null, null, new Number3D(250, 0, 0)
> >> ]);
> >> extrudePath2.smoothPath()
> >> extrudePath2.worldAxis = new Number3D(0,0,1);
>
> >> I created two extrudes from these paths with the same profile, scale,
> >> and ini values. The end result is 
> >> this:http://sibhod.com/away3d/scaleTest2.swf
>
> >> It seems to work fine if you only scale a point's dimension that's on
> >> 0. How do I make it only scale the profile?
>
> >> On Feb 6, 7:29 pm, Fabrice <[email protected]> wrote:
>
> >>> yes makes sens, again, smoothscale:true
> >>> and pass per segment a Number3d in the array
> >>> it should look like this (1,1,1), (1,1, 1.2), (1,1, 1.4) etc.. one  
> >>> per
> >>> segment
> >>> if aligntopath is true and your path is valid, you should be able to
> >>> build that shape
>
> >>> Declare the profile only using x,y values and let all z to 0 to make
> >>> it work without having to edit the orientation vector.
> >>> (Pathextrude.worldaxis)
> >>> the profile must also distributed on the x and y axis  like  
> >>> -10/10. if
> >>> not, you'll end with an offset, the profile would not be centered
> >>> along the Path.
>
> >>> Did you run the code I've gave you?
> >>> because if you pass a circular shape, and edit the path info you'll
> >>> get that shape.
>
> >>> Fabrice
>
> >>> On Feb 6, 2009, at 11:12 PM, sibhod wrote:
>
> >>>> 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
>
> ...
>
> read more »

Reply via email to