From BlenderWiki

Jump to: navigation, search
If you want to document Blender 2.5 features please edit pages under Doc:2.5/Manual.
If a "2.5" page doesn't exist please copy the text from 2.4x Manual and edit the new page (i.e. you should paste the wikitext from this 2.4x page to this new 2.5x page and then update the latter with 2.5 features)


[edit] Simulazione Fluidi

Il seguente capitolo descrive come animare dei liquidi usando il simulatore di fluidi integrato in Blender a partire dalla versione 2.40.

Problema di cartelle nella Versione 2.40
Su di un sistema (cioè sul Mac OSX) la versione attuale di blender si installa di default in una cartella che ha un "+" nel nome, cioè blender-2.40-OSX-10.3+-py2.3-powerpc il che è all'origine di un messaggio di errore che dice "syntax error in line N" dopo aver premuto il pulsante BAKE. La via più semplice per aggirare ciò è di rimuovere il "+" dal nome della cartella di blender, o di inserire un'altra cartella di uscita. Questo verrà corretto nelle future versioni.


Esempio: animazione del cedimento di una diga.

[edit] Visione d'insieme del flusso di lavoro

  • Modellando una scena con Blender si possono contrassegnare alcuni oggetti al fine di includerli nella simulazione dei fluidi, col ruolo di fluido oppure di ostacolo. La scatola rettangolare [bounding box] di un altro oggetto verrà usata per definire una regione a forma di parallelepipedo all'interno della quale avverrà la simulazione del fluido.
  • I parametri globali di simulazione come la viscosità e la gravità possono essere impostati su questo oggetto, che funge da dominio.
  • Con il pulsante "bake" la geometria e le impostazioni verranno esportate verso il simulatore e verrà lanciata la simulazione, generando una mesh superficie assieme ad un'anteprima per ogni fotogramma di animazione, e salvandole sul disco rigido.
  • La superficie del liquido corrispondente al fotogramma corrente viene caricata dal disco e visualizzata o renderizzata in Blender.

Le due immagini all'inizio e alla fine di questo paragrafo sono un esempio delle animazioni dei fluidi create con il simulatore El'Beem in Blender (e renderizzate mediante Yafray).

Un'altro esempio di animazione: la caduta di una goccia.



[edit] Spiegazione delle impostazioni della GUI:

Le opzioni di base (e di più frequente utilizzo) di simulazione del fluido
Opzioni avanzate e di utilizzo meno frequente

Screenshot della GUI per un oggetto dominio. Dopo aver abilitato la simulazione di fluidi per un oggetto, può essere scelto il tipo (dominio, fluido, ostacolo,...) determinando di conseguenza la presenza di parametri specifici per ogni tipo.

Dopo aver abilitato la simulazione del fluido per un oggetto mesh, saranno disponibili i cinque seguenti tipi di oggetto.

  • Domain: (Dominio) La scatola rettangolare [bounding box] nella quale è inscritto questo oggetto circoscriverà la simulazione. Occorre notare che la forma dell'oggetto non ha importanza (per cui di solito non c'è ragione di usare forme diverse da un parallelepipedo). Se sono necessari ostacoli o argini diversi da un parallelepipedo sarà necessario inserire oggetti ostacolo aggiuntivi. Attualmente può esistere un solo ogetto che svolga la funzione di dominio della simulazione del fluido. Le lunghezze delle facce del parallelepipedo possono essere differenti.
    • Resolution: (risoluzione) La risoluzione alla quale l'attuale simulazione dei fluidi viene calcolata. Questo è probabilmente il settaggio più importante ai fini della simulazione dal momento che determina la misura del dettaglio del fluido, l'uso di memoria e di disco rigido ed anche il tempo di calcolo. Si noti che il quantitativo di memoria RAM richiesta cresce rapidamente: una risoluzione di 32 richiede circa 5MB, 64 richiede circa 40MB, mentre 128 ha già bisogno di più di 250MB. Assicurarsi di impostare la risoluzione sufficientemente bassa, in relazione al quantitativo di memoria di cui si dispone, per evitare che Blender termini o si blocchi. Se il dominio non è cubico, la risoluzione verrà campionata sul lato più lungo. La risoluzione sugli altri lati verrà ridotta in proporzione alle loro lunghezze.
    • Preview-Res.: (risoluzione dell'anteprima) Questa è la risoluzione alla quale verranno generate le superfici mesh di anteprima. Per cui essa non influenza la simulazione attuale, ed anche se non si vede nulla nell'anteprima, ci potrebbe essere una sottile superficie di fluido che non può essere risolta con l'anteprima.
    • Start time: (tempo iniziale) Tempo della simulazione (in secondi) del primo fotogramma di blender. Questa opzione permette all'animazione in Blender di iniziare posticipata rispetto alla simulazione.
    • End time: (tempo finale) Tempo della simulazione corrispondente all'ultimo fotogramma di Blender.
    • Disp.-Qual.: (qualità di visualizzazione) Definisce come visualizzare nella GUI di Blender (primo menu a discesa) o nel rendering finale (secondo menu a discesa) la simulazione memorizzata: geometria originale [original geometry], mesh di anteprima [preview mesh] o mesh finale [final mesh]. Quando il programma non trova dati già memorizzati [baked], di default verrà mostrata la mesh originale.
    • Bake directory: Directory e prefisso dei file per salvare le sequenze di superfici mesh processate. Questo somiglia alle impostazioni di salvataggio di un'animazione, solo la scelta del file è un po' particolare: quando viene scelto una qualsiasi delle mesh generate in precedenza (come untitled_OBcube_fluidsurface_final_0132.bobj.gz) verrà automaticamente impostato il prefisso dei nomi dei file (untitled_OBcube_ per questo esempio). In questo modo la simulazione può essere lanciata più volte con impostazioni diverse, e permette rapidi cambiamenti delle diverse categorie di dati delle superfici.
    • Bake-Button: (Pulsante "inforna") Esegue la simulazione del fluido attuale. La GUI di Blender si bloccherà, visualizzando solo il fotogramma che è simulato. Premendo ESCAPE verrà annullata la simulazione. Al termine ci saranno due .bobj.gz per ogni fotogramma, nella directory selezionata.
Liberare dalle precedenti infornature
Cancellando il contenuto della cartella di salvataggio (bake directory) è una buona (ma distruttiva) alternativa per ottenere ciò; altrimenti, se la prima simulazione dura dal fotogramma 1 (Start) al 250 (End), la si lanci, per esempio, dal fotogramma 251 al 500.



    • Advanced-Button: (Pulsante Avanzate) Premendo questo pulsante verranno visualizzate opzioni più avanzate, che generalmente non si modificano spesso.
    • Gravity vector: (vettore gravità) Entità e direzione dell'accellerazione di gravità. Attualmente la componente principale dovrebbe essere orientata e rivolta verso l'asse z negativo [m/s^2]. Ad ora questi valori non possono essere tutti 0 (almeno qualche numero piccolo).
    • Viscosity: Viscosità, intesa come "spessore" del fluido. Si può alternativamente inserire direttamente un valore od usarne uno tra quelli predefiniti. Per l'inserimento manuale, il valore è specificato da un numero a virgola mobile che deve aggirarsi intorno ad 1.0, e da un esponente negativo. Ciò semplifica l'inserimento di numeri molto piccoli, come per esempio la viscosità dell'acqua che si aggira intorno a 10^-6 .
    • Real-World size: (Dimensione del Mondo Reale) Dimensione dell'oggetto dominio rapportato al mondo reale, in metri. Se si vuole creare un bicchiere d'acqua, questo valore può essere 0.2 metri, mentre per una singola goccia sarà più adatto un centimetro (quindi 0.01 m). La dimensione impostata qui si riferisce al lato maggiore del parallelepipedo [bounding box] del dominio.
    • Gridlevel: (livello della griglia) Quanti livelli di gliglia adattivi verranno usati durante la simulazione - impostando questo valore a -1 verrà eseguita una selezione automatica.
    • Compressibillity: (compressibilità) Se si riscontrano problemi con ampie regioni di fluido con risoluzione elevata, potrebbe essere utile ridurre tale valore (si noti che aumenteranno i tempi di calcolo).

  • Fluid: (Fluido) Tutte le regioni di questo oggetto che si trovino all'interno del parallelepipedo di definizione del dominio verranno usate come fluido nella simulazione. Se si collocano più di un oggetto fluido all'interno del dominio, essi dovrebbero, allo stato attuale, non intersecarsi. Assicurarsi inoltre che le normail delle superfici puntino verso l'esterno. A differenza con gli oggetti dominio, l'attuale geometria della mesh viene usata per gli oggetti fluido.
    • Initial velocity: (Velocità iniziale) Velocità del fluido all'inizio della simulazione, in metri al secondo.

  • Obstacle: (Ostacolo) Questo oggetto verrà usato come ostacolo nella simulazione. Come per gli oggetti fluido, gli oggetti ostacolo non dovrebbero intersecarsi. Come per gli oggetti fluido, la geometria attuale della mesh verrà usata nella simulazione degli sotacoli.
    • Nessuna impostazione per ora...
Suggerimenti
Il vostro ostacolo dovrebbe avere uno spessore superiore dell'unità usata nel dominio (per cui il lato più lungo del 'bounding box' del dominio diviso per la risoluzione) altrimenti il fluido oltrepasserà l'ostacolo come se non ci fosse. Inoltre, assicurarsi che le normali dell'ostacolo siano calcolate nello stesso verso e orientate in modo opportuno (si usi il pulsante Flip Normals, pannello Mesh Tools, contesto Editing [F9]) , in modo particolare quando si usa un contenitore roto-duplicato o estruso circolarmente. Applicare il modificatore Subsurf prima dell'infornata della simulazione potrebbe essere una buona idea.



  • Inflow: (Flusso entrante) Questo oggetto immetterà fluido nella simulazione (si pensi ad un rubinetto).
    • Initial velocity: (velocità iniziale) Velocità del fluido che è creato all'interno dell'oggetto.

  • Outflow: (Flusso uscente) Qualunque fluido che entra nella regione di questo oggetto verrà cancellato (si pensi ad uno scarico). Ciò può tornare utile in combinazione con un Flusso entrante per evitare che l'intero dominio si riempa.
    • Nessuna impostazione per questo...


[edit] Qualche informazione di riferimento

La animazione del fluido può prendere molto tempo - meglio si comprende come funziona, più facile sarà valutare come saranno i risultati. La procedura usata per questo progetto è il metodo del Lattice di Boltzmann (LBM), altri approcci sono i risolutori di Navier-Stokes (NS) ed i metodi di idrodinamica delle particelle fluide (Smoothed Particle Hydrodynamics SPH). LBM si trova a metà strada fra questi due. In generale per i calcolatori correnti è realmente duro simulare correttamente persino un serbatoio di un metro di acqua. Per simuare un'onda che si infrange contro una città, probabilmente avreste bisogno di uno dei più costosi supercomputer che potreste ottenere, e potrebbe non funzionare ancora correttamente - a prescindere da quale dei 3 algoritmi sopra citati voi stiate usando.

Ma, in modo simile a quello che i cineasta hanno fatto per anni nelle pellicole "analogiche", potete fingere di avere un'onda in una città sviluppando un modello più piccolo, avere una piccola onda nel modello e sperare che nessuno noti la differenza fra un'onda di 100 metri e un'onda di 1 metro. Per il simulatore LBM, le seguenti cose renderanno la simulazione più dura da computare:

  • grandi dominii
  • durata lunga
  • viscosità basse
  • ed alte velocità.

La viscosità dell'acqua è già effettivamente bassa, così particolarmente per le risoluzioni basse, la turbolenza dell'acqua non può essere resa correttamente. Se osservate da vicino, la maggior parte delle simulazioni dei liquidi nella grafica al calcolatore ancora non assomiglia ad acqua reale, sinora. In generale, non si conti troppo sulle regolazioni fisiche (quali la dimensione fisica del dominio o la lunghezza fisica della animazione in secondi). Piuttosto si provi ad ottenere il movimento complessivo con una risoluzione di livello basso ed in seguito si aumenti la risoluzione tanto quanto possibile o voluta.


[edit] Note / FAQ / Problemi noti

  • non ci si sorprenda, si otterrà un numero enorme di files di mesh (bobj.gz) dopo una simulazione... fondamentalmente 2 per ogni fotogramma, contenete il risultato della simulazione - per cui saranno necessari. Attualmente questi files non saranno cancellati automaticamente, per cui è una buona idea per esempio creare una cartella destinata a mantenere i risultati della simulazione. Fare una simulazione di fluidi è simile a premere il tasto di ANIM - attualmente dovete prendervi cura di organizzazione le mesh della superficie del fluido in una cartella di vostra iniziativa. Se desiderate smettere di usare la simulazione del fluido, potete cancellare semplicemente tutti i files di fluid*.bobj.gz.
  • se la messa a punto sembra andare male assicurasi che tutte li normals siano corrette (quindi si entri in modalità edit, si selezioni tutto, si ricalcolino le normali verso l'esterno).
  • prima di lanciare una simulazione ad alta risoluzione che potrebbe richiedere ore, si controllino i tempi necessari facedo delle prove a risoluzioni inferiori.
  • il bounding box è usato soltanto per l'oggetto del dominio, ma gli oggetti ostacolo e liquido possono essere mesh con geometrie complesse. Una mesh molto sottile può non comparire nella simulazione, se la risoluzione scelta è troppo grossolana per risolverla (aumentandola si potrebbe risolvere il problema).
  • attualmente c'è un problema con la simulazione a gravità zero - si selezioni semplicemente una gravità molto piccola fino a che questo problema non sarà risolto.
  • si noti che tutti i parametri o oggetti animati non sono considerata durante la simulazione.

E' usata soltanto la condizione iniziale al fotogramma 1, ma questo sarà possibile nelle versioni future.

  • Blender si congela dopo aver premuto BAKE, premendo ESC esso torna a funzionare dopo qualche istante - questo può accadere se la risoluzione è troppo alta e la memoria è allocata al disco rigido, rendendo tutto terribilmente lento. La riduzione della risoluzione dovrebbe aiutare in questo caso.
  • Blender termina dopo aver premuto BAKE - questo può accadere se la risoluzione è realmente alta e più di 2GB sono allocati, inducendo Blender ad arrestarsi. La riduzione della risoluzione dovrebbe anche qui aiutare...
  • le mesh dovrebbero essere chiuse, per cui se alcune parti per esempio di un oggetto fluido non sono inizializzate come liquido nella simulazione si controlli che tutte le parti dei vertici collegati sono mesh chiuse. Purtroppo, la mesh di Suzanne (scimmia) in Blender non è una mesh chiusa (gli occhi sono separati).
  • se state avendo difficoltà, o qualcosa non sta funzionando come pensate che dovrebbe - fatemelo sapere: inviate il file .blend e una descrizione del problema a =nils at thuerey dot de=.


Un altro esempio di simulazione di fluidi creato con Blender e Yafray


[edit] Ulteriori informazioni


[edit] Ringraziamenti

L'integrazione del motore di simulazione del fluido è stata realizzata come progetto del Google Summer-of-Code. Maggiori informazioni relative al solutore si possono trovare su www.ntoken.com. Queste animazioni sono state create con il solutore prima della sua integrazione in Blender: Adaptive Grids, Interactive Animations. Grazie a Chris Want per aver organizzato il progetto Blender-SoC, ed a Jonathan Merrit per essere stato mentor di questo! E ovviamente grazie a Google per aver fatto partire tutto questo... Gli aggiornamenti dei progressi del SoC sono stati inseriti qui: SoC-Blenderfluid-Blog at PlanetSoC.

Il risolutore in sè è stato sviluppato con l'aiuto e la supervisione delle seguenti persone: U. Ruede, T. Pohl, C. Koerner, M. Thies, M. Oechsner and T. Hofmann at the Department of Computer Science 10 (System Simulation, LSS) in Erlangen, Germany.

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







If you have any question about this page topics, please leave a message in the talk page.
Please report any problems editing or creating these pages: Missing images in this page, Broken links in this page. Thanks!


Redirects to fix

  • SoCFluidDevelDoc → Dev:Ref/GSoC/2005/FluidAnimation/Development
  • SoCFluidTutorial1 → Dev:Ref/GSoC/2005/FluidAnimation/Tutorial 1
  • SoCFluidTutorial2 → Dev:Ref/GSoC/2005/FluidAnimation/Tutorial 2
  • SoCFluidTutorialChanges → Dev:Ref/GSoC/2005/FluidAnimation/Tutorial Changes