PDA

Voir la version complète : Diffraction de la lumière prisme



ancktv
14/08/2009, 19h36
Bonjour tout le monde !

J'ai trouver un post où l'on présente des rendus de ce que je recherche mais il doit être vieux car presque tout les liens sont rompus. Je cherche à réaliser un prisme lumineux qui diffracte la lumière de cette façon : http://pcbelair.free.fr/DossierQuatrieme/optique4e/couleurs4e/prisme.jpg

J'ai trouver un tutoriel sur cet ancien post qui applique un reflet "arc en ciel" sur la surface des éléments en fusionnant différentes couches http://www.hoschie.de/3d/anl/glas/glasengl.htm

J'ai donc éssayé de réaliser cette scene en 3d avec les caustics sans grand éspoir ^^ en superposant les couches avec les décallages de réfraction on obtient de jolie rayon de couleur mais ce n'est pas ce que je recherche.


J'ai vu que le plugin Indigo pouvait éventuellement permettre de créer cette diffraction, mais ma version est obsolete. Peut être est-il possible de la créer avec vray... J'ai fait des recherches sur google apparement les mecs font ça sur linux en programmant leur truc mais j'y comprend rien et je n'utilise pas linux :P


Si quelqu'un a une idée :)

druide
14/08/2009, 19h52
Oui salut,

Dans les textures, tu as les effets, il y en un qui s'appel spectral, il pourrait peu être te convenir.
:oops: en même temps vu que je ne l'ai encore jamais utilisé je ne suis sure de rien.

Edit: Autrement peut être qu'avec un fresnel ça pourrait le faire, faut tester.

Edit2: à droite spectral en réflexion 50% transparence 80%; à gauche fresnel en réflexion 100% transparence 80%
Après à savoir si ça fonctionne avec les caustiques ????
(Désolé de poser une image sur ton post)

http://img40.imageshack.us/img40/4955/sanstitrelxd.jpg

Edit3: Après quelques testes il semble que ça passe mieux avec un fresnel en transparence, enfin tu veras bien après ta pizza.

shtl
14/08/2009, 20h07
Il me semble que cet effet est très à la mode, et j'ai vu pas mal de film utiliser cet effet ces dernières années. Malheureusement je ne me suis pas vraiment renseigné sur le sujet. Ce dont je suis certain, c'est que beaucoup le réalisent en post-prode, dans leur soft de compositing. Comme par exemple AFX, qui dispose de plusieurs plugin qui font ça. Désolé c'est pas d'une grande aide....
Sinon PP avait aussi sa méthode, qu'il avait posté sur ce forum, as tu retrouvé?

ancktv
14/08/2009, 20h11
Druide : Effectivement quelque chose de très interessant se passe merci beaucoup ! Je vais continuer ma scene mais la j'ai faim alors je vais aller manger une pizza et voir sa ensuite.

SHTL : Je vais me renseigner dès que j'ai fini ma pizza merci !

Paradox
14/08/2009, 20h19
Sur AfterFX tu as le plug Starglow de chez Trapcode qui donne des effets d'irisation sur les parties lumineuses. :wink:

ancktv
14/08/2009, 21h32
Oui je connais ce plugin que j'aime bien d'ailleur : P, je me demande même si d'autre plugin peuvent créer des effets d'irisation plus précisément. Mais je cherche à créer ce reflet de difraction "arc en ciel" directement dans le rendu. L'effet spectrum à l'air interessant je vais me pencher dessus.

Merci pour vos réponses en tout cas !

druide
14/08/2009, 21h38
Juste un truc, après quelques essaies, il semblerait que spectrum est du mal à sortir des caustics, alors que fresnel lui gère très bien les photons.

Edit: t'arrive à faire quelque chose avec spectrum !?! (balèze) moi j'obtient ça:

http://img35.imageshack.us/img35/7904/sanstitre2ujg.jpg

à gauche fresnel à droite spectrum (en transparence les 2)
Encore pardon de poser des images sur ton post :oops:
Edit 2: peut être qu'en mettant spectrum en réflexion et fresnel en transparence ça te sortirait ce que tu souhaites...

ancktv
14/08/2009, 21h47
J'ai remarqué aussi il reflete mais à l'inverse ! il se reflette seulement sur le sol.. Je pense que c'est parce qu'il s'agit de la couche reflection donc le reflet ne traverse pas dans la transparence. Lorsque l'on applique l'effet spectrum sur la couche transparence on obtient un reflet convaincant au sol mais il annihi complétement la tansparence de l'objet (dans la preview du shader les bord sont noir)

Paradox
14/08/2009, 22h33
Sinon avec Maxwell render c'est possible mais faut s'accrocher aux branches pour y comprendre quelques choses :arg:

http://www.maxwellrender.com/img/gallery/technical/dispersion/pics/thomasan_prism03.jpg

Itsmil
14/08/2009, 22h40
Sinon avec Maxwell render c'est possible mais faut s'accrocher aux branches pour y comprendre quelques choses :arg:

http://www.maxwellrender.com/img/gallery/technical/dispersion/pics/thomasan_prism03.jpg

heu...c'est un rendu ça ? :o

pigniouf
14/08/2009, 23h30
:shock: la lumière est renvoyée comme un vrai prisme ou il y a un empilage de calques????

blaster2307
14/08/2009, 23h57
Maxwell render utilise les propriétés physiques (équations de maxwell) de la lumière pour calculer le tout mais alors là faut vraiment gérer les réglages...

tarlack
15/08/2009, 00h30
tous les moteurs visant le photo-réalisme utilisent des approximations des équations de maxwell, valides pour ce qu'on veut faire,à savoir du rendu à l'échelle macroscopique, ne prenant pas en compte les phases des ondes (donc pas d'interference).

Mais seuls les moteurs de rendu gérant explicitement les longueurs d'ondes et les indices de refractions variables par longueur d'onde peuvent rendre l'effet que tu veux. Maxwell en est un, luxrender en est un autre, il faudrait voir pour fryrender, je ne le connais pas bien. Dans C4D et sauf erreur de ma part, il n'est possible de le faire de manière rigoureuse que si tes materiaux sont tous blancs, en faisant plusieurs rendus bien choisis, avec quelques modifs de la scène pour chaque rendu (les indices de refraction). Si ca interesse des gens je peux détailler, mais bon en pratique ca serait long en terme de temps de rendu dès qu'il y aurait une lumière blanche et qu'on voudrait une bonne précision des franges (coder un plugin pour ca ne devrait pas etre trop dur pour automatiser le process).

pigniouf
15/08/2009, 00h39
en gros le plugin calculerais le spectre lumineux je suis peu être nasse mais comment veux tu intégrer une équation dans un plugin

ancktv
15/08/2009, 00h41
Mh en effet c'est plus que convaincant et c'est éxactement ce que je cherche à faire !! Je débute avec les moteurs de rendu j'ai éssayer vray qui est très convaincant aussi. Merci beaucoup ! Le rendu est vraiment très beau ! Le faire dans c4d reviendrai à jouer avec la refraction en empilant les couches rvb c'est bien cela? Cela me parait bien laborieux je suis plus interessé par la solution de maxwell je crois :bounce:

tarlack
15/08/2009, 00h50
en gros le plugin calculerais le spectre lumineux je suis peu être nasse mais comment veux tu intégrer une équation dans un plugin


si tu sais, à l'aide de C4D, lancer un rayon arbitraire (avoir les données d'intersection etc), faire du shading, generer des rayons intelligement - ou pas - à partir d'une BSDF, de la caméra et des lumières (et qu'il te renvoie les probas associées), rien ne t'empêche de faire un vrai renderer spectral à la luxrender ou à la maxwell dans C4D avec le SDK. Ca peut meme se coder assez vite - si on connait assez bien le SDK s'entend - si tu fais du pathtracing, ca va juste etre super long à rendre pour arriver à convergence (enlever le bruit) ;)

