Victor_V Napisano 4 Kwiecień 2012 Napisano 4 Kwiecień 2012 (edytowane) Witam Ostatnio bawię się w riggowanie postaci. Szukałem skryptu, który by mi przenosił wartości verteksów z jednej postaci na drugą (modyfikator Skin). Jako iż nie mam smykałki do skryptowania w końcu udało mi się coś znaleźć. Jednakże kod skryptu zamieszczony na zagranicznym forum działa tylko z jednym zaznaczonym verteksem. Przez co nawet mając zaznaczoną ich większą ilość skrypt kopiuje i wkleja informacje o punkcie tylko dla jednego verteksa. Chciałbym, żeby skrypt właśnie ogarniał większą liczbę verteksów jakie zaznaczę. Może ktoś z was by popatrzył na kod i udało mu się zmienić coś w nim by tak działał. Próbowałem wiele by przenieść riggowanie z jednej postaci na drugą m.in. Skin Warp. Kod skryptu. global BoneArray global BoneNArray global WeightArray global PasteArray -- Pass the vert id to extract all the weights to arrays fn CopyWeight theVert = ( -- Empty the arrays BoneArray = #() BoneNArray =#() WeightArray = #() theSkin = $.modifiers[#skin] BNumber = skinOps.getVertexWeightCount theSkin theVert BN = BNumber as string for i = 1 to BNumber do ( boneID = skinOps.getVertexWeightBoneId theSkin theVert i boneName = skinOps.GetBoneName theSkin boneID 0 boneWeight = skinOps.getVertexWeight theSkin theVert i append BoneArray boneID append BoneNArray boneName append WeightArray boneWeight ) ) fn PasteWeight pVert = ( disableSceneredraw() theSkin = $.modifiers[#skin] print "these are the stored arrays for copying" print pastearray print weightarray skinOps.ReplaceVertexWeights theskin pVert pasteArray WeightArray enableSceneredraw() redrawViews() ) rollout blank "Single Skin Copy and Paste" ( label lbl1 "Select vert, press copy, then select vert and press paste." pos:[9,8] width:197 height:48 button ButtonC "Copy" pos:[18,40] width:75 height:24 button ButtonP "Paste" pos:[110,40] width:75 height:24 on ButtonP pressed do ( theSkin = selection[1].modifiers[#Skin] n = skinOps.getNumberVertices theSkin selVert=0 for i = 1 to n do ( if (skinops.isVertexSelected theSkin i == 1) then ( selVert=i ) ) -- Call the copy function PasteWeight selVert ) on ButtonC pressed do ( -- Get vert id theSkin = selection[1].modifiers[#Skin] n = skinOps.getNumberVertices theSkin selVert=0 for i = 1 to n do ( if (skinops.isVertexSelected theSkin i == 1) then ( selVert=i ) ) -- Call the copy function CopyWeight selVert -- We now have 3 arrays - bone id, bone name, and bone weight. -- some of the bones might need to be mirrored so for each bone, find the possible mirror n = BoneArray.count pastearray = bonearray ) ) -- Create floater theNewFloater = newRolloutFloater "Rollout title" 220 100 -- Add the rollout section addRollout blank theNewFloater Edytowane 4 Kwiecień 2012 przez Victor_V
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się