COMMAND CDEFORM
-----------------------------------------------------------------
Purpose: Deform a curve of an object to fit a curve of another
object. This the "Allround-effect" of Dust. You can
create morphs in high-quality, animated boolean
effects, ... using this command.
Usage: CDEFORM(,,,,[,2 control-curves])
and are the names of two subgroups defining
the curve. Both objects have to contain these subgroups.
The curves are build from the list of boundary-edges.
All boundary-edges which are found in both subgroups
are taken to build the curve.
If you are able to define the curve using one subgroup
then specify "" or "NONE" for the second one.
If your second subgroup is the whole object specify
"MAIN" or "DEFAULT" without defining this subgroup.
The -parameter specifies which points are
interpolated and which are taken directly from the
destination-object. Interpolated points which have
a relative distance less than from
a destination point are turned in this destination-point.
Values from 0.0 (interpolate all points) to 1.0 (interpolate
no points) are possible.
The optional 4 parametes "2 control-curves" are the
names of 4 subgroups which define two control-curves
which are taken to search the startpoint for closed
curves.
Examples: cdeform(1,2,G1,G2,0.0)
cdeform(1,2,G1,,0.2)
cdeform(1,2,G1,MAIN,0.1)
Notes: 1. You may ask: What are curves in my polygon-object ?
In fact Dust moves some points of the source object
to the location of some points of the destination-
object. To get a smooth behavior without turning
polygons sorted curves are needed. If the point-count
of the source-object is greater than the one of the
destination-object the remaining points are interpolated
linear using this curves.
2. Both curves must be of the same type (open or closed)
3. Now you can morph a closed head into a sphere,
a face into a plane, a torus with 12x5 points into
a torus with 12*24 points in the highest quality
you can imagine.
4. In the most cases you will need two subgroups to define
your curve exactly.
5. If you deform some neighbour-curves it can happen
that the faces become turned. In this case you have two
choices:
a) use the STARTPCORR-parameter
Example:
You morphed four curves:
CDEFORM(1,2,G1,"",0.0)
CDEFORM(1,2,G2,"",0.0)
CDEFORM(1,2,G3,"",0.0)
CDEFORM(1,2,G4,"",0.0)
The triangles between the 2nd and the 3rd curve
are turned in the same direction, the triangles between
the 3rd and the 4th curve are turned in the opposite
direction. Then try the STARTPCORR-parameter on the
3rd curve:
SET(STARTPCORR,0)
CDEFORM(1,2,G1,"",0.0)
SET(STARTPCORR,0)
CDEFORM(1,2,G2,"",0.0)
SET(STARTPCORR,1)
CDEFORM(1,2,G3,"",0.0)
SET(STARTPCORR,0)
CDEFORM(1,2,G4,"",0.0)
If the result are now better try a higher value to find
the optimum otherwise use negative values.
b) use control-curves
The control curves always are the neighbour and
the previous neighbour-curve:
CDEFORM(1,2,G1,"",0.0)
CDEFORM(1,2,G2,"",0.0)
CDEFORM(1,2,G3,"",0.0,G2,"",G1,"")
CDEFORM(1,2,G4,"",0.0)
No doubt, the control-curves are the better choice
but always you need 2 previous curves !
6. see also CDEFORMINTERP, EXPANDSG, SHRINKSG and
PREFS (INTERPMODE, FORCESWAP, STARTPCORR)