Le plugin dont je parle ici serait beaucoup plus basique et utiliserait le moteur de C4D, il ferait juste N rendus (1 par longueur d'onde examinée), et pour chaque rendu reglerait juste la couleur des lumières à la couleur correspondant à la longueur d'onde en cours, ainsi que les indices de refraction des materiaux transparents pour cette meme longueur d'onde. Il enregistrerait chaque rendu dans N images en HDR, et ensuite il faudrait juste faire la moyenne de ces images, un peu de tonemapping et hop t'as ton rendu. Le probleme de cette méthode c'est que lorsqu'il fait son rendu, C4D va faire le shading en utilisant un modele du genre RGB (ou tout autre modèle de couleur), pas un modele basé sur des longueurs d'onde uniques. Résultat, si du rouge ([1, 0, 0] en RGB) tombe sur du jaune ([1,1,0] en RGB), il ne va pas ressortir du noir comme il devrait, mais du rouge (on multiplie les deux, ie [1*1, 0*1, 0*0] = [1, 0, 0]), donc ca fausse tout...d'où la restriction aux materiaux blancs

pigniouf
15/08/2009, 01h09
:grin: Excuse moi mais je ne suis pas un matheu mais si j'ai bien compris ta logique si la lumière gérée par le plugin
viens à frapper une surface autre que du blanc la réflexion de celui-ci sera modifier par la couleur de celle-ci
Alors je me pose une question prend le cas d'un rendu extérieure la radiositée calcul simplement sur le renvois de lumière
et l'absorption que l'objet recevra de cette dite lumière.
Ce qui serait intéressant ce que le moteur de rendu tienne aussi compte de ses paramètres spectrale de la lumière
pour un rendu plus proche de la réalité non!
a moins que je raconte une grosse co........

ancktv
15/08/2009, 01h12
D'accord donc en faite c'est impossible à rendre dans c4d...
Bin il reste plus qu'a apprendre luxrender et maxwell. luxrender peut fonctionner avec c4d et maxwell indépendement d'après ce que j'ai compris. Et faut programmer aussi dans ces trucs là sinon ca va me comencer à me faire peurrr haha

euh perso je programme pas du tout de plugin c'est quoi le BSDF et le SDK ? :grin:

tarlack
15/08/2009, 01h16
@pigniouf: tu as bien compris la logique :) un moteur de rendu spectral ne doit pas parler en terme de couleur, mais de longueurs d'onde. dès qu'il parle en terme de couleur, le seul moyen de pas introduire d'erreur est de n'avoir que des materiaux blancs (qui ne modifieront pas ce qu'on traite, qu'on l'interprete en terme de couleur ou de longueur d'onde)
@ancktv: SDK c'est ce qui permet de programmer des plugins pour un logiciel donné en utilisant les fonctionnalités internes à celui-ci, ici C4D. BSDF dans le sens où je l'entend c'est un truc bizarre pour les barbus qui font du rendu :mrgreen: ca décrit quantitativement comment la lumière est diffusée à un point d'une surface.

pigniouf
15/08/2009, 01h48
:prie: :prie: d'accord en fait ce que interprètent nos yeux sont des longueurs d'ondes voilà pourquoi j'en bave pour mes rendus extérieures, il faudrait que je trouve un truc pour régler sa quelqu un' en à un par hasard?

druide
15/08/2009, 01h55
Donc du coup je me prends la tête depuis tout à l'heure pour rien, vu que c'est impossible de diffracté la lumière sans passer par du multi rendus multi calques.

:poucehaut: Merci tarlack pour les explications :prie: , on compte sur toi tu nous fais ce plugins qui gère ça :mrgreen:

ancktv
15/08/2009, 02h17
Avec le spectrum et les caustics il est possible de faire apparaitre un rayon, j'en avais un beau mais j'ai perdu mes reglages, je cherche ça donne des trucs pas trop moche mais bon c'est pas du maxwell ! C'est surtout l'éclairage et je joue avec du compositing un objet non vu par la caméra génère le caustics et le spectrum contenu dans sa transparence.

pigniouf
15/08/2009, 02h20
Donc du coup je me prends la tête depuis tout à l'heure pour rien, vu que c'est impossible de diffracté la lumière sans passer par du multi rendus multi calques.

:poucehaut: Merci tarlack pour les explications :prie: , on compte sur toi tu nous fais ce plugins qui gère ça :mrgreen:

Non en faite c'est simple ce que tu vois son des ondes tandis que ta bécane interprète en numérique ou axé décimale bon pas sur pour le terme
voilà toute la problèmatique de la chose car les variantes sont tellement importante que je ne sais pas si une machine pourrais les intégrer tarlak corrige moi si je me trompe

diego1968
15/08/2009, 09h31
Bon , ben j'avais fait un test (pas très concluant du reste) mais cela peut toujours aider !

http://forums.polyloop.net/picture.php?albumid=53&pictureid=466

Je ne sais pas comment joindre un fichier au message ? :nono:

Rudy
15/08/2009, 13h45
Je poste pour garder un œil sur cette lumière :poucehaut:

tarlack
15/08/2009, 17h30
@pigniouf: y a du mélange dans l'air :D ce qu'on voit avec nos yeux, ce sont des photons, qui ont, entre autres caractéristiques, une certaine longueur d'onde. Les yeux ont des capteurs pour les photons ayant leur longueur d'onde comprise entre certaines bornes (entre 480nm et 700nm de mémoire, mais une recherche sur :google: te donnera vite les données précises si tu les veux). A partir des données récupérées par le capteur de nos yeux, le cerveau reconstruit une image (qui n'est pas juste une recopie bête des énergies ou un truc simple, c'est un truc très complexe que ceux qui font du tone-mapping essayent de reproduire - il n'y a qu'à voir les effets de gloom quand on sort d'un tunnel pour voir que c'est pas trivial).
Côté moteurs de rendu maintenant : en sortie, ils produisent des images (png, jpg, ...) qui sont visualisables directement. chaque pixel est exprimé en RGB avec chaque coordonnée bornée entre 0 et 255 (ou tout autre systeme de couleur genre XYZ, CMYK, ... avec des données bornées), bref ils ont totalement perdus la notion d'energie : c'est du perceptuel (couleur), non plus du physique (spectre). Il y a eu une phase de tonemapping pour passer de données non bornées à des données bornées. Pour les images HDR, tu sors directement les données non bornées, qui peuvent être considérées comme des données physiques. Mais pendant le rendu, ils ont 2 possibilités pour gérer le côté physique (spectral) : soit par une représentation "continue", ie ils utilisent une seule représentation pour tout le spectre (l'espace RGB est une de ces représentations, mais c'est franchement pas la meilleure), soit ils différencient chaque longueur d'onde, et les traitent chacune séparement. L'avantage du premier, c'est que c'est plus rapide, tu traites tout le spectre en meme temps, donc tu peux diminuer énormément le nombre de calculs redondants (par exemple, vu que tu supposes que tous les photons de ton spectre suivent le même chemin, t'as juste à tracer un seul rayon pour tous les photons pour trouver le prochain point de rebond, au lieu d'un par photon). Le gros désavantage, c'est que dès qu'un chemin lumineux dépend de la longueur d'onde (cas typique de la réfraction), tu ne peux pas le traiter, vu que tu ne traites qu'un chemin optique pour tout le spectre (et donc tu ne peux pas avoir un rayon de lancé vers la droite pour la longueur d'onde rouge et un autre vers la gauche pour le bleu, par exemple). Pour la méthode par longueur d'onde, tu prends l'opposé des avantages et des inconvénients de la première méthode :)
On pourrait imaginer des moteurs hybrides, qui passent d'un modèle continu à un modèle par longueur d'onde quand c'est nécessaire. J'ai pas regardé le fonctionnement de luxrender par rapport à ca, mais je suppose qu'ils font un truc dans le genre, ca parait assez naturel vu le gain en temps de calcul quand t'as peu de réfractions.

PS : désolé pour le pavé, pas forcément intéressant en plus.... :oops: