IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Création d'un raytracer en c++


Sujet :

Projets

  1. #61
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    "Advanced Animation and Rendering Techniques" par Alan et Mark Watt (petite revue tout en bas de cet article).
    Le problème avec ce bouquin est d'une part qu'il est assez vieux et qu'il ne présente que très rapidement les techniques intéressantes, en revanche, il présente plus les techniques d'animation.

    Perso, je conseillerai plus :

    -> Advanced Global Illumination de Dutré, Bekeart et Bala.
    -> Physically Based Rendering de Pharr et Humphrey.

    Si on a envie d'avoir plus de bases théoriques (mais moins sur les techniques récentes de rendu), il y a toujours le glassner :

    -> "Principle of digital image synthesis".

  2. #62
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Points : 2
    Points
    2
    Par défaut
    Merci thBar, j'avais pas vu ton message .Je viens de perdre ma boite email, d'habitude je reçois un email quand il y a un post sur ce thread.

    Du coup en relisant le thread j'ai regardé ce qu'il y avait comme bouquins conseillés.
    j'ai acheté Physically Based Rendering, Pharr, Humphreys c'est vrai qu'il est cher, mais après l'avoir feuilletté un peu il a l'air vraiment pas mal du tout .
    Je viens de l'avoir aujourd'hui , j'avais lu les reviews sur amazon et ca m'avait branché . Du coup je fais mon education, je m'apperçois avec plaisir que je ne m'étais pas trop planté concernant l'architecture de mon raytracer même si quelques directions que j'ai prises ne sont pas aussi souples que celles de pbrt.
    En plus le livre est beau et de qualité (hardcover et papier glacé)

    j'espère etoffer mon code bientôt (enfin quand j'aurais un peu de temps en dehors du taff)

  3. #63
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    Je reprend le fil de la discussion pour poser une question (colle) .

    Serieux, je voulais savoir comment utiliser la structure kd-tree pour accélérer les tests d'intersection objet-rayon (ou photon) ?

    mercii
    AlloSchool, votre école sur internet.

  4. #64
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    le kd-tree sert à deux choses (et n'est pas utilisé de la même façon quelque soit le cas).

    Il sert à calculer une intersection dans la scène entre un rayon et un objet. Il sert à calculer une distance minimale (maximale) ou récupérer des objets à une distance données dans le cas d'une utilisation avec les photons. c'est donc dans ce cas, une structure qui accélère la recherche des K Plus Proches Voisins (ou KNN en anglais).

    Concernant ta question, elle est beaucoup trop vague pour y apporter une réponse directe.

  5. #65
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    le kd-tree sert à deux choses (et n'est pas utilisé de la même façon quelque soit le cas).

    Il sert à calculer une intersection dans la scène entre un rayon et un objet. Il sert à calculer une distance minimale (maximale) ou récupérer des objets à une distance données dans le cas d'une utilisation avec les photons. c'est donc dans ce cas, une structure qui accélère la recherche des K Plus Proches Voisins (ou KNN en anglais).

    Concernant ta question, elle est beaucoup trop vague pour y apporter une réponse directe.
    salut,

    je ne l'utilise pas pour trouver les K-NN (rendering) . Je veux l'utiliser pour calculer une intersection dans la scène entre un rayon et un objet.

    Sur le web, on parle beaucoup de l'usage de kd-tree pour l'estimation de la densité (K-NN + kernel), et je ne trouve pas d'articles qui traitrent de l'intersection .

    Mercii ,
    AlloSchool, votre école sur internet.

  6. #66
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    A mon avis, tu n'as pas bien cherché.

    La grosse référence sur le sujet est la thèse d'Havran :

    http://www.cgg.cvut.cz/members/havran/phdthesis.html

  7. #67
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Merci, je pense que c'est le bon bout de piste .



    Encore merci.
    AlloSchool, votre école sur internet.

  8. #68
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    @xraydev : Félicitations pour ton moteur de lancer de rayons. Il donne déjà de beaux résultats.
    C'est vraioment mon dada le raytracing(et la radiosité) alors ça fait plaisir de voir ça. Bonne continuation !

  9. #69
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Points : 2
    Points
    2
    Par défaut
    Merci c'est sympa, bien que ce n'est pas grand chose ce que j'ai fait, quand je relis le thread je vois que j'ai encore du boulot pour avoir le niveau théorique ce certains des intervenants. Quoi qu'il en soit j'avance petit à petit . Là je viens d'implémenter l'ambient occlusion de façon naïve, c'est à dire très très (trop) gourmande en temps de calcul . Cela vient déjà du fait que je n'ai pas implémenté d'autres test d'intersections que les bounding spheres et circles . Je vais m'attaquer serieusement à une structure hierarchique .

  10. #70
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Points : 2
    Points
    2
    Par défaut une question me taraude concernant le totalcompendium
    Quand j'ai calculé l'ambient occlusion, j'ai samplé en générant 2 rnd(), un entre 0-2*pi et l'autre entre 0 et pi .

    dans le total compendium (page 19 formule 33) on a
    phi = 2*pi*r1
    theta = acos(1–2*r2)

    Ptite question idiote pourquoi cet acos et pas theta = pi * r2 ?

  11. #71
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Parce que la distribution ne sera pas homogène sur la sphère si tu prends un dérivé direct de la latitude (il devrait y avoir beaucoup plus de tirages sur l'équateur entre alpha0 et alpha0 + dalpha que sur le pole pour un alpha1 et alpha1 + le meme dalpha).

    Autre moyen de prendre une distribution homogène sur la sphère :
    le crible, tu tires trois nombres aléatoirement tu élimines ceux qui sont en dehors de la sphère (distance au centre > rayon) et tu normalises pour avoir la direction.
    Voir la partie "échantillonnage" dans :
    Raytracing, distribution uniforme sur la sphère.

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  12. #72
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Points : 2
    Points
    2
    Par défaut
    Ok merci , il me semblait bien qu'il y avait surement une histoire de distribution là dedans .

    Au fait ptite question indiscrète , tu en es où legreg dans ton raytracer ? Le résultat était super sympa, t'as étoffé le code ou tu l'avais écrit pour faire un tuto ?

  13. #73
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    le crible, tu tires trois nombres aléatoirement tu élimines ceux qui sont en dehors de la sphère (distance au centre > rayon) et tu normalises pour avoir la direction.
    Voir la partie "échantillonnage" dans :
    C'est de l'échantillonnage par rejet, c'est pratique lorsque l'on ne sait pas inverser la fonction à échantillonner. Mais lorsqu'on la connaît (ce qui est le cas pour la sphère), il vaut mieux utiliser la formule analytique (comme dans le global compendium).

    Autre chose à prendre en compte : utiliser un QMC plutôt qu'un random classique (et surtout pas utiliser le rand du C/C++), la différence est plus que flagrante. Si je ne l'ai pas cité avant : http://graphics.uni-ulm.de/EMS.pdf

  14. #74
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Points : 2
    Points
    2
    Par défaut
    Yep, j'avais cru lire quelque part que la distribution de la fonction rnd() était pas idéale . J'ai entendu parlé du mersenne twister . Je sais pas comment ca marche encore. Autrement je crois qu'il y a une lib boost sur developpez.com on a dû m'en parler déjà dans le thread je pense.

  15. #75
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Yep, j'avais cru lire quelque part que la distribution de la fonction rnd() était pas idéale
    Comme tous les générateurs à congruence linéaire.

    J'ai entendu parlé du mersenne twister
    Combiné avec un QMC (pour du RDS), c'est un des meilleurs générateur. Simple et rapide (comparé à un drand48 il n'y a pas photo)

  16. #76
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Si tu dois faire des nombres aléatoires pour du Raytracing, tu devrais effectivement t'intéresser au Mersenne Twister. Il n'est pas certain du tout que l'échantillonnage de rand() ne se remarque pas.

  17. #77
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Si tu dois faire des nombres aléatoires pour du Raytracing, tu devrais effectivement t'intéresser au Mersenne Twister. Il n'est pas certain du tout que l'échantillonnage de rand() ne se remarque pas.
    Et en prenant boost random???

  18. #78
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Non, vous vous égarez.

    Pour du raytracing, il ne faut pas utiliser directement de l'échantillonnage uniforme, mieux vaut utiliser du Quasi Monté Carlo, la réduction de la variance est beaucoup plus rapide et donc la convergence vers le résultat correct également. On combine l'uniforme et le QMC ( Random Digit Scrambling) pour éviter les effets de motifs (duent au QMC). Ensuite la fonction qui réalise l'uniforme on s'en fiche un peu (du moment que c'est pas rand()), drand48, boost random ou Mersenne Twister, c'est une question de goût plus trop de convergence de rendu. (je préfère MT parce qu'il est considérablement plus rapide que drand48)

  19. #79
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    bonjour à tous,

    Pour ma part, comme mon travail de fin d'étude de l'année prochaine portera sans doute sur le raytracing, je me lance de cette superbe aventure. Pour l'instant, je commence juste à me familiariser avec le concept. ( hé oui je prend de l'avance hihi)
    J'ai commencé à lire différents tutoriels dont celui-ci traduit par legreg si je ne me trompe pas=> http://www.massal.net/article/raytrace/page1.html

    Le problème que j'ai, c'est que je télécharge les fichiers source en bas de page, je 'dézipe' etc.., et quand je compile sous devC++, ben au lieu de m'afficher le résultat espéré ( les 3 belles sphères), ben je n'ai absolument rien.
    J'ai sans doute oublié quelque chose de très important, mais la je ne voie pas trop

    Please help!

  20. #80
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    si je rappelle bien, il te faut passer sur la console car c'est un outil ligne de commande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Usage : Raytrace.exe Scene.txt Output.tga
    Press any key to continue . . .
    ++
    AlloSchool, votre école sur internet.

Discussions similaires

  1. Live coding : création d'un raytracer GPU en 20 minutes
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 09/02/2014, 19h29
  2. Création d'une Fenêtre pour afficher un rendu Raytracer.
    Par vmfa-2 sven dans le forum API graphiques
    Réponses: 3
    Dernier message: 03/06/2008, 15h47
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo