// 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(); }