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.

Vedeliku simulatsioon

Mode: Objektirežiim (Object Mode) / muutmisrežiim (Edit Mode) (võred)

Panel: Füüsika (physics) allkontekst → Fluid (vedelik)

Hotkey: F7

Kirjeldus

Modelleerides Blenderis stseeni, saab määrata osad objektid võtma osa vedeliku simulatsioonist, näiteks kas siis vedeliku või takistusena. Teise objekti piirdkasti kasutatakse, et määrata risttahuka kujuline ala, milles simulatsioon toimub (nn “simulatsiooni toimumispiirkond”). Toimumispiirkonda määravale objektile saab seada üldised simulatsiooni parameetrid (nagu viskoossus ja gravitatsioon).

Kasutades eeltöötluse (BAKE) nuppu, eksporditakse geomeetria ja seaded simulaatorisse ja teostatakse vedeliku simulatsioon, genereerides vedelikupinna võre koos eelvaatega iga animatsiooni kaadri jaoks, ja salvestatakse need kõvakettale. Siis laaditakse hetkel käsiloevale kaadrile vastav vedeliku pind kettalt ja kuvatakse või renderdatakse.

Puruneva tammi näide


Protsess

Üldiselt järgid sa järgmisi samme:

  1. Modelleeri stseen (objektid, materjalid, valgus, kaamera).
  2. Määra see osa stseenist, kus hakkab vedelik voolama (toimimispiirkond).
  3. Täpsusta teiste vedelikuga seotud objektide funktsioonid (sissepääs, väljapääs, takistus jne).
  4. Loo vedeliku allikas (allikad) ja täpsusta selle (nende) materjal, viskoossus ja algkiirus.
  5. Eeltöötle esialgne simulatsioon.
  6. Tee vajalikud muudatused ja salvesta.
  7. Eeltöötle lõplik simulatsioon.

Kui eeltöötled simulatsiooni, siis muutub versioonitunnus kasutajaeelistuste (User Preferences) akna päises olekuribaks, mis näitab eeltöötluse edenemist. Eeltöötlus nõuab palju arvutusvõimsust (ja aega). Seda ei ole mõtet jälgida, sest nagu öeldakse: vesi, mida jälgid, ei hakka keema, ja kook, mida vaatad, ei küpse; ja vedeliku eeltöötluse vaatamine on nagu jälgida muru kasvamist. Eeltöötlust on parim teha üleöö.

Stseenidevahelise ülekandmise ja linkimise võimalikkuse tõttu saab olla ühe .blend-faili kohta ainult üks toimispiirkond.

Valikud

Blender 2.5 vedelikusimulatsiooni seaded, valitud on Domain (toimimispiirkond)
Domain (toimimispiirkond)/Fluid (vedelik)/Obstacle (takistus)/Inflow (sissevool)/Outflow (väljavool)/Particle (osake)/Control (juhtimine)
Nendest nuppudest ühe valimine määrab, mismoodi valitud objekti simulatsioonis kasutatakse. Igaüks nendest nuppudest määrab erineva funktsiooni ja vastavalt ka erinevad edasised valikud.
Võre renderdamine
Kui võrel on töötlejad, kasutatakse võre eksportimisel vedelikuarvutajasse renderdamisseadeid. Olenevalt seadetest võib arvutusaeg ja mälu kasutus plahvatuslikult kasvada. Näiteks kasutades liikuvat võret koos pinnatükeldajaga (Subsurf) takistusena, võib pinnatükelduse väljalülitamine või tasemete vähendamine aidata vähendada simulatsiooniaega. Kui seaded/liigendus on sellised nagu vaja, võid hiljem alati suurendada seadeid, et saavutada realistlikum tulemus.


Toimimispiirkond (Domain)

10 cm kruus lahutusega 70
10 cm kruus lahutusega 200

Objekti piirdkast määrab simulatsiooni piirid. Kõik vedelikobjektid peavad olema toimimispiirkonna sees. Sellest väljaspool olevaid vedelikobjekte ei eeltöödelda. Väljapoole toimimispiirkonda ei saa sattuda mitte ühtegi tilka, nähtamatud jõuväljad hoiaks nagu vedelikku 3D-ruumis. Stseenis saab olla ainult üks vedeliku simulatsiooni toimimispiirkonna objekt.

Ei ole vahet, mis kujuga on see objekt, sest seda koheldakse alati kui kasti (piirdkasti küljed võivad olla erineva pikkusega). Seega ei ole harilikult vaja kasutada muud keha kui kast. Kui vajad vedeliku voolu mõjutamiseks takistusi või teisi piire peale kasti, siis pead lisama täiendavaid takistusobjekte toimimispiirkonna piiride sisse.

See objekt "asendatakse" simulatsiooni käigus vedelikuga.

Lahutus (Resolution)

Detailsus, millega tegelik vedeliku simulatsioon läbi viiakse. See on simulatsiooni juures ilmselt kõige olulisem seade, kuna määrab vedeliku detailsuse, mälu ja ketta kasutuse ning samuti ka arvutusaja.

Pane tähele, et vajamineva mälu hulk kasvab kiiresti: lahutus 32 vajab umbes 4 MB, 64 umbes 30 MB, seevastu 128 vajab juba rohkem kui 230 MB. Olenevalt sellest, kui palju mälu sul on, veendu, et resolutsioon on piisavalt madal, et hoida Blenderit hangumast või kokku jooksmast. Pea meeles, et mitmetel operatsioonisüsteemidel on piiratud see, kui palju mälu ühele "protsessile", nagu näiteks Blenderile eraldatakse, isegi kui "masinal" on mälu sellest rohkem. Tee kindlaks, mis on sinu arvuti piirangud.

Toimimispiirkond maailmas

Veendu, et seadistad lahutuse parajaks toimimispiirkonna suuruse jaoks reaalses maailmas (Toimimispiirkonna tegelik füüsiline suurus meetrites määratakse vedeliku kastikese all asuval väljal Domain World (Toimimispiirkond maailmas)). Kui toimimispiirkond ei ole kuubikujuline, määratakse lahutus pikima külje järgi. Teiste külgede lahutust vähendatakse vastavalt nende pikkusele (seetõttu vajab sama resolutsiooniga mittekuubikujuline toimimispiirkond vähem mälu kui kuubikujuline).

Eelvaate lahutus (Preview Res)

See on lahutus, millega genereeritakse pinnavõrede eelvaade. Seega ei mõjuta see tegelikku simulatsiooni. Isegi kui eelvaates “ei ole midagi näha”, võib seal olla õhuke vedelikupind, mida eelvaates ei ole võimalik näidata.

Alguse ja lõpu aeg

Start (algus) on simulatsiooni algusaeg (sekundites). See valik paneb simulatsiooni arvutamise Blenderis algama tegeliku simulatsiooni algusest hiljem. Toimimispiirkonna deformatsioone ja vedeliku voolamist, mis eelnevad algusajale, ei salvestata.

Näiteks kui tahad, et vedelik ilmuks alles siis, kui ta on enne tegelikku esimest kaadrit juba 4 sekundit voolanud, peaksid sisestama siia 4.0.

End (lõpp) on simulatsiooni lõpu aeg (sekundites).

Alguse ja lõpu aegadel ei ole mingit tegemist sellega, kui mitu kaadrit eeltöödeldakse - need põhinevad füüsikalisel jõul ja vedeliku viskoossusel.

Eeltöötlus algab alati kaadris 1:
Vedeliku simulaator eirab seadet Sta seadet animatsioonipaneelil ja eeltöötlus algab alati kaadrist 1.
Kui soovid, et simulatsioon algaks hiljem kui kaader 1, pead sa muutma vedelikobjektid oma toimispiirkonnas mitteaktiivseks kuni kaadrini, millest alates sa tahad simulatsiooni alustada. Täpsema informatsiooni saamiseks loe altpoolt .
Eeltöötlus lõpeb alati lõpukaadril End, mis on määratud animatsioonipaneelil (Anim):
Kui su kaadrisagedus on 25 kaadrit sekundis ja lõpu aeg on 4.0 sekundit, siis sa peaksid (kui alguse aeg on 0) seadma animatsiooni lõppema kaadril 4.0 × 25 = 100.
“Alguse aeg” ja “lõpu aeg” on väljendatud "simulatsiooniajas" (sekundites):
Kui sead oma algusajaks (Start) 3.0 ja lõpuajaks (End) 4.0, siis simuleerid sa vedeliku liikumist 1 sekundi jooksul. See üks sekund jaotatakse nii mitme kaadri vahel, nagu sa seadsid animatsioonipaneeli väljal End (lõpp).
See tähendab, et kui sa näiteks oled Blenderi seadnud tegema 250 kaadrit kaadrisagedusel 25 kaadrit sekundis (Scene (stseenikontekstis)  → Render alamkontekstis  → paneelid Anim (animatsioon) ja Output (väljund)), paistab nagu oleks vedelik simulatsiooni alguseks juba kolm sekundit voolanud, kuid liigub edasi aeglustatult (üks kümnendik normaalsest kiirusest), sest kümnes sekundis videos on üks sekund simulatsiooni. Et seda parandada, muuda lõpuaeg 3.0 + 10.0 = 13.0, et see vastaks 250 kaadrile sagedusel 25 kaadrit sekundis. Nüüd on simulatsioon reaalajas, sest sa seadsid 10 sekundit vedeliku liikumise simulatsiooni 10 sekundile animatsioonile. Need seaded võimaldavad sul juhtida simulatsiooni “kiirust”.


Kuvamise kvaliteet (Disp.-Qual)

Kuidas kuvatakse eeltöödeldud simulatsioon Blenderi 3D-vaates (rippmenüü pealkirjaga Viewport Display (esitus vaates)) ja renderdamisel (rippmenüü pealkirjaga Render Display (esitus renderdamisel)):

  • Geometry (geomeetria);: kasuta originaalgeomeetriat (enne simulatsiooni).
  • Preview (eelvaade);: kasuta eelvaate võret.
  • Final (lõplik);: Kasuta kõrglahutusega võret.


Kui eeltöötlemisandmeid ei leita, kuvatakse vaikimisi originaalvõre.

Pärast toimimispiirkonna eeltöötlemist kuvatakse see (harilikult) Blenderi aknas eelvaate võrena. Et näha toimimispiirkonna originaalsuurust ja ulatust, vali vasakust rippmenüüst Geometry (geomeetria).

Eeltöötluse kataloog (Bake Directory)

VAJALIK! Kataloog ja failide eesliide, millega eeltöötludeldud pinnavõred salvestatakse. See on sarnane animatsiooni väljundseadetele, ainult faili valimine on natuke erinev: kui valid mõne eelnevalt loodud pindvõre (näiteks “untitled_OBcube_fluidsurface_final_0132.bobj.gz”), siis eesliiteks seatakse sel juhul automaatselt (“untitled_OBcube_”). Nii saab simulatsiooni teha erinevate seadetega ja see lubab kiireid muudatusi erinevate pinnaandmete seadete vahel.

Vaikeväärtus on “/tmp/”, mida sa ilmselt "ei" taha. Vali sobiv kataloogi nimi ja faili eesliide, nii et need failid salvestataks sobivasse kohta ja oleks nimetatud nii, et kaks erinevat vedeliku simulatsiooni ei kirjutaks üksteist üle (kui kavatsed määrata ainult kataloogi nime, näiteks ilma failinime eesliiteta, ära unusta lisada “/”).

Nupp “Bake” (eeltöötle)

Teostab tegeliku vedeliku simulatsiooni. Blender jätkab normaalselt tööd, kui välja arvata see, et akna ülaääres, renderdamise rippmenüü kõrval näidatakse olekuriba. Vajutades kiirklahvi Esc või "x" olekuriba kõrval, saad simulatsiooni katkestada. Hiljem on iga kaadri jaoks valitud kataloogis kaks “.bobj.gz” faili (üks lõpliku (Final) kvaliteedi, üks eelvaate (Preview) kvaliteedi jaoks), pluss üks “.bvel.gz” (lõpliku (Final) kvaliteedi) fail.

Märkused…

Eeltöödeldud andmete vabastamine
“Bake” kataloogi sisu kustutamine on destruktiivne viis seda teha. Ole ettevaatlik, kui rohkem kui üks simulatsioon kasutab sama eeltöötluse kataloogi (tee kindlaks, et neil on erinevad failinimed, muidu hakkavad nad üksteist üle kirjutama)!
Eeltöötluste taaskasutamine
Eelnevalt salvestatud (eeltöödeldud) kataloogi ja failinime maski käsitsi sisestamine (või otsimine) vahetab vedeliku voolu ja võre moonutused nende vastu, mis olid selle vana eeltöötluse ajal. Seega saad eeltöödeldud voogusid kasutada lihtsalt sellel väljal neile osutades.
Eeltöödeldud toimimispiirkonna valimine
Pärast toimimispiirkonna eeltöötlemist muutub see vedeliku võreks. Et toimimispiirkonda uuesti valida, nii et saaksid seda pärast tehtud muudatusi jälle eeltöödelda, mine mõnele kaadrile ja selekteeri (RMB Template-RMB.png) vedeliku võre. Siis võid klõpsata uuesti nuppu BAKE (eeltöötle), et arvutada uuesti vedeliku voolamine selles toimimispiirkonas.



Teised toimimispiirkonna valikud

Domain World (toimimispiirkond maailmas)
Viscosity (viskoossus)
Vedeliku “paksus” - tegelikult jõud, mida on vaja, et kindla pindalaga objekti kindla kiirusega sellest läbi liigutada. Võid sisestada väärtuse käsitsi või kasutada mõnda rippmenüüs olevatest algseadistustest (nagu mesi, õli või vesi).
Käsitsi sisestamisel pane tähele, et reaalses maailmas mõõdetakse viskoossust (nn dünaamiline viskoossus) paskal-sekundis (Pa.s), või Poise'i ühikutes (P, võrdne 0.1 Pa.s, hääldatakse “puaz”, nimetatud prantslase Jean-Louis Poiseuille järgi, kes avastas “viskoossete vedelike laminaarse voolamise” seadused), ja harilikult sentipoise'ides (cP, võrdne 0.001 Pa.s, “sentipuaz”). Teisalt kasutab Blender aga kinemaatilist viskoossust (mis on dünaamiline viskoossus Pa.s, jagatud tihedusega kg.m-3, mille ühik on m2.s-1). Allpool olev tabel annab mõned näited vedelikest koos dünaamilise ja kinemaatilise viskoossusega.
Käsitsi sisestatud väärtused määratakse ujukomaarvu ja astendajaga. Need ujukomade ja astendajate jaoks mõeldud väljad (teaduslik tähistus) lihtsustavad väga väikeste või väga suurte numbrite sisestamist. Vee viskoossus toatemperatuuril on 1.002 cP või 0.001002 Pa.s; vee tihedus on umbes 1000 kg.m-3, mis annab kinemaatiliseks viskoossuseks 0.000001002 m2.s-1 - seega sisestus peaks olema 1.002 korda 10 astmel miinus kuus (1.002×10-6 teaduslikus tähistuses). Tuline klaas ja sularaud on vedelikud, kuid väga paksud; nende jaoks peaksid sa kineetilise viskoossusena sisestama midagi sellist nagu 1.0×100 (= 1.0) (mis vastab umbes väärtusele 1.0×106 cP).
Pane tähele, et simulaator ei sobi mittevedelike ehk “mittevoolavate” materjalide jaoks. Seades viskoossuse väga suurtele väärtustele, saame jäiga keha käitumise, kuid see võib põhjustada ebastabiilsust.
Viskoossus varieerub
Blenderi vaikeväärtused on tüüpilised seda sorti vedelikele ja paistavad animeerituna “õiged”. Ent mõnede vedelike tegelik viskoossus, eriti suhkrurikaste vedelike, näiteks šokolaadisiirupi ja mee viskoossus sõltub suuresti temperatuurist ja kontsentratsioonist. Õli viskoossus varieerub SAE märgistuse järgi. Klaas toatemperatuuril on põhiliselt tahke, kuid 1500 kraadi juures voolab (peaaegu) nagu vesi.


Blenderi viskoossuse ühikute teisendus
Vedelik dünaamiline viskoossus (cP) kinemaatiline viskoossus (Blender, m2.s-1)
Vesi (20 °C) 1.002×100 (1.002) 1.002×10-6 (0.000001002)
Õli SAE 50 5.0×102 (500) 5.0×10-5 (0.00005)
Mesi (20 °C) 1.0×104 (10 000) 2.0×10-3 (0.002)
Šokolaadisiirup 3.0×104 (30 000) 3.0×10-3 (0.003)
Ketšup 1.0×105 (100 000) 1.0×10-1 (0.1)
Sulaklaas 1.0×1015 1.0×100 (1.0)
Realworld-size (suurus reaalses maailmas)
Toimimispiirkonna objekti suurus reaalses maailmas meetrites. Kui tahad luua tassi kohvi, võiks see olla 10 cm (0.1 meetrit), samas ujumisbassein võiks olla 10 m. Suurus seatakse siin toimimispiirkonna piirdkasti pikima külje järgi.
Gridlevel (ruudustiku tase)
Kui palju adaptiivseid ruudustiku tasemeid simulatsioonis kasutatakse - seades selle väärtuseks -1, on valik automaatne.
Compressibility (kokkusurutavus)
Kui sul probleeme suurte seisva vedeliku kogustega, millel on kõrge lahutus, siis võib aidata, kui seda numbrit vähendada (pane tähele, et see suurendab arvutusaega).
Teised vedeliku toimimispiirkonna valikud
Domain Boundary (toimimispiirkonna piirid)
Selles kastikeses on kõik libisemise ja pinna valikud.
Boundaries (piirid)
Boundary type (piiri tüüp)
See on sama nagu takistusobjektidel allpool, põhimõtteliselt seab see toimimispiirkonna kuus külge kas kleepuvaks, mittekleepuvaks või kusagile vahepeale (seda seatakse välja PartSlip Amount (osakeste libisemise määr) väärtusega).
Surface Smoothing (pinnasilumine)
Vedeliku pinnale rakendatava silumise määr. 1.0 on standardne, 0 on väljalülitatud, suuremad väärtused suurendavad silumist.
Subdivisions (tükeldustasemeid)
Lubab luua kõrgeresolutsioonilisi pindvõresid otse simulatsiooni käigus (vastupidiselt pinnatükeldamise töötlejale, mis teeb seda hiljem). Väärtus 1 tähendab, et pinnatükeldamist ei ole ja iga suurendamine annab juurde ühe pinnatükeldamise taseme iga vedeliku vokseli kohta. Tulemuseks saadav võre kasvab kiiresti mahukaks ja vajab palju kettaruumi. Ole ettevaatlik selle kombineerimisel suurte silumisväärtustega - see võib võre pinna genereerimisel viia pikkade arvutusaegadeni.
Generate SpeedVecs/Disable (Loo kiirusvektorid/lülita välja)
Kui seda nuppu klõpsata, siis kiirusvektoreid ei ekspordita. Seega vaikimisi luuakse kiirusvektorid ja salvestatakse kettale. Seda saab kasutada komposiitsõlmedega pildipõhise liikumishägu arvutamisel.
Domain Particles (toimimispiirkonna osakesed)
Siin saad vedeliku simulatsioonile lisada osakesi, et visuaalset efekti parandada.
Tracer Particles (jälgivad osakesed)
Simulatsiooni alguses vedelikku lisatavate järgivate osakeste arv. Et neid kuvada, loo teine objekt vedeliku tüübiga Particle (osake), mida on selgitatud allpool ja mis kasutab sama eeltöötluse kataloogi kui toimimispiirkond.
Generate Particles (loo osakesed)
Määrab, kui palju vedeliku osakesi luua (0=väljas, 1=tavaline, >1=rohkem). Et seda kasutada, peab pinnatükeldamise väärtus olema vähemalt 2.
Siin on näha osakeste efekti - vasakpoolne pilt on simuleeritud ilma ja parempoolne koos osakeste ning pinnatükeldusega.


Vedelik

Kõiki selle objekti osasid, mis asuvad seespool toimimispiirkonna piirdkasti, kasutatakse simulatsioonis vedelikuna. Kui lisad toimimispiirkonnale rohkem kui ühe vedeliku, siis hetkel ei peaks nad lõikuma. Samuti veendu, et pinnanormaalid osutaksid väljapoole. Erinevalt toimimispiirkonna objektidele, kasutatakse vedelikuobjektide puhul tegelikku võre geomeetriat.

Volume init (mahu algseadistamise tüüp)
  • Volume Määrab objekti sisemise osa vedelikuna. See töötab ainult suletud objektidega.
  • Shell (kest) määrab vedelikuna ainult õhukese kihi võre kõikidel külgedel. See töötab ka lahtistel võredel.
  • Both (mõlemad) kombineerib mahu ja kesta - sel juhul peaks võre olema samuti suletud. Vaata allpool asuvat pilti.
Erinevate mahu algseadistamise tüüpide näide: maht (Volume), kest (Shell) ja mõlemad (Both). Pane tähele, et kest on tavaliselt natuke suurem kui maht.
Initial velocity (algkiirus)
Vedeliku kiirus simulatsiooni alguses, meetrites sekundi kohta.
Blender3D FreeTip.gif
Pinnanormaalide suunal on suur vahe!
Blender kasutab pinnanormaalide suunda, et otsustada, mis on vedelikuobjekti “sees” ja mis on “väljas”. Sa tahad, et kõik normaalid osutaksid väljapoole (vajuta muutmisrežiimis kiirklahvi CtrlN või vajuta Space ja vali Edit → Normals → Calculate Outside (muuda->normaalid->arvuta väljapoole)). Kui normaalid osutavad vales suunas, saad sa “hiiglasliku veeuputuse”, sest Blender arvab, et objekti maht on väljaspool selle võret! See toimub sõltumata mahu tüübi (Volume init) tüübi seadetest.


Takistus

Seda objekti kasutatakse simulatsioonis takistusena. Vedelikobjekt ja takistus objekt ei tohiks hetkel üksteist läbistada. Nagu vedelikuobjektide puhul, kasutatakse ka takistuste puhul tegelikku võre geomeetriat. Mahuga objektide puhul veendu, et takistuse normaalid oleksid arvutatud õigesti ja näitaksid õiges suunas (kasuta muutmisrežiimis võretööriistade (Mesh Tools) paneelil muutmiskontekstis Editing nuppu Flip Normal (pööra normaalid ümber) (F9]), eriti kui kasutad pööramisvahendiga tehtud mahutit. Kui võre ei ole animeeritud, on enne eeltöötlust hea mõte rakendada pinnatükeldajat (SubSurf).

