Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Problème de raytracing

Posté par
entwanne
04-08-10 à 10:36

Bonjour,
pendant ces vacances, je me suis mis en tête de développer un raytracer.
Je dispose donc d'un repère (\Omega , \vec i, \vec j, \vec k)
J'ai un oeil O(O_x,O_y,O_z) et un écran de centre C(C_x,C_y,C_z) de vecteurs directeurs (unitaires) \vec w (W_x,W_y,W_z) et \vec h (H_x,H_y,H_z), de largeur W et de hauteur H.
Un point E de cooronnées (\alpha, \beta) selon (C, \vec w, \vec h) se déplace sur l'écran (on a -\frac{W}{2}\leq \alpha \leq \frac{W}{2} et -\frac{H}{2}\leq \beta \leq \frac{H}{2}).
On a donc, selon le repère 3D, \vec{OE}=\vec{OC}+\vec{CE}=(C_x-O_x)\vec i+(C_y-O_y)\vec j+(C_z-O_z)\vec k+\alpha \vec w+ \beta \vec h = (C_x-O_x)\vec i+(C_y-O_y)\vec j+(C_z-O_z)\vec k+\alpha W_x \vec i+\alpha W_y \vec j+\alpha W_z \vec k+\beta H_x \vec i+\beta H_y \vec j+\beta H_z \vec z soit \vec{OE}=(C_x-O_x+\alpha W_x+\beta H_x)\vec i+(C_y-O_y+\alpha W_y+\beta H_y)\vec j+(C_z-O_z+\alpha W_z+\beta H_z)\vec k
Maintenant, pour chaque point E de l'écran (on peut le considérer comme fixe), je créer l'ensemble de points A_k défini par \vec{OA_k}=k\times \vec{OE} avec k \in \mathbb{R}^+ (soit la demi-droite \[OE\))
En calculant encore un peu, on obtient les coordonnées de A_k(O_x(1-k)+kC_x+k\alpha W_x+k\beta H_x,O_y(1-k)+kC_y+k\alpha W_y+k\beta H_y,O_z(1-k)+kC_z+k\alpha W_z+k\beta H_z)
Ensuite, je définis plusieurs solides paramétrés par \vec f(t,u,v)=(a(t,u,v);b(t,u,v);c(t,u,v))
Et je cherche l'intersection entre ce solide et mon ensemble de points A_k, puis prend le point A_k_{min}, c'est à dire le point A_k dont le k est le plus faible possible (en le sachant positif), et c'est sur cette partie que je bloque. En essayant sur papier de prendre des solides existant (boule) et de remplacer dans les équations, je trouve les points correspondant, mais je n'arrive pas à trouver l'algorithme qui, si je le donnais à l'ordinateur, pourrait me résoudre l'équation pour tout type de solide paramétré.
Merci d'avance aux eventuelles personnes qui pourraient m'aider à résoudre ce problème.

Posté par
Rodolphe
re : Problème de raytracing 04-08-10 à 14:41

Bonjour entwanne,

je ne pourrai t'aider mais ce lien peut-être te sera utile :

Posté par
entwanne
re : Problème de raytracing 04-08-10 à 15:17

Merci pour ces liens, ils me seront utiles par la suite pour la gestion de la transparence et de la réflexion.
Pour l'instant, j'ai déjà un mini-raytracer capable de créer des sphères, des cercles et des plans, et j'aimerais qu'il gère toutes les courbes, surfaces et solides paramétrés, ce qui lui permettrait d'étendre énormément son catalogue de figures.

Posté par
entwanne
re : Problème de raytracing 12-08-10 à 10:35

Bonjour,
j'ai parlé de ce problème sur un autre forum, et voici ce que l'on m'a conseillé :
j'obtiens mon solide S par application d'une fonction f sur le parallélépipède (t, u, v). Pour connaître l'intersection entre mon solide S et une droite D, le plus simple serait de connaître l'antécédent de D par f, soit la courbe C, qui, si on lui applique la transformation f me donne ma droite D. En effet, l'intersection entre le parallélépipède (t, u, v) et une courbe paramétrée serait assez simple à trouver.
Sachant que f serait du type \vec f(t,u,v)=(a(t,u,v),b(t,u,v),c(t,u,v)) avec a, b et c composées de polynomes, de cosinus et de sinus, existerait-il une formulation générique de ma courbe C, en fonction de ma droite D et des fonctions a, b et c ?
Merci d'avance.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !