From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Riide simulatsioon

Riide näidis
Riie nikerdatud puufiguuridel (autor motorsep).
Riide näidis

Riide simulatsioon on üks raskemaid arvutigraafika aspekte, kuna riie on petlikult lihtne reaalse maailma objekt, mida võetakse enestmõistetavana, kuid millel on tegelikult väga keerulised vastasmõjud iseenda ja keskkonnaga. Pärast aastetepikkust arendamist on Blenderil väga töökindel riide simulaator, mida kasutatakse rõivaste, lippude, vimplite jms jaoks. Riiet mõjutavad liikuvad objektid, tuul ja teised jõud, samuti stseeni üldine aerodünaamiline mudel, mis kõik on sinu kontrolli all.

Kirjeldus

Riidetükk võib olla igasugune võre, avatud või suletud, mis on riidena määratud. Riide (Cloth) paneelid asuvad füüsika (Physics) alamkontekstis ja koosnevad kolmest seadete paneelist. Riie on kas avatud või suletud kaalutu võre ‒ st eeldatakse, et ühel riideobjektil on kogu ulatuses sama tihedus (sama mass pinnaühiku kohta).

Riie modelleeritakse harilikult ruudustikvõre või kuubina, kuid ta võib olla ka näiteks kas või kaisukaru. Siiski, Blenderi pehmete kehade süsteem (Soft Body) pakub suletud võrede jaoks paremat simulatsiooni. Riie on spetsialiseeritud kangaste jaoks.

Kui objekt on määratud riidena, lisatakse tema töötlejate pinusse automaatselt riidetöötleja (Cloth Modifier). Töötlejana toimib ta koosmõjus teiste töötlejate, näiteks skeleti (Armature) ja silujaga (Smooth). Nendel juhtudel arvutatakse võre lõplik vorm vastavalt töötlejate järjestusele pinus. Näiteks peaks riide siluma alles pärast seda, kui töötleja on arvutanud tema kuju.

Riiet saad muuta kahes kohas. F7 füüsika nuppudega, mille abil saab muuta riide omadusi, ja töötlejate pinus, kus saad muuta riidetöötleja omadusi, mis on seotud väljanägemise ja koosmõjuga teiste töötlejatega.

Sa saad riidetöötlejat rakendada (Apply) võre külmutamiseks või paigalelukustamiseks selles kaadris, mis eemaldab töötleja. Näiteks võid sa laotada lina laua kohale, lasta simulatsioonil töötada ning seejärel rakendada töötleja. Sel juhul kasutad sa simulaatorit, et säästa kõvasti modelleerimisaega.

Simulatsiooni tulemused salvestatakse vahemällu, nii ei pea võre vormi, mis on animatsioonis iga kaadri jaoks ühe korra arvutatud, enam uuesti arvutama. Kui simulatsioonis tehakse muudatusi, on kasutajal täielik kontroll vahemälu puhastamise ja simulatsiooni taasjooksutamise üle. Simulatsiooni esimest korda jooksutamine on täiesti automaatne ja eeltöötlus ega erinevad sammud ei katkesta tööd.

Riide vormi arvutamine igal kaadril on automaatne ja toimub taustaprotsessina: nii saad simulatsioooni arvutamise ajal tööd jätkata. Siiski nõuab see tegevus olulist protsessorivõimsust ja sõltuvalt sinu arvuti kiirusest ja simulatsiooni keerukusest võib protsessori koormamine muuta Blenderi märgatavalt uimasemaks.

Ära hüppa edasi
Kui sead riide simulatsiooni valmis, kuid Blender ei ole veel arvutanud vorme kogu simulatsiooni kaadrivahemiku jaoks ja sa hüppad oma animatsioonis palju kaadreid edasi, võib juhtuda, et riide simulaator ei suuda arvutada või näidata täpset võre vormi sellel kaadril, kui ta ei ole enne arvutanud vormi eelmis(t)es kaadri(t)es.


Töö järjekord

Üldine protsess riidega töötamisel on:

  1. Modelleeri riideobjektile üldine algusvorm.
  2. Määra objekt objektikonteksti Object füüsika alamkontekstis Physics “riidena” (F7).
  3. Modelleeri teised suunavad objektid, mis riiet mõjutavad. Tee kindlaks, et suunav töötleja (Deflection) on töötlejate järjestuses viimane, pärast teisi võret moonutavaid töötlejaid.
  4. Valgusta riie ja määra materialid ja tekstuurid, tee UV-lahtilõige, kui soovid.
  5. Kui soovid, anna objektile osakesed, nagu näiteks pinnalt kerkiv aur.
  6. Jooksuta simulatsioon ja sedista valikud, et saada rahuldav tulemus. Ajagraafiku akna nn makinupud on selle sammu jaoks suurepärased.
  7. Soovi korral peata võre mingis simulatsiooni punktis, et anda talle uus vaike-algusvorm.
  8. Tee võres kaaderhaaval väiksemaid muudatusi, et parandada väikseid rebendeid.


Riidesimulatsioonide loomine

Selles lõigus selgitatakse, kuidas valida seaded soovitud tulemuse saamiseks. Esiteks, lülita sisse Cloth (riie). Määra, mis sorti riiet simuleerid. Võid valida alustamiseks ühe eeldefineeritud riidesortidest.

Nagu näed, mida raskem on kangas, seda jäigem see on, seda vähem venib ja seda vähem mõjutab seda õhk.

Riide paneel

Presets (eelseadistused)
Sisaldab mitut eelvalmistatud riidenäidist ja laseb sul lisada enda omi.
Quality (kvaliteet)
Seadista simulatsiooni sammude arv kaadri kohta. Kõrgemad väärtused annavad tulemuseks parema kvaliteedi, kuid on aeglasemad.

Materjal

Mass (mass)
Riide materjali mass.
Structural (struktuurne)
Riide üldine jäikus.
Bending (paindumine)
Kortsude koefitsient. Kõrgem väärtus tekitab rohkem suuri kortse.

Sumbumine (Damping)

Spring (vedru)
Riide liikumiskiiruse sumbumine. Kõrgem = sujuvam, vähem lainetust.

Air (õhk)

Õhul on harilikult mõningane tihedus, mis aeglustab esemete allalangemist.

Kinnitamine (Pinning)

Riidesimulatsioon

Esimene asi, mida sa riide kinnitamiseks vajad, on tipugrupid (Vertex Groups). Nende tegemiseks on erinevaid võimalusi, sealhulgas mõju maalimise tööriist (Weight Paint), mis võimaldab maalida alad, mida soovid kinnitada (vaata käsiraamatust mõju maalimise osa).

Kui tipugrupid on loodud, on asjad edasi üsna lihtsad, sa ei pea tegema muud kui vajutama nuppu Pinning of cloth (riide kinnitamine) paneelil Cloth (riie) ja valima, millist tippude gruppi tahad kasutada ja kui suurt jäikust sa sellele tahad.

Stiffness (jäikus)
Sihtmärgi asukoha jäikus. Jäikuse võid jätta nii nagu ta on, vaikimisi väärtus 1 on sobiv.



Kokkupõrked

Reeglina riidetükk ei ripu niisama 3D-ruumis, vaid põrkub vastu teisi keskkonnas olevaid objekte. Et kindlustada simulatsiooni õige toimimine, on vaja mitu asja seadistada ja koos tööle panna:

  1. Riide objekt peab olema määratud osalema kokkupõrgetes.
  2. Võid (soovitavalt) lasta riidel põrkuda ka riide endaga.
  3. Teised objektid peavad olema riide objektile jagatud kihtide abil nähtavad.
  4. Teised objektid peavad olema võreobjektid.
  5. Teised objektid võivad liikuda või olla moonutatud kolmandate objektide poolt (nagu skelett või võtmevorm).
  6. Teistele võreobjektidele tuleb öelda, et nad mõjutaksid riideobjekti.
  7. Tööfail (.blend) tuleb salvestada kataloogi, et simulatsiooni oleks võimalik salvestada.
  8. Seejärel tuleb simulatsioon eeltöödelda (Bake). Simulaator arvutab riide kuju etteantud kaadrite vahemikus.
  9. Seejärel saad muuta simulatsiooni tulemusi või teha osades kaadrites täpsustusi riidevõres.
  10. Sa saad teha muudatusi keskkonnas või moonutada objekte ning seejärel taaskäivitada riidesimulatsiooni käesolevast kaadrist alates.


Kokkupõrke seaded

Riide kokkupõrke (Cloth Collision) paneel.

Nüüd pead sa ütlema riideobjektile (Cloth), et tahad selle osalemist põrgetes. Otsi riideobjekti jaoks üles paneel Cloth Collision (riide kokkupõrked), mis on näidatud paremal:

Enable Collisions (luba kokkupõrkeid)
Klõpsa sellel LMB Template-LMB.png, ütlemaks riideobjektile, et ta peab eest liikuma.
Quality (kvaliteet)
Üldine seade, et määrata, kui kvaliteetne simulatsioon on. Suurematel numbritel on see aeglasem, kuid kindlustab, et rebendeid ja riidest läbitungimisi esineb vähem.
Distance (vahemaa)
Kui teine objekt satub riidele nii lähedale (Blenderi ühikutes), hakkab simulatsioon riiet eest ära lükkama.
Repel (tõuka eemale)
Tõukumisjõud, mida rakendatakse, kui riie on lähedal põrkele.
Repel Distance (tõukumisvahemaa)

Maksimaalne vahemaa tõukumisjõu rakendamiseks. Peab olema suurem kui minimaalne vahemaa.

Friction (hõõrdumine)
Koefitsient, mis määrab, kui libe on riie teiste võreobjektidega põrkudes. Näiteks siidil on madalam hõõrdekoefitsient kui puuvillal.


Kokkupõrked iseenesega

Päris riie ei tungi iseendast läbi, seega harilikult tahad sa, et riie põrkuks ka enesega.

Enable Self Collisions (lülita põrked iseenesega sisse)
Klõpsa seda, ütlemaks riidele, et ta ei läbistaks iseennast. See lisab küll simulatsioonile arvutusaega, kuid kindlustab realistlikuma tulemuse. Lipul, mida vaadatakse eemalt, ei ole vaja seda sisse lülitada, kuid lähivaatel keebist või pluusist tegelase seljas on see vajalik.
Quality (kvaliteet)
Et suurendada enesepõrke kvaliteeti, suurenda lihtsalt välja Quality väärtust ning simulatsioon arvutab rohkem enesepõrke kihte. Pea ainult meeles, et väljade Collision Quality (kokkupõrke kvaliteet) ja Quality (kvaliteet) väärtused peaks olema vähemalt samad.
Distance (vahemaa)
Kui tekib probleeme, võid muuta ka välja Min Distance (minimaalne vahemaa) väärtust enesepõrke jaoks. Parim väärtus on 0.75; kiirete asjade jaoks pane parem 1.0. Väärtus 0.5 on küllaltki riskantne (arvatavasti on palju läbitungimisi), kuid töötab kiiremini.

Regressioonitesti fail: Riide enesepõrked.

Jagatud kihid

Oletame, et sul on kaks objekti: paar pükse kihtidel 2 ja 3 ja tegelase võre kihtidel 1 ja 2. Oled pükstel lülitanud eelpoolkirjeldatud moel sisse riidesimulatsiooni. Nüüd pead sa tegelase tegema riideobjektile “nähtavaks“, nii et kui tegelane painutab jalga, tõukab see riiet. See põhimõte on sama kõikidel simulatsioonidel: simulatsioon toimib ainult objektidega, mis jagavad mõnda kihti. Selles näites jagavad mõlemad objektid kihti 2.

Et vaadata/muuta objekti kihte, selekteeri objekt, klõpsates RMB Template-RMB.png 3D-vaate objektirežiimis. Too kiirklahviga M esile hüpikaken "kihtide liigutamine" (Move layers), mis näitab kõiki kihte, kus objekt asub. Et asetada objekt ühele kihile, klõpsa LMB Template-LMB.png vastava kihi nupul. Et asetada objekt mitmele kihile, klõpsa ⇧ ShiftLMB Template-LMB.png igal vastava kihi nupul. Et eemaldada objekt valitud kihilt, klõpsa lihtsalt uuesti ⇧ ShiftLMB Template-LMB.png vastava kihi npul, et see välja lülitada.

Võreobjektide kokkupõrked

Kui põrkuv objekt ei ole võreobjekt, nagu näiteks NURBS-pind või tekstiobjekt, siis tuleb ta kõigepealt teisendada võreobjektiks. Et seda teha, selekteeri ta objektirežiimis ja vali 3D-vaate päises Object → Convert Object Type (objekt->konverteeri objektitüüp) (AltC) ning seejärel võta hüpikaknast Mesh (võre).

Riide/objekti põrked

Kokkupõrke seaded

Riideobjekti peab mõni teine objekt tõukama. Et riiet tõugata, peab sellel objektil olema sisse lülitatud kokkupõrge riidega. Et lülitada sisse riide/objekti põrked, pead sa suunamise sisse lülitama põrkuval objektil (mitte riideobjektil).

Otsi nuppude Buttons objektikonteksti Object füüsika alamkonteksti Physicsparemal küljel üles paneel Collision (kokkupõrked). Samuti on oluline tähele panna, et selle põrkepaneeli abil öeldakse kõikidele simulatsioonidele, et see objekt on osaline põrgetes ja teiste objektide mõjutamisel jagatud kihtide kaudu (osakesed, pehmed kehad ja riie).