Volume init (mahu algväärtustamise tüüp)
Sama mis ülalkirjeldatud vedelikuobjekti puhul.
Boundary type (piiri tüüp) (vaata pilti allpool)
Määrab takistuse pinna kleepuvuse, nimetatakse ka “pinna adhesiooniks”. Reaalses maailmas sõltub pinna adhesioon vedelikust ja pinna teralisusest või hõõrdumise/adhesiooni/imavuse väärtustest.
  • Noslip (mittelibisev) põhjustab vedeliku kleepumise takistuse külge (nullkiirus).
  • Free (vaba libisemine) lubab liikumist piki takistuse pinda (ainult kiirus normaali suunas on null).
  • Part (osaline libisemine) segab mõlemad tüübid, kus väärtus 0 on peamiselt mittelibisev ja 1 vabaltlibisev.
Pane tähele, et kui võre liigub, koheldakse seda automaatselt mittelibisevana.
Näide erinevate piiri tüüpide mõjust, kui tilk kukub kaldpinnale. Vasakult paremale: mittelibisev, osaline libisemine 0.3, osaline libisemine 0.7 ja vaba libisemine.
Animated Mesh/Export (animeeritud võre/eksport)
Klõpsa seda nuppu, kui võre on animeeritud (näiteks moonutatud skeleti, võtmevormi või sõrestiku poolt). Pane tähele, et see on märgatavalt aeglasem ja ei ole vajalik, kui võre on animeeritud ainult positsiooni või pöörlemise IPOdega (st ainult objekti teisendustega).
PartSlip Amount (osalise libisemise määr)
Eelpool kirjeldatud mittelibisemise ja vabaltlibisemise segamise hulk.
Blender3D FreeTip.gif
Blender 2.5 toetab nüüd liikuvaid takistusi!
Kui takistus liigub, kohtleb Blender seda automaatselt mittelibisevana (kleepuvana). Kui tahad, et vedelik pritsiks liikuvast objektist eemale, pane sinna, kus vedelik liikuva objektiga kokku puutuks, läbipaistev tasapind, mis on täpselt sama kujuga kui objekt, kuid veidike objektist ettepoole, vedeliku ja objekti vahele. Kui objekt tuhiseb mööda ja vedelik pritsib, siis pritsimine puutub tegelikult vastu läbipaistvat pinda ja libiseb eemale ning objekt jätkab oma teed


Impact Factor (mõjufaktor)
Vedeliku mahu suurenemise/vähenemise korrigeerimine liikuva objektiga kokkupõrkel. Kui objekt ei liigu, ei ole sellel seadel mingit efekti. Kui ta aga liigub ja vedelik temaga kokku põrkab, siis negatiivne väärtus vähendab vedeliku mahtu toimimispiirkonnas ja positiivne suurendab seda. Vahemik on -2.0 kuni 10.0.


Sissevool

See objekt lisab simulatsioonile vedeliku (umbes nagu veekraan).

Volume init (mahu algväärtustamise tüüp)
Sama mis ülalkirjeldatud vedelikuobjekti puhul.
Inflow velocity (sissevoolu kiirus)
Kiirus, millega objekti sees vedelikku luuakse.
Local Coords/Enable (kohalik koordinaadistik/lülita sisse)
Kasuta sissevoolul kohalikke koordinaate. See on kasulik, kui sissevoolu objekt liigub või pöördub, sest siis sissevoolu juga järgib/kopeerib seda liikumist. Kui see on välja lülitatud, siis sissevoolu asukoht ja suund ei muutu.
Animated Mesh/Export (animeeritud võre/ekspordi)
Sama mis ülalkirjeldatud takistusobjekti puhul.


Väljavool

Vedelik, mis selle objekti piirkonda satub, kustutatakse (nagu äravool või must auk). Seda kasutatakse kombineerituna koos sissevooluga, et vältida toimimispiirkonna vedelikuga täitumist. Kui see on sisse lülitatud, näeb ta välja nagu tornaado (vesipüks) või tolmuimeja ja see osa, kust vesi kaob, järgib objekti, kui see ringi liigub.

Volume init (mahu algväärtustamise tüüp)
Sama mis ülalkirjeldatud vedelikuobjekti puhul.
Animated Mesh/Export (animeeritud võre/ekspordi)
Sama mis ülalkirjeldatud takistusobjekti puhul.


Osake

Seda tüüpi kasutatakse simulatsiooni käigus loodud osakeste kuvamiseks. Praegu toetatakse ainult osakesi, mis ujuvad koos vedelikuga. Pane tähele, et sellel objektil võib olla suvaline kuju, asukoht või tüüp: kui vajutada osakeste nuppu, luuakse osakeste süsteem koos vedeliku simulatsooni osakestega õigesse kohta. Kui algset objekti liigutada, võib osutuda vajalikuks kustutada osakeste süsteem, välja lülitada vedelikusimulatsiooni osakesed ja siis need uuesti sisse lülitada. Teised osakeste jõud või seaded ei mõjuta vedelikusimulatsiooni osakesi.

