// Apply Many Morph 0.213
// ApplyMorphの一度に複数適用版
@name "ApplyManyMorph"
@version 2.5
@warnings
@script modeler
@define DESCRIPT "Apply Many Morph"
main
{
var vmap;
@if version != 2.5
vmap = VMap(VMMORPH, 0);
if(vmap != nil){
info("Plz Unsel Morph Map");
return;
}
@end
var VMapNames;
VMapNames += "--None--";
vmap = VMap(VMMORPH);
while(vmap && vmap.type == VMMORPH){
VMapNames += vmap.name;
vmap = vmap.next();
}
var SelMap[8];
reqbegin(DESCRIPT);
reqsize(190,200);
m1 = ctlpopup("", 1, VMapNames);
ctlposition(m1, 4, 2,178);
m2 = ctlpopup("", 1, VMapNames);
ctlposition(m2, 4, 22,178);
m3 = ctlpopup("", 1, VMapNames);
ctlposition(m3, 4, 42,178);
m4 = ctlpopup("", 1, VMapNames);
ctlposition(m4, 4, 62,178);
m5 = ctlpopup("", 1, VMapNames);
ctlposition(m5, 4, 82,178);
m6 = ctlpopup("", 1, VMapNames);
ctlposition(m6, 4,102,178);
m7 = ctlpopup("", 1, VMapNames);
ctlposition(m7, 4,122,178);
m8 = ctlpopup("", 1, VMapNames);
ctlposition(m8, 4,142,178);
return if !reqpost();
SelMap[1] = getvalue(m1);
SelMap[2] = getvalue(m2);
SelMap[3] = getvalue(m3);
SelMap[4] = getvalue(m4);
SelMap[5] = getvalue(m5);
SelMap[6] = getvalue(m6);
SelMap[7] = getvalue(m7);
SelMap[8] = getvalue(m8);
reqend();
var SrcMaps;
SelMap.sortD();
for(i = 1; i <= 8; i++){
if(SelMap[i] != 1) SrcMaps += VMap(VMMORPH, VMapNames[SelMap[i]]);
else break;
}
if(SrcMaps == nil){
error("
Not Select Morph Maps");
return;
}
var MapCnt = SrcMaps.size();
selmode(USER);
// 明示的にポイント選択モードに移行する
selpoint(CLEAR, VOLUME, <9999.999999,9999.999999,9999.999999>,<9999.999999,9999.999999,9999.999999>);
var SelPts = pointcount();
// 90/92/93 はpoint/poly countでUndoバッファを消費する
@if version < 2.2
undo();
@end
@if version > 2.7
undo();
@end
var Val[3];
var Vec, DstVec, TmpVec;
editbegin();
for(i = 1; i <= SelPts; i++){
DstVec = <0.0,0.0,0.0>;
for(c = 1; c <= MapCnt; c++){
if(SrcMaps[c].isMapped(points[i])){
Val = SrcMaps[c].getValue(points[i]);
DstVec += ;
}
}
if(DstVec != <0.0,0.0,0.0>){
Vec = pointinfo(points[i]);
Vec += DstVec;
pointmove(points[i], Vec);
}
}
editend();
}