transparence en raytracing [c] - C - Programmation
Marsh Posté le 01-06-2014 à 00:50:10
Bonjour !
Quel que soit le nombre de dimensions, une direction est toujours donnée par un seul vecteur (et on rajoute un point pour caractériser une droite).
En revanche, c'est la normale à cette direction (qui est une droite en 2D, un plan en 3D, un hyperplan au dessus) qui est donnée par (N-1) vecteurs, en "ND".
Bonne continuation !
Marsh Posté le 01-06-2014 à 22:48:16
comment faire une fois qu'on a le point et le vecteur directeur pour trouver les vecteurs x, y et z du vecteur principale ?
Marsh Posté le 02-06-2014 à 21:03:48
Tu parles de passer de ton vecteur de direction à une matrice de rotation ?
En admettant que Z est ton vecteur, tu veux X et Y ?
Marsh Posté le 05-06-2014 à 03:31:03
Re-
Terminapor non ce n'est pas ca que je voulais j 'en suis a un stade entre guillemet plus limité.
le truc c'est que en Raytracing pour obtenir un point dans l'espace par rapport au point de la caméra, j'ai toujours utilisé 3 vecteurs vx vy et vz qui me donne le point dans l'espace mais la mentalement j'arrive pas à comprendre comment une valeur positive ou négative peut orienter en 3d donc avec un seul vecteur directeur je n'arrive ni a décomposer en 3 vecteur directeur ni même avec le point d'origine et le vecteur directeur obtenir le point dans l'espace.
Donc a ce que j'ai compris on ne peut pas décomposer un vecteur directeur en 3 vecteur vx vy vz. mais alors comment fais-t-on quand on a par exemple point d'origine AX = 1, AY = 1, AZ = 1 et vecteur directeur B = 1 quels sont les trois points BX BY BZ ?
Marsh Posté le 05-06-2014 à 10:24:20
archseven a écrit : |
Corrige moi si je me trompe mais j'ai l'impression que c'est pas très clair dans ta tête ces notions de vecteur.
Pour bien situer les choses, c'est quoi ton niveau en maths ?
Marsh Posté le 05-06-2014 à 12:03:48
Je suis d'accord avec Totoche, vous semblez confondre les vecteurs et leurs coordonnées dans la base (Ox, Oy, Oz).
Du coup, nous avons un peu de mal (en tous cas, moi je n'y arrive pas) à comprendre le sens précis de votre question, ce que vous voulez vraiment dire, puisque nous n'avons pas la même signification pour les termes.
Rien de dramatique, il faut juste arriver à nous recaler
Bonne continuation !
Marsh Posté le 05-06-2014 à 15:24:39
archseven a écrit : Re- |
B n'est pas une direction..
Mettons tu as ton origine O(8,9,10) ( x = 8, y = 9, z = 10) et ton vecteur de direction V (0,0,1) (un vecteur de direction est toujours normalisé, c-a-d que sa longueur est de 1) dans ce cas la position de O translaté par V est simplement (8,9,11).
En gros, la translation par une direction ça se fait comme ça :
Ot = O + V * distance
Où Ot est le résultat (O translaté), V est le vecteur de direction et distance la distance (valeur simple, pas un vecteur)
Mais là j'ai l'impression que ton niveau côté vecteur est très faible, et se lancer dans un moteur de rendu en raytracing avec de telles lacunes équivaut à un suicide avec préméditation
Tu devrais lire des cours sur les vecteurs d'abord
Marsh Posté le 05-06-2014 à 18:37:09
Ok merci pour ton explication là je comprend car c'est comme ca que je vois le truc (j'ai effectué en raytracing un plan une sphère un cylindre et un cone avec une lumière et les ombres) ca marchait.
là je dois faire la transparence en projet de groupe.
la formule qui me semble ok selon les différentes sources que j'ai lu :
a1 = angle incident, a2 = angle réfracté.
transmis = sin(a2)/sin(a1) * source - (cos(a2) + sin(a2)/sin(a1) * (source*normale)) * normale
là on parle que de vecteur directeur donc normalisé ma question est comment traduire cette formule
genre je la fais trois fois en remplacant source par eye.vx, eye.vy eye.vz, normale par n.vx n.vy et n.vz du coup j'obtiendrais les 3 valeur du vecteur transmis normalisé:
t.vx = formule avec eye.vx et n.vx
t.vy = formule avec eye.vy et n.vy
t.vz = formule avec eye.vz et n.vz
pour ce qui est du calcul des angles je fais le produit scalaire entre eye et n puis, angle incident = angle refracté.* 2 / 3.
j'ai tésté comme ca sur un cylindre mais c'est bugué et je ne sais pas si ca vient de la mauvaise utilisation de la formule ou de mes fonctions qui re-calcule les intersections avec les objets aprés la transparence.
Marsh Posté le 31-05-2014 à 17:48:50
bonjour,
je viens vers vous pour savoir comment effectuer une transparence en raytracing,
j'ai vu un tuto à cette addresse là http://heigeas.free.fr/laure/ray_t [...] cipes.html sur la transparence
le seul problème que j'ai à sa lecture c'est qu'on obtient la valeur directeur du rayon transmis mais que dans la manière dont je vois les choses une direction 3d est donnée par 3 vecteurs directeur et je ne vois pas comment transformer cette unique valeur en 3 vecteurs directeur.
Voilà.
Si vous pouviez m'aidez un peu ce serait sympa.