Comment se déroule le cours CS 184 (Foundations of Computer Graphics) à Berkeley ?


J'ai suivi le cours CS 184 au printemps 2000. Je m'en souviens comme de la classe la plus difficile que j'ai jamais prise (y compris le programme EECS à l'UC Berkeley, et le MBA + les cours inter-universitaires à Yale).

Au delà de ces impressions, ma mémoire devient floue. Je me souviens avoir pensé que c'était cool que, pour simplifier les opérations géométriques, on utilise un espace à @4 dimensions (ce qui permet de réduire des problèmes difficiles à des matrices simples). Je me souviens avoir pensé que les mathématiques étaient élégantes, et quand j'ai essayé de vraiment creuser, ça m'a fait mal au cerveau.


L'EC 184 m'a exposé à la vaste portée de l'infographie, et m'a donné un aperçu de la terrifiante profondeur. J'ai vu des transformations de base, la projection, diverses méthodes de shader, la modélisation du mouvement et de la physique, et bien d'autres choses encore, y compris des problèmes de pointe de l'époque (si je me souviens bien, le rendu des cheveux était alors une frontière prometteuse). Et dans chacun de ces sujets, j'ai trouvé des problèmes d'une complexité impressionnante, combinant la programmation haute performance avec des disciplines telles que les mathématiques vectorielles légères, l'optique, la cinématique et beaucoup d'autres choses que je comprenais à peine.


Je me souviens d'un doux projet final dans cette classe, où nous avons utilisé OpenGL assez primitif pour produire une scène animée et interactive de notre choix. J'ai choisi un rollercoaster, parce que vous pouviez jouer avec la caméra de manière amusante (comme changer le point de vue à l'intérieur ou à l'extérieur du rollercoaster). J'ai aimé ce projet, même si je pense que j'ai dû recourir à de vilaines pirouettes pour le rendre dans les temps. Mes montagnes russes se retournaient parfois lorsqu'elles traversaient la piste, une courbe de bézier 3D aléatoire que je générais à chaque exécution du programme. Je pense avoir découvert que le chariot se retournait lorsque la dérivée seconde de la courbe (par rapport à l'axe des y) changeait de signe. Je n'ai pas eu le temps de trouver comment empêcher un retournement, et j'ai fini par le modifier pour que le chariot soit retourné à l'endroit s'il y avait une dérivée seconde récente de zéro. Mes montagnes russes étaient un engin à vomir avec des chariots bricolés qui se retournaient aléatoirement.

En fin de compte, en CS 184, j'ai appris que, bien que j'aie suivi l'industrie graphique (modélisation, ray-tracing, animation, etc.) pendant des années, le nitty-gritty de celui-ci était juste trop ésotérique pour que je le poursuive sérieusement. Beaucoup de compétences de table pour un programmeur graphique ne'transfèrent pas à d'autres domaines de la programmation, et j'étais plus intéressé par la construction de nouvelles entreprises que de nouveaux renderers.

J'suis heureux d'avoir pris le cours, et le recommanderait à d'autres. C'est satisfaisant d'avoir une compréhension (certes faible) de la façon dont les jolies images sont faites dans les films et les jeux. Le CS 184 m'a donné un profond respect pour ce domaine, et un bon sens de mes capacités et de mes limites en tant que programmeur.

>