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 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