DESSIN 3D : RAY TRACING

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 23 déc. 2003 à 02:02
cs_bdufay Messages postés 11 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 29 mars 2006 - 10 nov. 2005 à 14:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18909-dessin-3d-ray-tracing

cs_bdufay Messages postés 11 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 29 mars 2006
10 nov. 2005 à 14:33
Fantastique. Très utile pour moi.
Faut que je l'étudie...
Bravo VB Lover!
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
30 oct. 2005 à 11:32
Magnifique :)
TheTiger Messages postés 89 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 novembre 2010
10 mai 2004 à 18:21
je cherche des sites ou des documents par le quel je pourais trouver toute sorte d'alguo permetant de détermineur l'intersection entre un ray et toute sorte objets :)
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
6 janv. 2004 à 21:02
Pour Geff :

merci déjà pour ton message.

sinon

- Je vais regarder les textures procédurales, ça a l'air sympa. Je vais aussi mettre les mappings en mémoire, et pas dans des pctBox
- Pour la radiosité : en fait, c'était l'intention première de faire un programme de radiosité. Je me suis (beaucoup) renseigné, j'ai même lu une thèse assez mathématique dessus. Juste une remarque : l'idée principale est d'utiliser la nature ondulatoire de la lumière, pas sa nature corpusculaire (photons) ...
- Pour les optimisations : merci de tes conseils, mais en gros je pensais déjà faire tout ça quand j'aurai le temps. Je crois avoir écris plusieurs fois que le code était complètement en travaux, qu'aucune optimisation avait été faite, que seuls les concepts avaient été programmés.

mais merci encore, et j'irai voir ton programme :)
cs_Geff Messages postés 192 Date d'inscription vendredi 2 mars 2001 Statut Membre Dernière intervention 10 janvier 2006
6 janv. 2004 à 03:55
Arf je vais passer pour un trouble fête mais bon :p
La qualité du rendu est là, mais la rapidité par compte absolument pas! Bien evidement cela viens en grande partie de notre langage adorée ( VB ) Cependant tu pourrais accélérer le rendu assez simplement par exemple en englobant tous tes objets dans des boites et en testant l'interesection entre le rayon et la boite, si le test est positif tu test l'intersection avec l'objet! Pour l'instant cela ne vaut pas le coup car les objets proposé pour l'instant ne sont pas très complexes, mais peut etre que cela pourras te servir plus tard!

J'ai moi meme développé un Raytracer cet été en VB.net puis C# histoire de m'initier a la teknologie .net, un exemple ::
http://geffd.free.fr/Coding/Ray6.jpg
Comme tu le vois j'ai ajouté des textures procédurales (Perlin Noise) qui agissent comme une texture acide, c plutot sympa comme effet et pas très compliqué à implanter, tu peux ainsi créer des toutes pièces des texture type Bois, Marbre, Nuages, Bruit etc...
Tu pourrais rajouter les modèles facettés aussi
Ce qui fait un très bon rendu Raytracing (proche de la réalité) c'est la radiosité, renseigne toi a propos du photon mapping, en gros pour faire simple chaque lumière envoi une série de photons et ceux-ci se réfléchissent sur les objets de la scène et se répartissent un peu partout dans la scène, ensuite au moment du Raytracing, tu regardes la concentration de photons a l'endroit de l'intersection et cela te donne l'illumination en ce point, ca te permet d'avoir un effet moins net au niveau des ombres donc plus réel, les objets réfractants permettent aussi de créer des tâches caustiques (du plus bel effet!) et bien sur ta scène dispose ainsi d'un systeme d'éclairage très proche de la réalité physique! Bien entendu il vaut mieux passer à un autre langage que le VB pour ce genre de chose!

J'ai ajouté un autre type d'optimisation a mon moteur, je pense que ca pourrais booster carrément ton Raytracer si tu décides de l'implanter, voila l'idée ::

