Bonjour à tous,
Je travaillais avant sur 3DS Max / Vray et depuis 2 ans que je suis passé sur C4D, un seul problème continue à m'énerver. Je fais appel à vous car je crois avoir fait le tour du net sans réponse valable. Dans C4D, la refraction génère des artefacts noirs impossibles à supprimer. Pour illustrer mon propos, j'ai fait une scène ultra simple : un torus avec une texture de verre, un sky avec un dégradé bleu vertical en luminance, et c'est tout.
Alors que la scène est entièrement bleue, C4D trouve le moyen de mettre du noir dans la refraction.
J'ai essayé de changer les valeurs de la "reflection depth", mais au mieux ça décale le problème...
Je suis impatient d'avoir votre avis car je me demande s'il ne s'agit pas d'un bug insoluble de C4D.
l'image :
http://imageshack.us/f/705/bugrefraction.jpg/
réglages :
http://imageshack.us/f/405/settingspd.png/
Dernière modification par Magu ; 09/08/2011 à 18h23.
et sans la reflexion totale interne (dans les paramètres du materiau) ca fait quoi ?
Le rendu, c'est juste de l'intégration numérique sur un espââââââce de dimension infinie...trivial quoi
Si tu pousses le nombre de réflexions max à 14, dans les options des réglages de rendu, le noir disparaît.
Dernière modification par César Vonc ; 09/08/2011 à 18h19.
C'est effectivement la première piste que j'ai essayé. Cependant ça ne supprime pas le noir dans tous les cas et au final ça génère une zone ultra aliasée qui à tendance à fleaker en anim.
Je vous mets une image avec 15 comme valeur.
http://imageshack.us/f/35/reflectiondepth.jpg/
http://imageshack.us/f/818/reflectiondepthcrop.jpg/
Dans certains posts sur le sujet, j'ai pu lire des réponses du genre "dans la réalité il y a toujours des taches noires sur les images de verres". C'est évidemment faux, le noir n'est que le reflet voulu du studio photo. Là c'est vraiment un souci du logiciel...
Qu'entends-tu par « fleaker » ?Cependant ça ne supprime pas le noir dans tous les cas et au final ça génère une zone ultra aliasée qui à tendance à fleaker en anim.
Tu veux dire une zone crénelée qui a tendance à clignoter en animation ?
À part augmenter le nombre de réflexion max et foutre un AC local plus élevé (Clic droit sur ton objet dans la liste > Propriétés Cinéma 4D > Rendu ; Forcer l'anti-crénelage avec un minimum ×2 ou plus), je vois pas vraiment de solution.
C'est le même problème que quand tu mets deux miroirs l'un en face de l'autre ; la réflexion est infinie et perd un peu en luminosité à chaque reflet pour donner au final un brouillard sombre. C4d gère ça par du noir après une certaine limite, comme t'as pu le remarquer.
oui par fleaker c'est bien ça que je voulais dire. le problème c'est que la rapport entre le "reflection depth" et le "ray depth" modifie considérablement le rendu de la refraction : typiquement sur mon test précedent, si je laisse le reflection depth à 15 mais que je monte le ray depth à 50 (ce qui peut être nécessaire dans certains cas), le noir revient.
En fait j'avais peur de ta réponse car effectivement je ne vois pas de solution non plus. Le fait est que ce problème interdit de faire des rendus de verre corrects car il intervient très tôt. Encore si j'avais 50 objets sur la scène je comprendrais que le moteur arrive à ses limites, mais là il n'y a qu'un pauvre petit torus !
Vray permettait au moins de choisir la couleur de sortie de la refraction, car même si dans la plupart des cas on le la voyait jamais, on pouvait au moins limiter la casse.
D'ailleurs, voici la même scène rendue avec vray pour C4D : aucun souci. Je veux continuer d'utiliser C4D seul, c'est pour cela que ce problème m'irrite vraiment.
http://imageshack.us/f/818/vray.jpg/
Tiens donc, Vray gèrerait mieux les reflets infinis.
N'ayant pas Vray, j'ai concocté une petite expérience pour voir plus clairement la limite des reflets de ces moteurs de rendus.
Il s'agit d'un cylindre chromé de l'intérieur ayant une texture multicolore sur un des couvercles (pour voir ce qu'il se passe à l'intérieur de ce cylindre, sa face extérieure est transparente).
Voici quel résultat j'obtiens avec le moteur de C4D 11.5, un Rayon max de 100 et une Réflexion max de 100 :
1600 × 800 - 1,48 Mo
On remarque bien la centaine de reflets ainsi que la limite à partir de laquelle le noir apparaît.
Il va sans dire que dans la réalité, tout serait coloré.
Pourrais-tu (ou quelqu'un d'autre) rendre avec les exacts mêmes paramètres cette scène sous Vray ? Je serais très curieux de voir ça !
Intéressant cette expérience. J'ai fait le test et j'obtiens presque exactement ma même chose avec juste un antialiasing plus fin, mais en fait ce n'est pas une bonne expérience : là tu utilises de la réflexion alors que c'est uniquement sur la refraction que se produit le "bug".
Dans ton expérience le noir arrive à cause de la courbure du cylindre on dirait.
Je dis ça mais je ne sais pas comment faire une expérience dans le genre mais utilisant la refraction...
Tu as le même résultat en utilisant le moteur de Vray, tu veux dire ? Ça m'étonne, j'aimerais bien voir ça.
C'est pareil, hein, le problème de ton exemple est liée à la réflexion, la réfraction n'a pas de problème en soi, sauf que dans certains cas elle reflète indéfiniment, d'où le noir de ton tore (tu as vu qu'en désactivant la réflexion totale interne, il n'y avait plus de noir).là tu utilises de la réflexion alors que c'est uniquement sur la refraction que se produit le "bug".
Non non, le noir n'a pas lieu d'être étant donné que tout l'intérieur du cylindre est chromé, il n'y a pas de fuite si tu veux (tu peux mettre un ciel blanc dans ta scène, tu verras toujours ce noir dans le cylindre).Dans ton expérience le noir arrive à cause de la courbure du cylindre on dirait.
Le cylindre et l'angle de vue particulier servent juste à voir la limite de la réflexion.
Si tu mets un rayon et une réflexion max à 15, tu verras beaucoup plus de noir :
Autre test : un torus dans l'alignement de la caméra, également dans l'alignement un disque avec le fameux dégradé qui fait le même diamètre que le torus.
On voit que C4D fait un joli cafouillage sur les côtés : mélange de noir et de bleu (couleur du sky) et des restes du dégradé sous formes de lignes relativement aléatoires et moches. En comparaison Vray reste bleu, ce qui est relativement logique étant donné que le disque est de profil est n'a aucune raison de se refléter sur les côté...
http://imageshack.us/f/560/torusc4d.jpg/
http://imageshack.us/f/192/torusvray.jpg/
http://imageshack.us/f/508/xpvray.jpg/
J'ai juste pas eu la patience d'attendre la fin du rendu...
Tu oublies une donnée importante : l'indice de refraction qui n'existe pas sur la reflexion (en tous cas pas sur C4D). Si je prends mon test et que j'applique tes shaders ça donne ça :
http://imageshack.us/f/718/torus.jpg/
Les reflets n'ont pas du tout le même aspect car avec l'IoR ils sont "tordus".
Dernière modification par Magu ; 09/08/2011 à 21h07.
Tiens, curieux.
Je cherche une idée d'expérience pour voir plus en détail les limite des reflets de la réfraction, Vray doit les gérer différemment, d'après ce que je vois.
Il y a un autre objet que le tore, sur lequel le noir est plus prononcé ?
Édition : J'avais pas vu ton dernier message, t'as utilisé quels paramètres pour avoir autant de noir dans ce tore ? Je n'avais pas de matériaux transparents, dans mon expérience de réflexion.
Dernière modification par César Vonc ; 09/08/2011 à 21h24.
J'ai utilisé la même technique que toi : un shader transparent pour l'exterieur et un shader réfléchissant pour l'interieur. Et toujours mon disque de profil dans le torus côté camera.
Ceci dit ce setup me donne idée : oublier la réfraction buggée et utiliser 2 shaders avec réflection pour les deux côtés. Mais en faisant ça exit l'indice de réfraction...
Ah oui non d'accord, il n'y a pas de réfraction sur ta dernière image.
Sinon pour faire simple, on peut faire un gros plan sur la partie du tore qui déconne et voir comment Vray gère ça par rapport à C4d.
J'ai utilisé mon fond coloré et un tore avec un indice de réfraction de 1,4, un rayon et une réflexion max de 20.
Ci-joint le fichier pour qu'on puisse comparer avec Vray au pixel près.
Dernière modification par César Vonc ; 09/08/2011 à 22h48.
Je n'ai plus Vray sous la main, je ferai le test demain. En tous cas merci de ton implication, même si j'ai bien peur que nos petites expériences ne nous fassent que constater l'évidence : notre soft de 3D préféré ne sait pas faire de rendus de verre tout seul...
J'espère que la r13 corrigera le tir, même si je trouve assez scandaleux de sortir 2 grosses mises a jours a si peu d'intervalle : j'ai du passer a la 12 il y a 3 mois car Maxon ne vendait plus de modules pour la 11.5.
Dernière modification par César Vonc ; 09/08/2011 à 23h00.
Encore une fois c'est en faisant le rendu que je me rend compte que l'expérience n'est pas bonne : dans ton test tu as éliminé le bug. Il n'y a en effet pas de noir du tout dans ta refraction avec l'angle que tu as choisi. Donc j'obtiens sensiblement la même chose, ce que ne fait pas vraiment avancer le schmilblick !
En fait j'ai juste augmenté le nombre de rayons et de réflexion max, mais tu me disais que Vray avait un résultat moins bordellique à ce niveau, moins crénelé, tu pourrais montrer le rendu sous Vray ?
C'est tant mieux si Vray affiche la même chose, ça veut dire que son nombre de réflexions max est juste plus élevé par défaut, et que la différence réside uniquement dans l'anti-crénelage des reflets.
Le noir semble apparaître dans certains cas lorsque le nombre de Rayon max est supérieur au nombre de Réflexion max, d'après ce que j'ai pu voir.
Tu peux virer totalement le noir si ton nombre de Réflexion max est égal au nombre de Rayon max, et contrôler le nombre de reflets dans la réfraction par le nombre de Rayon max.
Voilà, C4D peut parfaitement se mesurer à Vray !
c'est complètement contre-intuitif ce truc....
Le rendu, c'est juste de l'intégration numérique sur un espââââââce de dimension infinie...trivial quoi
Effectivement cette méthode fonctionne.
Le seul souci avec ça, c'est que le rayon max n'est pas utilisé que pour la refraction, mais aussi pour l'alpha. Typiquement j'ai eu un cas ou en mettant plusieurs dizaines de planes avec couche alpha les uns derrière les autres et très proches, il fallait que je monte le rayon à mort pour que le moteur de rendu lise bien toutes les couches alpha, sinon certains planes devenaient opaques. Mais en refaisant le test sur r12 ce problème semble avoir disparu... Donc ne boudons pas notre bonheur, nous avons une solution !
merci Cesar Vonc pour le temps que tu y as passé.
Si un admin passe par là je pense qu'il serait pas mal de sortir ce post du bac à sable car je pense que ça peut être utile à pas mal de monde...
A mon avis la refraction est un vrai point noir du moteur de rendu de c4d : en plus d'être contre intuitif, le rendu est anormalement long et la gestion des reflections / refractions dans les shaders très perfectible (gestion des ombres, de la couche alpha, obligation de mettre la transparence à 98% pour avoir de la reflection...).
Pour ça je suis impatient de tester la r13.
98% pour la transparence me parait normal…rien n'est vraiment transparent à 100% dans la vraie vie
http://dr-graphix.blogspot.com/-DRG Design / Portfolio
le problème c'est que "transparent à N%" ca veut rien dire dans la vraie vie. tu as une quantité d'energie absorbée, mais tout le reste est transmis par transparence ou réfléchi en fonction de l'angle d'incidence et des indices de refraction (lois de fresnel). Donc que le comportement du systeme soit un peu bizarre pour l'intensité relative des reflexions/refractions, c'est normal. Par contre, le comportement des taches noires en fonction des profondeurs de rayons, là vraiment, je comprends pas que ce soit dans ce sens là (je me serais attendu à ce qu'une ray depth plus grande n'amène pas plus de taches qu'avant...)
Le rendu, c'est juste de l'intégration numérique sur un espââââââce de dimension infinie...trivial quoi