Ray-Tracing et Rasterizer
J’ai saisi l’occasion du Grand Oral pour me pousser à coder ces deux programmes Python. Les deux programmes n’utilisent que Numpy pour les arrays et les calculs vectoriels et Matplotlib pour transformer les arrays en png.
Raytracing
Ce ray tracing simple en python que j’ai fait en m’inspirant de l’article Medium : “Ray tracing from scratch in python”.

Voici les fonctionnalités du ray-tracer :
- Rendre des images avec perspective ou isométrique
- Rendre des depth -map
- Matériaux différents (diffuse, indice de réflexion…)
- Supporte autant de lumière que voulu
- Reflets récursifs avec profondeur choisie
- FOV dynamique
- Pour le moment, ne peut que faire le ray tracing avec des sphères.
- Version parallèle du renderer pour gagner en vitesse (image 4 k de profondeur 6 avec 2 lumières en généré 2 min sur ma machine)

J’ai aussi mis à disposition le code original de l’article dans le dépot.
Futur
Je prévois d’étendre le ray tracing cet été :
- Support de plus d’objets (plan, triangle)
- Caméra non fixe
- Peut-être support de texture
Rasterizer
J’ai fait le rasterizer en m’inspirant du livre “Computer Graphics from Scratch” de Gabriel Gambetta, accessible gratuitement en ligne.
Voici les fonctionnalités du rasterizer :
- Dessiner des triangles ou des lignes sur un plan.
- Projeter des points de l’espace sur un plan.
- Culling basique pour les triangles hors de vue ou pas face à la caméra.
- Rendre une image wireframe ou avec les triangles pleins d’un espace 3D.