Chaqun des objets de la scène dispose d'une AABB (Axis Aligned Bounding Box) ce sont les boites dont j'ai parlé tout a l'heure, tu calcules le projeté de ces boites sur l'écran de la caméra (normalement le foyer de la caméra est le foyer de chaque rayon et l'écran de la caméra est quant à lui la surface a travers laquelle on voit l'image) (je sais pas si c très clair :p) donc après avoir calculé le projeté de ces points (qui se situent donc tous dans le meme plan) tu calcules le rectangle englobant ces points, et hop! magie plus besoin de lancer le rayon pour chaque pixel de ton image! Tu lances le rayon unikement si au moins un objet est sur sa route (en gros si le pixel est contenu d'en au moins un rectangle)! Ensuite si le rayon est lancé tu ne calcules alors que l'intersection entre le rayon et la liste d'objets dont le pixel appartient au rectangle projeté

Voila pour ce post un peu long! sur ce bonne continuation, vé me coucher :D
GEFF
punchy12 Messages postés 2 Date d'inscription dimanche 11 mai 2003 Statut Membre Dernière intervention 4 janvier 2004
4 janv. 2004 à 21:54
J’ai encore jamais vu ça sous Vb!
Bravo et continu comme ça!

20 / 20 Mention Excelent!
MATHEMAGICIEN Messages postés 2 Date d'inscription lundi 25 novembre 2002 Statut Membre Dernière intervention 14 mars 2004
25 déc. 2003 à 19:57
Mmm, je dirais même plus : bravo !
cs_jp50 Messages postés 45 Date d'inscription samedi 14 avril 2001 Statut Membre Dernière intervention 3 janvier 2008
24 déc. 2003 à 05:35
Très impressionnant, même 3DS max n'arrive pas à faire aussi bon et rapide.
cs_jp50 Messages postés 45 Date d'inscription samedi 14 avril 2001 Statut Membre Dernière intervention 3 janvier 2008
24 déc. 2003 à 05:29
Vraiment super, mais tu devrais mettre les 2 images en autoredraw ca empecherais la boule de ne pas être remplie en bas
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
23 déc. 2003 à 23:21
Pour les optimisations, merci, mais vous en faites pas, ça va arriver ! Je vous rappelle que j'ai mis le code qui n'est pas encore (mais alors vraiment pas) définitif.

Je vais effectivement améliorer les mapping, j'ai déjà programmé les polyèdres (cubes en particulier), je vais faire les cônes et autres formes géométriques, et je suis en train de réfléchir à un concept de bumping... bref, y'a du boulot !

Bonnes Fêtes de Noël à tous, et profitez-en pour faire une pause dans la programmation :)
MoiOlivier Messages postés 172 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 4 août 2005
23 déc. 2003 à 18:32
Alors là, je suis sur le cul !
Terrible, magnifique. 10/10.

Deux petites remarques : pour optimiser, tu devrais placer les textures dans un buffer (cf. l'API GetDIBits), ça irait beaucoup plus vite que la fonction Point.
Et il faudrait ne rafraichir l'image tracée que tous les x pixels ou toutes les lignes, on gagne ainsi du temps perdu en affichage.

Sinon, bravo ! Chapeau bas !
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
23 déc. 2003 à 10:25
Houlà... j'ai pas tout compris comment ça marche mais ça me plait.

Je vais me pencher dans le code un de ces quatre pour voir tout ça mais ça a l'air du bon boulot

Bravo

++
Moustachu
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 déc. 2003 à 09:32
Alors la !!! Etant un programmeur VB depuis longtemps et un amateur des logiciels de Raytracing, je dis chapeau monsieur !!!
Un boulot magnifique et qui est d'une éfficacité terrible, au vu de l'image rendu !
CA FORCE LE RESPECT ! En plus, à lire ton code, on a l'impression que c'est sortit tout seul, mais à mon avis tu as du bien bosser sur le sujet !! Je te tire mon chapeau et te met 10/10, car 20/10 n'était pas disponible !!!

Encore bravo !!!!!
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
23 déc. 2003 à 02:02
bravo :-) et maintenant passe vite au C++ avec que le VB ne meurt définitivement.

le ray tracing c'est c'est wow qd même ^^
Rejoignez-nous