Com’è seguire CS 184 (Foundations of Computer Graphics) a Berkeley?

Ho preso CS 184 nella primavera del 2000. Lo ricordo come il corso più impegnativo che abbia mai seguito (incluso il curriculum EECS alla UC Berkeley, e i corsi MBA + cross-universitari a Yale).

Al di là di queste impressioni, la mia memoria diventa confusa. Ricordo di aver pensato che fosse figo che, per semplificare le operazioni geometriche, si usasse lo spazio @4 dimensionale (che permette di ridurre problemi difficili a semplici matrici). Ricordo di aver pensato che la matematica era elegante, e quando ho provato a scavare veramente, mi ha fatto male al cervello.

CS 184 mi ha esposto alla vasta portata della Computer Grafica, e mi ha dato un assaggio della terrificante profondità. Ho visto le trasformazioni di base, la proiezione, vari metodi di shader, la modellazione del movimento e della fisica, e molto altro, compresi i problemi all'avanguardia dell'epoca (se ricordo bene, il rendering dei capelli era allora una frontiera promettente). E in ognuno di questi argomenti ho trovato problemi di una complessità impressionante, combinando la programmazione ad alte prestazioni con discipline come la matematica vettoriale legittima, l'ottica, la cinematica, e un sacco di altre cose che ho capito a malapena.

Ricordo un bel progetto finale in quella classe, dove abbiamo usato OpenGL abbastanza primitivo per produrre una scena animata e interattiva di nostra scelta. Ho scelto una montagna russa, perché si poteva giocare con la telecamera in modi divertenti (come cambiare il punto di vista all'interno o all'esterno delle montagne russe). Mi è piaciuto questo progetto, anche se penso di aver dovuto ricorrere a brutti trucchi per consegnarlo in tempo. Le mie montagne russe di tanto in tanto si capovolgevano mentre attraversavano la pista, una curva di bezier 3d randomizzata che generavo ogni volta che il programma veniva eseguito. Penso di aver scoperto che il carrello si capovolgeva quando la derivata seconda della curva (rispetto all'asse y) cambiava segno. Ho finito il tempo prima di capire come prevenire un flip, e ho finito per modificarlo per capovolgere il carrello solo se c'era una derivata seconda recente di zero. Le mie montagne russe erano un aggeggio che induceva al vomito, con carrelli difettosi che si capovolgevano a caso.

In definitiva, in CS 184 ho imparato che anche se avevo seguito l'industria grafica (modellazione, ray-tracing, animazione, ecc.) per anni, il suo contenuto era semplicemente troppo esoterico per me da perseguire seriamente. Molte competenze a tavolino per un programmatore di grafica non si trasferiscono ad altre aree di programmazione, ed ero più interessato a costruire nuove aziende che nuovi renderer.

Sono contento di aver seguito il corso, e lo consiglierei ad altri. È soddisfacente avere una comprensione (ammettiamo che sia debole) di come sono fatte le belle immagini nei film e nei giochi. CS 184 mi ha dato un profondo rispetto per il campo e un buon senso delle mie capacità e dei miei limiti come programmatore.