Simulazione Interattiva di Capelli

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Simulazione Interattiva di Capelli"

Transcript

1 Università degli studi di Roma La Sapienza Facoltà di Ingegneria Tesi di Laurea in Ingegneria Elettronica Simulazione Interattiva di Capelli Relatore Prof. Marco Schaerf Candidato Marta De Cinti Correlatore Ing. Marco Fratarcangeli Anno Accademico 2005/2006

2 Università degli studi di Roma La Sapienza Facoltà di Ingegneria Tesi di Laurea in Ingegneria Elettronica Simulazione Interattiva di Capelli Relatore Prof. Marco Schaerf Candidato Marta De Cinti Correlatore Ing. Marco Fratarcangeli Anno Accademico 2005/2006

3 Ai miei genitori

4 Riassunto In questa tesi viene presentato un metodo per la simulazione realistica e interattiva di capelli. La simulazione di capelli è un elemento importante nella modellizzazione di umani virtuali. Le difficoltà principali derivano dall elevato numero di capelli da rappresentare, dal variare della loro forma e dalle complesse interazioni tra capelli o tra capelli e oggetti esterni. Il modello fisico proposto per un singolo capello si basa su un sistema di particelle. Alle particelle vengono applicati vincoli di equidistanza che le forzano a rimanere connesse tra di loro. Le particelle sono soggette a forze, come la gravità, l attrito dell aria e l azione del vento. Il movimento delle particelle è regolato da equazioni differenziali, che sono state risolte mediante metodi numerici. Questo modello fisico è usato per simulare la dinamica di un gruppo ridotto di capelli guida. La capigliatura nel suo complesso è modellizzata come un insieme di superfici bidimensionali. I capelli guida controllano il movimento e la deformazione delle superfici 2D attraverso i punti di controllo. Le superfici vengono rappresentate mediante poligoni triangolari, a cui viene applicata una texture di capelli. Sono state implementate anche le collisioni con la testa. Con questo metodo, sono state realizzate alcune capigliature in grado di reagire in modo fisicamente credibile alle forze esterne e al movimento della testa.

5 Ringraziamenti Desidero ringraziare tutti coloro che in diversi modi hanno reso possibile questo lavoro: il mio relatore, prof. Marco Schaerf, per avermi dato la possibilità di svolgere questa tesi, e il mio correlatore, ing. Marco Fratarcangeli, per la disponibilità, l aiuto e l infinita pazienza. Un sentito ringraziamento va inoltre a tutti coloro che mi sono stati vicini in questi anni. Agli amici, che mi hanno incoraggiato e sostenuto nei momenti di sconforto, alle compagne di corso, con cui ho condiviso tante ore di studio, e soprattutto a Paolo. Un pensiero particolare va a tutta la mia famiglia, per il continuo sostegno e la costante fiducia in me.

6 Indice 1 Introduzione Problema e Contesto Modello di Capelli Proposto Struttura della Tesi Stato dell Arte Aspetto dei Capelli Dinamica dei Capelli Rendering dei Capelli Animazione dei Capelli nei Film Metodo di Sviluppo Sistema di Particelle Modello Fisico delle Particelle Soluzione Numerica di Equazioni Differenziali Realizzazione del Sistema di Particelle Forze Controllo del Movimento dei Capelli Vincoli di Equidistanza Dinamica dei Vincoli Realizzazione dei Vincoli di Equidistanza Superfici di Bézier Curve di Bézier Realizzazione delle Superfici di Bézier Generazione della Capigliatura Collisione dei Capelli con la Testa Realizzazione della Capigliatura Strumenti Utilizzati OpenGL G3D D Studio Max

7 INDICE 5 4 Risultati Azione del Vento Movimento della Testa Conclusioni Prospettive Future Bibliografia 68

8 Capitolo 1 Introduzione Uno degli obiettivi dell informatica grafica moderna è la ricerca di strumenti che permettano di riprodurre personaggi sintetici credibili. La simulazione realistica di capelli è uno dei problemi cruciali nella modellizzazione di volti umani. Fino a circa venti anni fa, le capigliature di umani virtuali erano costruite come strutture poligonali. Nelle animazioni attuali ciò non è più accettabile. L animazione di personaggi virtuali è enormemente migliorata negli anni. C è stato un grande sviluppo di animazioni tridimensionali in vari campi dell industria grafica, per i videogiochi, film di animazione, gli effetti speciali dei film, ma anche per dispositivi di comunicazione, applicazioni mediche e per la realtà virtuale. Molta attenzione, dunque, è stata data a tutti i dettagli che possono contribuire a riprodurre umani virtuali visivamente realistici. Inoltre, nelle applicazioni in tempo reale, come videogiochi, realtà virtuale e dispositivi di comunicazione, è di grande importanza che l animazione sia interattiva. L utente, infatti, interagisce con l animazione in tempo reale e determina i movimenti dei personaggi virtuali. In questa tesi viene presentata una tecnica per la modellizzazione di capigliature. L obiettivo è realizzare un modello di capelli che sia realistico e al contempo interattivo. Il movimento dei capelli, dunque, deve essere fisicamente coerente e deve rispondere in maniera realistica ai movimenti della testa e all azione di forze esterne. 1.1 Problema e Contesto L animazione dei capelli è uno dei punti fondamentali nell animazione di personaggi digitali. Le difficoltà principali della modellizzazione sono dovute all elevato numero di capelli da rappresentare, alla loro lunghezza e alle loro complesse interazioni. I capelli sono fra gli elementi più interessanti e difficili da rappresentare. Tutte le proprietà ottiche e dinamiche di un singolo

9 1.1 Problema e Contesto 7 capello sono abbastanza semplici e ormai ampiamente note, tuttavia è ancora difficile rendere la dinamica di una capigliatura nel suo complesso. Su una testa umana ci sono dai ai capelli. Geometricamente essi possono essere definiti come lunghi cilindri sottili. Possono variare nello spessore, nel colore e nella forma. Ogni capello, per esempio, può variare la sua curvatura in diverse gradazioni che vanno dal completamente liscio al molto riccio. Il colore dei capelli può andare dal bianco al grigio, o dal rosso al marrone, a seconda della pigmentazione e della lucentezza. Diversi tipi di capigliature possono differire tra loro nella voluminosità, nella lucentezza e nel modo in cui reagiscono ai prodotti cosmetici e alle azioni atmosferiche. La struttura dei capelli è anche legata al modo in cui essi interagiscono tra loro. L interazione può essere influenzata anche dalla presenza di spray cosmetici, che tendono a aumentare la coesione tra ciocche o tra capelli singoli. Per ogni capigliatura, dunque, si riscontrano un infinità di possibili configurazioni e una grande gamma di parametri da definire. Nella modellazione l elevato numero di elementi da tenere in considerazione crea spesso anche problemi computazionali. D altronde la dinamica di capelli è dominata da milioni di collisioni e l aspetto è determinato da milioni di micro-oggetti da disegnare. Il movimento dei capelli lunghi, in particolare, coinvolge tre aspetti. Prima di tutto, un capello lungo si deforma e interagisce con la testa, con i vestiti e con altri oggetti. Inoltre, dopo aver subito i movimenti della testa e l azione di forze esterne, la capigliatura deve poter ritornare alla sua posizione iniziale. Infine, ci sono le collisioni tra capelli che, dato l elevato numero di elementi, sono computazionalmente onerose da realizzare. La maggior parte degli approcci recenti si basa su modelli di capelli individuali e applica rappresentazioni parametrizzate per l interazione con l ambiente. Per quanto riguarda la simulazione, Rosenblum et al. [23] nel 1991, e poi Daldegan et al. [2] nel 1993, hanno usato un modello massamolla-cerniera, mentre Anjyo et al. [22] nel 1992 hanno realizzato il capello come una serie di segmenti rigidi connessi da molle flessionali. Nel 2002 Chang et al. [14] hanno simulato solo poche centinaia di capelli e successivamente hanno generato tutti gli altri per interpolazione. In questi modelli l illuminazione e l animazione di un singolo capello sono ben realizzate, ma l interazione tra capello-capello è troppo costosa da implementare. Si sono concentrati su questo problema Hadap e Magnenat-Thalmann [20], che nel 2001 hanno presentato un modello che sfrutta la dinamica dei fluidi. Mentre sempre nel 2001, per simulare l interazione tra capelli lunghi, Plante et al. [9] hanno presentato un modello a ciocche. Nel 2003 Ward et al. [39] hanno poi introdotto un modello gerarchico per la suddivisione selettiva delle ciocche in cilindri generalizzati. Infine, sempre nel 2003, Bando et al. [26] hanno presentato un approccio volumetrico per simulare l interazione capello-capello, in cui le particelle sono solo debolmente connesse.

10 1.2 Modello di Capelli Proposto Modello di Capelli Proposto E stata creata un applicazione interattiva che genera una capigliatura realistica. Il modello proposto per la simulazione fisica dei capelli si basa su un sistema di particelle. Il sistema di particelle è soggetto a un insieme di forze fisiche comunemente note, come la gravità, l attrito dell aria e la forza del vento. A tali forze il sistema risponde coerentemente rispettando i principi della dinamica. Per modellare un singolo capello, sono stati imposti vincoli di equidistanza tra particelle contigue. Il sistema, dunque, è soggetto anche a forze vincolari. Inoltre, tra le particelle contigue, sono state introdotte molle lineari per correggere eventuali derive numeriche. Altre molle angolari sono state aggiunte per simulare la rigidezza intrinseca del capello e, quindi, limitarne la flessione. Le collisioni dei capelli con la testa sono state implementate approssimando la testa con una sfera. Si determina una collisione ogni volta che una particella si trova all interno del volume della sfera. In questo caso, si aggiungono al sistema forze di reazione, che riportino la particella al di fuori della superficie. Per ogni capello viene generato un sistema di particelle, il cui processo di simulazione è del tutto autonomo rispetto agli altri sistemi e all applicazione stessa. Con questo metodo viene modellizzato solo un ristretto numero di capelli. Tali capelli sono definiti capelli guida. Per rappresentare un numero di capelli sufficienti a ottenere un intera acconciatura, ciocche di capelli sono state modellizzate mediante superfici parametriche bidimensionali. A tale scopo, sono state utilizzate superfici di Bézier. Le superfici vengono disegnate mediante poligoni triangolari. La tasselazione è regolata da un parametro che può essere modificato dall utente durante l animazione. Ogni superficie rappresenta una ciocca. Ogni ciocca rappresenta decine di capelli. La deformazione e il movimento della superficie sono regolati dai suoi punti di controllo. Per ogni superficie sono stati usati 16 punti di controllo. Le particelle dei capelli guida rappresentano questi punti di controllo. Per questo motivo per ogni superficie sono stati utilizzati quattro capelli guida, composti da quattro particelle ciascuno. Dunque, di fatto, i capelli guida controllano il movimento e la deformazione delle superfici bidimensionali. Per questo, anche le superfici di Bézier si muovono e si deformano coerentemente con il modello fisico, rispettando i principi della dinamica. Sulle superfici sono state applicate texture di capelli e mediante alpha map è stata implementata la trasparenza. Con questa tecnica si è drasticamente ridotto il numero di oggetti geometrici da disegnare. Le superfici, infine, vengono attaccate alla mesh della testa. Le radici dei capelli guida sono i punti di contatto con la testa e si muovono assieme ad essa. Il movimento della testa è regolato dall utente mediante i comandi della tastiera.

11 1.3 Struttura della Tesi Struttura della Tesi Capitolo 2 Viene presentato lo stato dell arte nella simulazione di capelli. Sono evidenziati tre problemi principali della modellizzazione: l aspetto, il movimento e il rendering di capelli. Le ricerche nel campo sono state divise in categorie a seconda del modello che è stato preso in considerazione: modello a sistema di particelle, modello esplicito di capelli, modello a ciocche e modello a texture volumetriche. Di ogni tipo di approccio vengono discussi vantaggi e svantaggi. Capitolo 3 E descritto in maniera accurata il modello proposto per la simulazione interattiva dei capelli. Il metodo è illustrato in quattro passi fondamentali: il sistema di particelle, i vincoli di equidistanza, le superfici di Bèzier, la generazione della capigliatura. Per ogni passo sono descritti i metodi matematici e fisici utilizzati per ottenere la simulazione e viene spiegata la realizzazione del progetto. Capitolo 4 Viene presentata l analisi dei risultati ottenuti. In particolare, si fa riferimento a due differenti capigliature, che sono state realizzate in due demo. Viene mostrata una serie di immagini in cui si illustrano i test delle capigliature durante il movimento della testa e durante l azione del vento. Capitolo 5 Sono infine presentate alcune conclusioni, viene fatto un bilancio complessivo del lavoro e vengono descritte alcune possibili prospettive future.

