1 of 31

Bonet ja riggaus

2 of 31

Armaturet ja bonet

  • Armature on oma objektityyppinsä, joka toimii säiliönä Bone-tyyppisille objekteille
  • Kuvastavat objektin tai hahmon nivelrakennetta - armature on koko luuranko, bone yksittäinen luu
  • Ovat apuriobjekteja mallien muokkausta ja animaatiota varten, eivät näy renderoinnissa

3 of 31

Armaturen luominen ja muokkaus

  • Add -> Armature -> Single Bone
  • Armature voidaan avata Edit Modessa kuten muutkin 3D-objektit
  • Uusia boneja voidaan luoda mm. valitsemalla vanha bone ja käyttämällä Extrudea (E)
    • Huom. boneista voi valita kaksi päätä: Head (paksu pää) ja Tail (ohut pää), tailista jatketut bonet eivät kiinnity edelliseen boneen vaan jäävät “leijumaan” vapaina

4 of 31

Pose Mode

  • Armature-objekteissa on Edit Moden lisäksi käytössä oma erillinen Pose Modensa
  • Mahdollistaa armaturen kääntelyn erilaisiin asentoihin
    • Liikuteltavassa bonessa kiinni olevat bonet liikkuvat mukana (ns. “forward kinematics”)
  • Armaturen alkuperäinen asento tallentuu aina Edit Modeen - Pose Modessa ei voi tehdä peruuttamattomia muutoksia

5 of 31

Luodaan suorakulmainen torni

  • Luodaan aluksi kuutiosta kolmeen osaan jaettu torni (esim. valitsemalla ylin face ja extrude kahdesti)
  • Mennään Properties-shelfin Object-välilehdelle, laitetaan Display-kohdasta Draw All Edges päälle
    • Objektin poikki menevät jakavat edget näkyvät näin aina

6 of 31

Luodaan tornille armature

  • Luodaan uusi Armature-objekti, joka alkaa tornin pohjasta
  • Muokataan Edit Modessa, extrudetaan kaksi uutta bonea siten että nivelkohdat sijoittuvat tornin keskeltä menevien edgejen kohdalle

7 of 31

“Rigataan” torni armatureen

  • Valitaan Object Modessa ensin torni, sitten Shift pohjassa armature
  • Ctrl + P (Set Parent To) -> Armature Deform / With Automatic Weights
    • Huom. objektin modifier stackiin ilmestyy uusi Armature-tyyppinen modifier
    • Objekti on nyt kiinnitetty Armatureen, tätä kutsutaan “riggaamiseksi”

8 of 31

Kokeillaan Pose Modea

  • Avataan Armature Pose Modessa, valitaan boneja ja käännellään niitä Rotatella (R)
    • Bonen alkuperäisen asennon voi palauttaa Alt + R:llä
  • Torni kääntyilee nyt bonejen mukana, mutta rutistuu kasaan nivelkohdista!

9 of 31

Poistetaan armature hetkeksi tornista

  • Valitaan torni Object Modessa, Alt + P (Clear Parent) -> Clear Parent
    • Huom. Clear and Keep Transformation poistaisi objektin ja armaturen kiinnityksen, mutta tekisi Pose Modessa tehdyt muutokset lopullisiksi!

10 of 31

Tarkennetaan tornin niveliä

  • Torni rutistuu nivelistä kasaan, koska nivelkohdissa ei ole tarpeeksi geometriaa
  • Lisätään ylimääräisiä edgejä nivelkohtien ympärille esim. näin:
    • Valitaan kummatkin edge loopit(Alt + Right click)
    • Kolminkertaistetaan ne Bevelillä (Ctrl + B, liikutetaan hiirtä, hiiren rulla yksi pykälä ylös, Enter)

11 of 31

Kokeillaan uudestaan

  • Kiinnitetään torni uudelleen Armatureen (Ctrl + P, With Automatic Weights)
  • Väännellään Armaturea Pose Modessa
  • Torni säilyttää nyt paremmin paksuutensa vääntyessään, koska ylimääräiset edget auttavat pitämään sen rakennetta kasassa

12 of 31

Weight Paint -moodi

  • Jätetään Armature Pose Modeen, klikataan tornia
    • Editorin moodi vaihtuu automaattisesti Object Modeksi, koska Pose Mode toimii vain Armature-objekteissa
  • Vaihdetaan moodiksi Weight Paint

