Gracias jaca, debo confesar que no había buscado mucho.
Versión para imprimir
Gracias jaca, debo confesar que no había buscado mucho.
Bueno, como jaca sido un buen chico y se leído todo voy a hacer una recopilación de cosas para que todo os quede más claro, además hay noticias frescas sobre el tema de los fotones, que como ya dije, es un tema que pocos controlan y poco estudiado.
Bueno, palabras todo lo que voy a decir son palabras del maestro Drakken. Leed atentos. Voy a intentar explicarte alguna de las dudas, pero va a ser con mis propias palabras y adelantándote que no debes creerte lo que yo te comento a pies juntillas porque no soy programador e ignoro el funcionamiento exacto de los cálculos que se necesitan para la GI.
Direct computation del Vray: más o menos lo qué significa es: no hagas un submuestreo -> calcula todos los píxeles del render, por lo tanto no se produce interpolación para calcular los píxeles intermedios, viene a ser (a efectos de colocación de muestras) como colocar un 0/0 en el Irradiance Map.
Mapa de irradiancia: viene a significar algo así: calcula sólo las muestras que yo considere necesarias, especificando el mínimo de muestras al que puedo llegar, el máximo, que criterios debes seguir para disponerlas y una vez que las tengas colocadas utiliza un cierto número de rayos para calcular su iluminación.
Al no haber muestras en todos los píxeles del render es necesario interpolar para asignar la iluminación a los píxeles que quedan.
Mínimo/máximo rate: especifican la cantidad de muestras mínima/máxima que puede haber por píxel, si te fijas en los renders de abajo (están sacados de Brazil, pero es lo mismo), en el primero el número, de puntos rosa (muestras) es muy poco denso, mientras que en el otro es más denso.
Esto es porque en la imagen con más muestras he puesto un min, rate más alto, es decir como mínimo tienes que colocar tantas muestras cada tantos píxeles. ¿ves los tres cuadrados rosas en el primer render? Es una zona (render a medias sobre otro render) a 0/0, es decir, todos los píxeles son muestras y por tanto todos son tenidos en consideración para el cálculo.
El asunto está en utilizar el mínimo número de muestras posibles (menos calculo, menos tiempo de render) y aun así sacar buenos resultados. Un máximo de 0 significa en los motores: si la zona lo necesita, coloca una muestra en cada píxel, un máximo por encima de 0 (1; 2, etc). Supone entrar a nivel subpíxel, cosa que muy pocas veces está justificado. Threshold y normal threshold son números que especifican la posibilidad de añadir más muestras según la diferencia de color de dos muestras cercanas o el ángulo que formen, según el render, a veces es útil utilizar uno u otro criterio para añadir muestras en las zonas difíciles.
El valor del Dist threshold ayuda a añadir muestras cuando tienes dos objetos cercanos, por ejemplo una caja pequeña sobre otra caja, aumentando el valor del Dist, threshold se añadirán más muestras en esa zona cercana a la unión de ambos objetos.
Añado yo, el valor Dist añade muestras en todas las esquinas de nuestra escena por lo que su importancia es fundamental, recordad que ya dijimos que esté valor funciona al contrario que los otros, más alto más precisión, los otros, más bajo más precisión.
Mapa de irradiancia: sí, sería algo así como una textura que le indica al programa la iluminación de los distintos objetos. De todas formas, ten esto en cuenta: el cálculo se realiza sólo en unos píxeles determinados, estos píxeles se corresponden con un objeto, pero hay muchos puntos que por no aparecer en el render (si un objeto está detrás de la cámara por ejemplo) no habrán sido calculados, en estos puntos, el mapa de irradiancia tendrá grandes carencias, intentara suplirlas con interpolación pero el resultado será malo.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4346
https://www.foro3d.com/attachment.php?attachmentid=4347
Y ahora os explico un poco lo de first bounce difusse, lo de los hemisferios, que son los rayos, he dibujado unos esquemas cutres, los he visto en más de una ocasión por ahí, pero como no he podido localizarlos he acabado dibujándolos a groso modo. El primer esquema representa la iluminación directa sobre una muestra, nada que señalar, es una línea recta que une el punto de luz con la muestra.
El segundo esquema representa la iluminación difusa, partiendo de una muestra (situada evidentemente en un determinado plano), se genera un hemisferio a su alrededor y prolongando las líneas que van desde la muestra hacia los distintos puntos del hemisferio se realiza una búsqueda de iluminación. Estas líneas son los tan mencionados rayos (hsph subdivisiones), su distribución a lo largo del hemisferio no tiene por qué ser uniforme.
En el tercer esquema tenemos una muestra de una escena (que cutre), partiendo de esa muestra se genera el hemisferio y se lanzan los rayos, si te fijas, sólo he dibujado el primer rebote difuso, pero el motor de render es configurable para generar más rebotes y así poder calcular la iluminación de esa muestra de una manera más realista.
La luz va perdiendo energía a medida que rebota en los objetos, por eso, para conseguir realismo no es necesario configurar un número muy elevado de rebotes, ya que a partir de cierto número apenas tienen incidencia en la escena.
Y aquí viene la gran diferencia con respecto al mapa de fotones, el mapa de irradiancia se calcula en sentido inverso a la iluminación, es decir, empezamos a trazar rayos a partir de la muestra. El mapa de fotones parte de los puntos de luz (necesita generadores de fotones), en el proceso del mapa de fotones no se tienen en cuenta los píxeles del render, es una simulación más intuitiva del comportamiento de la luz, pero el número, de fotones que debe generar una fuente de luz para lograr la misma calidad que el mapa de irradiancia es brutal. Hay que darse cuenta de que con el mapa de irradiancia, los píxeles del render recibían rayos y rayos, pero mediante el mapa de fotones todo depende del número de rayos que mediante rebote hayan llegado a esos puntos. Por el mismo motivo, el guardado del mapa de fotones es independiente del render en sí.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4348
https://www.foro3d.com/attachment.php?attachmentid=4349
https://www.foro3d.com/attachment.php?attachmentid=4350
Ahora veamos lo que dice Drakken sobre muestras e interpolaciones, en cuanto a las interpolaciones, digamos que después de calcular muestras, rayos, etc y tener por fin los valores de cada muestra, hay que averiguar que valores van a tener el resto de los píxeles del render que no tenían una muestra asignada, para eso se produce una interpolación entre los valores de las muestras.
Imagínate que en un extremo tienes una muestra de color negro y en el otro extremo una de color blanco, el ordenador haría un gradiente que iría de negro a blanco para rellenar la zona que no sido calculada.
El problema del interpolate samples es que si lo aumentas demasiado, alcanzara a más muestras a la hora de interpolar, y generara una especie de desenfoque buscando una representación continua en el render, esto influye negativamente en la calidad del render y puede producir por ejemplo artefactos luminosos en zonas donde no deberían existir.
Si el valor es muy bajo, se respetara más el valor inicial de las muestras y dará la sensación de que hay un montón de pequeñas manchas oscuras y claras en la escena, aunque aumentes el número de rayos y de cálculo en general siempre va a ver una diferencia de color entre muestras cercanas y eso se nota. No puedes pasarte ni quedarte corto. ¿pocos rayos o pocas muestras o poca interpolación?
Partiendo del hecho de que cada escena es un mundo, creo que, lo mejor es optar por un término medio, un exceso o una falta de cualquiera de esos tres ingredientes suele dar lugar a problemas. Más rayos y más muestras aumentan los tiempos de render, sin embargo, la interpolación apenas supone calculo, por lo que en principio, y sobre todo gracias al guardado de los mapas, siempre podremos realizar más pruebas con este último aspecto.
Añado yo, el valor de interpolaciones no es guardado ni calculado en el Irradiance Map, por lo que podemos guardar nuestro Irradiance Map y jugar con el número que queramos, pues se computan durante el render.
En cuanto al tema de fotones, cosas que tenéis que tener en cuenta y que antes no sabía, el valor de retrace threshold (que ya sabéis que con el las esquinas se calculan con direct computation y ganamos calidad aunque en detrimento del tiempo) y el valor de retrace bounces son computado durante el cálculo del Irradiance Map. Por lo tanto, podéis hacer un cálculo de fotones, guardar el mapa y poner el primer rebote en Irradiance Map y variar estos valores pues se computan ahí, y no en el cálculo de fotones. Max Photons y search Dist tampoco se computan en el cálculo de fotones. Si tenéis ambos rebotes en global Photon Map guardáis el mapa y podéis variar estos valores pues se computan en el proceso de render. Esto es bueno para hacer nuestras pruebas. Lanzamos muchísimos fotones y guardamos el mapa y entonces variamos esos valores, y nos ahorramos todo el cálculo del lanzamiento de fotones.
Si tenéis el primer rebote en Irradiance Map, estos valores se computan ahí, así que también podéis guardar el mapa de fotones e ir variando. Bueno, por ahora nada más, saludos y a ver si arreglan lo del foro que no se ven muchas imágenes del mensajes.
Revisando el pues de jaca me faltan 2 cosas por contestar, espero que las otras estén todas claras, abajo tienes dónde está la casilla chek sample visibility que previene en algunos casos artefactos.
Y en cuanto a lo de qué significa el bright multiplier del Color Mapping pues es un multiplicador para las zonas iluminadas de la escena, si te digo la verdad, nunca lo he tocado, saludos.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4352
Gracias Dideje, creo que tengo todo, sido una explicación magistral, un saludo, jaca.
Bueno, supongo que os habréis dado cuenta, pero por si acaso ahí queda, el mapa de fotones es totalmente independiente de la resolución del render (los píxeles vamos) es igual calcularlo a 10 por 10 que ha 1000000 por 1000000, además de que tarda lo mismo claro.
Tampoco hace falta un mejor mapa de fotones para una resolución más alta. Lo mejor es calcular el mapa de fotones con un max density pequeño y muchos fotones, guardarlo y después variar el search Dist a nuestro gusto y usar retrace si vemos que salen artefactos en las esquinas (aunque también podemos aumentar el número de fotones, depende lo que consuma más tiempo).
En definitiva, el mapa de fotones depende de las unidades de la escena, no como el Irradiance Map que si tiene una relación directa con los píxeles de salida, saludos.
Por cierto, de un tiempo a esta parte veo que han aumentado bastante las lecturas del mensajes, ¿no tenéis ninguna duda? Ya sabéis, que estamos encantados de seguir con el tema. A ver si pillo un rato libre y pongo un minitutorial aquí de iluminación de interiores con luz natural, que ya realmente queda poco que decir.
Bueno, pues vamos, allá con la iluminación natural, aquí tenéis la escena para bajárosla, no es mía, la encontré por ahí, pero nos va a servir muy bien, bueno, la cargáis y escogéis Vray como render. Ya está más o menos texturizada, es mejor iluminar con texturas porque si lo hacemos todo en blanco después pueden salir problemas, aunque depende mucho de la experiencia claro.
He puesto un suelo de madera con Glossy (desenfoque en el reflejo), aunque ahora de momento no tiene Glossy, para que las pruebas vayan más rápido, solo reflexión, al final se lo añadiremos.
Y después a las primitivas les he puesto un material gris con reflexión, como aluminio o algo así, que queda bien. Lo demás blanco.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4390
Bien, como veis hay 2 luces en la escena, una direccional a modo de sol, y una Vray Light en el hueco con la opción skylight portal, que lo que hará es meter más y mejor luz indirecta en nuestro interior.
La Vray Light cogerá los valores del environment de GI.
Estas luces tienen como multiplicador 1.
El environment he dejado el de 3ds Max con un tono azulado.
En general vamos a dejar todos los multiplicadores de las luces en 1, y el environment también.
Ahora vamos a ver los fotones de cada luz por separado.
Empezamos con la Vray Light, así que apagamos el sol.
Activamos GI.
Y ponemos global Photon Map en el first bounce y secondary bounce, ya que vamos a usar fotones, os dejo a vosotros que hagáis pruebas con direct. El multiplicador de los rebotes secundarios depende de la escena, pero no lo subiremos mucho por el color bleed.
Aquí como tenemos paredes blancas y el suelo de madera que puede producirlo lo he puesto a 0.65.
Y para iluminar la escena lo que vamos a hacer es usar el Color Mapping Hsv.
Por norma general hay que subir el dark entre 10 y 15.
Yo lo he puesto a 12.
La configuración del global Photon Map ya sabéis.
Max density bajo.
Lo he puesto en 1.
Search Dist 5.
10 bounces.
Retrace 0.
Las opciones de la derecha las 3 activadas.
Bien, lanzamos render.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4391
Como veis el mapa de fotones es muy malo, hemos dejado el número de fotones por defecto (subdivisiones en el panel system) en 150 (150 por 150=22500), por lo general no bajaremos de 1000 subdivisiones en ninguna luz para tener algo de calidad, lo suyo seria subirlo más. Subimos a un millón de fotones lanzados y ya veis que el resultado es mucho mejor.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4392
Bien, ya hemos acabado con la Vray Light, la apagamos y encendemos el sol y vamos a ver el mapa de fotones que produce, subimos las subdivisiones a 1000 como la Vray Light y lanzamos render.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4393
Como veis el mapa de fotones es muy malo y eso es porque las luces standard (omnis, direct, spot) necesitan bastantes más subdivisiones que las Vray Light para alcanzar la misma suavidad. Recordemos que lo que hay que conseguir con el mapa de fotones cuando hay más de 1 luz es que la contribución de cada luz sea similar (esté igual de suavizada la solución del mapa). Subimos las subdivisiones a 3000 y lanzamos render.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4394
Bueno, como vemos el mapa de fotones de la Vray Light y del sol están más o menos igual de suavizados (mismo contraste zonas oscuras y claras), fijaros sobre todo en la pared de la derecha que es donde mejor se aprecia. Por cierto, han salido un par de manchas blancas en el mapa del sol, espero que no den problemas.
Ahora vamos a activar las 2 luces y calcular el mapa de fotones conjunto, para guardarlo y poner el primer rebote en Irradiance Map y darle calidad al asunto. Lanzamos render y guardamos el mapa (o bien activamos el autosave o después del render le damos a save todo file). Cargamos el mapa de fotones con la opción from file y lo dejamos cargado.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=4395