12 Capitolo 2 Stato dell Arte Le difficoltà principali, nel realizzare una simulazione realistica di capelli, derivano dall alta densità di capelli individuali da rappresentare, dalla loro variabile geometria e dalle interazioni fisiche associate, come le collisioni, le cariche statiche, le ombre. Inoltre, riprodurre un movimento realistico di capelli richiede l utilizzo di simulazioni fisiche, oltre all uso di sistemi che riconoscano le collisioni e generino risposte adeguate. Le prime ricerche sulla simulazione realistica di capelli risalgono alla fine degli anni Ottanta. Da allora sono state proposte varie soluzioni, molte delle quali si sono concentrate sull aspetto delle capigliature, spesso utilizzando specifici algoritmi di rendering. Per questo si sono rivelati metodi più adatti alla simulazione off-line. Inoltre, gli studi si sono spesso indirizzati verso due tipi diversi di approcci: la simulazione di capelli molto corti, in particolare di peli animali, e la simulazione di capelli lunghi con relative acconciature. La simulazione di capelli corti ha avuto forte sviluppo nell animazione, mentre la modellizzazione di capelli lunghi ha presentato maggiori problemi. Le tre caratteristiche principali della simulazione di capelli sono: l aspetto, il movimento e il rendering. Spesso questi tre peculiarità sono legate tra loro. L aspetto dei capelli viene reso tramite la creazione del numero esatto di capelli necessari, generalmente nell ordine delle migliaia, o mediante una rappresentazione fittizia del numero complessivo di capelli. In ogni caso, i capelli verranno generati tenendo conto della loro forma, densità, distribuzione e orientamento. La dinamica, invece, riguarda il movimento dei capelli, le loro collisioni con altri oggetti (fattore particolarmente rilevante per i capelli lunghi) e le collisioni tra capelli. Infine il rendering coinvolge il colore dei capelli, la trasparenza, l ombra e la luce. Ciascuno di questi tre caratteristiche è stata oggetto di ricerca. Alcuni lavori si sono concentrati solamente su particolari aspetti, altri hanno cercato un approccio più generale al problema, associandolo alla simulazione di fenomeni naturali, come nuvole, erba e alberi. Questo perché le capigliature sono il risultato sia delle caratteristiche di ogni singolo capello che dell interazione capello-capello e capello-testa. Di

13 2.1 Aspetto dei Capelli 11 conseguenza, dinamiche complesse e allo stesso tempo interattive sono al momento di difficile realizzazione. Possiamo dividere le modellizzazioni di capelli in quattro categorie in base alla tecnica usata: modello a sistema di particelle, modello a texture volumetriche, modello esplicito di capelli e modello a ciocche. Ultimamente altre tecniche hanno coinvolto anche la simulazione fluidodinamica. 2.1 Aspetto dei Capelli I primi tentativi si sono indirizzati verso modelli espliciti di capelli. Nei modelli espliciti vengono considerati l aspetto e il movimento di ogni singolo capello. Sono in genere modelli più realistici e particolarmente adatti alle dinamiche dei capelli lunghi. Daldegan et al. [2] hanno proposto un sistema che permetta all utente di definire alcune caratteristiche del singolo capello e che successivamente, con i capelli così definiti, popoli l intera capigliatura. In tal modo l utente attraverso un interfaccia può disegnare una curva attorno alla testa. Alcuni parametri come la densità, la distribuzione, l orientamento controllano poi il processo di duplicazione dei capelli attorno alla testa, fino a formare un intera capigliatura. La fig. 2.1 (a) illustra il metodo per definire alcune curve in 3D e la capigliatura ottenuta alla fine del procedimento. (a) (b) Fig. 2.1: (a) Le diverse fasi del metodo proposto da Daldegan et al.; (b) Una pelliccia realizzata con un modello esplicito di capelli. Il modello esplicito di capelli è stato utilizzato in modo del tutto simile per modellizzare peli di animali da Daldegan et al. [1], Gelder et al. [3] e Bruderlin et al. [4] (fig. 2.1). I modelli espliciti di capelli sono intuitivi e molto realistici. Sfortunatamente sono anche molto lenti nel generare una capigliatura. Impiegano dalle 5 alle 10 ore per modellare un acconciatura fitta come quella che abbiamo

14 2.1 Aspetto dei Capelli 12 visto in fig Sono, inoltre, computazionalmente costosi per il calcolo del moto dei capelli. Nei modelli a ciocche queste difficoltà sono parzialmente superate prendendo in considerazione un gruppo di capelli anziché un capello singolo. Questa tecnica corrisponde, fra l altro, a quello che succede nella realtà. Infatti, a causa delle forze di adesione e coesione i capelli tendono ad ammassarsi. Watanabe et al. hanno introdotto un modello a ciocche in [5, 6]. Yan et al. [8] hanno modellato le ciocche come cilindri generalizzati. Un modello a ciocche è utilizzato anche da Chen at al. [7]. In genere, però, questi metodi sono stati utilizzati per una modellizzazione statica di capelli. Plante et al. [9], invece, hanno introdotto un modello a ciocche per simulare l interazione tra capelli lunghi. I capelli singoli vengono raggruppati in ciocche e modellati come volumi anisotropi. Ogni ciocca è costituita da uno scheletro e da un involucro deformabile. Lo scheletro determina il movimento di tutta la ciocca, mentre l involucro determina localmente la deformazione radiale (fig. 2.4). Tuttavia, con questo metodo manca coerenza nel movimento di ciocche contigue. Koh e Huang [10] hanno modellato i capelli su strisce bidimensionali. Ogni striscia è creata mediante una superficie parametrica, una NURBS 1, che rappresenta un gruppo di capelli. Il problema principale di questo approccio è che non viene riprodotta adeguatamente la voluminosità dei capelli. Altre ricerche, infine, hanno cercato di modellare i capelli con sottili gusci o strati multipli di involucri [11, 13]. Fig. 2.2: Nel modello proposto da Plante et al. i capelli singoli vengono raggruppati in ciocche e modellati come volumi anisotropi. Chang et al. [14] hanno proposto un approccio in cui si simulano solo poche centinaia di capelli sparsi (fig. 2.3). Ogni singolo capello è costituito da una serie di segmenti rigidi connessi tramite i vertici: è considerato un capello guida di una ciocca e ogni ciocca può avere la sua curvatura. Una volta che il moto di tutti i capelli guida è stato calcolato, per creare una capigliatura fitta vengono generati altri capelli per interpolazione. Nei modelli a texture volumetriche i peli possono essere realizzati come funzioni di densità. Nel 1989 Perlin et al. [17] hanno introdotto le hypertex- 1 Non Uniform Rational B-Splines.

15 2.1 Aspetto dei Capelli 13 Fig. 2.3: Nel modello di Chang et al. vengono simulati solo alcuni capelli guida. ture, con cui si possono modellare facilmente peli, fluidi, fenomeni naturali. Con il metodo proposto da Perlin si interviene tra l oggetto e la texture modellando quest ultima nello spazio, grazie all uso di funzioni per modulare la densità. E sostanzialmente un estensione dell uso di texture solide, ma in questo caso le texture vengono valutate su regioni di spazio piuttosto che su semplici superfici. Viene poi usato un vettore 3D che rappresenta rumore o turbolenza per perturbare la texture spaziale. Il metodo con le hypertexture ha il limite di poter essere usato solo con geometrie ben definite. Kajiya et al. [19] hanno esteso questo approccio. Usando sezioni di hypertexture hanno potuto modellare anche oggetti più complessi. Mappando ripetutamente su tutto l oggetto una singola texture solida sono riusciti, per esempio, a creare un orso di peluche (fig. 2.1 b). (a) (b) Fig. 2.4: (a) Gruppo di peli modellato mediante hypertexture da Perlin et al.; (b) Orso di peluche realizzato con hypertexture da Kajiya et al.. Nell approccio di Yizhou Yu viene realizzato un modello statico grazie all uso di campi vettoriali, che poi eventualmente può essere animato con metodi già noti. E sufficiente solo un esiguo numero di campi vettoriali per modellare un acconciatura complessa. Vengono definiti alcuni campi vettoriali e viene creato un primo modello di capigliatura seguendo le linee dei

16 2.1 Aspetto dei Capelli 14 campi. Successivamente si può simulare l ondulazione dei ricci mediante una funzione che aggiunga un offset precedentemente definito e che abbia una distribuzione casuale intorno alla testa (fig. 2.7). Fig. 2.5: Modello a campi vettoriali presentato da Yu Fig. 2.6: Hadap et al. utilizzano la meccanica dei fluidi. Hadap e Magnenat-Thalmann [20], infine, hanno trattato la capigliatura come se fosse un continuum, simulando il movimento dei capelli grazie alla meccanica dei fluidi. La collisione capello-capello è stata modellata attraverso la pressione, mentre la resistenza dell aria è stato approssimato con la viscosità (fig. 2.6). In questo modo l utente può ottenere diversi tipi di capigliature definendo alcuni parametri del fluido e può disegnare acconciature complesse senza preoccuparsi dell interazione capello-testa e capello-capello. Anche questo metodo, però, presenta alcuni limiti. Il gradiente della pressione può generare una forza di collisione lungo direzioni incompatibili con la velocità dei capelli. Questo perché la pressione è definita in funzione della densità che non è legata alla velocità dei capelli.

17 2.2 Dinamica dei Capelli Dinamica dei Capelli La difficoltà principale nell animazione di capelli è riprodurre in modo realistico l interazione tra capelli, tra capelli e corpo, tra capelli e aria. Un altro problema cruciale è riuscire a realizzare un animazione interattiva. Tutti i movimenti di capelli sono governati da leggi fisiche, quindi le animazioni di capelli sono basate su modelli fisici [21]. Anjyo et al. [22], Rosenblum et al. [23] e Kurihara et al. [24] hanno proposto approcci costruiti su un modello esplicito di capelli. Fig. 2.7: Il capello è modellato mediante una serie di segmenti legati da giunti flessionali. Anjyo et al. [22] hanno usato un modello semplificato a travi e hanno risolto il calcolo del momento angolare riducendolo a un equazione differenziale unidimensionale. In questo approccio ogni capello è modellato come una serie di segmenti rigidi connessi da molle flessionali. Per ogni capello è poi calcolato il movimento dovuto alle forze inerziali e alle collisioni con il corpo. Rosenblum et al. [23] e Daldegan et al. [2] hanno, invece, usato un modello massa-molla-cerniera per controllare la posizione e l orientamento di ogni capello. Daldegan et al. [2], in particolare, hanno proposto un sistema integrato per la creazione, l animazione e il rendering di capelli. Questo sistema, dopo aver usato un modulo chiamato HairStyler [1] per modellare i capelli, simula il movimento dei capelli usando un equazione differenziale unidimensionale come descritto da Anjyo et al. [22]. Sebbene la dinamica di questi modelli e i vincoli sulle collisioni con il corpo siano ampiamente gestibili dai computer attuali, simulare le complesse interazioni capello-capello presenta ancora parecchie difficoltà. Per questo nessuno dei metodi appena proposti prende in considerazione l interazione capello-capello. Koh e Huang [10], invece, hanno modellato i capelli su strisce 2D e hanno applicato ai punti di controllo delle mesh un modello fisico molto simile a quello illustrato da Anjyo et al. [22] e Kurihara et al. [24]. Essendo i punti di controllo in numero assai minore dei vertici della tassellazione, l animazione

18 2.2 Dinamica dei Capelli 16 Fig. 2.8: Koh e Huang hanno realizzato la capigliatura mediante strisce 2D. è veloce e può essere interattiva. Koh e Huang hanno anche introdotto collisioni tra strisce adiacenti al fine di rendere il movimento più realistico. Anche Chang et al. [14] si sono concentrati sul problema dell interazione capellocapello, a tal fine hanno proposto un sistema che simulasse solo un ridotto numero di capelli sparsi. Prima di tutto hanno modellato ogni capello guida come una serie di segmenti rigidi connessi tramite giunti rotazionali (fig. 2.9). Ogni giunto ha due gradi di libertà rotazionale, nessuno transazionale, e può essere implementato indifferentemente con l algoritmo di Featherstone [15] o con i moltiplicatori di Lagrange [16]. Poi per modellizzare le interazioni tra capelli dovute alle cariche statiche o agli spray cosmetici, hanno connesso capelli guida adiacenti con molle di lunghezza a riposo nulla. Infine, per simulare la collisione fra capelli hanno usato mesh di supporto tra due capelli guida. Fig. 2.9: Il capello è modellato come una serie di segmenti rigidi connessi tramite giunti rotazionali. Un altro approccio che tiene conto dell interazione tra capelli è lo studio di Bando et al. [26], in cui si utilizza un modello a particelle. Al contrario della maggior parte dei metodi presentati che utilizzano strutture fisse per collegare le particelle, nel metodo di Bando et al. le particelle sono solo debolmente connesse tra loro (fig. 2.10). Le particelle vengono usate per tracciare il volume dei capelli, il movimento dei capelli e la loro interazione.

19 2.2 Dinamica dei Capelli 17 Ogni particella rappresenta nello spazio una certa quantità di capelli attorno a essa, e può essere quindi considerata come una densità volumetrica sul modello di Hadap et al. [20]. Fig. 2.10: (b) Modello a sistema di particelle di Bando et al. confrontato con altri modelli. Va detto che a causa delle elevate reazioni vincolari nei punti di connessione, dovuti all intrinseca rigidezza dei capelli, i modelli che usano segmenti rigidi connessi da cerniere, ma anche molle connesse da cerniere, tendono all instabilità numerica. Pertanto questi modelli hanno il limite di non poter usare grandi time step. Per ovviare a questo problema Choe et al. [25], per simulare il movimento delle ciocche, hanno combinato il modello a segmenti rigidi con il modello a molle. Hanno cioè connesso tra loro i segmenti rigidi con una molla lineare e una molla angolare (fig. 2.11). Questo modello ibrido, inoltre, potrebbe essere utilizzato anche per simulare il movimento di un singolo capello, invece che di una ciocca. Fig. 2.11: Nel modello di Choe et al. i segmenti rigidi sono connessi tramite una molla lineare e una molla angolare. I peli sono generalmente rappresentati con texture volumetriche, quindi per l animazione non è possibile usare un modello esplicito. In questo caso per animare i peli viene usata una funzione di densità volumetrica che varia nel tempo. Si possono simulare effetti dell aria sui peli usando una perturbazione spaziale stocastica, come turbolenza, rumore o moti browniani. Un metodo generale per le animazioni basate su questo tipo di perturbazioni è stato proposto da Dischler [27], oltre che da Lewis [28] e Perlin et al. [17, 18].