13 of 31

Weight Paint

  • Mahdollistaa bonejen vaikutusalueiden muokkaamisen manuaalisesti
  • Esim. kuvassa esillä tornin pohjalla olevan bonen vaikutukset (= “weight”)
    • Punainen = 1.0, bonen asento vaikuttaa voimakkaammin näihin vertekseihin
    • Sininen = 0.0, bonen asento ei vaikuta näihin vertekseihin
    • Vihreä jne = useamman bonen summa, esim. nivelkohtiin tulee tässä keskiarvo nivelen kummallakin puolella olevista boneista

14 of 31

Weight Paintin käyttö

  • Vastaa käyttöliittymältään Sculpt Modea, Texture Paintia ym. piirtomoodeja
  • Weight: Valitun luun vaikutusvoima maalattavaan verteksiin
    • 1.0 = Verteksin sijainti määräytyy kokonaan valitun luun perusteella
    • 0.0 = Valittu luu ei vaikuta lainkaan verteksiin
  • Auto Normalize: Joskus kätevä laittaa päälle, koska...

15 of 31

Weightien summan pitäisi olla aina 1.0!

  • 3D-grafiikan yleinen käytäntö on, että jokaisen verteksin weight-arvoista eri boneille täytyy tulla summaksi 1.0
  • Weight Paint sallii tämän kiertämisen, Blender osaa “normalisoida” weightit automaattisesti eli pakottaa niiden yhteenlasketun summan 1.0:ksi
  • Auto Normalize: Varmistaa jo maalauksen aikana, että weightien summa on aina 1.0
    • Esim. asettaa verteksin weightin 0:ksi kaikista muista boneista, jos se maalataan 1.0:ksi yhdelle - säästää aikaa

16 of 31

Weight Paint ja Pose Mode

  • Kun objektin pohjalla olevan Armaturen jättää Pose Modeen, Weight Paintista voidaan suoraan vaihtaa aktiivisena olevaa bonea Right clickillä ja käännellä sitä R:llä
  • Voidaan tarkastella lennosta, miten nykyiset weightit toimivat käytännössä
  • Erityisesti hahmoja mallintaessa on hyvä käännellä hahmoa mahdollisimman erikoisiin asentoihin ja katsoa, ilmestyykö malliin virheitä (esim. kasaan rutistuvia kohtia, jalan verteksit liikkuvat kun käden boneja liikutetaan...)

17 of 31

Harjoitus: robottikoura

  • Avataan kurssisivuilta robottikoura.blend
  • Sisältää riggaamattoman robottikouran ja sitä varten tehdyn Armaturen
  • Rigataan koura hieman eri menetelmällä kuin äsken, katsotaan millaisia asetuksia boneille voidaan laittaa

18 of 31

“With automatic weights” kourassa

  • Set Parent -> Armature Deform / With automatic weights laskee riggauksen weightit automaattisesti, mutta tuottaa tässä pieniä kauneusvirheitä
    • Esim. yhden nivelen liikkuessa siihen kiinnittynytkin pala taipuu kumimaisesti mukana
  • Rigataan koko koura siis käsin

19 of 31

Objektin ja armaturen rakenne

  • Robottikoura koostuu neljästä osasta, jotka ovat ns. “leijuvaa” geometriaa - ovat siis kokonaan toisistaan erillisiä
  • Armaturessa on neljä bonea jotka vastaavat kouran osia, kts. nimet kuvassa
  • Haluamme välttää automaattisen riggauksen äsken tuottamaa elastisuutta, joten kouran jokainen osa on kiinnitettävä pelkästään sitä vastaavaan boneen
    • Ts. jokainen osan verteksi kiinnittyy weightillä 1.0 haluttuun boneen, jolloin muiden bonejen vaikutus osaan on tasan 0

20 of 31

Rigataan koura käsin

  • Asetetaan Armature kouran parentiksi, mutta nyt valitaankin kohta “With Empty Groups”
  • Avataan koura Edit Modessa, mennään Properties-paneelin Data-välilehdelle (kolmioikoni)
    • Armaturen boneja vastaavat ryhmät on nyt lisätty “Vertex Groups”-kohdan alle

21 of 31