Pane tähele
Kokkupõrgete (Collision) paneele on kolm erinevat, mis kõik asuvad füüsika (Physics) alamkontekstis. Vaikimisi on esimene neist kaart väljade (Fields) paneeli kõrval, ja seda meil vaja ongi. Teine paneel, kaart pehme keha (Soft Body) grupis, käib pehmete kehade kohta (riidega ei ole sellel mingit tegemist). Ja viimast oleme me juba näinud: vaikimisi on see kaart riide (Cloth) paneeli kõrval.


Võreobjekti töötlejate pinu

Kokkupõrgete pinu

Objekti kuju deformeerib riiet, seega peab riide simulatsioon teadma võreobjekti "tegelikku" kuju antud kaadris. See tõeline kuju on põhivorm, mida on muudetud võtmevormide või skelettide poolt. Seetõttu peab kokkupõrke (Collision) töötleja tulema pärast kõiki neid teisi töötlejaid. Pilt paremal näitab tegelase võreobjekti (mitte riideobjekti) töötlejate (Modifiers) paneeli.

Riide vahemälu

Vahemälu seaded riide jaoks on samad mis teistel dünaamilistel süsteemidel. Detailidest loe peatükist Osakeste vahemälu.

Põrke eeltöötlus

Pärast eeltöötlust

Pärast seda, kui oled seadistanud suunava võre kaadrite vahemikus, mille vahel kavatsed simulatsiooni jooksutada (kaasa arvatud võre animeerimine skeleti abil), võid käskida riide simulatsioonil arvutada (ja vältida) kokkupõrked. Vali objektikonteksti füüsika alamkontekstis riideobjekt, seadista alguse (Start) ja lõpu (End) kaadrid, millle vahel tahad simulatsiooni arvutada, ja klõpsa nuppu Bake (eeltöötlus).

Sa ei saa muuta alguse ega lõpu väärtust, ilma et tühjendaksid simulatsiooni eeltöötluse. Kui simulatsioon on lõpetatud, märkad sa, et sul on valikud: vabasta eeltöötlus, muuda eeltöötlust või eeltöötle uuesti.

On mõned asjad, mida sa arvatavasti kohe tähele paned. Esiteks eeltöötleb ta märgatavalt aeglasemalt kui enne ja lõikub sageli võrega.

Vahemälus oleva simulatsiooni muutmine

Vahemälu sisaldab võre kuju igas kaadris. Sa saad muuta vahemälus olevat simulatsiooni, kui vajutasid eeltöötluse käivitamise järel nuppu Bake Editing (eeltöötluse muutmine). Mine lihtsalt kaadrile, mida tahad parandada, ja sisene klahviga ⇆ Tab muutmisrežiimi (Edit mode). Seal saad liigutada tippe, kasutades kõiki Blenderi võre vormimise tööriistu. Kui väljud, säilitatakse võre vorm sellel animatsiooni kaadril. Kui tahad, et Blender jätkaks simulatsiooni, kasutades edasi uut vormi, klõpsa LMB Template-LMB.png nupul Rebake from next Frame (eeltöötle uuesti järgmisest kaadrist) ja esita animatsioon. Sel juhul Blender jätkab simulatsiooni, kasutades uut võre kuju.

Muuda võret, et parandada väiksemad rebendid ja kohad, kust põrkuv objekt on riiet läbistanud.

Kui sa lisad, kustutad, surud välja või eemaldad võrest tippe, siis arvestab Blender uut võret kui algset võre kuju animatsiooni "esimese kaadrini" välja, asendades algse vormi, millega sa alustasid, kuni kaadrini, kus sa olid, kui võret muutsid. Seega, kui sa muudad võre ülesehitust, siis lahkudes ⇆ Tab abil muutmisrežiimist, peaksid sa tühjendama vahemälu, , et Blender teeks kokkusobiva animatsiooni.

Probleemide lahendamine