Particle type (osakeste tüüp)
Drops (tilgad)
Vedeliku pinna pritsimisel tekivad tilgad, mis on laiali külvatud nagu madala pindpinevusega puhta vee puhul.
Floats (pritsmed)
Vedeliku pindpinevus on kõrgem ja vedelik raskem, nagu külm merevesi ja supp. Eraldunud osad on ebakorrapärasemad ja langevad pinnale tagasi kiiremini kui tilgad (Drops), nagu suure pindpinevuse puhul.
Tracer (jälgija)
Piisad järgivad seda kohta, kus vee pind on olnud, nagu udu, mis ripub eelmiste vedelike tasemete kohal. Kasuta seda, et näha, kus vedeliku tase on olnud.
Size Influence (mõju suurusele)
Osakesed võivad olla erineva suurusega, kui selle seade väärtus on 0, siis on nad kõik sama suurusega.
Alpha Influence (mõju katvusele)
Kui selle seade väärtus on >0, muudetakse osakeste katvuse (alfa) väärtust vastavalt nende suurusele.
Path (eeltöötluse kataloog)
Simulatsiooni tulemus, kust laaditakse osakesed. Siin peaks harilikult olema sama väärtus, mis vedeliku toimimispiirkonna objektil (näiteks kopeeri see kiirklahvidega CtrlC, CtrlV).


Juhtimine

Vedeliku juhtimise seaded.
Quality (kvaliteet)
Kõrgema kvaliteedi tulemusena luuakse juhtobjekti jaoks rohkem juhtosakesi.
Reverse Frames (tagurpidi kaadrid)
Juhtosakeste liikumine muudetakse vastupidiseks.
Time (aeg)
Saad määrata alguse ja lõpu aja, mille jooksul vedeliku juhtobjekt on aktiivne.
Attraction force (külgetõmbejõud)
Külgetõmbejõud määrab, millist jõudu vedeliku juhtobjekt emiteerib. Positiivne jõud tõmbab vedelikku ligi, negatiivne väldib.
Velocity force (kiiruse jõud)
Kui vedeliku juhtobjekt liigub, siis tema kiirus avaldab ka vedelikule jõudu.

Vaata täpsemat informatsiooni nendest väljalaskemärkustest.

Veel üks näide kukkuva tilga animatsioonist, mis on simuleeritud Blenderi ja renderdatud Yafray abil.


Vedeliku omaduste muutuste animeerimine

Vedeliku toimimispiirkonna objekti jaoks on olemas uut tüüpi IPO-kõver, FluidSim (vedelikusimulatsioon). Erinevalt teistest animeeritavatest väärtustest Blenderis, ei saa FluidSim IPOle võtmekaadrit määrata ainult kiirklahvi I abil, vaid sa pead IPO aknas väärtused käsitsi sisestama. Et võtmekaadrit määrata, pead sa IPO aknas valima omaduse, mida soovid animeerida, ja klõpsama CtrlLMB Template-LMB.png, et seada võtmekaader IPO aknas soovitud kohta.

Blender3D FreeTip.gif
Sisesta omadused
Pane tähele, et ei pea olema täpne, kuhu sa klõpsad; soovitame pärast kontrollpunkti seadmist avada teisenduse omaduste paneeli Transform Properties (N), ümardada X-väärtus täisarvulise kaadrinumbrini ja siis määrata Y-väärtus, nii nagu soovid.


Vedeliku toimimispiirkonnal on mitu kanalit, mis juhivad vedelikku ajas:

Fac-Visc (viskoossuse koefitsient)
Vedeliku viskoossuse koefitsiendi korrutav parameeter. See tuleb seada enne eeltöötlust ja muudab aja jooksul vedeliku viskoossust, nii saad näiteks muuta vee õliks!
Fac-Tim (ajakoefitsent)
Muudab simulatsiooni kiirust; nii nagu kiiruse seade videoredaktoris suurendab või vähendab video kiirust, suurendab või vähendab see kõver vedeliku liikumise kiirust kaadrite järjestuses. Kui Fac-Tim väärtus on väiksem või võrdne nulliga, siis aeg (ja vedelik) seisab paigal; vedelik tardub. Vahemikus 0.0 kuni 1.0 vahel voolab vedelik aeglasemalt ja paistab tihedam. 1.0 on normaalne vedeliku liikumine ja väärtused, mis on suuremad kui 1.0, panevad vedeliku voolama kiiremini ja võimalik, et paistma õhemana.
GravX/GravY/GravZ (gravitatsiooni X/Y/Z)

XYZ-vektor gravitatsiooni muutusteks ehk vedeliku enda inerts (kujutle kohvijoomist ringrajaauto roolis, espresso lonksamist kiirteel või taimede kastmist kosmosesüstikus). Tehes muudatusi nendes kõverates, paned sa vedeliku väliste jõudude toimel loksuma.

The Fluid (vedelik), Obstacle (takistus), Inflow (sissevool), Outflow (väljavool) ja Particle (osake) tüüpi objektid võivad kasutada järgmisi kanaleid:

VelX/VelY/VelZ (kiirus X/Y/Z)
Vedeliku purskumist aiavoolikust saab simuleeruda nende kõverate abil, imiteerimaks muutusi surves ja/või suunas. Seda saab näiteks kasutada ka tuule mõju simuleerimiseks veejoale.
Active (aktiivne)
Kui aktiivsus läheb väärtuselt 0.0 millekski suuremaks kui 0 (nagu näiteks 0.1 ja 1.0 vahel), hakkab vastav objekt (määratud kui Inflow (sissevool) või Outflow (väljavool) jne) jälle toimima. Langedes alla 0.0-ni ja tõustes siis mingil hetkel uuesti üles, taastub tema mõju ja sellega kaasnev vedeliku simulatsioon. Kasuta seda tilkumise või mõne muu katkendliku sissevoolu korral. See aktiivne olek töötab ka objektidel, mis on määratud kui Outflow (väljavool) ja Obstacle (takistus) - nii saad sa (näiteks) simuleerida äravoolule korgi ette panemist.

Samuti saad määrata juhtobjektide Control jõu seadeid:

AttrForceStr, AttrForceRa
Need kõverad juhivad külgetõmbejõu seadete väärtusi.
VelForceStr, VelForceRa
Need kõverad juhivad kiiruse jõu seadete väärtusi.


Tehnilised detailid

“My cup runneth over”, loodud Blenderi ja Yafray abil.

Vedelikusimulatsioon võtab palju aega - mida paremini sa selle tööd mõistad, seda lihtsam on sul hinnata, kui realistlik tulemus saab olema. Algoritm, mida Blender vedeliku simulatsioonil kasutab, on Boltzmanni meetod võrel (LBM); teised vedeliku algoritmid on Navier-Stokesi (NS) lahendajad ja Silutud osakeste hüdrodünaamika (SPH) meetodid. LBM on kuskil nende kahe vahepeal.

Üldiselt on praegustel arvutitel väga raske simuleerida isegi 1-meetrist veetünni. Et simuleerida lainet murdmas läbi linna, on sul ilmselt vaja üht kõige kallimatest superarvutitest, mis saada on, ja ka see ei pruugi ikkagi töötada õigesti, ükskõik millist neist kolmest algoritmist sa kasutad. Seetõttu pead sa sellise efekti saavutamiseks, mida sa tegelikult soovid, võtma abiks strateegia, mis sarnaneb "analoogfilmides" palju aastaid kasutatud meetodiga: “võltsi seda!

Hea vedelikusimulatsioon on väga tähtis, kuid mitte ainuke osa, et saavutada rahuldav pilt. Lase Blenderil teha arvutamise must töö vedeliku baassimulatsiooni arvutamisel, seejärel muuda see tõetruuks, lisades valitud detaile, mis vastavad vaataja ootusele “reaalsele veekeerise osas, mille sa oled loonud”.

Näiteks saad sa teeselda, et sul on linnas hiidlaine, ehitades väiksema mudeli, modelleerides väikese laine linna mudelisse väga kõrge lahutusega ja loota, et keegi ei märka erinevust 100 m ja 1 m laine vahel (ei märkagi). Lisa lainefrondile tekstuur müra ja pilvedega, mis mõjutavad värvust. Lisa rohkesti suitsu (udu) emiteerijaid erinevatele pindadele, mida laine tabab, ajastades need emiteerima kokkupõrke hetkel kokkupõrke ja pinna suunas. Animeeri autod ja prügi (ja uppuvad inimesed…) lainefrondile hulpima ja ujuma, kasutades eeltöödeldud võret. Kasuta laine harjal rida udu emiteerijaid, et simuleerida veeudu, mis laine harjalt õhku paiskub. Mõtle täpselt järele, kuhu sa tahad paigutada kaamera, kas kasutada suumobjektiivi või lainurka ja nii edasi (kas vaataja “vaatab vaestele näitlejatele ülalt alla” või “upub koos nendega”?). Sedasorti tähelepanu muudele detailidele peale vedelikusimulatsioni enda teebki võttest selle, mis ta olema peab.

Blenderi LBM-i lahendajale teevad arvutamise raskemaks järgmised asjad:

  • Suured toimimispiirkonnad.
  • Pikad kestused.
  • Madalad viskoossused.
  • Suured kiirused.

Vee viskoossus on niigi madal ja eriti väikse lahutuse korral ei tabata vee turbulentsi päris õigesti. Kui vaatad lähemalt, siis enamik vedelikusimulatsioone ei paista praegu väga reaalse vee moodi. Üldiselt, ära tugine liiga palju füüsilistele seadetele (nagu toimimispiirkonna füüsiline suurus või animatsiooni pikkus sekundites). Parem ürita saavutada üldine meeleolu madala lahutusega ja siis suurenda seda nii palju kui võimalik või soovitud.

Vihjed

  • Ära ehmata, sa saad pärast simulatsiooni terve portsu võre (.bobj.gz) faile. Üks komplekt eelvaate ja teine lõpliku renderduse jaoks. Igas komplektis on üks .gz fail iga animatsiooni kaadri jaoks. Iga fail sisaldab simulatsiooni tulemust - seega sa vajad neid.
  • Praegusel hetkel ei kustutata neid faile automaatselt, seega on hea mõte luua simulatsiooni tulemuste säilitamiseks spetsiaalne kataloog. Vedelikusimulatsiooni tegemine on nagu nupu ANIM klõpsamine - praegu pead sa vedeliku pinna võred ise kuhugi kataloogi panema. Kui soovid simulatsiooni kasutamise lõpetada, võid lihtsalt kustutada kõik *fluid*.bobj.gz failid.
  • Enne kõrge lahutusega simulatsiooni jooksutamist, mis võib võtta tunde, kontrolli üldist ajastust, jooksutades esmalt madala resolutsiooniga.
  • Vedelikuobjektid peavad olema täielikult toimimispiirkonna objekti piirdkasti sees. Kui ei ole, ei pruugi eeltöötlus õigesti toimida. Vedelikobjektid ja takistused võivad olla keeruka geomeetriaga võred. Väga õhukesed objektid ei pruugi simulatsioonis näha olla, kui valitud lahutus on liiga jäme (lahutuse suurendamine võib selle probleemi lahendada).
  • Pane tähele, et selliseid vedelikusimulatsiooni parameetreid nagu sissevoolu kiirus saab animeerida Fluidsim IPOdega (vaata ülaltpoolt).
  • Ära ürita teha keerukat stseeni ühe korraga. Blenderil on mitmekülgne komposiitor, mida saad kasutada mitme animatsiooni kombineerimisel.
