2011-01-11 18 views
7

Innanzitutto, iniziamo con il mio background matematico. Ho preso il calcolo I - IV e le equazioni differenziali. Ho seguito un corso di computer grafica del primo semestre in cui abbiamo implementato praticamente la nostra pipeline grafica inclusa l'ombreggiatura utilizzando Phong senza alcuna API grafica.Computer grafica: Math to Code

Sto frequentando un corso di Computer Grafica Avanzato a livello universitario in questo semestre e durante la lettura della matematica coinvolta mi perde. Questa classe è fondamentalmente una classe di sintesi di immagini. Costruiremo un ray-tracer nel nostro primo progetto e costruiremo su di esso da lì in poi.

Durante la lettura su computer grafica avanzata, di solito ottengo un sacco di matematica. Capisco che la grafica per computer sia pesante in matematica, ma sto avendo problemi quando cerco di capire esattamente come suppongo di implementare la matematica in codice. Avrò davvero bisogno di imparare da questo per eccellere in CG.

Per esempio, questo articolo di GPU Gems: http://http.developer.nvidia.com/GPUGems/gpugems_ch01.html C'è un po 'di matematica, ma non ho idea da dove iniziare ad attuare la matematica, se voglio.

Quindi, c'è qualcosa che mi manca? Suppongo di guardare i calcoli e di essere in grado di ricavare il codice? Ci sono tutorial/libri là fuori che potrebbero aiutarmi a capire cosa devo fare?

+3

Quanto algebra lineare hai preso? La maggior parte della computer grafica viene applicata algebra lineare. –

+0

Ho preso anche l'algebra lineare.Ho dimenticato di dirlo. Non ho mai problemi con l'algebra lineare, sono gli integrali complessi e come tradurli in codice. – Oscar

+1

Non vedo integrali complessi in quell'articolo. Con quale bit hai problemi? –

risposta

0

Questo articolo utilizza FFT o FFT effettivamente inverse per generare un campo di altezza mobile. Leggi su FFT. Per fare un 2d, devi prima fare 1d FFT sulle righe, poi le colonne. Una volta ottenuto il campo di altezza, le derivate parziali si ottengono probabilmente prendendo la differenza delle altezze adiacenti lungo l'asse x o y a seconda del quale è parziale. A prima vista non vedo integrali, ma appaiono in alcuni documenti grafici e ci sono metodi per valutarli.

Posso anche raccomandare alla ricerca in tutto il forum OmpF sopra a: http://ompf.org/forum/

+0

Dopo averlo guardato di nuovo, non ha alcun integrale. Ho ancora problemi con il tentativo di tradurre in codice. Controllerò il sito web. – Oscar

0

Un consiglio che posso dare oltre il semplice "studiare più matematica e la pratica" è che alcuni costrutti matematici in genere hanno una costruzione analoga nel codice solo potrebbe non essere ovvio.

Gli integrali (e le somme) sono spesso realizzati come loop nel codice o come somme nei frame (nella grafica questo è spesso il caso). Derivati ​​e parziali sono cambiamenti tra valori che tipicamente si manifestano come delta attraverso i fotogrammi o tra elementi discreti come i pixel.

Queste regole non sono valide al 100% ma se è possibile iniziare a visualizzare gli elementi matematici più spaventosi in termini di codice che generano, sarà più facile da assorbire. È importante lavorare su solide fondamenta, quindi assicurati di avere i fondamentali in basso e il resto con esperienza e pratica.

1

La programmazione per il tipo di matematica che si vede nell'articolo delle gemme GPU generalmente rientra nell'analisi numerica. Il lato più applicato dell'analisi numerica verrebbe trattato in un corso o libro su metodi numerici o programmazione scientifica. Suggerirei di iniziare dall'articolo di Wikipedia su numerical analysis e osservare alcuni articoli specifici collegati. Una volta che conosci i nomi di alcuni metodi rilevanti, il codice di esempio è facile da trovare.

Un consiglio: gran parte dell'implementazione di derivati ​​e integrali è in realtà solo imparare come gestire i limiti (in senso matematico) nei programmi. Spesso, questo non è esplicitamente dichiarato.