20 2.3 Rendering dei Capelli 18 Fig. 2.12: Due capigliature realizzate con il metodo di Choe et al. 2.3 Rendering dei Capelli L obiettivo principale nel rendering di capelli è riprodurre la diffusione della luce sulle fibre e la riflessione della luce sulla superficie dei capelli. Si deve inoltre tenere conto della proprietà delle fibre, dell assorbimento della luce nel volume dei capelli e dell inter-riflessione. Le maggiori difficoltà nel rendering di capelli derivano da varie ragioni: l elevato numero di capelli da rappresentare, la loro particolare geometria, il loro spessore e la complessa interazione che nei capelli troviamo tra luce e ombra. Negli ultimi anni il rendering di capelli è stato oggetto di molti studi e in alcuni casi di notevoli successi. Tuttavia, molti approcci funzionano in modo soddisfacente solo in alcune particolari condizioni e non offrono buone possibilità di realizzare un animazione. Parecchi studi si sono concentrati sul rendering dei peli di animali, che ha molti punti in comune con il rendering di fenomeni naturali. Il sistema di particelle introdotto da Reeves et al. [29] era pensato per modellare oggetti che hanno la tendenza a incresparsi come il fuoco. Malgrado la dimensione delle particelle sia minore di quella di un pixel, ogni particella viene visualizzata a seconda di come riflette la luce, reagisce alle ombre, oscura gli oggetti. E dunque necessario un sistema che per ogni pixel calcoli il contributo di ogni particella in esso contenuta. Il metodo presenta alcune limitazioni principalmente dovute al fatto che un sistema di particelle è inadeguato a rappresentare l ordine e l orientamento dei capelli. Nel rendering di peli animali sono stati ottenuti risultati sorprendenti. Con l introduzione dell hypertexture Perlin et al. [17] hanno prodotto ottime implementazioni di peli animali. Come già spiegato nel caso della dinamica dei capelli, questo approccio è stato migliorato da Kajiya et al. [19] che hanno esteso l uso dell hypertexture anche a oggetti più complessi. Mappando ripetutamente una sezione solida di texture sono stati in grado di applicare all oggetto sia le proprietà della superficie che i parametri dell illuminazione. Per il rendering delle texture solide hanno usato un modello di illuminazione simile a quello che viene usato per le densità volumetriche. Un metodo generale per il rendering di densità volumetriche viene illustrato sia da Kajiya et al. [19] che, più in dettaglio, da Eber et al. [30]. Chang et al. [14],

21 2.3 Rendering dei Capelli 19 invece, hanno preso in considerazione la luce diffusa, la luce speculare e la traslucenza di ogni capello integrando l approccio a texture volumetriche con un algoritmo modificato per l opacity shadow buffer [12]. Malgrado le texture volumetriche diano ottimi risultati per il rendering di peli di animali o di zone di capelli molto corti, non sembrano particolarmente adatte per il rendering di capelli lunghi. Fig. 2.13: Capigliatura realizzata da Chang et al. Per usare un modello esplicito basta modellizzare ogni capello come una curva cilindrica e rappresentarne ogni primitiva. Il numero di primitive da riprodurre è il principale ostacolo a questo metodo. Csuri et al. [31] hanno riprodotto zone di peli usando poligoni. Hanno rappresentato ogni capello come un triangolo poggiato su una superficie. Per nascondere la superficie sottostante hanno poi usato un algoritmo Z-buffer. Miller [32], però, ha ottenuto risultati migliori disegnando i capelli come piramidi triangolari. LeBlanc et al. [33] hanno proposto un approccio che prevede l uso di blending e shadow buffer. Questa tecnica si è rivelata uno dei metodi di rendering più efficaci (fig. 2.1). Bruderlin [4] ha illustrato alcuni semplici metodi per rappresentare l umidità nei capelli. L implementazione prevede che il gruppo di capelli orientati verso la luce sia più lucente di quelli orientati verso la parte opposta. Kong e Nakajima et al. [34] hanno usato dei buffer volumetrici per ridurre il tempo di rendering. Il buffer volumetrico è uno spazio tridimensionale definito dall utente in relazione alla memoria disponibile e alla risoluzione richiesta. In questo modo viene rappresentata una combinazione di capelli in background più sgranati e di capelli in superficie più dettagliati. La tecnica riduce considerevolmente il tempo di rendering, ma non offre risultati di buona qualità. Yan et al. [8] hanno introdotto per il rendering un metodo che potremmo definire ibrido. Dopo aver scelto di creare la capigliatura mediante un modello a ciocche, lo hanno combinato con il metodo delle texture volumetriche. Hanno utilizzato il ray tracing per calcolare gli estremi dei cilindri e successivamente hanno applicato lungo ogni raggio un normale rendering volumetrico per catturare le caratteristiche della densità.

22 2.4 Animazione dei Capelli nei Film 20 Fig. 2.14: Modello realizzato per l animazione Ruby: The Double Cross. Infine Scheuermann [35] ha presentato nel 2004 un modello che fa uso di mesh poligonali. Il metodo di shading è basato sul modello di Kajiya et al. [19] a cui è stata aggiunta una approssimazione in tempo reale della luce speculare. Inoltre, per approssimare l ordine di rendering back-to-end delle parti semi-trasparenti è stata usata una tecnica che disegna le parti opache e quelle trasparenti in passi separati (fig. 2.14). 2.4 Animazione dei Capelli nei Film Negli ultimi anni c è stato un grande interesse per la simulazione di capelli dovuto allo sviluppo di film d animazione e pacchetti software. In special modo molte ricerche nel campo della simulazione dei capelli sono state portate avanti dal gruppo di lavoro della Pixar [36], che ha realizzato parecchi film d animazione con il solo impiego dell informatica grafica. Fig. 2.15: Aki, la protagonista di Final Fantasy. Tra i programmi di rendering, Shave and a Haircut [37] è considerata una delle migliori plugin per la modellazione di capelli. Final Fantasy, invece, ha rappresentato un punto di svolta per la simulazione di capelli lunghi nei film d animazione. I capelli di Aki, la protagonista (2.15), sono modellati come

23 2.4 Animazione dei Capelli nei Film 21 una superficie deformabile e parte della simulazione è stata realizzata con l aiuto di una cloth plugin di Maya [38]. Dunque, i capelli sono vincolati ad una superficie che permette anche il ritorno alle condizioni iniziali, ma in questo modo è persa molta della mobilità laterale. In alcune situazioni i capelli di Aki scivolano via come fossero un unico pezzo di stoffa più che capelli singoli indipendenti. Nel 2002 in Monster & co., realizzato dalla Pixar, è stata proposta una efficace simulazione di peli lunghi per il personaggio di Sulley (fig. 2.16). Ogni pelo è rappresentato come un insieme di particelle connesse tramite molle rigide. Successivamente altri peli sono stati creati per interpolazione. L interazione tra capelli non viene considerata. Fig. 2.16: La pelliccia di Sulley prima e dopo l interpolazione dei peli. Ma è nel 2004 con Gli Incredibili, il quarto film della Pixar, che sono stati presentati i risultati più sorprendenti, in particolare per la capigliatura del personaggio di Violetta. Il gruppo di sviluppo della Pixar ha modellato i capelli utilizzando gli approcci di Chang et al. [14] e Ward et al. [39], considerando cioè per la simulazione solo un ristretto numero di capelli guida. Il resto dei capelli è stato realizzato per interpolazione. Fig. 2.17: Rappresentazione volumetrica della capigliatura di Violetta.

24 2.4 Animazione dei Capelli nei Film 22 La dinamica di ogni capello guida è stata modellizzata tramite un insieme di masse connesse da molle, con cui si ottiene un comportamento molto realistico per il movimento nell aria. Non è possibile, però, utilizzare questo approccio anche per la collisione capello-capello. Quindi per simulare l interazione tra capelli è stata scelta una rappresentazione volumetrica (fig. 2.17), che è stata anche utilizzata per realizzare lo scattering della luce sui capelli. Per modellare le proprietà di illuminazione e di movimento dei capelli hanno adottato una griglia tridimensionale. Hanno cioè ottenuto una rappresentazione volumetrica della massa dei capelli calcolando la densità dei capelli guida ad ogni vertice della griglia. Infine, hanno aggiunto della forze che variassero il gradiente della densità per simulare l effetto di forze esterne (fig. 2.19). Fig. 2.18: (a) La capigliatura di Violetta senza interazione tra capelli; (b) La capigliatura con interazione tra capelli. Fig. 2.19: Il modello di capelli prima che venga applicata una variazione di densità, dopo l applicazione e alla fine del rendering. Va detto che i film d animazione non hanno bisogno di essere creati in tempo reale e non devono essere interattivi. Inoltre, nei cartoni animati della Pixar, lo scopo non è creare umani realistici. C è una grande differenza tra creare personaggi umani realistici e personaggi di plastica. Si possono usare meno dettagli e un maggiore scattering delle superfici.

25 2.4 Animazione dei Capelli nei Film 23 (a) (b) Fig. 2.20: (a) Simulazione dei capelli; (b) Rendering dei capelli.

26 Capitolo 3 Metodo di Sviluppo In questo capitolo viene affronta in modo dettagliato il modello di capigliatura proposto e tutte le fasi del progetto che sono state prese in esame. Il modello fisico scelto per un singolo capello si basa su un sistema di particelle. Viene presentato un modello a particelle, la sua struttura, le grandezze fisiche che agiscono all interno, tutti i metodi fisici e matematici che sono stati adottati. Poiché la dinamica del capello è stata realizzata mediante vincoli di equidistanza, viene introdotta la dinamica dei vincoli e il metodo in cui è stata inserita nel progetto. Inoltre, per modellizzare la capigliatura nel suo complesso sono state utilizzate superfici parametriche scegliendo, in particolare, le superfici di Bézier. Viene esposta la teoria sulle curve di Bézier e la loro implementazione. Considerato che il movimento delle superfici viene regolato da punti di controllo, viene anche illustrata la loro integrazione con il sistema di particelle. Infine, viene analizzata la costruzione della capigliatura nel suo complesso: la sua inizializzazione, la gestione delle collisioni con la testa, lo sviluppo della simulazione e del rendering. 3.1 Sistema di Particelle Ogni singolo capello è stato modellato mediante un sistema di particelle. Il sistema gestisce autonomamente la simulazione fisica. Dunque, il sistema regola la dinamica di ogni capello indipendentemente dal resto dell applicazione. Poiché ogni capello è rappresentato tramite un sistema di particelle, per ogni capello si ha un procedimento di simulazione indipendente. Il procedimento di simulazione si può riassumere, in pseudo codice, nel modo seguente:

27 3.1 Sistema di Particelle 25 Per ogni time step: Per ogni capello: Per ogni particella del capello: Azzera tutte le forze di ogni particella Calcola la forza dovuta all accelerazione di gravità Calcola la forza dovuta all attrito con l aria Calcola la forza dovuta allo spostamento della radice Calcola la forza esterne al sistema di particelle Calcola le forze delle molle angolari Inserisce le reazioni vincolari Calcola le forze delle molle lineari Calcola la nuova posizione e velocità Aggiorna la posizione e la velocità Cerca le collisioni Risponde alle collisioni, per ogni collisione trovata (a) (b) (c) Fig. 3.1: Movimento del capello in seguenza Modello Fisico delle Particelle Le particelle sono definite come oggetti che hanno un massa, una posizione e una velocità. Rispondono alle forze a cui sono soggette, ma non hanno una dimensione fisica. Vengono, dunque, considerate come punti materiali che si muovono nello spazio. Poiché le particelle sono soggette a forze fisiche, il loro movimento è regolato dai tre principi della dinamica. Si definisce per ogni particella una posizione x e una velocità v, come due vettori nello spazio. Dalla seconda legge della dinamica, f = ma, abbiamo: ẍ = f/m (3.1) che è un equazione differenziale di secondo ordine in x, che può diventare di

28 3.1 Sistema di Particelle 26 primo ordine nella seguente formulazione: { v = f/m ẋ = v (3.2) Queste due equazioni definiscono il movimento di una particella nello spazio. Il movimento di ogni particella è, perciò, regolato dalla coppia [ẋ, v], che rispetto alle tre componenti sarebbe: [ẋ 1, ẋ 2, ẋ 3, v 1, v 2, v 3 ] = [v 1, v 2, v 3, f 1 /m, f 2 /m, f 3 /m] (3.3) che è vettore 6-dimensionale. Dunque, un sistema di n particelle è descritto da n coppie di equazioni e dai rispettivi 6n-vettori Soluzione Numerica di Equazioni Differenziali Nelle equazioni differenziali canoniche a valore iniziale, il comportamento del sistema è descritto da un equazione differenziale ordinaria (ODE) nella forma: ẋ = f(x, t) (3.4) in cui f è una funzione incognita, x è lo stato del sistema e ẋ è la sua derivata. Tipicamente, x e ẋ sono vettori. Nelle equazioni a valore iniziale è fornito anche il valore di x al tempo zero, x(t 0 ). Il problema può essere ricondotto a quello di un punto p che si muove nello spazio. Semplificando la trattazione e riducendola a un piano, si può dire che x(t) descrive il moto di un punto sul piano. In ogni punto x, può essere calcolata funzione f, che descrive un vettore sul piano. Dunque, f definisce sul piano un campo vettoriale (fig. 3.2). Il vettore ẋ è la velocità che fa muovere il punto lungo la curva x. Dato il punto iniziale x(t 0 ), tutti gli spostamenti successivi dipendono da f. Fig. 3.2: Campo vettoriale generato dalla funzione ẋ. Le soluzioni numeriche delle equazioni differenziali prendono intervalli di tempo discreto, detti time step. A ogni passo, mediante f, si calcola l incremento di x ( x) in un intervallo di tempo t. Poi si incrementa di x il valore di x: x(t + t) = x(t) + f(x, t) t (3.5)

29 3.1 Sistema di Particelle 27 Dunque, nei metodi numerici la funzione f è considerata una sorta di contenitore, a cui si danno in entrata x e t e che in uscita restituisce il valore numerico di ẋ. Metodo di Eulero Il metodo più semplice per risolvere le equazioni differenziali è il Metodo di Eulero. Dati come valore iniziale x 0 = x(t 0 ) e dt per il time step, l incremento di x, che definiamo x(t 0 + dt), sarà: x(t 0 + dt) = x 0 + ẋ dt (3.6) Malgrado sia estremamente semplice, il metodo di Eulero commette degli errori non trascurabili. Per limitare il problema, si possono usare time step più piccoli: in questo modo si diminuisce lo scarto dell errore, ma non si elimina completamente. L errore che si accumula in intervallo dipende linearmente dal time step. Questo significa che, adottando un adeguato time step, si può scegliere un errore accettabile per l implementazione. Inoltre, il metodo di Eulero è instabile. Se il time step non è sufficientemente piccolo, il sistema esplode. Altri metodi largamente usati per la risoluzione numerica sono Midpoint e Runge-Kutta. Gli errori commessi in questi casi sono più piccoli, ma l implementazione è notevolmente più complessa. ODE Solver Le equazioni differenziali possono rappresentare un insieme di masse, di molle, di corpi rigidi. Si vuole realizzare un risolutore di equazioni differenziali, detto ODE solver, in modo da definire dei metodi standard per interagire sul sistema. Per l ODE solver il sistema è un contenitore governato dalla funzione f(x, t). Ad ogni passo deve calcolare la funzione f per ogni valore di x e di t e successivamente aggiornare i valori x e t. Per far questo il sistema deve passare all ODE solver il suo stato e deve poter riceverne gli aggiornamenti. Nel caso di metodi a più passi (come Midpoint e Runge-Kutta) deve passare al solver anche lo stato dei passi intermedi Realizzazione del Sistema di Particelle Il modello fisico prevede che il sistema di particelle sia visto dall esterno come un elemento unico, un punto multidimensionale nello spazio. Dall interno, invece, è una complessa struttura che gestisce un insieme di oggetti distinti che interagiscono tra loro. In pratica si considera il sistema di particelle come un contenitore in cui governare il movimento delle masse. La simulazione di particelle coinvolge due aspetti differenti: lo stato delle particelle a ogni passo di simulazione e le forze ad esse applicate. Per quanto

30 3.1 Sistema di Particelle 28 Fig. 3.3: Struttura di una particella nella classe Mass. riguarda il primo aspetto, nella progettazione è stata definita una classe Mass che rappresenta una particella e tutte le sue proprietà. All inizio della simulazione vengono assegnate la posizione e la velocità della particella e le forze vengono inizializzate a zero. A ogni passo di simulazione, le forze che influiscono sulla particella vengono sommate nell accumulatore di forze. La classe Mass è caratterizzata dai seguenti elementi (fig. 3.3): massa: la massa della particella; posizione: un vettore che indica la posizione al tempo t; velocità: un vettore che indica la velocità al tempo t; forza: un accumulatore di forze, ossia un vettore che tiene conto di tutti i contributi delle forze; una funzione applyforce: mediante la quale si aggiunge il contributo delle forze che agiscono sulla particella; una funzione init: a ogni passo di simulazione, inizializza le forze a zero; Fig. 3.4: Struttura del classe MassSystem. Per implementare il sistema di particelle, si è creata una classe MassSystem, in cui vengono definiti (fig. 3.4):

31 3.1 Sistema di Particelle 29 il numero di particelle contenute nel sistema; un insieme di oggetti Mass, mediante un puntatore a classi Mass; la variabile di tempo del sistema; E affidata alla classe MassSystem la gestione del ciclo di simulazione. Ciò significa che il sistema deve calcolare tutte le forze che agiscono sulle particelle, risolvere l equazione differenziale, aggiornare le grandezze interessate. Per ogni passo di simulazione, dunque, il procedimento prevede: - inizializzazione degli accumulatori di forze; - computazione delle forze del sistema; - risoluzione del sistema differenziale; - aggiornamento dello stato del sistema; Il contributo di ogni forza viene calcolato mediante una funzione compute, mentre altre due funzioni, updatestate e simulate, si occupano di risolvere le equazioni differenziali e aggiornare il sistema. Queste due funzioni rappresentano l ODE solver (fig. 3.5). Per la risoluzione numerica è stato scelto il metodo di Eulero esplicito. Questa implica che ad ogni passo n di simulazione, per ogni particella i il sistema calcola: { v n+1 i x n+1 i = v n i + t fn i /m i = x n i + t vn+1 i (3.7) Fig. 3.5: Struttura dell ODE solver.

32 3.1 Sistema di Particelle 30 Fin qui è stato realizzato un sistema generico, che sarebbe valido per qualunque modello a sistema di particelle. Per un implementazione più specifica del modello di capelli è stata creata la classe SingleHair derivata dalla classe MassSystem. Nella SingleHair sono state introdotte variabili e funzioni per la gestione delle forze applicate ai capelli, dei vincoli di equidistanza, delle collisioni e del controllo del capello. Questa classe possiede, dunque, una struttura che tiene conto di: un insieme di particelle; un insieme di molle lineari e relative costanti (costante della molla, lunghezza a riposo, costante di frizione della molla); un insieme di molle angolari e relative costanti; vincoli di equidistanza e relativi coefficienti; la posizione della radice di ogni capello; una molla di connessione con la radice del capello, che ne determina il movimento; forze che agiscono sulle particelle (come gravità, attrito dell aria, forza del vento) risposte alle collisioni. Tutte le costanti sono passate al sistema tramite il costruttore Forze Il modello fisico prevede che le particelle siano soggette a forze di diverso tipo e che a tali forze rispondano adeguatamente. Mentre tutte le particelle si comportano sostanzialmente in modo simile, le forze che agiscono su di esse possono essere di tipo diverso. Si è progettato il modello in modo che sia possibile aggiungere diversi tipi di forze, senza dover intervenire sulla struttura complessiva del sistema. Per le forze più complesse è stato utilizzato un oggetto forza. Ogni forza, mediante i rispettivi metodi, ha accesso a tutte le particelle e può aggiungere il suo contributo all accumulatore di forze della particella (fig. 3.6). A seconda delle loro caratteristiche, le forze applicate al sistema possono essere raggruppate in tre principali categorie: 1. forze che agiscono uniformemente su tutte le particelle: come la forza di gravità e la forza di attrito dell aria. 2. forze che agiscono su più particelle contemporaneamente: come la forza delle molle.

33 3.1 Sistema di Particelle forze che agiscono su una o più particelle in modo indipendente: come possono essere le forze esterne o le forze in risposta alle collisioni. La forza di gravità Fig. 3.6: Le forze nel sistema di particelle. La forza di gravità f = mg, in cui g è l accelerazione di gravità, è di facile implementazione. Di conseguenza, non ha richiesto un oggetto specifico. Dopo essere stata calcolata viene aggiunta direttamente all accumulatore di forze di ogni particella, nel passo di computazione delle forze. Attrito dell aria La forza di attrito dell aria, come la forza di gravità, si applica a tutte le particelle secondo la legge f = k d v i, in cui k d è la costante di viscosità dell aria e v i la velocità di ogni singola particella. Dunque, dopo aver calcolato il suo contributo per ogni singola particella, viene aggiunta direttamente all accumulatore di forze. Molle La forza delle molle è una forza binaria, che interessa due particelle contemporaneamente. Il suo contributo su due particelle rispettivamente nel punto a e nel punto b corrisponde a: [ F a = k s ( l r) + k d l l l ] l l (3.8) F a = F b (3.9) dove F a e F b sono rispettivamente le forze applicate nei punti a e b, l = a b è la distanza tra le due particelle, r è la lunghezza della molla a risposo, k s è la costante di rigidezza della molla e k d è la costante di smorzamento. l è la derivata rispetto al tempo di l, ossia la differenza tra la velocità delle due

34 3.1 Sistema di Particelle 32 particelle v a v b. La forza della molla agisce simmetricamente su entrambe le particelle, per cui non ha alcun effetto sul movimento del loro centro di massa. Fig. 3.7: Molle lineari in un sistema di particelle. Le molle applicate al sistema di particelle sono di due tipi. Sono state introdotte molle lineari (fig. 3.7)tra due particelle contigue per correggere la deriva numerica a cui sono soggetti i vincoli di equidistanza. Sono state inserite molle, che definiamo angolari, per simulare adeguatamente la rigidezza del capello, al fine quindi di limitare l angolo di flessione del capello su stesso (fig. 3.8 a). Per realizzare le molle angolari, però, si è scelto di utilizzare molle lineari che connettono particelle non contigue (fig. 3.8 b). Dunque, la trattazione dei due gruppi di molle è del tutto simile. L unica differenza è che nel secondo caso è stata scelta una costante di rigidezza della molla poco elevata. (a) (b) Fig. 3.8: Si limita la flessione del capello inserendo molle lineari tra particelle non contigue. La forza della molle è realizzata tramite un oggetto molla. A ogni passo di simulazione, si richiama ogni oggetto molla del sistema e si calcola il suo contributo sulle particelle. Contributo che viene poi aggiunto nell accumulatore di forze. L oggetto molla è rappresentato dalla classe Spring, che è caratterizzata dai seguenti elementi: primo oggetto Mass: prima particella a cui è applicata la molla; secondo oggetto Mass: seconda particella a cui è applicata la molla;

35 3.1 Sistema di Particelle 33 costante di rigidità: la costante di rigidità della molla ne regola la durezza e ne controlla quindi l andamento oscillatorio; fattore di smorzamento: il fattore di smorzamento della molla. lunghezza a riposo: è la lunghezza della molla quando su di essa non agisce alcuna forza. la funzione computeforce: calcola il contributo della molla lineare sulle sue particelle. la funzione computeangleforce: calcola il contributo della molla - angolare sulle sue particelle. Forza esterna al sistema Fig. 3.9: Struttura dell oggetto molla. La struttura del sistema tiene conto delle forze esterne al sistema che agiscono su ogni singola particella. Per questo è stato implementato un oggetto forza esterna, che funziona come un accumulatore di forze. Durante la simulazione, ogni forza che agisce viene passata al sistema mediante la funzione setextforce Controllo del Movimento dei Capelli Per realizzare un applicazione interattiva è stato necessario introdurre una struttura che permettesse all utente di muovere il capello tramite la sua radice. Per questo è stato creato un oggetto punto di connessione, che l utente può muovere mediante i controlli della tastiera. Il punto è libero di muoversi nello spazio e allo stesso tempo determina la posizione della prima particella del capello. A tal fine, è stata introdotta una molla ausiliaria, con lunghezza a riposo nulla. Quindi, a ogni passo di simulazione, la prima particella del

36 3.2 Vincoli di Equidistanza 34 capello deve avere sempre le stesse coordinate spaziali del punto di connessione. Naturalmente, a ogni passo di simulazione si deve calcolare il contributo della forza della molla ausiliaria sulla prima particella del capello. Fig. 3.10: Il movimento del capello è guidato da un punto di connessione. 3.2 Vincoli di Equidistanza L idea generale nelle dinamiche dei vincoli è che il sistema non è composto solo da particelle e da forze, ma anche da vincoli che ne limitano il movimento: una particella, per esempio, può essere costretta a muoversi su una curva o due particelle possono essere costrette a mantenere una certa distanza. Il problema delle reazioni vincolari sta nel riuscire a far sì che le particelle obbediscano alle leggi di Newton e allo stesso tempo rispettino i vincoli geometrici. La questione non è di facile soluzione. Il modo migliore per implementarlo è calcolare direttamente le forze necessarie a soddisfare i vincoli, piuttosto che permettere che i vincoli siano violati e forzare il sistema a ritornare nelle posizioni permesse. Per far questo si adotta il cosidetto principio dei lavori virtuali. Inoltre, l implementazione anziché calcolare i vincoli per ogni particella affronta il problema nel suo complesso e calcola contemporaneamente i vincoli di tutto il sistema. Fig. 3.11: Le particelle sono connesse tra loro grazie ai vincoli di equidistanza.

37 3.2 Vincoli di Equidistanza Dinamica dei Vincoli Si adotta una visione uniforme e monolitica del problema. Anziché considerare lo stato di ogni particella singolarmente, si inserisce la sua posizione in un unico vettore di stato, detto q, che contiene le posizioni di tutte le particelle del sistema (in questo caso, manca la velocità). Date n particelle e considerando le tre dimensioni dello spazio, il vettore ha dimensione 3n. q = Si è poi definita una matrice delle masse, M, in cui gli elementi diagonali corrispondono alle masse di ogni particella, mentre gli altri elementi sono zero. Dunque, la matrice diagonale di n particelle in uno spazio 3D ha dimensione (3n x 3n) e i suoi elementi diagonali sono [m 1, m 1, m 1,..., m n, m n, m n ]. Inoltre, si definisce W la sua matrice inversa: W = M 1. m 1 m 1 M = x 1 x 2.. x n m 1... Anche le forze risultanti sono concatenate in un unico vettore. Si è creato un vettore globale delle forze, detto Q. Q = f 1 f 2.. f n m n Dunque, l equazione che governa tutto il sistema è: m n m n q = WQ (3.10) Naturalmente, è stata utilizzata una notazione globale anche per i vincoli. Sono state concatenate tutte le funzioni scalari dei vincoli fino a formare un unico vettore di funzioni: C(q), detta funzione globale dei vincoli.

38 3.2 Vincoli di Equidistanza 36 Quindi, se i vincoli del sistema sono m, la dimensione del vettore C sarà m. Assumendo, prima di tutto, che la configurazione delle particelle (definita per la posizioni in q e per le velocità in q) sia inizialmente ammissibile, si vuole trovare un vettore di forze ˆQ che sommato alle forze applicate Q permetta alle particelle di rispettare i vincoli di equidistanza. Si definiscono, quindi, la derivata prima e la derivata seconda di C 1 : Ċ = C q (3.11) q Poiché C q è definito lo Jacobiano di C ed è detto J, si riformula la 3.11 come: Ċ = Jq (3.12) Derivando ancora C rispetto al tempo, si ha: C = J q + J q (3.13) La grandezza J è la derivata rispetto al tempo dello Jacobiano ed essendo la derivata di una matrice rispetto a un vettore è particolarmente difficile da trattare. Per semplificare, quindi, si usa una formulazione equivalente: J = Ċ q. Dunque, combinando le equazioni 3.10 e 3.13 si ha: che eguagliata a zero e sistemata diventa: C = J q + JW(Q + ˆQ) (3.14) JW ˆQ = J q JWQ (3.15) Quest ultima equazione ha ancora due incognite. Per il risolvere il problema si sfrutta il principio dei lavori virtuali. Si considerano come velocità ammesse tutte quelle che soddisfano l equazione Jẋ = 0. Affinché i vincoli non compiano lavoro deve essere: ˆQ ẋ = 0. Dunque, i vettori ˆQ che soddisfano queste condizioni sono: ˆQ = J T λ (3.16) Restringere le forze vincolari a questo insieme equivale ad assicurarsi che il prodotto scalare tra le forze vincolari e una qualsiasi delle configurazioni ammesse sia sempre pari a zero, che è esattamente la condizione del principio dei lavori virtuali. J T λ rappresenta l insieme delle configurazioni illegali e gli elementi di λ sono detti moltiplicatori di Lagrange. Sostituendo nella 3.15 si ottiene: JWJ T λ = J q JWQ (3.17) 1 Poiché C e q sono due vettori, la derivata di uno rispetto all altro è una matrice, che si ottiene dalla derivata scalare di ogni elemento di C rispetto a ogni elemento di q.

39 3.2 Vincoli di Equidistanza 37 che è un equazione matriciale a una sola incognita λ. JWJ T λ è una matrice quadrata delle dimensioni di C. Trovato λ, è sufficiente usare l equazione 3.16 per ricavare le forze vincolari. Questo metodo, comunque, genera una deriva numerica che va tenuta in considerazione. Per questo nel modello del capello, dopo la computazione delle forze vincolari, vengono inserite delle molle lineari tra particelle contigue Realizzazione dei Vincoli di Equidistanza In un singolo capello le particelle sono connesse tramite vincoli di equidistanza. Non c è, dunque, una vera struttura che le lega l una all altra, sono i vincoli a mantenerle collegate. I vincoli di equidistanza sono integrati nel sistema di particelle. Gli elementi che caratterizzano i vincoli sono stati inseriti nella classe SingleHair, in cui sono state aggiunte tutte le grandezze necessarie all implementazione. Questi elementi sono: Matrice W: rappresenta l inversa di M, la Matrice delle masse; Vettore q: rappresenta il Vettore di Stato; Vettore Q: rappresenta il Vettore globale delle forze; Vettore ˆQ: rappresenta il Vettore delle forze vincolari; Vettore q: è la derivata rispetto al tempo del Vettore di Stato q; Matrice J: rappresenta lo Jacobiano; Matrice J: è la derivata rispetto al tempo dello Jacobiano; Vettore J q: rappresenta il prodotto tra J e q; Matrice J T : è la trasposta dello Jacobiano; Vettore λ: rappresenta i moltiplicatori di Lagrange; Come è stato spiegato in 3.2.1, il sistema di vincoli viene trattato nel suo complesso mediante calcolo vettoriale e matriciale. A ogni passo di simulazione l applicazione provvede a risolvere le seguenti equazioni matriciali: JWJ T λ = J q JWQ e, una volta trovato λ, si possono calcolare le forze vincolari dall equazione: ˆQ = J T λ A tal fine, quindi, si costruisce il vettore q inserendo nell elemento i-esimo la posizione della particella i-esima. Lo stesso dicasi per i vettori q e Q, in cui

40 3.2 Vincoli di Equidistanza 38 si inseriscono rispettivamente le velocità e le forze applicate delle particelle. Si costruisce poi la matrice W inserendo negli elementi diagonali i valori delle masse. Successivamente si provvede a calcolare le matrici J, J, J T e il Fig. 3.12: La matrice dello Jacobiano e il contributo per ogni vincolo. vettore J q. In particolare, date n particelle del sistema, m vincoli C m ed essendo J = C q, si ha una matrice: J = C 0 C 0 C 0 x 0 y 0 C m x 0 C m y 0 C 0 C 0 C 0 x n y n z n z C m z 0... C m x n C m y n Inoltre, poiché per trovare J si dovrebbe calcolare J = Ċ q, si semplifica la trattazione considerando: Ċ = C q = J q q C m z n in questo modo, per ottenere J, sarà sufficiente derivare Ċ rispetto a q. Poiché il vincolo di equidistanza riguarda coppie di particelle a cui successivamente viene applicata anche una molla, parte dell implementazione è stata integrata nella classe Spring. Mediante una funzione computeconstraint Coeffs, per ciascun oggetto Spring viene calcolato il contributo di ogni coppia di particelle alla matrice Jacobiana, ossia per ogni vincolo m i contributi al vettore: J = ( Cm x 0 C m y 0 C m z 0... C m x n C m y n ) C m z n e si calcolano anche i contributi a J e al vettore J q. Si fa notare che nelle matrici J e J, per ogni vincolo m sono presenti solo gli elementi relativi alle particelle vincolate, mentre tutti gli altri elementi risultano pari a zero. Di conseguenza, dato l m-esimo vincolo del sistema e dette p 1 e p 2 le due particelle tramite esso vincolate, si calcolano i seguenti contributi:

41 3.2 Vincoli di Equidistanza 39 - Per la particella p 1 si calcola: J 1 = Cm q 1 J 1 = Ċm q 1 J 1 q 1 = Ċm q 1 q 1 - Per la particella p 2 : J 2 = Cm q 2 J 2 = Ċm q 2 J 2 q 2 = Ċm q 2 q 2 dove q 1 e q 2 sono le coordinate nello spazio di p 1 e p 2, mentre J i e J i sono due vettori che rappresentano il contributo della particella i-esima al vincolo m-esimo secondo le tre componenti dello spazio. Questi due vettori, dunque, saranno gli unici elementi diversi da zero della riga m-esima nelle matrici J e J. Si è visto, inoltre, che dato un vincolo di equidistanza C = l r queste grandezze sono facilmente esprimibili mediante le seguenti relazioni: C = l q 1 l C = l q 2 l Ċ = l l l dove l è la distanza tra le due particelle, l è la differenza tra le velocità delle due particelle e r è la distanza imposta. In conclusione, si dà una sintetica descrizione del procedimento complessivo. Dopo aver inizializzato tutti i vettori e le matrici, assieme ad altre grandezze ausiliarie, i passi per il calcolo delle reazioni vincolari risultano essere i seguenti: Per ogni passo di simulazione: Per ogni oggetto Spring: Si calcolano i coefficienti della matrice J; Si calcolano i coefficienti della matrice J; Si calcolano i coefficienti del vettore J q; Si aggiorna q con le posizioni delle particelle; Si aggiorna q con le velocità delle particelle; Si aggiorna Q con le forze applicate alle particelle; Si aggiorna la matrice J inserendo i contributi calcolati in Spring; Si aggiorna il vettore J q inserendo i contributi calcolati in Spring; Si risolve l equazione vincolare di 3.17 e si trova λ;

42 3.3 Superfici di Bézier 40 Si calcolano le forze vincolari ˆQ; Si aggiungono le forze vincolari ˆQ all accumulatore di forze di ogni particella. Fig. 3.13: I vincoli di equidistanza sono integrati nel sistema di particelle. 3.3 Superfici di Bézier Per realizzare la capigliatura completa sono state introdotte texture di capelli modellate su superfici parametriche. In questo modo si è ridotto il numero di oggetti da disegnare. Infatti, anziché riprodurre ogni singolo capello, viene rappresentato un gruppo di capelli mediante una superficie di Bézier. Le superfici possono raffigurare una ciocca di capelli di forma diversa a seconda dell acconciatura. Infine, tutte le strisce bidimensionali sono state attaccate alla testa. Tipicamente, un modello di capigliatura utilizza meno di 20 mila capelli, che vengono implementati singolarmente. Modellando i capelli come superfici parametriche, invece, ciascuna striscia rappresenta decine di capelli. Ogni superficie di Bézier è controllata mediante 16 punti di controllo. Questo significa che l animazione può essere realizzata con meno di 40 strisce in totale e, dunque, con meno 640 punti di controllo (fig. 3.14) Curve di Bézier Nelle rappresentazioni parametriche, ogni coordinata è funzione di un parametro t. x = f 1 (t) y = f 2 (t) z = f 3 (t)

43 3.3 Superfici di Bézier 41 (a) (b) Fig. 3.14: La ciocca (a) è realizzata mediante la superficie (b). Il parametro t è detto coordinata curvilinea della curva e viene normalizzato in modo da variare tra 0 e 1. Le funzioni f i (t) sono solitamente di tipo polinomiale: x = a 3 t 3 + a 2 t 2 + a 1 + a 0 y = b 3 t 3 + b 2 t 2 + b 1 + b 0 z = c 3 t 3 + c 2 t 2 + c 1 + c 0 Una generica formulazione di una curva di Bézier, che prende il nome da Pierre Bézier, è la seguente: Q(t) = n P i f i (t) (3.18) k=0 dove Q(t) è il vettore delle coordinate di un punto generico della curva, P i rappresentano gli n + 1 punti di controllo e le f i (t) sono le funzioni che definiscono l influenza dei singoli punti sull andamento della curva. Inoltre, una curva di Bézier passa sempre per il primo e l ultimo dei punti di controllo. La curva cubica di Bézier viene definita da due punti estremi (P 1 e P 4 ) e da ulteriori due punti (P 2 e P 3 ), che indirettamente determinano le tangenti nei punti estremi. La curva di Bézier interpola i due punti estremi e approssima gli altri due. Dunque, l equazione delle curva di terzo grado è la seguente: Q(t) = (1 t) 3 P 1 + 3t(1 t) 2 P 2 + 3t 2 (1 t)p 3 + t 3 P 4 (3.19) I quattro polinomi f(t), ossia le funzioni che interpolano i quattro punti di controllo, sono detti polinomi di Bernstein e sono mostrati in fig

44 3.3 Superfici di Bézier 42 Fig. 3.15: Polinomi di Bernstein. Come si vede dai grafici, la curva di Bézier deve passare dai punti P 1 e P 4. Inoltre, la somma delle quattro funzioni è pari a 1, per ogni t fra 0 e 1. Nessuna di esse è mai negativa. Quindi Q(t) è una media pesata dei quattro punti di controllo ed è contenuta nel poligono convesso formato da questi punti. Le curve di Bézier costituiscono un caso particolare di NURBS 2. L estensione della trattazione alla rappresentazione di superfici parametriche è immediata, poiché valgono le stesse considerazioni fatte per le curve. Anziché usare un solo parametro t, si useranno due parametri u e v, uno per ogni dimensione Realizzazione delle Superfici di Bézier Per rappresentare una superficie di Bézier, detta anche patch, sono stati usati 16 punti di controllo (4 per ogni dimensione) e due variabili u e v. La superficie di Bézier viene dunque modificata e deformata dai suoi 16 punti di controllo. Visualizzazione della patch Per trovare un punto sulla superficie di Bézier non si fa altro che usare l equazione 3.19 rispetto a v e poi rispetto a u. In sintesi il procedimento è il seguente: - data una v, si calcola un punto lungo 4 curve parallele; - i quattro punti trovati si usano per costruire una nuova curva; - lungo questa curva si trova un punto per u. I punti trovati con questo metodo vengono poi usati per disegnare una superficie di Bèzier mediante poligoni triangolari. Il procedimento viene reiterato tante volte quanto è il numero di segmenti con cui si è deciso di 2 Non Uniform Rational B-Splines.

45 3.3 Superfici di Bézier 43 tassellare la curva. Naturalmente, più elevato è il numero delle suddivisioni, migliore sarà la rappresentazione della curva. In fase di progettazione, il numero di suddivisioni è stato definito mediante la variabile div, che può essere modificata durante l animazione. Infine, si applica a ogni patch la texture di capelli e la trasparenza viene generata mediante alpha map. (a) (b) Fig. 3.16: La trasparenza è realizzata mediante alpha map. Animazione della patch Il movimento e la deformazione della ciocca vengono definiti dai suoi punti di controllo. Ogni punto di controllo è rappresentato da una particella. Poiché sono stati scelti 16 punti di controllo, per animare una ciocca sono necessari 4 capelli, composti da 4 particelle ciascuno. Quindi, per controllare una ciocca sono necessari 4 sistemi-capello e 16 particelle in tutto. Poiché i punti di controllo si muovono esattamente come le particelle del sistema, si può dire che essi seguono fedelmente il modello fisico del sistema. Fig. 3.17: Punti di controllo di una superficie di Bèzier. Inoltre, per rendere il movimento più realistico, sono state aggiunte delle molle orizzontali che connettono particelle omologhe di capelli contigui. La prima particella del primo capello è stata connessa alla prima particella del secondo capello. La prima particella del secondo capello è stata collegata alla prima del terzo capello e così via. Questo metodo genera, sostanzialmente,

46 3.4 Generazione della Capigliatura 44 una griglia di molle che impedisce alla patch di deformarsi eccessivamente e fa sì che rimanga più compatta. (a) (b) Fig. 3.18: La ciocca realizzata e i suoi 16 punti di controllo. 3.4 Generazione della Capigliatura Per generare l intera capigliatura è stato necessario costruire una testa senza i capelli e posizionare sopra di essa le ciocche di capelli secondo l acconciatura desiderata. Per rappresentare la testa è stata definita una mesh poligonale mediante un file in formato 3D Studio 3 (3DS). Il file 3DS fornisce tutte le informazioni necessarie a costruire un modello poligonale nello spazio. Ne definisce gli oggetti, i vertici, le facce, le normali e tutte le proprietà del colore, del materiale, della texture. L acconciatura è stata creata assegnando alle radici dei capelli una posizione nello spazio. La posizione delle radici è stata caricata nell applicazione da un file in formato ASCII Scene Export 4 (ASE), in cui viene definito per ogni punto-radice una coordinata spaziale (vedi fig. 3.19). Questo file è stato precedentemente creato grazie a 3D Studio Max (per il procedimento dettagliato si veda 3.5.3). Anche il file ASE definisce un modello tridimensionale, di cui però in questa implementazione si usano soltanto le informazioni sui vertici. Di conseguenza, è stato necessario usare alcuni oggetti per gestire la mesh della testa e le coordinate delle radici. A tale scopo, in entrambi i 3 3DS è il formato di file di 3D Studio MAX [48]. 4 ASE è un formato di file con cui si può esportare una scena tridimensionale.

47 3.4 Generazione della Capigliatura 45 casi, si è definito un oggetto t3dmodel. In ciascuno dei due casi si sono poi implementate funzioni specifiche. In fase di inizializzazione l applicazione esegue le seguenti operazioni: Creazione della mesh della testa. Tutte le informazioni relative alla mesh poligonale vengono caricate dal file 3DS. Grazie all oggetto t3dmodel e alle funzioni che per esso sono state definite, vengono caricati, memorizzati e gestiti i dati della mesh, delle sue facce, dei vertici, delle normali e le informazioni sui colori, sui materiali e sulle texture. In particolare, è stata create la funzione CreateTexture, che si occupa di tenere traccia di tutte le texture della mesh, e la funzione RenderModel, che disegna la mesh in fase di rendering. Assegnazione della posizione delle radici. Le coordinate delle radici dei capelli vengono caricate nell applicazione da il file ASE. Questo file è utilizzato per ottenere le informazioni sul numero totale dei vertici e sulle loro coordinate spaziali. Nell oggetto t3dmodel, dunque, vengono memorizzate solo le informazioni sui vertici e le sue funzioni si limitano a gestire solo questi dati. Generazione di tutti i capelli guida. Si crea un numero di capelli guida pari al numero dei vertici che sono definiti nel file ASE. Si costruisce un vettore di capelli che punta a oggetti SingleHair. Il vettore definisce un insieme di sistemi di particelle. Si generano quattro capelli alla volta, in modo che i capelli di ogni ciocca siano modellati in modo coerente tra loro. Poiché, infatti, ciascuna ciocca è bidimensionale e possiede delle deformazioni verso alcune direzioni che le danno la sua caratteristica forma ondulata, è importante che i capelli rispettino certe condizioni anche quando vengono attaccati sulla testa in diverse direzioni. Dunque, dalle coordinate delle radici, si stima la direzione della ciocca sulla testa e si generano di conseguenza i capelli. Dette r i le posizioni delle quattro radici di una ciocca, si calcola un vettore d = r 1 r 4 e si costruiscono i capelli in modo che le ondulazioni si trovino su piani normali al vettore d. Il metodo, naturalmente, risente di errori, in quanto le radici di una ciocca non sono mai perfettamente allineate, ma permette di generare in modo automatico le ciocche in tutte le diverse direzioni attorno alla testa, dalla nuca fino alla fronte. Successivamente per ogni capello creato si assegna una posizione e una velocità iniziale a tutte le particelle. Il punto di connessione tramite il quale si comanda il capello ha inizialmente la stessa coordinata della radice del capello. Durante l animazione poi il punto di connessione non fa altro che seguire il movimento della testa, determinando lo spostamento dei capelli insieme ad essa.

48 3.4 Generazione della Capigliatura 46 Generazione delle superfici di Bézier. Dopo aver creato singolarmente tutti i capelli guida, vengono costruire tutte le superfici di Bézier. E stata utilizzato un oggetto bezierlink che a ogni superficie di Bézier associa quattro capelli e 12 molle orizzontali. Date le 16 particelle contenute in una ciocca, infatti, vengono generate le 12 molle orizzontali tramite oggetti Spring, a cui viene assegnata una bassa costante di rigidezza e una lunghezza a risposo variabile a seconda della posizione della ciocca sulla testa. A ogni ciclo di simulazione, vengono calcolate le forze delle molle orizzontali e successivamente aggiunte tra le forze esterne che agiscono sulle particelle. A ogni frame, infine, le posizioni dei punti di controllo delle patch vengono aggiornate. Caricamento delle texture di capelli. Il caricamento e la gestione delle texture è stato realizzato grazie alla funzioni messe a disposizione della libreria G3D [47]. Questa libreria gestisce in modo molto semplice tutti i formati più comuni di immagini. Assieme all immagine della texture può essere caricata un immagine con alpha map. Anche la renderizzazione della texture e la sua relativa trasparenza sono automaticamente ottenute grazie a chiamate G3D. In fase di inizializzazione, sono state caricate due texture diverse, in modo che si possa cambiare la texture anche durante l animazione. Fig. 3.19: Le posizioni delle radici vengono definite con 3D Studio Max.

49 3.4 Generazione della Capigliatura Collisione dei Capelli con la Testa Per la verifica delle collisioni dei capelli con la testa, la testa è stata approssimata ad una sfera S. Si rivela una collisione quando una particella risulta all interno del volume della sfera. Quindi, detta p la posizione di una particella nello spazio, r il raggio della sfera S e c il suo centro, si ha una collisione quando: p c < r. Per ogni collisione rilevata, si applica alla particella una forza che la riporta oltre la superficie della sfera. Quindi, detto t il punto sulla sfera che è più vicino a p, tra il punto p e il punto t si applica una molla di lunghezza a riposo pari a zero. Il vettore t, tra l altro, si calcola facilmente come la somma dei vettori: t = p + dp, dove dp è un vettore normale alla sfera e di lunghezza pari alla distanza tra p e la superficie della sfera. Quindi, durante la simulazione i passi per la verifica della collisione e per la relativa risposta sono i seguenti: Per ogni capello guida: Per ogni particella: si calcola la distanza tra p e il centro della sfera: p c ; se p c < r, allora si rivela una collisione; se c è collisione, viene calcolato il punto t sulla sfera. tra il punto t sulla superficie della sfera e la particella interna p, si introduce una molla di lunghezza a riposo pari a zero, in modo che la forza della molla costringa la particella fuori dal volume della sfera (vedi fig. 3.20); La risposta alla collisione si aggiunge alle forze esterne che agiscono sulla particella p. Per ogni collisione rivelata si applica una forza del tipo: F response = k ( p t ) N (3.20) in cui k è la costante di rigidezza della molla, p t è la distanza tra i punti p e t, e N è la normale alla sfera. Si fa notare, che le collisioni vengono rivelate tra le particelle e la testa, ossia tra i punti di controllo della superfici di Bézier e la testa, e non tra le superfici stesse e la testa. Queste metodo crea qualche imprecisione nei punti in cui le patch non si accostano molto ai loro punti di controllo, perché in quelle zone le patch possono a entrare nella mesh malgrado le condizioni sulle collisioni siano rispettate, ma risolve in maniera soddisfacente un problema che altrimenti sarebbe computazionalmente pesante da realizzare. Inoltre, il problema viene in gran parte risolto dall impiego delle molle orizzontali che tendono a mantenere le patch più compatte.

50 3.4 Generazione della Capigliatura 48 Fig. 3.20: Sotto l azione del vento le particelle sono forzate a rimanere sulla superficie della sfera.

51 3.4 Generazione della Capigliatura Realizzazione della Capigliatura Una volta completata tutta la scena, in fase di simulazione vengono eseguiti tutti i passi necessari ad animare i capelli in modo realistico. Dunque, a ogni passo di simulazione l applicazione ripete le seguenti operazioni: per ogni capello: calcolo della forza del vento su ogni particella; calcolo del contributo delle molle orizzontali su ogni particella; calcolo dello spostamento dovuto al movimento dei controlli-utente. esecuzione della simulazione in SingleHair; calcolo delle collisioni di ogni particella con la testa; generazione della risposta alle collisioni, se necessario; per ogni ciocca: aggiornamento della posizione dei punti di controllo; In fase di rendering, a ogni frame viene disegnata la mesh della testa. Successivamente vengono aggiunte tutte le ciocche. Alle ciocche viene applicata la texture su entrambi i lati e vengono sfruttate le proprietà dell alpha map per rendere la trasparenza. Il rendering delle ciocche, inoltre, viene eseguito tre volte per ciascuna ciocca. Si disegnano prima le parti opache e poi, in due fasi, quelle trasparenti. In questo modo si ottiene una buona approssimazione dell ordine di rendering back-to-end per le parti semi-trasparenti. Con questo metodo si è risolto il problema di ordinare gli oggetti, che in una struttura complessa come la capigliatura in movimento sarebbe stato difficile da realizzare in modo soddisfacente.

52 3.4 Generazione della Capigliatura 50 Fig. 3.21: La capigliatura in movimento, insieme ai capelli guida e ai punti di controllo.

53 3.5 Strumenti Utilizzati Strumenti Utilizzati L applicazione è stata sviluppata su un personal computer con processore Intel Centrino Duo 1.6 GHz e 1024 MB ddr sdram e sistema operativo Windows XP. L implementazione è avvenuta con Microsoft Visual C con il supporto delle librerie OpenGL e G3D OpenGL OpenGL (Open Graphics Library) è una libreria per lo sviluppo di applicazioni grafiche 2D e 3D. Dalla sua introduzione nel 1992, OpenGL è diventata l interfaccia di programmazione (API) grafica più usata e supportata in diversi linguaggi e piattaforme. L interfaccia consiste in più di 250 chiamate di funzione, che permettono di creare applicazioni interattive, di gestire oggetti geometrici 3D e immagini, di ottenere grafica ad alte prestazioni. E largamente usato per i videogiochi, per applicazioni di tipo CAD, per le animazioni 3D, per la realtà virtuale, per visualizzazioni scientifiche e simulatori di volo. OpenGL è una specifica che definisce un particolare processo di pipeline per la visualizzazione di immagini e figure geometriche. Inoltre, non scrive direttamente sullo schermo, ma accede a un framebuffer. OpenGL prende in input primitive di punti, di linee e di poligoni e li converte in pixel. Questo viene realizzato mediante una pipeline grafica detta OpenGL state machine e sono le variabili di stato a guidare il rendering. La specifica di OpenGL è supervisionata dall OpenGL Architecture Review Board (ARB). L ARB consiste in un insieme di aziende interessate a creare un API coerente e largamente utilizzabile. Fig. 3.22: Le librerie OpenGL. OpenGL è pensato per essere indipendente dall hardware, dal sistema operativo e dallo windowing system. Per questo non contiene comandi per gestire le finestre. Dunque, svolge due funzioni importanti: offre al programmatore un API unica e uniforme, e permette di superare le differenze hardware riscontrabili tra piattaforme diverse. Storicamente, OpenGL ha esercitato

54 3.5 Strumenti Utilizzati 52 una notevole influenza sullo sviluppo degli acceleratori 3D, promuovendo funzionalità che sono ormai di uso comune nelle schede video: punti, linee e poligoni disegnati come primitive base; l uso di pipeline per l illuminazione e le trasformazioni; lo Z-buffering; il texture mapping; alpha blending. Parecchie librerie sono state costruite sopra OpenGL per fornire funzionalità non disponibili. Alcune librerie, come GLU [42], sono incluse in tutte le implementazioni OpenGL, e altre invece possono essere aggiunte all ambiente di sviluppo, come GLUT [43] e SDL [41] (librerie per creare interfacceutente, gestire eventi, keyboard, mouse). Semplici interfacce grafiche, invece, possono essere costruite con librerie come GLUI [44] e FLTK [45]. (a) (b) Fig. 3.23: Librerie per Unix e per Windows G3D G3D è un 3D engine Open Source. E usato per i videogiochi, demo scientifiche, simulazioni militari e vari tipi di animazioni. G3D mette a disposizione una serie di routine e di strutture che possono essere utili a quasi tutti i programmi grafici. Funziona su Linux, Windows e OS X. Supporta tutte le implementazioni OpenGL. E costruito sopra OpenGL perché è una piattaforma indipendente. G3D non limita l accesso a funzionalità base: ogni funzione di OpenGL è disponibile anche sotto G3D. Questo significa che, quando è necessario, si possono usare direttamente funzioni di OpenGL. G3D gestisce con facilità le immagini nei formati PNG, TGA, BMP, JPG, PCX, PPM, PGM, PBM, DDS e ICO, grazie alle classi G3D::Texture e G3D::GImage. Inoltre, prevede anche il caricamento di alcuni formati di mesh come PLY2, IFS e MD2. G3D è compatibile con la maggior parte delle librerie. G3D usa SDL per la gestione delle finestre, ma si può sempre usare l API G3D::GWindow per sostituire SDL con librerie alternative. Infine, invece di OpenGL, è possibile usare G3D con DirectX. In fase di progettazione, la gestione dell applicazione è stata interamente affidata alle classi della libreria G3D. E stata usata anche per le finestre e per l interfaccia utente. Classi della libreria G3D sono state usate anche

Spline Nurbs. IUAV Disegno Digitale. Camillo Trevisan

Spline Nurbs. IUAV Disegno Digitale. Camillo Trevisan Spline Nurbs IUAV Disegno Digitale Camillo Trevisan Spline e Nurbs Negli anni 70 e 80 del secolo scorso nelle aziende si è iniziata a sentire l esigenza di concentrare in un unica rappresentazione gestita

Dettagli

UNIVERSITÀ DEGLI STUDI DI SIENA

UNIVERSITÀ DEGLI STUDI DI SIENA UNIVERSITÀ DEGLI STUDI DI SIENA FACOLTÀ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Informatica, orientamento Robotica ed Automazione Tesi di Laurea Interazione Visuo-Aptica con Oggetti Deformabili

Dettagli

La propagazione delle onde luminose può essere studiata per mezzo delle equazioni di Maxwell. Tuttavia, nella maggior parte dei casi è possibile

La propagazione delle onde luminose può essere studiata per mezzo delle equazioni di Maxwell. Tuttavia, nella maggior parte dei casi è possibile Elementi di ottica L ottica si occupa dello studio dei percorsi dei raggi luminosi e dei fenomeni legati alla propagazione della luce in generale. Lo studio dell ottica nella fisica moderna si basa sul

Dettagli

e-dva - eni-depth Velocity Analysis

e-dva - eni-depth Velocity Analysis Lo scopo dell Analisi di Velocità di Migrazione (MVA) è quello di ottenere un modello della velocità nel sottosuolo che abbia dei tempi di riflessione compatibili con quelli osservati nei dati. Ciò significa

Dettagli

GIROSCOPIO. Scopo dell esperienza: Teoria fisica. Verificare la relazione: ω p = bmg/iω

GIROSCOPIO. Scopo dell esperienza: Teoria fisica. Verificare la relazione: ω p = bmg/iω GIROSCOPIO Scopo dell esperienza: Verificare la relazione: ω p = bmg/iω dove ω p è la velocità angolare di precessione, ω è la velocità angolare di rotazione, I il momento principale d inerzia assiale,

Dettagli

TECNICA DELLE COSTRUZIONI: PROGETTO DI STRUTTURE LE FONDAZIONI

TECNICA DELLE COSTRUZIONI: PROGETTO DI STRUTTURE LE FONDAZIONI LE FONDAZIONI Generalità sulle fondazioni Fondazioni dirette Plinti isolati Trave rovescia Esecutivi di strutture di fondazione Generalità Le opere di fondazione hanno il compito di trasferire le sollecitazioni

Dettagli

Parte I. Prima Parte

Parte I. Prima Parte Parte I Prima Parte Capitolo 1 Introduzione generale 1.1 Il problema dell assegnazione Corsi-Borsisti Il problema dell assegnazione delle borse dei corsi ai vari studenti può essere riassunto nei punti

Dettagli

Forze come grandezze vettoriali

Forze come grandezze vettoriali Forze come grandezze vettoriali L. Paolucci 23 novembre 2010 Sommario Esercizi e problemi risolti. Per la classe prima. Anno Scolastico 2010/11 Parte 1 / versione 2 Si ricordi che la risultante di due

Dettagli

Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei patrimoni

Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei patrimoni CONVEGNO FACILITY MANAGEMENT: LA GESTIONE INTEGRATA DEI PATRIMONI PUBBLICI GENOVA FACOLTA DI ARCHITETTURA 06.07.2010 Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei

Dettagli

Capitolo V : Il colore nelle immagini digitali

Capitolo V : Il colore nelle immagini digitali Capitolo V : Il colore nelle immagini digitali Lavorare con il colore nelle immagini digitali L uso dei colori nella visione computerizzata e nella computer grafica implica l incorrere in determinate problematiche

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Procedure di calcolo implicite ed esplicite

Procedure di calcolo implicite ed esplicite Procedure di calcolo implicite ed esplicite Il problema della modellazione dell impatto tra corpi solidi a medie e alte velocità. La simulazione dell impatto tra corpi solidi in caso di urti a media velocità,

Dettagli

Novità di Access 2010

Novità di Access 2010 2 Novità di Access 2010 In questo capitolo: Gestire le impostazioni e i file di Access nella visualizzazione Backstage Personalizzare l interfaccia utente di Access 2010 Creare database utilizzando modelli

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

SPC e distribuzione normale con Access

SPC e distribuzione normale con Access SPC e distribuzione normale con Access In questo articolo esamineremo una applicazione Access per il calcolo e la rappresentazione grafica della distribuzione normale, collegata con tabelle di Clienti,

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

. Si determina quindi quale distanza viene percorsa lungo l asse y in questo intervallo di tempo: h = v 0y ( d

. Si determina quindi quale distanza viene percorsa lungo l asse y in questo intervallo di tempo: h = v 0y ( d Esercizio 1 Un automobile viaggia a velocità v 0 su una strada inclinata di un angolo θ rispetto alla superficie terrestre, e deve superare un burrone largo d (si veda la figura, in cui è indicato anche

Dettagli

www.andreatorinesi.it

www.andreatorinesi.it La lunghezza focale Lunghezza focale Si definisce lunghezza focale la distanza tra il centro ottico dell'obiettivo (a infinito ) e il piano su cui si forma l'immagine (nel caso del digitale, il sensore).

Dettagli

Matematica 1 - Corso di Laurea in Ingegneria Meccanica

Matematica 1 - Corso di Laurea in Ingegneria Meccanica Matematica 1 - Corso di Laurea in Ingegneria Meccanica Esercitazione su massimi e minimi vincolati 9 dicembre 005 Esercizio 1. Considerare l insieme C = {(x,y) R : (x + y ) = x } e dire se è una curva

Dettagli

EQUAZIONI DIFFERENZIALI. 1. Trovare tutte le soluzioni delle equazioni differenziali: (a) x = x 2 log t (d) x = e t x log x (e) y = y2 5y+6

EQUAZIONI DIFFERENZIALI. 1. Trovare tutte le soluzioni delle equazioni differenziali: (a) x = x 2 log t (d) x = e t x log x (e) y = y2 5y+6 EQUAZIONI DIFFERENZIALI.. Trovare tutte le soluzioni delle equazioni differenziali: (a) x = x log t (d) x = e t x log x (e) y = y 5y+6 (f) y = ty +t t +y (g) y = y (h) xy = y (i) y y y = 0 (j) x = x (k)

Dettagli

Approccio intermedio fra i precedenti

Approccio intermedio fra i precedenti Modelli usati per simulare il sistema respiratorio Ingegneria Biomedica Anno Accademico 2008-0909 Tommaso Sbrana Un modello è una rappresentazione di un oggetto o di un fenomeno che ne riproduce alcune

Dettagli

Teoria delle code. Sistemi stazionari: M/M/1 M/M/1/K M/M/S

Teoria delle code. Sistemi stazionari: M/M/1 M/M/1/K M/M/S Teoria delle code Sistemi stazionari: M/M/1 M/M/1/K M/M/S Fabio Giammarinaro 04/03/2008 Sommario INTRODUZIONE... 3 Formule generali di e... 3 Leggi di Little... 3 Cosa cerchiamo... 3 Legame tra N e le

Dettagli

Slide Cerbara parte1 5. Le distribuzioni teoriche

Slide Cerbara parte1 5. Le distribuzioni teoriche Slide Cerbara parte1 5 Le distribuzioni teoriche I fenomeni biologici, demografici, sociali ed economici, che sono il principale oggetto della statistica, non sono retti da leggi matematiche. Però dalle

Dettagli

come nasce una ricerca

come nasce una ricerca PSICOLOGIA SOCIALE lez. 2 RICERCA SCIENTIFICA O SENSO COMUNE? Paola Magnano paola.magnano@unikore.it ricevimento: martedì ore 10-11 c/o Studio 16, piano -1 PSICOLOGIA SOCIALE COME SCIENZA EMPIRICA le sue

Dettagli

Capitolo 4: Ottimizzazione non lineare non vincolata parte II. E. Amaldi DEIB, Politecnico di Milano

Capitolo 4: Ottimizzazione non lineare non vincolata parte II. E. Amaldi DEIB, Politecnico di Milano Capitolo 4: Ottimizzazione non lineare non vincolata parte II E. Amaldi DEIB, Politecnico di Milano 4.3 Algoritmi iterativi e convergenza Programma non lineare (PNL): min f(x) s.v. g i (x) 0 1 i m x S

Dettagli

Università degli studi di Messina facoltà di Scienze mm ff nn. Progetto Lauree Scientifiche (FISICA) Prisma ottico

Università degli studi di Messina facoltà di Scienze mm ff nn. Progetto Lauree Scientifiche (FISICA) Prisma ottico Università degli studi di Messina facoltà di Scienze mm ff nn Progetto Lauree Scientifiche (FISICA) Prisma ottico Parte teorica Fenomenologia di base La luce che attraversa una finestra, un foro, una fenditura,

Dettagli

Creare superfici. Le superfici. Informatica Grafica ][ Le superfici. Le superfici. Le superfici. Le superfici

Creare superfici. Le superfici. Informatica Grafica ][ Le superfici. Le superfici. Le superfici. Le superfici Informatica Grafica ][ Creare superfici Come visto nel corso di IG1, gli oggetti 3D vengono memorizzati attraverso le superfici che li delimitano. In Maya esistono 3 diverse classi di superfici: Marco

Dettagli

Piani di input e piani di calcolo reale in FaTA-e

Piani di input e piani di calcolo reale in FaTA-e 0 1 Piani di input e piani di calcolo reali in FaTA-e Dalla versione XX di FaTA-e è presente una nuova implementazione per il calcolo dei baricentri di massa e rigidezza. La nuova procedura consente di

Dettagli

DINAMICA DEL PUNTO MATERIALE E CONCETTO DI FORZA. Dinamica: studio delle forze che causano il moto dei corpi

DINAMICA DEL PUNTO MATERIALE E CONCETTO DI FORZA. Dinamica: studio delle forze che causano il moto dei corpi DINAMICA DEL PUNTO MATERIALE E CONCETTO DI FORZA Dinamica: studio delle forze che causano il moto dei corpi 1 Forza Si definisce forza una qualunque causa esterna che produce una variazione dello stato

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

1. Distribuzioni campionarie

1. Distribuzioni campionarie Università degli Studi di Basilicata Facoltà di Economia Corso di Laurea in Economia Aziendale - a.a. 2012/2013 lezioni di statistica del 3 e 6 giugno 2013 - di Massimo Cristallo - 1. Distribuzioni campionarie

Dettagli

Rendering air show e verifica della sincronizzazione

Rendering air show e verifica della sincronizzazione Capitolo 5 Rendering air show e verifica della sincronizzazione 5.1 Introduzione Il Rendering 3D dell evoluzioni acrobatiche costituisce uno degli aspetti cruciali dell applicazione realizzata. L ambiente

Dettagli

Rette e curve, piani e superfici

Rette e curve, piani e superfici Rette e curve piani e superfici ) dicembre 2 Scopo di questo articolo è solo quello di proporre uno schema riepilogativo che metta in luce le caratteristiche essenziali delle equazioni di rette e curve

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Relazione di fine tirocinio. Andrea Santucci

Relazione di fine tirocinio. Andrea Santucci Relazione di fine tirocinio Andrea Santucci 10/04/2015 Indice Introduzione ii 1 Analisi numerica con COMSOL R 1 1.1 Il Software.................................... 1 1.1.1 Geometria................................

Dettagli

Forze, leggi della dinamica, diagramma del. 28 febbraio 2009 (PIACENTINO - PREITE) Fisica per Scienze Motorie

Forze, leggi della dinamica, diagramma del. 28 febbraio 2009 (PIACENTINO - PREITE) Fisica per Scienze Motorie Forze, leggi della dinamica, diagramma del corpo libero 1 FORZE Grandezza fisica definibile come l' agente in grado di modificare lo stato di quiete o di moto di un corpo. Ci troviamo di fronte ad una

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Corso di Componenti e Impianti Termotecnici LE RETI DI DISTRIBUZIONE PERDITE DI CARICO LOCALIZZATE

Corso di Componenti e Impianti Termotecnici LE RETI DI DISTRIBUZIONE PERDITE DI CARICO LOCALIZZATE LE RETI DI DISTRIBUZIONE PERDITE DI CARICO LOCALIZZATE 1 PERDITE DI CARICO LOCALIZZATE Sono le perdite di carico (o di pressione) che un fluido, in moto attraverso un condotto, subisce a causa delle resistenze

Dettagli

Programma dettagliato del corso di MECCANICA RAZIONALE Corso di Laurea in Ingegneria Civile

Programma dettagliato del corso di MECCANICA RAZIONALE Corso di Laurea in Ingegneria Civile Programma dettagliato del corso di MECCANICA RAZIONALE Corso di Laurea in Ingegneria Civile Anno Accademico 2015-2016 A. Ponno (aggiornato al 19 gennaio 2016) 2 Ottobre 2015 5/10/15 Benvenuto, presentazione

Dettagli

VRay Map: VRayEdgesTex

VRay Map: VRayEdgesTex VRay Map: VRayEdgesTex INTRODUZIONE Uno dei classici impieghi della VRayEdgeTex consiste nella simulazione dell effetto filo di ferro, effetto simile a quello generato tramite l attivazione dell opzione

Dettagli

1 Serie di Taylor di una funzione

1 Serie di Taylor di una funzione Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita

Dettagli

I libri di testo. Carlo Tarsitani

I libri di testo. Carlo Tarsitani I libri di testo Carlo Tarsitani Premessa Per accedere ai contenuti del sapere scientifico, ai vari livelli di istruzione, si usa comunemente anche un libro di testo. A partire dalla scuola primaria, tutti

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Interazione luce - materia

Interazione luce - materia Interazione luce - materia 1 Modelli di illuminazione Il modello di illuminazione descrive l interazione tra la luce e gli oggetti della scena Descrive i fattori che determinano il colore di un punto della

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

DIMENSIONAMENTO DEL MARTINETTO PER RICIRCOLO DI SFERE

DIMENSIONAMENTO DEL MARTINETTO PER RICIRCOLO DI SFERE DIMENSIONAMENTO DEL MARTINETTO PER RICIRCOLO DI SFERE Per un corretto dimensionamento del martinetto a ricircolo di sfere è necessario operare come segue: definizione dei dati del dell applicazione (A)

Dettagli

LE STRATEGIE DI COPING

LE STRATEGIE DI COPING Il concetto di coping, che può essere tradotto con fronteggiamento, gestione attiva, risposta efficace, capacità di risolvere i problemi, indica l insieme di strategie mentali e comportamentali che sono

Dettagli

Sensori a effetto Hall bipolari con ritenuta stabilizzati e non stabilizzati con circuito chopper

Sensori a effetto Hall bipolari con ritenuta stabilizzati e non stabilizzati con circuito chopper Sensori a effetto Hall bipolari con ritenuta stabilizzati e non stabilizzati con circuito chopper I risultati dei test mostrano che è possibile ottenere prestazioni significativamente maggiori impiegando

Dettagli

La pista del mio studio Riflettiamo sulla pista. Guida per l insegnante

La pista del mio studio Riflettiamo sulla pista. Guida per l insegnante Riflettiamo sulla pista Guida per l insegnante Obiettivi educativi generali Compito di specificazione - possiede capacità progettuale - è in grado di organizzare il proprio tempo e di costruire piani per

Dettagli

Forza. Forza. Esempi di forze. Caratteristiche della forza. Forze fondamentali CONCETTO DI FORZA E EQUILIBRIO, PRINCIPI DELLA DINAMICA

Forza. Forza. Esempi di forze. Caratteristiche della forza. Forze fondamentali CONCETTO DI FORZA E EQUILIBRIO, PRINCIPI DELLA DINAMICA Forza CONCETTO DI FORZA E EQUILIBRIO, PRINCIPI DELLA DINAMICA Cos è una forza? la forza è una grandezza che agisce su un corpo cambiando la sua velocità e provocando una deformazione sul corpo 2 Esempi

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

1. Introduzione. 2. Simulazioni elettromagnetiche per la misura del SAR

1. Introduzione. 2. Simulazioni elettromagnetiche per la misura del SAR Relazione Tecnica Analisi simulative e misure con termocamera relative al confronto tra l utilizzo di un telefono smartphone in assenza e in presenza di dispositivo distanziatore EWAD Annamaria Cucinotta

Dettagli

CAPACITÀ DI PROCESSO (PROCESS CAPABILITY)

CAPACITÀ DI PROCESSO (PROCESS CAPABILITY) CICLO DI LEZIONI per Progetto e Gestione della Qualità Facoltà di Ingegneria CAPACITÀ DI PROCESSO (PROCESS CAPABILITY) Carlo Noè Università Carlo Cattaneo e-mail: cnoe@liuc.it 1 CAPACITÀ DI PROCESSO Il

Dettagli

13. Campi vettoriali

13. Campi vettoriali 13. Campi vettoriali 1 Il campo di velocità di un fluido Il concetto di campo in fisica non è limitato ai fenomeni elettrici. In generale il valore di una grandezza fisica assegnato per ogni punto dello

Dettagli

Transitori del primo ordine

Transitori del primo ordine Università di Ferrara Corso di Elettrotecnica Transitori del primo ordine Si consideri il circuito in figura, composto da un generatore ideale di tensione, una resistenza ed una capacità. I tre bipoli

Dettagli

IL METODO PER IMPOSTARE E RISOLVERE I PROBLEMI DI FISICA (NB non ha nulla a che vedere con il metodo scientifico)

IL METODO PER IMPOSTARE E RISOLVERE I PROBLEMI DI FISICA (NB non ha nulla a che vedere con il metodo scientifico) IL METODO PER IMPOSTARE E RISOLVERE I PROBLEMI DI FISICA (NB non ha nulla a che vedere con il metodo scientifico) [nota: Nel testo sono riportate tra virgolette alcune domande che insegnanti e studenti

Dettagli

Modulo di Meccanica e Termodinamica

Modulo di Meccanica e Termodinamica Modulo di Meccanica e Termodinamica 1) Misure e unita di misura 2) Cinematica: + Moto Rettilineo + Moto Uniformemente Accelerato [+ Vettori e Calcolo Vettoriale] + Moti Relativi 3) Dinamica: + Forza e

Dettagli

VALORE DELLE MERCI SEQUESTRATE

VALORE DELLE MERCI SEQUESTRATE La contraffazione in cifre: NUOVA METODOLOGIA PER LA STIMA DEL VALORE DELLE MERCI SEQUESTRATE Roma, Giugno 2013 Giugno 2013-1 Il valore economico dei sequestri In questo Focus si approfondiscono alcune

Dettagli

DigiCad 3D 8.5. Note di rilascio

DigiCad 3D 8.5. Note di rilascio Note di rilascio DigiCad 3D 8.5-1 - DigiCad 3D 8.5 Note di rilascio Queste note descrivono le differenze fra la versione 8.5 di DigiCad 3D e le versioni precedenti. Per maggiori informazioni si rimanda

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI 119 4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI Indice degli Argomenti: TEMA N. 1 : INSIEMI NUMERICI E CALCOLO

Dettagli

Modelli matematici e realtà:

Modelli matematici e realtà: Piano Lauree Scientifiche Matematica e Statistica 2010-11 Modelli matematici e realtà: sulle equazioni differenziali - prima parte R. Vermiglio 1 1 Dipartimento di Matematica e Informatica - Università

Dettagli

SENSORI E TRASDUTTORI

SENSORI E TRASDUTTORI SENSORI E TRASDUTTORI Il controllo di processo moderno utilizza tecnologie sempre più sofisticate, per minimizzare i costi e contenere le dimensioni dei dispositivi utilizzati. Qualsiasi controllo di processo

Dettagli

CONTROLLO IN TENSIONE DI LED

CONTROLLO IN TENSIONE DI LED Applicazioni Ver. 1.1 INTRODUZIONE CONTROLLO IN TENSIONE DI LED In questo documento vengono fornite delle informazioni circa la possibilità di pilotare diodi led tramite una sorgente in tensione. La trattazione

Dettagli

Sistema Informativo Geografico:

Sistema Informativo Geografico: Sistemi Informativi Geografici Sistema Informativo Geografico: È un sistema informativo che tratta informazioni spaziali georeferenziate, ne consente la gestione e l'analisi. Informazioni spaziali: dati

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

PROGETTO ESCAVATORE VIRTUALE

PROGETTO ESCAVATORE VIRTUALE PROGETTO ESCAVATORE VIRTUALE Facoltà di Ingegneria Industriale Corso di Laurea in Ingegneria Meccanica Anno Accademico 2011-2012 Matteo Condoleo 1 OBBIETTIVI Il presente progetto è stato realizzato per

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Massimi e minimi vincolati di funzioni in due variabili

Massimi e minimi vincolati di funzioni in due variabili Massimi e minimi vincolati di funzioni in due variabili I risultati principali della teoria dell ottimizzazione, il Teorema di Fermat in due variabili e il Test dell hessiana, si applicano esclusivamente

Dettagli

Project Cycle Management

Project Cycle Management Project Cycle Management Tre momenti centrali della fase di analisi: analisi dei problemi, analisi degli obiettivi e identificazione degli ambiti di intervento Il presente materiale didattico costituisce

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

La distribuzione Normale. La distribuzione Normale

La distribuzione Normale. La distribuzione Normale La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una

Dettagli

Il controllo della visualizzazione

Il controllo della visualizzazione Capitolo 3 Il controllo della visualizzazione Per disegnare in modo preciso è necessario regolare continuamente l inquadratura in modo da vedere la parte di disegno che interessa. Saper utilizzare gli

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete. Le equazioni Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete. Definizione e caratteristiche Chiamiamo equazione l uguaglianza tra due espressioni algebriche,

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

Dispositivi di rete. Ripetitori. Hub

Dispositivi di rete. Ripetitori. Hub Ripetitori Dispositivi di rete I ripetitori aumentano la distanza che può essere ragginta dai dispositivi Ethernet per trasmettere dati l'uno rispetto all'altro. Le distanze coperte dai cavi sono limitate

Dettagli

INTRODUZIONE AI SISTEMI CAD

INTRODUZIONE AI SISTEMI CAD INTRODUZIONE AI SISTEMI CAD 407 Introduzione Il termine CAD sta per Computer-aided Design. L interpretazione corretta del termine è quella di progettazione assistita dal calcolatore (e non di disegno assistito

Dettagli

ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI. (Visione 3D)

ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI. (Visione 3D) ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI () Una immagine (digitale) permette di percepire solo una rappresentazione 2D del mondo La visione 3D si pone lo scopo di percepire il mondo per come è in 3 dimensioni

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Sistemi Informativi Territoriali. Map Algebra

Sistemi Informativi Territoriali. Map Algebra Paolo Mogorovich Sistemi Informativi Territoriali Appunti dalle lezioni Map Algebra Cod.735 - Vers.E57 1 Definizione di Map Algebra 2 Operatori locali 3 Operatori zonali 4 Operatori focali 5 Operatori

Dettagli

Ottimizazione vincolata

Ottimizazione vincolata Ottimizazione vincolata Ricordiamo alcuni risultati provati nella scheda sulla Teoria di Dini per una funzione F : R N+M R M di classe C 1 con (x 0, y 0 ) F 1 (a), a = (a 1,, a M ), punto in cui vale l

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

(liberamente interpretato da http://www2.unipr.it/~bottarel/epi/homepage.html) SCHEDA ALUNNI. Descrizione dell attività:

(liberamente interpretato da http://www2.unipr.it/~bottarel/epi/homepage.html) SCHEDA ALUNNI. Descrizione dell attività: Pagina 1 di 11 (liberamente interpretato da http://www2.unipr.it/~bottarel/epi/homepage.html) SCHEDA ALUNNI Descrizione dell attività: Problema 1. Siamo nel 2060 ed ormai gli umani hanno colonizzato Marte.

Dettagli

Introduzione a 3ds Max

Introduzione a 3ds Max 3 Capitolo 1 Introduzione a 3ds Max 3ds Max è ad oggi uno dei più diffusi e dei più potenti software per la creazione di rendering tridimensionali in qualsiasi ambito, dall architettura al design, dalla

Dettagli

UN GRUPPO DI LAVORO EVOLVE

UN GRUPPO DI LAVORO EVOLVE GRUPPI DI LAVORO GRUPPO DI LAVORO Un gruppo di lavoro è costituito da un insieme di individui che interagiscono tra loro con una certa regolarità, nella consapevolezza di dipendere l uno dall altro e di

Dettagli

LA CORRENTE ELETTRICA

LA CORRENTE ELETTRICA L CORRENTE ELETTRIC H P h Prima che si raggiunga l equilibrio c è un intervallo di tempo dove il livello del fluido non è uguale. Il verso del movimento del fluido va dal vaso a livello maggiore () verso

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

9. Urti e conservazione della quantità di moto.

9. Urti e conservazione della quantità di moto. 9. Urti e conservazione della quantità di moto. 1 Conservazione dell impulso m1 v1 v2 m2 Prima Consideriamo due punti materiali di massa m 1 e m 2 che si muovono in una dimensione. Supponiamo che i due

Dettagli

3DE Modeling Color. E il modulo che si occupa della costruzione di modelli 3D con tessitura a colori.

3DE Modeling Color. E il modulo che si occupa della costruzione di modelli 3D con tessitura a colori. 3DE Modeling Color E il modulo che si occupa della costruzione di modelli 3D con tessitura a colori. E spesso necessario che alle informazioni geometriche di forma siano abbinate informazioni di colore

Dettagli

Lezione n 2 L educazione come atto ermeneutico (2)

Lezione n 2 L educazione come atto ermeneutico (2) Lezione n 2 L educazione come atto ermeneutico (2) Riprendiamo l analisi interrotta nel corso della precedente lezione b) struttura dialogica del fatto educativo Per rispondere a criteri ermenutici, l

Dettagli

Progettazione del robot

Progettazione del robot Progettazione del robot MINDSTORMS EV3 Anche quest anno abbiamo deciso di usare unmattoncinolegomindstormsev3.sitratta di un evoluzione dellaversione precedentenxt2.0, migliorata sotto diversi aspetti.

Dettagli