Hsph subdivs e interpolate samples dudas
Buenas, estoy aquí de nuevo leyendo y leyendo el tutorial de Dideje y creo por fin empezar a entender el comportamiento y cualidades de este motor de render, sin embargo, sigo teniendo algunas dudas (he buscado la respuesta usando el buscador del foro y no la he encontrado, por eso es que llego a esta instancia) voy a tratar de ser lo más claro que pueda, me refiero a las hsph subdivisiones y a interpolate samples para el cálculo del Irradiance Map, citando a Dideje ¿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.
Bueno el asunto es que no logro encontrar una relación de valores aplicable para cada tipo de escena que tengamos, lo único que halle fue algo, así como: con un número alto de hsph subdivisiones las interp. Samples deben ser bajas para evitar que aparezcan artefactos (iluminación en esquinas). Un valor alto mayor calidad en el render, pero peores tiempos yo me pregunto ¿cuánto sería mucho y cuanto seria poco? Vean el ejemplo al que me refiero, en el render final de la escena_pruebas, (*.rar) Dideje uso los siguientes parámetros:
Hsph. Subdivs: 35.
Interpolate Samples: 45.
Mientras que en la de luz_natural_inicio, (*.rar) el uso unos valores así:
Hsph 35 inter 35 y he visto valores de lo más raros, como en algunos vídeo tutoriales de Evermotion utilizaban 20;20 y en exteriores la relación hsph 30 inter 10 (en un tutorial de ósmosis) quiero aclarar primero que todo que comprendo que son estos dos parámetros los cuales están muy bien explicados por Dideje en la página 10 del mensaje interior con luz artificial pero no hace ninguna referencia a que representan estos valores, algo que si se hace, por ejemplo, en aclarar qué significa el valor de 1 en 3dsmax density del cálculo de fotones en el cual 1 es la unidad del sistema en el que estemos trabajando (metros, centímetros, milímetros) me gustaría tener alguna referencia en cuanto a posibles valores que, adopten estos parámetros según la escena que tengamos. Bueno espero a ver sido lo más concreto, y por supuesto si esto está respondido en algún mensaje o sección de alguno les agradecería que me den el enlace al mismo, y no se enojen conmigo porque la verdad es que llevo horas tratando de encontrarlo y no lo he logrado.
3 Archivos adjunto(s)
Hsph subdivs e interpolate samples dudas
Hola. Ante todo decir que no soy precisamente la persona más indicada para explicarte todo este tema sin cometer ciertas imprecisiones. Programar un renderer como Vray no es fácil (en realidad es bastante jodido) y las cuestiones técnicas que nos encontramos ante este tema también son complejas de responder.
Dicho esto, intentaré explicarte lo mejor que pueda en que consisten los parámetros hsph. Subdivs e interp, samples.
Empezamos con las hsph. Subdivs.
Básicamente, un raytracer lo que hace es lanzar rayos (primary rays) desde el punto de vista del observador (la cámara) entonces se va viendo cada rayo en que punto colisiona. En un raytracer sin soporte para GI, una vez que el rayo intersecta en un punto de una superficie, se calcula las componentes de la iluminación para dicho punto (Diffuse, Specular). Y listo. En ciertas situaciones en las que se tenga que calcular una reflexión o una refracción, se vuelve a lanzar otro rayo (secondary rays) para llevar a cabo dicho cálculo (en realidad se lanzan tantos rayos como máxima profundidad le demos a la reflexión).
Vale, esto es en un raytracer donde no se soporta GI. Ahora veamos el caso de la GI. Al igual que antes, se lanza un rayo desde la cámara y éste intersecta en algún punto de una superficie. Llegados a este punto es donde se encuentra la gran diferencia entre calcular o no la GI. Sin GI dije que se calculaba la iluminación para ese punto y listo. Pues bien, con GI, lo que hay que hacer es ver la contribución de toda la escena en la iluminación de dicho punto. ¿cómo se hace esto? Pues básicamente lanzando más rayos (secondary rays) desde el punto en cuestión. La pregunta ahora es, ¿cuántos rayos y en que dirección lanzamos dichos rayos? Aquí es donde entra en juego el parámetro hsph. Subdivs. Lo que se hace es que se construye un hemisferio (semiesfera) imaginario sobre el punto actual y con una dirección igual a la normal de dicho punto. Esta semiesfera tendrá tantas subdivisiones como le indiquemos en el parámetro hsph. Subdivs (es como cuando construimos una esfera y le asignamos el número de segmentos). Evidentemente, a más subdivisiones, más rayos secundarios se lanzaran por lo que la GI será de mayor calidad y por supuesto el tiempo de cálculo será mayor. Aquí cabe aclarar que si pones un número de 50 subdivisiones, en realidad no estas lanzando 50 rayos sino 2500, es decir, el número de rayos lanzados será igual a hsph. Subdivs al cuadrado. Otra pregunta que uno se puede hacer es en que dirección salen estos rayos. ¿se distribuyen uniformemente sobre el hemisferio? Lo cierto es que no. Lo que se hace es lanzar rayos aleatoriamente utilizando el algoritmo. Qmc (Quasi Montecarlo).
Para ilustrar todo esto, os adjunto la imagen1 donde podéis ver el punto que se está calculando actualmente (la esfera roja), el hemisferio que utilizaremos para lanzar los rayos secundarios y los propios rayos secundarios.
Como veis en la imagen, algunos rayos impactaran en el muro de la izquierda, otros impactaran en el suelo, otros en la esfera y otros lo harán con el environment que en este caso es de color azul. Así, si un rayo impacta en el environment (color azul), ese azul contribuirá en una determinada cantidad al color del punto que estamos tratando actualmente (el punto representado por la esfera roja). Ahora bien, no todos los rayos contribuyen por igual ya que no todos los rayos llegan a impactar contra una superficie. Bueno, en realidad sí que llegan a impactar todos, pero habrán impactos que se producirán muy lejos del punto en curso y por lo tanto no deberán contribuir al color final del punto. Mi teoría es, y aquí es donde voy a especular un poco ya que no consigo encontrar la ayuda de alguna versión reciente de Vray (tengo la de la v1.0), que el parámetro dist, thresh indica la distancia máxima a la que el impacto de un rayo tendrá efecto. Por ejemplo, imaginad que pongo un dist, thresh de 0,5 unidades. Lo que conseguiré con esto es que los rayos que impacten a una distancia mayor de 0,5 unidades, no serán tomados en cuenta en el cálculo final. Pero como digo, esto es sólo una suposición. Si alguien puede decirme dónde encontrar el manual de la última versión de Vray se lo agradecería.
Ahora voy a intentar explicar el significado de interp, samples.
Vray almacena un determinado número de muestras (samples) en el Irradiance Map. El número de estas muestras y su disposición espacial va a depender de forma directa (aunque no es lo único que determina esto) de los parámetros min, rate y max, rate. Evidentemente, cuantas más muestras se almacenen en el Irradiance Map, mayor será su calidad, pero más tiempo tardará en calcularse. Si os fijáis, Vray, cuando le damos a render, empieza a calcular el Irradiance Map. El número de pasadas que se utilizaran para calcularlo dependen, como he dicho, de los parámetros min, rate y max, rate. Así, si ponemos unos valores de (-3; 0), Vray calculara el Irradiance Map en 4 pasos. Esto lo podéis ver cuando Vray empieza a renderizar, cuando pone current task: prepass 1 de 4, etc. Pues bien, imaginemos que Vray ya ha terminado de calcular el Irradiance Map. Ahora llega la hora de utilizar este Irradiance Map para generar la escena final. Aquí es donde entra en juego el parámetro interp, samples. Lo que Vray hace es que interpola los samples del Irradiance Map. Cuanto mayor sea la interpolación, más suave será la imagen final. Una interpolación demasiado baja, da como resultado los típicos manchurrones. Esto es porque al realizar una interpolación pobre, la diferencia de intensidad entre samples es demasiado acusada.
Para entender mejor esto, mirad la imagen2. En ella podéis observar dos samples sacados del Irradiance Map (desesperados son los colores de los extremos, es decir, el negro y el gris claro). En la fila de arriba, hemos especificado una interpolación de 4, por lo que se generan 4 samples intermedios, resultantes de la interpolación de los samples originales (los 2 de los extremos). En la fila de abajo, tenemos los mismos samples originales, pero en esta ocasión hemos especificado una interpolación de 2, por lo que Vray genera 2 samples intermedios. Ahora, aplicamos un Gaussian Blur (todo esto lo he hecho en Adobe Photoshop por lo que no quiere decir que Vray haga esto) a la fila superior y a la inferior (ver imagen 3). Como podéis observar, en la fila en la que hemos utilizado un mayor número de interpolaciones, la transición entre un sample y otro es suave mientras que en la fila inferior, donde utilizamos únicamente 2 samples de interpolación, se nota la transición de un sample a otro, lo cual genera los típicos manchurrones que mencioné anteriormente.
Bueno, pues hasta ahí llego. Espero que te haya aclarado un poco las cosas. La verdad es que explicar esto de forma que se entienda bien es bastante complicado y si encima uno no llega a entender el Vray al 100% (para eso tendría que haber programado un renderer con soporte GI y lo máximo a lo que llegué fue a un raytracer bastante simple) pues aún más. Esto quiere decir que ciertas cosas que he dicho no pueden ser del todo exactas. Si es así, no me molesta para nada que alguien me rectifique. Al fin y al cabo estamos aquí para aprender. Saludos.
-- IMÁGENES ADJUNTAS --
https://www.foro3d.com/attachment.php?attachmentid=5872
https://www.foro3d.com/attachment.php?attachmentid=5873
https://www.foro3d.com/attachment.php?attachmentid=5874
Hsph subdivs e interpolate samples dudas
Una explicación magistral, muchas gracias Halfvector, desde ya muy agradecido, me quedan mucho más claro cómo se configuran estos valores.
Hsph subdivs e interpolate samples dudas
Felicidades Halfvector muy claro todo. Lo único mal es lo del valor del Dist threshold. Ya se explicó en el mensaje de iluminación. Este valor sirve para controlar la cantidad de muestras que Vray cogerá en la distancia entre 2 objetos o superficies. (bueno para colocar muestras en esquinas).
Si te parece bien voy a copiar la pregunta de firefly y tu explicación en mí mensaje que creo que vendrá muy bien y así no se pierde y estarás más accesible. Además, de cara a recopilarlo todo ordenadamente es perfecto (si hay tiempo ya se irá haciendo). Un saludo.
Hsph subdivs e interpolate samples dudas
Gracias. La verdad es que los valores que Vray ponía por defecto al parámetro dist. Thresh me parecían muy bajos para ser lo que yo decía. Ahora ya está claro. Saludos.
Hsph subdivs e interpolate samples dudas
Hola, ante todo, soy muy novata con el tema del 3d, así que, puede que os parezca estúpida alguna de las preguntas que pueda hacer. Pero estoy intentando renderizar con Mental Ray y me aparecen unas manchas fosforescentes verdes, magenta, azules. En plan capricho, cada vez que repito el render aparecen en distintos lugares.
Alguien sabe cómo puede solucionarse esto?
Un saludo y gracias de antemano.
Hsph subdivs e interpolate samples dudas y más dudas
Eres muy claro respondiendo. Me gustan tus exposiciones. Ana.