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?

Reply via email to