Dessin 3d : ray tracing

Soyez le premier à donner votre avis sur cette source.

Vue 11 710 fois - Téléchargée 1 439 fois

Description

Je voulais attendre d'avoir un programme complet, mais le résultat est tellement sympa que je ne peux pas attendre de la mettre sur ce site!

Les principes généraux sont programmés, maintenant il me reste à "programmer ça bien".

Source / Exemple :


' 22 décembre : upload sur VbFrance
' 25 décembre : mise à jour : polyèdres, bumping

Conclusion :


Prochaines améliorations :
- mise en mémoire des images (pas de picturebox comme c'est le cas maintenant)
- bump : l'image mise en mémoire sera celle "des dérivées" de l'image de base
- nouveau objets : cônes, ...
- meilleure interface, ...

Mais si vous avez un peu de courage, on peut déjà faire vraiment beaucoup de choses !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_bdufay
Messages postés
11
Date d'inscription
mercredi 13 mars 2002
Statut
Membre
Dernière intervention
29 mars 2006
-
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
-
Magnifique :)
TheTiger
Messages postés
89
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
2 novembre 2010
-
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
3 -
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
-
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.