Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Introduzione alla modellazione delle trasformazioni

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Ciao e benvenuto alla lezione numero 10 del corso Computer Graphics. Stavamo discutendo della pipeline grafica. Per raccogliere, in computer grafica quello che facciamo, generiamo immagini 2D su uno schermo del computer e il processo di generazione di queste immagini 2D comporta una serie di stage, insieme queste fasi costituiscono la pipeline grafica.
Oggi iniziamo la discussione sulla seconda fase, ovvero la modellazione, chiamata anche trasformazione geometrica.
Allora, cosa c'è in questa fase?
Ora, quando abbiamo parlato di rappresentare oggetti nelle lezioni precedenti, quello che abbiamo implicitamente accennato è che gli oggetti erano rappresentati singolarmente. Ora, quando stiamo definendo quegli oggetti singolarmente, stiamo implicitamente utilizzando un sistema di coordinate che tipicamente viene chiamato sistema di coordinate locali o oggetti. Quindi, per ogni definizione oggetto stiamo avendo un coordina locale o di oggetto. Ora, all'interno di questo sistema di coordinate stiamo definendo l'oggetto.
Cosa significa? Il che significa, al momento della definizione degli oggetti, in realtà non stiamo dando fastidio troppo alla forma oggetto, alla dimensione e alla posizione rispetto ad altri oggetti. Così, abbiamo definito un oggetto, ma in essenza ci possono essere molteplici oggetti in cui questo particolare oggetto può avere una dimensione relativa o una posizione relativa o un orientamento relativo. Ma quando stiamo definendo l'oggetto nella propria coordinata locale, non prestiamo troppa attenzione a quei fattori.
Ma, quando andiamo a comporre una scena, che costituisce tutti gli oggetti che abbiamo definito, gli oggetti devono essere assemblati insieme. Ora, quando si parla di assemblare gli oggetti, cosa significa? Significa che gli oggetti dovrebbero essere messi in un modo che dice che la scena complessiva diventa percepibile. Quindi, la forma oggetto, la dimensione, l'orientamento ora è molto importante. Quindi, quando definiamo oggetti in proprio coordinate quelle cose non sono importanti, ma quando li assembmiamo diventa importante.
Così, quando cerchiamo di comporre una scena facendo attenzione alla relativa forma, dimensione, orientamento e posizione degli oggetti rispetto ad altri oggetti, siamo di nuovo implicitamente ipotizzando un altro sistema di coordinate, che tipicamente si chiama scena o più popolarmente il sistema di coordinate mondiali. Così, prima abbiamo affrontato il sistema di coordinate locali o oggetto, ora, dobbiamo occuparci di un altro sistema di coordinate popolarmente noto come sistema di coordinate mondiali.
E come ho detto, nel sistema di coordinate mondiali, le forme, le dimensioni, le posizioni, gli orientamenti di questi singoli oggetti devono essere a cura di, in modo da poter costruire la scena. Quindi, quelli diventano molto importanti ora, nel sistema di coordinate mondiali.
Come possiamo fare? Così, in precedenza abbiamo definito oggetti nel loro sistema di coordinate senza disturbare la forma relativa, la dimensione, la posizione, l'orientamento, ecc. Ora, li assembleremo insieme nella scena coordinata mondiale. E ora, dobbiamo pensare a quelle forme, dimensioni, orientazioni delle partizioni, in modo che la scena diventi percepibile. Possiamo farlo applicando alcune operazioni, effettuando alcune operazioni.
Queste operazioni trasformeranno gli oggetti dalla sua coordinata locale a coordinate mondiali. Così, al fine di creare le scene assemblando gli oggetti insieme, che a loro volta sono definiti nel proprio sistema di coordinate, quello che dobbiamo fare, dobbiamo eseguire alcune operazioni per trasformare gli oggetti dalla loro descrizione coordinata locale alla descrizione coordinata mondiale.
Ora, queste operazioni o la trasformazione avviene nella seconda fase della pipeline grafica. Vediamo un esempio. Qui abbiamo 2 oggetti, questo è oggetto 1 sulla figura più estrema e oggetto 2 nella figura di mezzo. Ora, vogliamo creare questo oggetto mostrato nella figura destra. Così, come potete vedere in questo oggetto in questo oggetto complessivo quello che abbiamo, abbiamo questi cilindri, quante istanze 1, 2, 3, 4 e l'altra forma quante istanze 1, 2 e 3.
Quindi, abbiamo 4 istanze di questo oggetto e 3 istanze di questo oggetto. E il modo in cui questi oggetti sono definiti nel loro sistema di coordinate non sono gli stessi del modo in cui sono definiti in questa scena, che è sul lato destro. Qui come potete vedere qui l'orientamento è diverso, l'orientamento è diverso è anche diverso in tutte le quattro istanze. Lo stesso vale per gli altri oggetti, le istanze dell'altro oggetto.
Quindi, queste coordinate dove gli oggetti sono originariamente definiti sono le coordinate locali o oggetto. La coordinata qui rappresentata dall'asse principale X, Y, Z nella figura destra è la coordinata mondiale. Qui stiamo assemblando più istanze delle definizioni oggetti originali per costruire l'oggetto complessivo. E come potete vedere qui, per farlo, è molto importante che gli oggetti siano messi in un luogo corretto, in un corretto orientamento e dimensioni adeguate. Ecco, questo è il lavoro della trasformazione che si svolge nella seconda fase.
Ora, dato che queste trasformazioni cambiano alcune proprietà geometriche o si svolge sulla geometria della definizione oggetto, quindi le chiamiamo trasformazioni geometriche. Inoltre è conosciuta come trasformazioni di modellazione.
Ora, queste trasformazioni di modellazione implicano l'applicazione di alcune operazioni sulla definizione oggetto in coordinate locali per trasformarle come componente della scena coordinata mondiale. Ecco, questo è ciò che possiamo più formalmente parlare della trasformazione di modellazione che sta applicando alcune operazioni sulla definizione oggetto per trasformarle come componente nella scena di coordinate del mondo.
Cosa sono quelle operazioni; infatti, ci possono essere molte operazioni di questo tipo. Vedremo presto quali sono quelle operazioni.
Ma tutte le operazioni possono derivare da una serie di operazioni di base. Quindi, sebbene in linea di principio possiamo applicare molte operazioni, ma queste operazioni possono essere pensate come derivate da una serie di operazioni di base.
Ora, diamo uno sguardo a quelle operazioni di base. Ci sono in realtà 4 tali operazioni di base, traduzione, rotazione, scaling e rasatura. Traduzione tutti quanti ne sappiamo, quello che fa, traduce l'oggetto da una posizione a un'altra. In rotazione, cosa facciamo? Ruotiamo gli oggetti per qualche angolo o in senso orario o antiorario intorno ad alcuni asse.
Con scaling cosa possiamo fare? Possiamo ridurre o aumentare la dimensione dell'oggetto. E infine, con lo shearing, possiamo cambiare la forma dell'oggetto. Si può notare qui che lo shearing è in senso più stretto, non una trasformazione di base e può essere ricavato come composizione di rotazione e scaling. Tuttavia, per semplicità, ipotizzeremo che si tratti di una trasformazione di base e lo creeremo di conseguenza. Quindi, allora, ripercoriamo. Quindi, abbiamo 4 trasformazioni di base, traduzione, rotazione, scaling e aratura. Tra di essi, l'aratura modifica la forma dell'oggetto; scalare cambia la dimensione dell'oggetto, la traduzione e la rotazione cambia la posizione e l'orientamento dell'oggetto. Ora, presumo che tu abbia qualche idea di queste operazioni e potrai sapere che queste operazioni modificano le proprietà geometriche degli oggetti in termini di modificarne la forma, la dimensione e la posizione. Da allora, così chiamiamo queste trasformazioni come trasformatori geometrici. Così possiamo chiamare le operazioni eseguite nella seconda fase come trasformazione di modellazione o trasformazione geometrica. Ora, passiamo in una discussione più approfondita su ognuna di queste trasformazioni. Iniziamo con la traduzione.
Cosa succede nella traduzione? Come potete vedere, supponiamo di avere un punto originale qui in questo frame di riferimento, che è denotato da P con coordinate x e y. Attraverso la traduzione possiamo riposiggere il punto a P tratteggiato con nuove coordinate x tratteggiate e y dash. Quindi essenzialmente stiamo spostando questo punto a un altro punto da una quantità di tx e di anta per ottenere il nuovo punto e questo spostamento avviene lungo la direzione x e y. Quindi usando questa conoscenza possiamo effettivamente ricavare la nuova coordinata rispetto alla vecchia coordinata. Che aspetto avrà? Così la nuova coordinata, la nuova coordinata x sarà x plus la quantità di spostamento lungo la direzione x e la nuova coordinata y sarà la coordinata y originale più la quantità di spostamento lungo la direzione y. Quindi si tratta di derivazioni semplici, e semplici da formulare. E queste sono le relazioni tra le nuove e le vecchie coordinate x e y dei punti.
Ora, questi spostamenti possono essere pensati in modi diversi. Quindi se ci spostiamo lungo asse positivo x asse o positivo y, allora lo chiamiamo spostamento positivo. Se ci muoviamo lungo asse negativo x asse o asse negativo, lo chiamiamo spostamento negativo. Quindi il segno della quantità di tx o di ty sarà diverso per gli spostamenti positivi o negativi.
Ora, spostiamo la nostra attenzione alla rotazione. Ora, in caso di rotazione, non abbiamo spostamenti orizzontali o verticali, invece abbiamo uno spostamento angolare. In altre parole, il punto si sposta da una posizione all'altra su una traccia circolare su qualche asse. Quindi, qui, stiamo avendo uno spostamento angolare e il punto si muove intorno ad un qualche asse. Seguiamo qualche convenzione tipicamente, cioè se il movimento è in senso antiorario, allora è positivo angolo di rotazione. Considerate questo esempio qui, abbiamo qui il punto originale. E ora, stiamo avendo il punto dopo la rotazione, dovrebbe essere denotato da x trattore, y dash e l'angolo di rotazione è di distanza. Ora, visto che ci stiamo muovendo nella direzione in senso antiorario, la chiamiamo angolo di rotazione positivo. Se ci stiamo muovendo in senso orario, allora tipicamente consideriamo che per essere un angolo di rotazione negativo. Quella è una convenzione tipicamente seguita. E in caso di rotazione 2D, tiriamo tipicamente che la rotazione avvenga intorno all'asse Z. Tuttavia, in seguito vedremo per la rotazione 3D quali sono le convenzioni.
Ora, cerchiamo di ricavare il rapporto tra le nuove e vecchie coordinate. Quindi, la vecchia coordinata è (x, y), la nuova coordinata è (x ', y'). Ora, come potete vedere, possiamo rappresentare x come (r cos θ), ora r è il raggio della traccia circolare e θ è l'angolo tra l'asse x e il punto originale e y è (r il peccato θ). Ora, come possiamo vedere x 'è se disegniamo una linea come questa, allora possiamo rappresentare x' come {(r cos θ) + Più}. Ora, se ci espandiamo allora otterremo {r cos cos θ cos - r il peccato di peccato}.
Da quando (r cos θ) è x, quindi è (x cos) e dato che (r il peccato θ) è y, così sarà (y peccato). Quindi, analogamente per y ', possiamo avere un'espressione simile {x sin + y cos}. Questi due sono rapporti tra la vecchia coordinata del punto e le nuove coordinate del punto. E come ho già accennato, il movimento angolare in senso antiorario è tipicamente considerato positivo, altrimenti è negativo. Ora, in caso di movimento angolare negativo, campiamo il segno dell'angolo di spostamento. Invece di andare a fare, useremo - Noi. Questo è l'unico cambiamento che faremo.
Così abbiamo imparato sulla traduzione e la rotazione. Come possiamo applicare queste trasformazioni ai punti? Il modo in cui abbiamo ricavato, hanno applicato a un punto. Per un oggetto abbiamo molti punti. Quindi, l'applicazione singola a un punto non sarà sufficiente. Quindi cosa dobbiamo fare? Ci limitiamo ad applicare su tutti i punti che compongono la superficie. Ora, potreste pensare che questo sia impossibile perché lì forse c'è un numero infinito di punti su una superficie. Tuttavia possiamo in realtà farlo applicando le trasformazioni a tutti i vertici in una rappresentazione di listino vertex o tutti i punti di controllo per una superficie spline.
Quindi, quando lo applichiamo, pensiamo essenzialmente ad alcune rappresentazioni, può essere una rappresentazione di elenco vertex come in caso di rappresentazione di mesh, oppure può essere una serie di punti di controllo come in caso di rappresentazione spline, e applichiamo le trasformazioni su ognuno di questi punti sono in modo che l'intero oggetto venga trasformato. E come ho accennato in precedenza, che applicando in questo modo possiamo modificare l'orientamento oggetto utilizzando la rotazione e la posizione utilizzando la traduzione. Quindi applicando la rotazione su tutti i vertici o su tutti i punti di controllo, possiamo cambiare l'orientamento dell'oggetto e applicando la traduzione su tutti i vertici o su tutti i punti di controllo, possiamo cambiare la posizione.
La terza trasformazione di base sta scalando. Cosa succede in scaling? Cambia la dimensione. Ora, i cambiamenti possono avvenire in entrambi i modi, o può diminuire o può aumentare. Quindi sia l'aumento che la diminuzione della dimensione oggetto è possibile con scaling. Ora, matematicamente come si definisce la scalatura? Viene definito come un'operazione di moltiplicazione delle coordinate oggetto da parte di alcune quantità scalari. Ora, queste quantità scalari sono note come fattori di scaling. Così essenzialmente stiamo moltiplicando i fattori di scala ai valori di coordinate per scalare o giù gli oggetti. Scalare significa aumentare la dimensione dell'oggetto, scalare significa diminuire la dimensione dell'oggetto. Quindi, a livello di punto, come possiamo capirlo? Così, dato un punto P, si moltiplica semplicemente la coordinata x con un fattore di scala lungo la direzione x e un fattore di scala lungo la direzione y, moltiplichiamo questo a y coordinati per ottenere il nuovo punto (x ', y'). Quindi, il rapporto tra le vecchie e le nuove coordinate sembrerà una cosa del genere. Così la nuova coordinata x 'può essere rappresentata in termini di x in questo modo, e la nuova coordinata y' può essere rappresentata in termini di y in questo modo, dove sx e sy sono i due fattori di scala lungo le corrispondenti x direzioni.
Ad esempio, qui abbiamo un oggetto e stiamo utilizzando il fattore di scala lungo x direzione per essere un terzo e scaling factor lungo y direction a metà. Ora, se moltiplico questi fattori di scala alle coordinate x e y dei vertici, otterrò 4 nuovi vertici come mostrato qui in questa figura di destra. Ora questi vertici insieme rappresenteranno l'oggetto. Dato che i fattori di scaling sono meno di 1, significa che stiamo scalando o diminuendo le dimensioni.
Così, come in caso di traduzione o rotazione, anche qui abbiamo fatto la stessa cosa. Ovvero abbiamo applicato le operazioni di scaling a tutti i punti che definiscono l'oggetto. Ora, se usiamo la rappresentazione di mesh, allora quei punti sono essenzialmente i vertici della lista dei vertici. Se stiamo utilizzando una rappresentazione spline, allora questi punti sono essenzialmente l'insieme dei punti di controllo. E applichiamo il fattore di scala a ciascuno di questi punti per ottenere i nuovi oggetti, i nuovi punti che definiscono l'oggetto.
Ecco, dovremmo notare una cosa. Quindi, se stiamo usando lo stesso fattore di scala lungo sia la direzione x che la y, allora questo tipo di scaling viene chiamato scaling uniforme. Altrimenti, quello che facciamo è la scalatura differenziale. Nell'esempio, abbiamo visto che il fattore di scaling lungo x direzione è un terzo e lungo per direzione è la metà quindi sono diversi, quindi abbiamo seguito in maniera effettiva la scalatura differenziale nell'esempio.
Ora, quando il fattore di scaling è, quando diciamo sx è maggiore di 1 poi lungo la direzione x stiamo scalando, quando sy è maggiore di 1, poi lungo la direzione y stiamo scalando o aumentando le dimensioni. Ora, quando entrambi sono superiori a 1, poi lungo entrambe le direzioni stiamo aumentando le dimensioni. Allo stesso modo, quando sx è inferiore a 1, stiamo riducendo o scaldando le dimensioni lungo x direzione.
Allo stesso modo, quando lo sy è meno di 1, stiamo riducendo o scaldando le dimensioni lungo la direzione y, quando entrambi sono meno di 1 poi ci scaldiamo lungo entrambe le direzioni contemporaneamente. E ovviamente se sx uguale a 1 o sy pari a 1, allora non ci sono variazioni di dimensioni. Un punto importante da sottolineare qui è che, durante la scalatura dell'oggetto può essere riposizionato, come abbiamo visto nell'esempio. Così originale vertex era a (3, 2) qui era a (9, 2) qui era a (9, 4) ed era a (3, 4). Ora dopo aver scalato, applicando i fattori di scala lungo x e y direzioni, abbiamo ottenuto un nuovo oggetto definito dai 4 vertici. Quali sono le coordinate? Abbiamo (1, 1) poi qui abbiamo (3, 1) qui abbiamo (3, 2) e qui abbiamo (1, 2). Ora, come potete vedere i vertici sono stati riposizionati. Ecco quindi uno degli effetti dello scaling.
Un effetto sta cambiando le dimensioni; l'altro effetto è che può portare al riposizionamento degli oggetti. La trasformazione di base finale si sta aringendo.
Cosa succede nell'avambraccio? Qui fondamentalmente cambia la forma dell'oggetto. Finora le trasformazioni che abbiamo imparato si occupano di modificare la posizione, l'orientamento e le dimensioni. Ora, la finale e la quarta rasatura di trasformazione di base ci permettono di cambiare anche la forma.
Come potete vedere in questo esempio, quindi abbiamo un oggetto qui, che dopo l'aratura si trasforma in questo oggetto con un cambio di forma? Ora, come scaling, lo shearing si riferisce anche essenzialmente alla moltiplicazione dei fattori di taglio lungo le direzioni x e y sull'oggetto originale o sul punto originale. Quindi se il punto originale è x, poi lo moltiplichiamo con il fattore di taglio per ottenere il punto trasformato x'. E lo stesso vale anche per y.
Ma, il rapporto è leggermente più complicato che scalare. Qui il nuovo punto è ottenuto con aggiunta più moltiplicazione. Quindi il nuovo punto è un'aggiunta della vecchia coordinata e un termine che è una moltiplicazione della vecchia coordinata con il fattore di taglio lungo quell' asse. Ma notare qui che per ottenere x ', la nuova x coordinata, usiamo vecchie coordinate x e anche vecchie coordinate y e il fattore di taglio lungo la direzione x.
Allo stesso modo, per ottenere nuove y coordinate usiamo la vecchia coordinata y e anche la vecchia coordinata x e il fattore di taglio lungo la direzione y. Ecco allora la differenza, leggermente più complicata di scalare. E ci permette di cambiare la forma dell'oggetto. Ora, il rapporto è stabilito tra vecchi e nuovi punti. Come nei casi precedenti, le precedenti 3 trasformazioni, in caso di fruttamento anche, possiamo effettivamente applicare le operazioni su tutti i punti sulla superficie per modificare la forma di tutta la superficie. Se seguiamo una rappresentazione di mesh, la superficie sarà rappresentata in termini di suoi reticoli, sotto forma di elenco vertex. Quindi applichiamo la cura su tutti i vertici.
Se utilizziamo una rappresentazione spline, allora la superficie sarà rappresentata in termini di griglia di punti controllata e applichiamo la condivisione su tutti questi punti controllati della griglia per ottenere tutte le nostre trasformazioni. Come scalare, qui anche il riposizionamento può avvenire. Vediamo di nuovo questo esempio farci considerare un solo vertice, questo è il 9 e il 2, questo vertice (9, 2) cambia a come potete vedere qui (10, 2). Un altro vertice (9, 4) cambia e diventa (11, 4). Allo stesso modo si possono vedere gli altri vertici, come qui diventa (4, 2). Mentre, prima era (3, 2). Questo vertice diventa (5, 4) da qui che era (3, 4). Tuttavia, si può notare che non è necessario che tutti i vertici modificino la loro posizione.
Quindi, tutti i vertici possono non riposizarsi durante una trasformazione stravagante. Inoltre potete vedere qui che non è obbligatorio eseguire shear lungo entrambi gli assi contemporaneamente. Come potete vedere qui che lungo y asse il fattore di taglio è di 0. Quindi, non ci stiamo sgambando lungo asse y mentre ci si sta facendo tremare lungo l'asse x. Quindi, sia scaling che shearing hanno questa proprietà che possono riposizionare l'oggetto; possono riposizionarsi tutti o alcuni dei punti che definiscono l'oggetto.
Ecco, queste sono le quattro trasformazioni di base. E quando in realtà stiamo cercando di trasformare un oggetto possiamo applicare queste trasformazioni di base in sequenza, in più numeri, in modi diversi per ottenere la trasformazione desiderata. Ora, un punto va notato qui che per eseguire la trasformazione abbiamo ricavato alcune equazioni, le equazioni che mostrano il rapporto tra il vecchio e il nuovo punto. Quindi se vogliamo eseguire la trasformazione, dobbiamo applicare queste equazioni sui vecchi punti per ottenere i nuovi punti.
Infatti queste equazioni non sono molto maneggevoli e convenienti da utilizzare per costruire librerie o pacchetti grafici. Se cerchiamo di progettare un sistema di grafica modulare allora queste trasformazioni rappresentate in forma di equazioni potrebbero non essere un buon modo per rappresentare le trasformazioni. Richiediamo rappresentazioni alternative e quelle rappresentazioni ci sono sotto forma di matrici. E avremo anche molti vantaggi se utilizziamo le matrici, in particolare nel contesto della costruzione di sistemi modulari.
Così, nella lezione successiva, discuteremo la rappresentazione della matrice e perché è utile rappresentare le trasformazioni.