Näiteks selleks, et teha animatsioon, mis näitab kahte erinevat vedeliku voolu, hoides samal ajal toimimispiirkonda väiksena, renderda üks .avi-fail, kasutades ühte voolu. Siis liiguta toimimispiirkonda ja renderda teine .avi-fail teise vooluga, kasutades alfakanalit (eraldi mustvalge .avi?). Siis komposiidi mõlemad .avi-failid, kasutades komposiitori liitmisfunktsiooni. Kolmas .avi on harilikult suitsu ja udu jaoks ning pannakse ka kõige peale. Lisa veel udule vihmakiht ja pritsmed ja sul on päris torm möllamas! Ja siis välgulöögid, ringilendlev praht, kõik eraldi animatsioonid, komposiiditud kokku tõeliselt suurepäraseks tulemuseks.
  • Kui sul on probleeme või miski ei tööta nii nagu vaja - anna mulle teada: saada .blend-fail ja probleemi kirjeldus nils at thuerey dot de. Vaata selle viki lehekülgi ja blenderartists-foorumit enne maili saatmist!


Piirangud ja lahendused

  • Ühe Blenderi faili kohta üks toimimispiirkond (versioon 2.42), aga sul võib olla mitu vedelikuobjekti.
Lahendus: tõsta eelvaateks toimimispiirkonda ringi, et ta hõlmaks iga vedelikuvoolu osa, lõpuks suurenda toimimispiirkonda nii, et ta sisaldaks kõiki vedelikuobjekte (kuid arvutusaeg tuleb pikem). Õigupoolest on see eelis, sest varieerides toimimispiirkonna suurust ja asukohta, saad sul valida, kui palju arvutusaega kasutatakse.
  • Kui süsteem paistab valesti minevat, tee kindlaks, et kõik normaalid on õiged (mine muutmisrežiimi, vali kõik ja arvuta normaalid uuesti).
  • Hetkel on probleeme nullgravitatsiooniga simulatsiooniga - vali lihtsalt väga väike gravitatsiooni suurus, et seda parandada.
  • Kui objekt on määratud kui maht (Volume), peab see olema suletud ja tal peab olema sisemine külg (tasapind ei toimi). Et kasutada tasapindu, lülita tüübiks kest (Shell) või suru tasapind välja.
  • Blender hangub pärast nupu BAKE klõpsamist. Vajutades Esc, hakkab ta mõne aja pärast uuesti tööle - see võib juhtuda, kui lahutus on liiga kõrge ja mälu vahetatakse kõvakettale, tehes kõik väga aeglaseks. Sel juhul peaks aitama lahutuse vähendamine.
  • Pärast nupu BAKE klõpsamist jookseb Blender kokku - see võib juhtuda, kui lahutus on tõeliselt kõrge ja hõivatud on rohkem kui 2 GB mälu, põhjustades Blenderi kokkujooksmise. Vähenda lahutust. Pea meeles, et mitmetel operatsioonisüsteemidel on piiratud see, kui palju mälu ühele "protsessile", nagu näiteks Blenderile eraldatakse, isegi kui "masinal" on mälu sellest rohkem. Nõme…
  • Võred peaksid olema suletud - seega, kui näiteks vedelikuobjekti mõned osad ei toimi simulatsioonis vedelikuna, siis kontrolli, kas kõik ühendatud tippude grupid on suletud võred. Kahjuks ei ole Suzanne'i (ahvi) võre Blenderis suletud võre (silmad on eraldi).
  • Kui vedeliku simulatsioon lõpetab veateatega (näiteks “init has failed”), tee kindlaks, et toimimispiirkonna objekti seaded on õiged, näiteks taastades algseaded.
  • Võib juhtuda, et sa ei saa eeltöödelda vedelikku, mis võtab mälu rohkem kui 1 GB, isegi mitte siis, kui Blender on kompileeritud LargeAddressAware'i seadetega - see võib olla praeguse vedelikumootori piirang.
  • Pane tähele, et esimene kaader võib võtta mälu ainult mõnisada MB, kuid hilisemad lähevad juba üle ühe GB, mis võib olla põhjuseks, miks eeltöötlus ebaõnnestub. Kui nii, siis proovi eeltöödelda üks kaader keskelt või lõpust täislahutusega, et näha, kas see töötab.
  • Mälu kasutus kahekordistub, kui sead pinnatükeldamise 1st 2le.
  • “Osakeste genereerimine” suurendab samuti mälu kasutamist, kuna need suurendavad pinda ja keerukust. Tavalised vedelikusimulatsiooni osakesed võtavad ilmselt vähem mälu.



TEHA: kontrolli neid linke...(Et nad oleks sobivad Blender 2.5.ga

Vaata ka

Väline dokumentatsioon



Tänusõnad

Vedelikusimulaatori integreerimine tehti Google Summer-of-Code projektina. Rohkem infot lahendaja kohta leiab www.ntoken.com. Need animatsioonid on tehtud enne lahendaja integreerimist Blenderisse: Adaptive Grids, Interactive Animations. Tänud Chris Wantile Blender-SoC projektide organiseerimise eest ja Jonathan Merritile selle mentoriks olemise eest! Ja muidugi tänud Google'ile kogu asja alustamise eest… SoC edenemine ja uuendused: SoC-Blenderfluid-Blog at PlanetSoC.

Lahendaja ise on arendatud Nils Thuerey poolt ja järgnevate inimeste abiga ning järelvalve all: U. Ruede, T. Pohl, C. Koerner, M. Thies, M. Oechsner ja T. Hofmann, Arvutiteaduse osakonnas 10 (System Simulation, LSS) Erlangenis Saksamaal.

http://www10.informatik.uni-erlangen.de/~sinithue/img/lsslogo.png http://www10.informatik.uni-erlangen.de/~sinithue/img/unierlangenlogo.png