// Add Bones 0.101 @name "Add_Bones" @version 2.5 @warnings @script generic @define DESCRIPT "Add Bones" // 1=Black 2=Dk Blue 3=Dk Green 4=Dk Cyan 5=Dk Red 6=Purple 7=Brown // 8=Gray 9=Blue 10=Green 11=Cyan 12=Red 13=Magenta 14=Orange 15=White // 16=LW Setting @define INIT_COL 16 @define INIT_REST 0.1 generic { var CurScene = Scene(); var CurItems = CurScene.getSelect(); if(CurItems == nil) return; if(CurItems[1].isLight() || CurItems[1].isCamera()){ error("
Mesh/Null/Bone only."); return; } var ItemNum = CurItems.size(); reqbegin(DESCRIPT); reqsize(315,120); v1 = ctlminislider("", 1, 1, 999); ctlposition(v1,248, 5, 40); n1 = ctlstring("", "Bone", 122); ctlposition(n1, 62, 5); n2 = ctlpopup("", 1, @"PreFix", " n_+"," nn_+"," nnn_+","-------"," n +"," nn +"," nnn +","-------"," n+"," nn+"," nnn+"@); ctlposition(n2, 0, 5, 64); n3 = ctlpopup("", 1, @"PostFix"," +_n"," +_nn"," +_nnn","-------"," + n"," + nn"," + nnn","-------"," +n"," +nn"," +nnn"@); ctlposition(n3,182, 5, 68); f1 = ctlpopup("BoneCol", INIT_COL,@"Black","Dk Blue","Dk Green","Dk Cyan","Dk Red","Purple","Brown","Gray","Blue","Green","Cyan","Red","Magenta","Orange","White","LW_Setting"@); ctlposition(f1, 5, 30,125); c0 = ctldistance("Rest Length", INIT_REST); ctlposition(c0,138, 30,150); c1 = ctlpercent("Strength", 1.0); ctlposition(c1,158, 56,130); return if !reqpost(); var BaseName = getvalue(n1); var fPre = getvalue(n2); var fPost = getvalue(n3); var BoneNum = getvalue(v1); var RLength = getvalue(c0); var Strength = getvalue(c1); var ItemCol = getvalue(f1); reqend(); if(BoneNum < 1) BoneNum = 1; var PreSep, PostSep; if((fPre >= 2)&&(fPre <= 4)){ PreSep = "_"; }else if((fPre >= 6)&&(fPre <= 8)){ PreSep = " "; fPre -= 4; } if((fPost >= 2)&&(fPost <= 4)){ PostSep = "_"; }else if((fPost >= 6)&&(fPost <= 8)){ PostSep = " "; fPost -= 4; } var BoneName; switch(fPre){ case 1: for(i = 1; i <= BoneNum; i++) BoneName[i] = BaseName; break; case 2: for(i = 1; i <= BoneNum; i++) BoneName[i] = string(i, PreSep, BaseName); break; case 3: for(i = 1; i <= BoneNum; i++) BoneName[i] = i.asStr(2,true) + PreSep + BaseName; break; case 4: for(i = 1; i <= BoneNum; i++) BoneName[i] = i.asStr(3,true) + PreSep + BaseName; break; case 10: for(i = 1; i <= BoneNum; i++) BoneName[i] = string(i, BaseName); break; case 11: for(i = 1; i <= BoneNum; i++) BoneName[i] = i.asStr(2,true) + BaseName; break; case 12: for(i = 1; i <= BoneNum; i++) BoneName[i] = i.asStr(3,true) + BaseName; break; default : break; } switch(fPost){ case 2: for(i = 1; i <= BoneNum; i++) BoneName[i] = string(BoneName[i], PostSep, i); break; case 3: for(i = 1; i <= BoneNum; i++) BoneName[i] = BoneName[i] + PostSep + i.asStr(2,true); break; case 4: for(i = 1; i <= BoneNum; i++) BoneName[i] = BoneName[i] + PostSep + i.asStr(3,true); break; case 10: for(i = 1; i <= BoneNum; i++) BoneName[i] = string(BoneName[i], i); break; case 11: for(i = 1; i <= BoneNum; i++) BoneName[i] = BoneName[i] + i.asStr(2,true); break; case 12: for(i = 1; i <= BoneNum; i++) BoneName[i] = BoneName[i] + i.asStr(3,true); break; default : break; } var NewItem; for(i = 1; i <= ItemNum; i++){ SelectItem(CurItems[i].id); if(CurItems[i].isMesh()) AddBone(BoneName[1]); else AddChildBone(BoneName[1]); BoneRestLength(RLength); BoneStrength(Strength); if(ItemCol != 16) ItemColor(ItemCol); for(c = 2; c <= BoneNum; c++){ AddChildBone(BoneName[c]); BoneRestLength(RLength); BoneStrength(Strength); if(ItemCol != 16) ItemColor(ItemCol); } } }