CafzoneWare: le raytracer C#

L’algo de base du raytracer il est tout con.

On part du principe que on sait tracer un rayon en 3D. C’est a dire qu’a partir d’un point et d’une direction on sait regarder si ce rayon touche quelquechose dans la scene, que ce soit une sphere, un plan, un triangle ou autre. De plus on sait exactement ou on touche l’objet en question et avec « quel angle ».

Bon une fois qu’on sait faire ca on fait, en admettant une seule lumiere dans la scene:

Pour chaque pixel dans mon image a moi que je veux calculer:
depuis l’oeil de l’observateur. tracer un rayon qui passe par le centre de ce pixel
si il touche rien, mettre le pixel noir (ou de la couleur du fond)
si il touche qqch, tracer un rayon de l’endroit touche vers la lumiere
si il touche la lumiere sans rien rencontrer, calculer comme la surface touchee reagit a la lumiere
si il touche un autre objet, ben on est dans l’ombre de cet objet (il est entre le point touche, et la lumiere), c’est tout noir

Et hop on boucle :slight_smile:

Donc dans le raytracing classique on trace les rayons de la camera vers les objets, puis vers les lumieres. C’est plus facile et ca marche plutot pas mal. Si l’objet provoque des reflections, ben au lieu de partir de la camera, on calcule la direction du rayon reflechit (on a deja le point d’orgine c’est le point d’impact entre l’objet et le rayon qui vient de la camera) et on refait le calcul pour ce rayon, c’est recursif. Il se peut que le rayon « rebondisse » sur un grand nombre d’objet avant de finir sa couse, donc en general on limite la profondeur de la recursivite, dans le cas de mon prog, a 4 ou 5 (je sais plus).

il me semble que c’est une manière de gérer la lumière.
si j’ai bien compris/retenu ce qu’on m’a dit il y a bien longtemps, ca calcule le trajet de la lumière de la source jusqu’a notre oeilen prenant tout plein de paramètre en compte (genre la lumière voyae pas pareil dans la flotte et dans la fumée)
bon ou pas ?

Merci mais l’Anglais et moi on fait pas bon ménage ^^

ST*W :wink:
t’as une explication ici
http://fuzzyphoton.tripod.com/whatisrt.htm

C’est quoi un raytracer, j’y pige rien… (jamais fait de prog, meme pas sur ma TI-80 :wink: )

Tout ce que je peux dire c’est que la deuxième image est très bien réalisé…

Est-ce que tu aurais une source a nous conseiller pour tout ce qui est algos (anti aliasing etc) ?
Le code me fait pas peur, c’est plutot les algos. Faudrait pas non plus reinventer la friteuse … :wink:
salut Glop au fait !

Non non. La construction de la scene se fait dans main. Houla :stuck_out_tongue: Tout le reste du renderer est deocupe dans quarante douze petits fichiers, tout bien organises comme il faut.

Dans un premier temps quand on developpe ce genre de choses le but c’est pas de charger un fichier qui decrit la scene et le faire rendre par le renderer. Il faut faire les choses dans l’ordre. Tout d’abord on fait rendre qqch, le plus rapide pour rester modulaire et permettre de rajouter un module pour charger une scene apres c’est de tout prevoir pour et de creer les elements temporairement « ala main » dans le main(). Plus tard on peut rajouter un truc qui ouvre un fichier et cree les elements en fonction de ce qu’il lit dans le fichier en question. Mais ca c’est pas vraiment du rendu, donc ca m’interessait pas a faire en premier lieu.

[Edité le 30/10/2002 par GloP]

si j’ai bien compris, tu a directement develoopé dans le main()… c’est pas propre

[quote]j’aime bien cette phrase !

[quote] Pour l’instant ca raytrace, la scene est hardcodee dans le main()[/quote]je suis non initié… ceci explique cela !
[/quote]
C’est vrai que c’est assez cryptique Ca veut juste dire que la description de la scene, (trois spheres la, une lumiere la, une surface de tel type, avec telle couleur la) est codee en dur dans l’executable. En gros il y a un .exe dont la seule utilite est de rendre la meme scene encore et encore. Pour changer de scene il faut recompiler. :stuck_out_tongue: Pas tres utile pour qqn mais pour developper c’est rapide au moins…

Ho le sale bug de postnuke forum … (Tsss)

[Edité le 30/10/2002 par GloP]

j’aime bien cette phrase !

[quote]Pour l’instant ca raytrace, la scene est hardcodee dans le main()[/quote]je suis non initié… ceci explique cela !

[Edité le 2/11/2002 par titibgosse]

et c’est prevu quand l’integration du raytracing dans les carte graphique…

quand sa sera fait, on pourra parler de la beauté des eclairages…

Hehe j’aimerais surtout d’abord arriver a faire qqch comme ca:

Y a du boulot c’est clair mais je suis motive:P Les refractions, l’anti aliasing, les photons maps pour les caustics et la global illumination et on y est, a quelques dizaines d’heures (centaines ?) de bidouilles pres.

Apres s’integrer dans un renderer c’est tout un tas de magouilles pour gerer polygonnes et autres mesh qui m’interessent pas trop. Moi ce qui me branchait bien c’etait les techniques de rendues en elles meme, pas trop tout le partie « modelage ». Mais pourquoi pas a terme :stuck_out_tongue_winking_eye:

[Edité le 30/10/2002 par GloP]

a quand le plug pour max? (je rigole… koi que :stuck_out_tongue: )