Kui sul tekib probleeme põrketuvastamisega, on nende lahendamiseks kaks meetodit.

  • Kiireim meetod on muuta minimaalse vahemaa (Min Distance) seadet riide kokkupõrke (Cloth Collision) paneelil. See on küll kiireim meetod läbistamise korrigeerimiseks, kuid on vähem täpne ja ei näe nii hea välja. Selle meetodi kasutamisel kipub riidest jääma mulje, nagu see ripuks õhus, üldse on üldmulje väga ümara väljanägemisega.
  • Teine meetod on suurendada kvaliteeti (Quality) (esimesel riide (Cloth) paneelil). Selle tulemuseks on väiksemad sammud simulaatori jaoks ning seetõttu on suurem võimalus, et kiiresti liikuvad põrked registreeritakse. Samuti võid suurendada põrke kvaliteeti (Collision Quality), et põrke lahendamisel tehtaks rohkem iteratsioone.
  • Kui ükski nendest meetoditest ei aita, saad hiljem hõlpsasti eeltöödeldud tulemust muutmisrežiimis (Edit mode) parandada.
  • Moonutav võre rebestab minu riiet: suurenda strukturaalset jäikust (väli StructStiff riide (Cloth) paneelil) väga kõrge väärtuseni, näiteks 1000.
Subsurf ehk pinnatükeldaja
Eeltöötlus tehakse iga pinnatükeldamise taseme kohta, seega kasuta nii renderdamisel kui ka eelvaatel sama pinnatükelduse taset.


Näited

Et riidega alustada, on esimese asjana vaja muidugi kangast. Seega kustutame vaikimisi loodud kuubi ja lisame tasapinna. Mina suurendasin enda oma mööda Y-telge, kuid see ei ole vajalik. Et saada head lõtva ja elastset kangast, on vaja seda mitu korda tükeldada. Selle näite jaoks tegin ma seda 8 korda. Seega mine kiirklahviga ⇆ Tab muutmisrežiimi} vajuta W → Subdivide multi (tükelda mitmeks) ja pane selle väärtuseks 8.

Nüüd teeme sellest riide, minnes objektikonteksti (Object context) (F7) → Physics (füüsika) alamkonteksti. Keri alla, kuni näed riide (Cloth) paneeli, ja vajuta nuppu Cloth (riie). Ilmub palju seadeid, millest enamikku me praegu ignoreerime.

See on kõik, mis on vaja teha, et seada riie valmis animeerimiseks, aga kui vajutad nüüd kiirklahvi AltA, siis su suurepärane riie lihtsalt langeb väga ebasuurepäraselt. Seda me käsitleme järgmises kahes lõigus kinnitamisest ja põrkumisest.

Simulatsiooni kasutamine võre vormimiseks/voolimiseks

Sa võid igal hetkel rakendada (Apply) riide (Cloth) töötleja, et külmutada võre kuju sellel kaadril. Seejärel võid riide taas sisse lülitada, seades alguse ja lõpu kaadrid, millest alates simulatsiooni edasi jooksutada.

Teine näide ajastamisest on lipp. Määra lipp lihtsa ruudustikuna ja kinnita serv lipuvarda külge. Simuleeri umbes 50 kaadrit ja lipp langeb rippuvasse “puhkeasendisse”. Rakenda riidetöötleja (Cloth modifier). Kui tahad, et lipp lehviks või muudmoodi liiguks, lülita see taas sisse nende kaadrite jaoks, mil ta on kaamera vaateväljas.

Riide silumine

Kui oled järginud samm-sammult õpetusi eelmises osas, siis on su riie arvatavasti natuke nurgeline. Et muuta seda kenaks ja siledaks nagu pildil, on sul vaja rakendada silumistöötleja (Smooth) ja/või pinnatükeldaja (Subsurf) muutmiskonteksti töötlejate (Modifiers) paneelil (F9). Seejärel leia samas kontekstis paneel Links and Materials (seosed ja materjalid) (sama, mida sa kasutasid tipugruppidel) ja vajuta nuppu Set Smooth (muuda siledaks).

Kui sa nüüd vajutad kiirklahvi AltA, hakkab asi päris ilus välja nägema, kas pole?

Riie skeletil

Riie, mida moonutab skelett ja lisaks veel põrkuv objekt: Regressioonitesti .blend-fail.

Riide kasutamine pehmete kehadena

Riide kasutamine pehmete kehadena

Riiet saab kasutada ka pehmete kehade simuleerimiseks. See ei ole küll riide põhieesmärk, kuid töötab sellegipoolest. Näidispilt kasutab standardset kummimaterjali (Rubber) ilma seadeid muutmata: lihtsalt AltA.

Blenderi fail näidispildi jaoks: Riide kasutamine pehmete kehadena.

Riie ja tuul

Lipp, millele mõjub tuul

Regressioonitesti .blend-fail riide jaoks koos tuulega ja iseenesega põrgetega (samuti .blend fail ülaloleva pildi jaoks): Riidest lipp, millele mõjub tuul ja põrked iseenesega.