Raytracing en delphi (progressive path tracing)

Soyez le premier à donner votre avis sur cette source.

Vue 7 860 fois - Téléchargée 1 313 fois

Description

Bonjour,
je vous présente aujourd'hui un code permettant de générer des images raytracées, c'est-a-dire en se basant sur les propriétés physiques de la lumière pour générer une scène de facon réaliste (plutot que d'utiliser des approximations et des raccourcis comme les jeux vidéos 3D font de nos jours). Il existe plusieurs méthodes de raytracing, plus ou moins élaborées et plus ou moins réalistes. J'utilise ici une méthode très réaliste, mais malheureusement relativement lente, appelée Path Tracing, donc l'intéret de cette source n'est pas la vitesse mais plutot le résultat. Le point fort de cette source est que l'on peut la laisser tourner aussi longtemps qu'on veut, et l'image obtenue convergera vers la bonne (correcte) image en augmentant le temps de calcul, et l'on peut l'arreter n'importe-quand et prendre le résultat (la méthode est donc progressive, et probabiliste, ou Monte-Carlo si vous préférez).

Voir la capture pour un exemple de rendu fait sur ma machine (7-8 heures, sur un processeur moderne - i5 2500k @ 3.7GHz). En général l'image obtenue devient reconnaissable après une ou deux minutes de calcul au maximum, et la précision devient meilleure plus vous attendez.

J'ai inclus quelques scenes pour que vous puissiez essayer, il suffit de lancer le programme SceneMaker et de cliquer sur les boutons. Chaque bouton cree la scene correspondante qui est directement placee au bon endroit, on peut alors lancer le programme principal pour la dessiner.

Du coté pédagogique, cette source contient plusieurs exemples de:
- polymorphisme et descendance de classe
- gestion robuste de threads (pas d'erreurs de violation d'accès a la fermeture du programme par exemple)
- une petite librairie de vecteurs 3D
- plein d'autres petits trucs

Merci d'excuser les commentaires en anglais, je préfère tout mettre en anglais en terme de code et commentaires, c'est plus facile a maintenir je trouve. Je ferai surement une traduction globale éventuellement.

Source / Exemple :


// zip

Conclusion :


Tous commentaires sont bienvenus.

Cordialement, Bacterius !

PS: merci d'excuser l'oubli d'accents dans la description de la source, je suis sur un clavier anglais et c'est assez difficile d'utiliser la table de caractères spéciaux...

<<<IMPORTANT>>>: Vous pouvez faire ce que vous voulez avec le code, il n'a aucune license. C'est vraiment pas sorcier une fois qu'on a compris le principe général, et c'est pas super elaboré, c'est juste une démonstration :) Enjoy.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
En fait je t'ai mal compris oui les fichiers scenes ne sont pas presents par defaut car certains sont assez larges, en fait il faut utiliser le programme secondaire dans le dossier SceneMaker pour les obtenir, apres ils devraient etre disponibles (apres un relancement du programme principal evidemment).
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Bizarre que ca marche pas, ce que tu peux faire c'est editer le programme de generation de scene pour qu'il cree les fichiers scene directement dans le dossier et les deplacer manuellement. Ca devrait marcher apres.
Messages postés
9
Date d'inscription
mardi 19 juillet 2005
Statut
Membre
Dernière intervention
12 avril 2006

Je suis impressionné ! J'ai hâte de tester l'application (Les fichiers Scènes ne sont pas dans le Zip et le bouton "Select a scene" ne réagit pas)... Mais les commentaires de tous donnent vraiment envie de tester le programme !!!

Comment avoir ces fichiers manquants SVP ?

Quarto
Messages postés
304
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012

oops désolé pour le flood, j'ai pas mis le bon lien d'Aqsis, car celui cité plus haut c'est pour le code source(non sans blague ? lol),

http://sourceforge.net/projects/aqsis/?source=directory

auquel-cas il y aurait de grosses feignasses qui à la vue du lien ne voudrait pas faire l'effort mdr.
sur ce @+.
Messages postés
304
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012

Salut Bacterius,
merci également pour le lien "smallpt", intéressant lui aussi mais il existe aussi un très bon raytracer en java http://www.artofillusion.org/.

mais le best of the best reste quand même Aqsis, et là c'est du lourd avec des techniques pros(basées sur un standard défini par Pixar c'est peut dire !!!)http://sourceforge.net/projects/aqsis/files/aqsis-source/1.8.0/Aqsis-1.8.0-Source.tar.gz/download il gère également le rendu software et hardware.

bien-sûr que ça demande beaucoup de travail et je respect ton courage ou devrais-je dire bon courage pour la suite.

ps: prends le temps qu'il faudra !!, et à toi de réfléchir quand à l'algorithme le plus adéquate.
@+
Afficher les 59 commentaires

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.