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

 

example grid distort.jpg

 

 

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

Popular posts from this blog

How to change text Component easybook reloaded *newbee* - Joomla! Forum - community, help and support

PProHeadless.exe has stopped working error when opening projects in Adobe Media Encoder CS6

Preconditions Failed. - Joomla! Forum - community, help and support