its awful theme because you keep hitting your head on the wall, yes you can reorder (you only need reorder if you work with imported meshes where order don't match), but read this carefully you might learn something useful. *
set the merge to be last in history chain its portably gone before the blend (last in modelling but front of anim
). But to be honest i wish people would stop doing stuff this way. Build your pipe first THEN do your work. Anyway i dont suggest the re atach head method either! because its heavier than a full body blend and uses more memory too. (surprising isnt it, maya uses these wonderful things called sparse arrays)
ill give you 2 options theres 3 more but reorder (read the postscript) is just one way of the theme with several different ways to approach things. Turns out reorder is neither needed, nor necceserily ideal.
this is what you do, option 1 (which for some reason is no option for most users so skip to method2):
work on full bodies if your total poly count is lower than 10,000~20,000 ods are your getting no speed penalty whatsoever,doing the blend on your head does NOT meake your blend any heavier maya blends only chages. Go to next stage
option 2, while you could renumber the points its s a bit pointless
:
make 2 files, one where you ONLY have the blendshapes and target this is now called blendsetup.ma now then make your blend shapes as you wish come re atachemt time you have 2 options again:
copy X amount of bodies one for each head, mel script (when you do it once read what you did and make it shelf item) the selection of verts so its ALWAYS the same merge and blend these go to next stage
or do it with the reattach into history way, but collapse the bodies out to individual full body blends (blend each and copy it) and then go to next stage.
next find the blend shape node copy it to a new file or just ctrl-c it to temp file (ctrl-c is just exporting to external file). Then bring in your file 2 which i aptly called bind. here you have a fully bound skeleton with a dummy blend shape, note the mesh is originally derived form the blend file for same order, it was just made before any blend was. then past the blend and replace the old blend with all connections with the new one. Now big bonus is if you want to edit more blends you can while others se the existing one to animate. Maya 8.5 brings in a command to help you here its called nodeCast.
Even reorder has the downside of this pipe (where you must work on a same way reordered mesh so you still get this forward one step to do the net one way) without the wonderful opportunity of full automation of mirroring (tough reorder could be sued instead of the merge order, but thats a different thing)
Same applies if you want to assemble many blend shapes into one, heres a nice anim you can watch, run in a empty maya, copy to script editor and execute (move it to the side of your view or you cant see anything, you wont be able to move it once you execute):
CODE
file -f -new;
window -e- vis 0 $gCommandWindow;
polyCube -w 1 -h 1 -d 1 -sx 2 -sy 2 -sz 2 -ax 0 1 0 -tx 1 -ch 1;
viewFit;
annotate -tx "Think this is head!" -p 0 0.8 0;
setAttr "annotationShape1.displayArrow" 0;
refresh; pause -sec 1;
select -r pCube1.f[0]
pCube1.f[2]
pCube1.f[4]
pCube1.f[6]
pCube1.f[8]
pCube1.f[10]
pCube1.f[12]
pCube1.f[14]
pCube1.f[20:23];
refresh; pause -sec 1;
delete;
setAttr -type "string" annotationShape1.text "Think this is head! (now half a head)";
refresh; pause -sec 1;
select -r pCube1;
duplicate -rr;
move -r 2 0 0;
viewFit -all;
refresh; pause -sec 1;
duplicate -rr;
move -r 2 0 0;
viewFit -all;
refresh; pause -sec 1;
duplicate -rr;
move -r 2 0 0;
viewFit -all;
refresh; pause -sec 1;
select -r persp;
for ($i=0;$i<4;$i++){
move -r (0.758996/4) (-1.121061/4) (0.0817991/4);
refresh;
}
select -r pCube2.vtx[5] pCube2.vtx[7] pCube2.vtx[9];
refresh; pause -sec 1;
for ($i=0;$i<4;$i++){
move -r 0.05 0.05 0;
refresh; pause -sec 0;
}
pause -sec 1;
select -r pCube3.vtx[3] pCube3.vtx[11] pCube3.vtx[16];
refresh; pause -sec 1;
for ($i=0;$i<4;$i++){
move -r -0.067 0 0;
refresh; pause -sec 0;
}
pause -sec 1;
select -r pCube4.vtx[1];
refresh; pause -sec 1;
for ($i=0;$i<4;$i++){
move -r 0.056 -0.04 0.08;
refresh; pause -sec 0;
}
setAttr -type "string" annotationShape1.text "Lets reasemble ME!";
refresh; pause -sec 1;
setAttr -type "string" annotationShape1.text "Lets reasemble ME.";
refresh; pause -sec 1;
setAttr -type "string" annotationShape1.text "Lets reasemble ME!";
refresh; pause -sec 1;
select -r pCube1;
refresh; pause -sec 1;
duplicate -rr;
duplicate -rr;
duplicate -rr;
duplicate -rr; scale -1 1 1;
duplicate -rr;
duplicate -rr;
duplicate -rr;
refresh; pause -sec 1;
select -r pCube1;
refresh;
select -add pCube11;
refresh; pause -sec 1;
constructionHistory -toggle false; // we dont need the extra shapes
CombinePolygons
refresh; pause -sec 1;
select -r polySurface1.e[8]
polySurface1.e[10]
polySurface1.e[12]
polySurface1.e[14]
polySurface1.e[16]
polySurface1.e[18]
polySurface1.e[20]
polySurface1.e[22]
polySurface1.e[36]
polySurface1.e[38]
polySurface1.e[40]
polySurface1.e[42]
polySurface1.e[44]
polySurface1.e[46]
polySurface1.e[48]
polySurface1.e[50];
refresh;
performPolySewEdge 0;
refresh; pause -sec 1;
select -r pCube2;
setAttr "pCube2.translateX" 0;
duplicate -rr; scale -1 1 1;
select -r pCube5 pCube11;
CombinePolygons;
select -r polySurface2.e[8]
polySurface2.e[10]
polySurface2.e[12]
polySurface2.e[14]
polySurface2.e[16]
polySurface2.e[18]
polySurface2.e[20]
polySurface2.e[22]
polySurface2.e[36]
polySurface2.e[38]
polySurface2.e[40]
polySurface2.e[42]
polySurface2.e[44]
polySurface2.e[46]
polySurface2.e[48]
polySurface2.e[50];
performPolySewEdge 0;
setAttr "polySurface2.translateX" -2;
refresh;
select -r pCube2 pCube8;
CombinePolygons;
select -r polySurface3.e[8]
polySurface3.e[10]
polySurface3.e[12]
polySurface3.e[14]
polySurface3.e[16]
polySurface3.e[18]
polySurface3.e[20]
polySurface3.e[22]
polySurface3.e[36]
polySurface3.e[38]
polySurface3.e[40]
polySurface3.e[42]
polySurface3.e[44]
polySurface3.e[46]
polySurface3.e[48]
polySurface3.e[50];
performPolySewEdge 0;
setAttr "polySurface3.translateX" 2;
select -r pCube3;
setAttr "pCube3.translateX" 0;
duplicate -rr; scale -1 1 1;
select -r pCube6 pCube11;
CombinePolygons;
select -r polySurface4.e[8]
polySurface4.e[10]
polySurface4.e[12]
polySurface4.e[14]
polySurface4.e[16]
polySurface4.e[18]
polySurface4.e[20]
polySurface4.e[22]
polySurface4.e[36]
polySurface4.e[38]
polySurface4.e[40]
polySurface4.e[42]
polySurface4.e[44]
polySurface4.e[46]
polySurface4.e[48]
polySurface4.e[50];
performPolySewEdge 0;
setAttr "polySurface4.translateX" -4;
select -r pCube3 pCube9;
CombinePolygons;
select -r polySurface5.e[8]
polySurface5.e[10]
polySurface5.e[12]
polySurface5.e[14]
polySurface5.e[16]
polySurface5.e[18]
polySurface5.e[20]
polySurface5.e[22]
polySurface5.e[36]
polySurface5.e[38]
polySurface5.e[40]
polySurface5.e[42]
polySurface5.e[44]
polySurface5.e[46]
polySurface5.e[48]
polySurface5.e[50];
performPolySewEdge 0;
setAttr "polySurface5.translateX" 4;
select -r pCube4;
setAttr "pCube4.translateX" 0;
duplicate -rr; scale -1 1 1;
select -r pCube7 pCube11;
CombinePolygons;
select -r polySurface6.e[8]
polySurface6.e[10]
polySurface6.e[12]
polySurface6.e[14]
polySurface6.e[16]
polySurface6.e[18]
polySurface6.e[20]
polySurface6.e[22]
polySurface6.e[36]
polySurface6.e[38]
polySurface6.e[40]
polySurface6.e[42]
polySurface6.e[44]
polySurface6.e[46]
polySurface6.e[48]
polySurface6.e[50];
performPolySewEdge 0;
setAttr "polySurface6.translateX" -6;
select -r pCube4 pCube10;
CombinePolygons;
select -r polySurface7.e[8]
polySurface7.e[10]
polySurface7.e[12]
polySurface7.e[14]
polySurface7.e[16]
polySurface7.e[18]
polySurface7.e[20]
polySurface7.e[22]
polySurface7.e[36]
polySurface7.e[38]
polySurface7.e[40]
polySurface7.e[42]
polySurface7.e[44]
polySurface7.e[46]
polySurface7.e[48]
polySurface7.e[50];
performPolySewEdge 0;
setAttr "polySurface7.translateX" 6;
viewFit -all;
refresh; pause -sec 1;
setAttr -type "string" annotationShape1.text "Now some center symmetries!";
refresh; pause -sec 1;
setAttr -type "string" annotationShape1.text "Now some center symmetries.";
refresh; pause -sec 1;
setAttr -type "string" annotationShape1.text "Now some center symmetries!";
refresh; pause -sec 1;
select -r polySurface1;
duplicate -rr;
move -r 0 2 0;
refresh; pause -sec 1;
duplicate -rr;
move -r 0 2 0;
refresh; pause -sec 1;
select -r polySurface8.vtx[4] polySurface8.vtx[6] polySurface8.vtx[8];
move -r -ls -wd 0 0.414941 0;
refresh;
select -r polySurface9.vtx[2];
move -r -ls -wd 0 0 1.729639;
setAttr -type "string" annotationShape1.text "All have same order!";
anyway the trick is to forward anticipate the breakup reassembly.
PS: if you send me in PM i can send a compiled version of reorder on windows. Compiling is relatively easy tough. Even so reodering menas you need to reorder the source too, so if yoru allready bound...
I cant share it because its copyrighted but copyright laws don't say anything about me doing it for someone else on their behalf. But still cant spread them.
- you could have asked earlier and i would have told this so you woldnt have needed to bash the head.