Envelope distort with Mesh
hi,
i trying create envelope distort based on grid mesh within liveeffect similar envelope distort--> make mesh. given path shape "art" create grid kmeshart based on bounding box:
result = saiart->newart(kmeshart,kplaceaboveall, nil,&myenvelopemesh);
saimesh->initcartesian(myenvelopemesh,width_i,height_j);
result = saiart->getartbounds(art, &artbounds);
//get corners of bounding art a,b,c,d, in clokwise order starting @ top-left corner.
pointa.h=artbounds.left;
pointa.v=artbounds.top;
pointb.h=artbounds.right;
pointb.v=artbounds.top;
pointc.h=artbounds.right;
pointc.v=artbounds.bottom;
pointd.h=artbounds.left;
pointd.v=artbounds.bottom;
now via setpoint , segment iterator assign values to 4 segments of grid match art's bounding box:
saimeshsegmentiterator->setpoint(segment,0, &pointa); //top left corner point
pointtmp.h=pointa.h+boundsize.h;
pointtmp.v=pointa.v;
saimeshsegmentiterator->setpoint(segment,1, &pointtmp); //horizontal handle
pointtmp.h=pointb.h-boundsize.h;
pointtmp.v=pointb.v;
saimeshsegmentiterator->setpoint(segment,2, &pointtmp); //horizontal handle of next point
saimeshsegmentiterator->setpoint(segment,3, &pointb);
saimeshsegmentiterator->nextonpatch(segment,kaimeshcounterclockwise); //top right corner
....
i tried create envelope object assigning mesh envelopeobject (second parameter) doesn't work.
result = saienvelopesuite->makeenvelope(&art,1,myenvelopemesh,&eoptions,&myenvelope);
in fact, call saienvelopesuite->getenvelopetype(myenvelope, &envtype) reveals of type kenvelopeobject , not kenvelopemesh.
so did following:
result = saienvelopesuite->makeenvelope(&art,1,nil,&eoptions,&myenvelope);
result= saienvelopesuite->setenvelopeobject(myenvelope, myenvelopemesh);
in case envelope appears should (when expanding liveeffect object) has distorted shape within ("art"). if manually restart shape (by pressing button "reset envelope shape") removes original distortion of enveloped shape , can edit moving vertices of meshgrid, behave expected.
in image (translucent white gradient) star should aligned star behind, gets distorted (left) until envelope reset (right).
why happening? because created within live effect? maybe making bad definition of mesh grid or setenvelopeobject not used...
thanks,
jorge.
More discussions in Illustrator SDK
adobe

Comments
Post a Comment