|
Constraints Rigging tutorial av Kjetil H Kulander
Constraints brukes for å gi et objekt en posisjon, rotasjon eller scale iforhold til et annet objekt. Hvis man parenter en kule til en boks, så vil kula følge posisjonen, rotasjonen, og scalen til boksen. Hvis man isteden bruker constrains så kan man f. eks. få kula til å kun følge rotasjonen, men fremdeles ha sin egen posisjon.
En annen viktig ting med constrains er at et objekt kan linkes til to forskjellige objekter. Hvis man bruker Point Constraint på en kule med en boks og en sylinder som target, vil kula ha en vekt til hvert av objektene som går fra 0 til 1. Hvis vekten til boksen og sylinderen er lik, så vil kulas posisjon bli midt mellom boksen og sylinderen. Hvis vekten til boksen er 1 og vekten til sylinderen er 0, vil kulas posisjon være samme som boksen. Hvis vekten til boksen er 0 og vekten til sylinderen er 1, vil kulas posisjon være samme som sylinderens.
Maya har 9 forskjellige Constraints:
Point Constraint gir et objekt den samme posisjonen som et annet.
Aim Constraint roterer objektet slik at det peker mot et annet.
Orient Constraint gir et objekt den samme rotasjonen som et annet objekt.
Scale Constraint gir et objekt samme scale som et annet objekt.
Parent Constraint gir et objekt den samme posisjonen og rotasjonen som et annet objekt.
Geometry Constraint fester et objekt på overflaten til et annet objekt.
Normal Constraint roterer et objekt iforhold til normalen på overflaten til et annet objekt.
Tangent Constraint roterer et objekt iforhold til tangenten på en curve.
Pole Vector Constraint definerer et rotasjons plan til en ikSolver.
Eksempel 1:
I dette eksempelet skal vi lage et pumpe system ved å bruke point, aim og parent constraint.
Lag to locators. La den ene ha translate 0, 0, 0, og plasser den andre i 2, 5, 0.
Lag en polyCylinder og gi den radius 0.2 og height 2. Lag 4 duplikater; i Duplicate Options vinduet velger du Duplicate Input Graph, og setter Number of Copies til 4. Flytt duplikatene i X aksen slik at de ikke ligger oppå hverandre.
Velg den første sylinderen og grupper den med instillingen Group Pivot Center i Group Options vinduet. Klikk w slik at Move Tool blir aktivert. Klikk deretter på Insert slik at du kan flytte pivoten. Flytt pivoten i Y aksen slik at den er plassert helt neders på sylinderen.
Velg den siste sylinderen og gjør det samme som du gjorde med den første, bare denne gangen skal pivoten flyttes i Y aksen slik at den er plasert helt øverst på cylinderen.
De to gruppene du nå har laget skal nå constraines slik at gruppens pivot er plassert likt som locatoren. Først velger du locatoren som er plassert i 0, 0, 0. I Outliner vinduet Ctrl klikker du på gruppen som inneholder den første sylinderen. I Constrain menyen velger du "Point". Gruppen ble nå plassert likt som locatoren, og siden sylinderen er en "child" av gruppen, så følger den med. Gjør nå det samme med den andre gruppen og locatoren som er plassert i 2, 5, 0.
Ved å bruke Aim Constraint skal vi nå få de to cylinderene til å peke mot hverandre. Velg først locatoren som er plassert i 2, 5, 0. I Outliner Ctrl klikk på gruppen som inneholder den første sylinderen. I Constrain menyen åpner du Aim Constraint Option vinduet, og setter Aim Vector til 0, 1, 0 og klikker "Apply". Velg så locatoren som er plassert i 0, 0, 0 og Ctrl klikk på den andre gruppen i Outliner vinduet. I Aim Constraint Option vinduet setter du Aim Vector til 0, -1,0 og klikker på "Add".
For å få de tre midterste sylinderene til å være riktig plassert iforhold til den første og den siste bruker vi Parent Constraint. Velg først de to sylinderene som peker på hverandre ved å holde Shift nede, Shift-select så sylinder nr. 3. I Constrain menyen åpner du Parent Constraint Option vinduet og klikker vekk Maintain Offset. Klikk så på Add. Fjern markeringen og Shift-select så i denne rekkefølgen: cylinder1, cylinder3, cylinder2. Klikk så på Parent i Constrain menyen. Fjern markeringen igjenn og Shift-select i denne rekkefølgen: cylinder3, cylinder5, cylinder4 og klikk Parent i Constrain menyen. Sett interpolation type til Shortest på alle constraint nodene.
Sett radiusen på den første sylinderen til 0.5, 0.4 på den andre, 0.3 på den tredje, 0.2 på den fjerde og 0.1 på den siste.
Hvis du nå flytter locatorene rundt i scenen fungerer alt som det skal :) Disse locatorene kan nå constraines til andre objekter i scenen. F. eks. så kan du bruke Point Constraint til å feste dem til hver sin ende av en Joint. Ved å skalere Jointen går pumpen inn og ut. Siden locatorene bruker Point Constraint påvirkes kun posisjonen til locatoren når Jointen skaleres.
Eksempel 2:
I dette eksempelet lages en boks som plukker opp en kule, sender kula vidre til en annen boks som kaster den opp i luften og kula blir "dynamic". Dette gjør vi ved å plassere dummy objekter av kula på de forskjellige stedene den skal være. Og så bruke Parent Constraint på hovedkula for å flytte den mellom de forskjellige dummyene.
Lag en kule og to bokser. Gi boksene en height på 0.2. Flytt pSphere1 til 0, 1, 0 slik at den står på griden. Flytt pCube1 opp til venstre og pCube2 opp til høyre, og roter dem slik at en av de lange sidene vender mot pSphere1. Lag et polyPlane og gi den Width 15 og Height 15.
I Preferences vinduet, under Settings/Keys setter du Default In og Out Tangent til Linear.
Velg pCube1 og sett en key på frame 0. Gå til frame 10, flytt pCube1 slik at dens lange side ligger inntil pSphere1 og sett en key. Lag en kopi av pSphere1 som heter pSphere2. Parent den til pCube1.
Gå til frame 15 og sett en key på pCube1.
Gå til frame 25, flytt pCube1 opp og litt til venstre, roter den mot pCube2 og sett en key. Sett også en key på pCube2.
Gå til frame 35, flytt pCube1 halveis fram til pCube2 og sett en key. Flytt og roter pCube2 slik at dens lange side ligger inntil pSphere2 og sett en key. Lag en kopi av pSphere2 som heter pSphere3 og parent den til pCube2.
Gå til frame 40 og sett en key.
Gå til frame 50, flytt pCube2 ned til høyre, roter den slik at ballen peker mer oppover, og sett en key. Sett en ny key på frame 55.
Gå til frame 58, flytt pCube2 litt opp og litt til venstre, sett en key.
Gå tilbake til frame 55 og lag en kopi av pSphere3 som heter pSphere4. Unparent pSphere4 og sett en key. Gå til frame 58. Flytt pSphere4 slik at den ligger likt som pSphere3 og sett en key.
Velg pPlane1 og i Soft/Rigid Bodies menyen velger du Create Passive Rigid Body. Gjør det samme med pSphere4.
Gå til frame 55 og velg Set Passive Key i Soft/Rigid Bodies menyen mens pSphere4 er merket. Gå til Frame 58 og Set Active Key. Mens pSphere4 fremdeles er merket lager du et Gravity field (Fields/Gravity).
Merk pSphere1 og lag en kopi som heter pSphere5. Merk så kulene i denne rekkefølgen. pSphere1, pSphere2, pSphere3, pSphere4, pSphere5. Lag en parent constrain(uten Maintain Offset)Merk pSphere1-4, lag en ny Layer. Legg de 4 merkede kulene i det nye layeret og Template layeret.
I Preferences vinduet, under Settings/Keys setter du Default Out Tangent til Stepped.
Gå til frame 0. Merk pSphere5. I Channel Box'en setter du "P Sphere1 W0" til 1, og resten til 0. Får å sette key på Constraint vektene, må du merke dem i Channel Box, høyreklikke på dem og velge Key Selected.
Gå til frame 10, sett "P Sphere1 Wo" til 0 og "P Sphere2 W1" til 1, og sett keys.
Gå til frame 35, sett "P Sphere2 Wo" til 0 og "P Sphere3 W1" til 1, og sett keys.
Gå til frame 50, sett "P Sphere3 Wo" til 0 og "P Sphere4 W1" til 1, og sett keys.
Du kan nå skjule Layer'et som inneholder dummy-objektene og spille av animasjonen!
|