Lisätään osat vertex grouppeihin

  • Vedetään hiiren kursori halutun osan yläpuolelle, painetaan L (Select Linked)
  • Valitaan Vertex Groups -listasta osaa vastaava bone
  • Varmistetaan että Weight-arvo on 1.0
  • Painetaan “Assign”
  • Tyhjennetään valinta (A)
  • Toistetaan, kunnes kaikki osat on käsin lisätty oikeisiin vertex grouppeihin

22 of 31

Riggaus suoritettu

  • Kääntele Armaturea Pose Modessa, kouran pitäisi nyt liikkua mukana
  • Jos jokin osa ei liiku, avaa koura uudestaan edit modessa ja toista edellisen dian Assign-operaatio sille
  • Jos jokin osa liikkuu väärän bonen mukana, Vertex Groups -valikossa on Remove-nappi

23 of 31

Bone constraintit

  • Mallissa on ulkonäön perusteella tarkat nivelkohdat, mutta boneja voi vetää mihin asentoon haluaa - jopa siten, että kourassa olevat nivelet näyttävät menevän pahasti sijoiltaan
  • Bonejen käyttäytymistä voi muokata ja rajoittaa bone constraint -asetuksilla

24 of 31

Constraintien lisääminen

  • Avataan Armature Pose Modessa, mennään Properties-paneelin Bone Constraints -välilehdelle (Luu ja kettinki -ikoni)
  • Lisätään kaikille boneille “Limit Rotation” -constraint
    • Pohja-bonen asetukset:
      • Limit X, Limit Z
      • Convert: Local Space
    • Kaikkien muiden bonejen asetukset:
      • Limit Y, Limit Z
      • Convert: Local Space

25 of 31

Limit Rotation toiminnassa

  • Nyt kaikkien bonejen rotaatio on rajoitettu tietylle akselille, emmekä saa vahingossakaan vedettyä Armaturea sellaiseen asentoon, jossa nivelet näyttäisivät menevän sijoiltaan

26 of 31

Inverse Kinematics

  • Kouran poseeraus mihinkään kovin tarkkaan asentoon on melko vaikeaa - pitää ensin vetää pohja oikeaan kulmaan, sitten nivel 1, sitten nivel 2, jne…
    • Ns. “forward kinematics” - bonen asento määräytyy aina sitä ketjussa edeltävän bonen asennon perusteella
    • Otetaan käyttöön käänteinen ratkaisu eli “inverse kinematics” - määrätään ketjun päätepisteen sijainti, sitä edeltävät bonet lasketaan automaattisesti

27 of 31

Inverse Kinematics -constraint

  • Lisätään sceneen Empty-tyyppinen objekti
  • Lisätään Koura-bonelle uusi “IK”-tyyppinen bone constraint
    • Target: Juuri luotu Empty
  • Liikutellaan Empty-objektia Object Modessa

28 of 31

Inverse Kinematics toimii, mutta...

  • Koura hakeutuu nyt suorinta reittiä sellaiseen asentoon, jossa kouran kärki koskettaa Empty-objektia
  • Kouran nivelet menevät kuitenkin taas sijoiltaan, äsken asettamamme Limit Rotation -constraintit eivät tee yhteistyötä IK-constraintin kanssa

29 of 31

IK ja rotation-arvojen rajoitus

  • Täytyy valita Pose Modessa haluttu bone, mennä Properties-paneelin Bone-välilehdelle
  • Lukko päälle halutuilta akseleilta Inverse Kinematics -kohdan alla
  • Pohja-bonen lukittavat akselit:
    • X, Z
  • Muiden bonejen lukittavat akselit:
    • Y, Z

30 of 31

IK rajoitetuilla rotation-arvoilla

  • Nyt IK-constraint noudattaa jokaiselle bonelle asetettuja lukituksia, eivätkä kouran nivelet enää mene sijoiltaan

31 of 31

Inverse Kinematics -sovellukset

  • Hyvin yleistä ja kätevää hahmoanimaatiossa, jokaiselle raajalle saattaa olla oma IK-target
  • Mahdollistaa myös proseduraalisen animaation, esim. jyrkässä rinteessä seisovan hahmon kummatkin jalat pysyvät maassa sen sijaan, että toinen jalka leijuisi ilmassa/menisi rinteen pinnasta lävitse
  • Samat laskentamallit ovat käytössä myös robotiikassa