¿Hay alguna forma de agregar una leyenda de color en el análisis de malla?

Aug 17 2020

Estoy haciendo una investigación médica en la que es necesario analizar el grosor de la pared de este Objeto. Usé el análisis de malla que coloreaba automáticamente las mallas. Desafortunadamente, no puedo encontrar una manera de agregar una leyenda de color para indicar el grosor de la pared de los colores. Estoy buscando algo como eso:

https://www.researchgate.net/figure/Three-dimensional-3D-atrial-wall-thickness-variation-across-the-whole-human-atria-Top_fig2_319241926

¿Hay alguna manera de resolver este problema?

Observé algo como esto.

El objeto permanece azul con esta configuración.

Como soy bastante nuevo en Blender, no fue tan fácil para mí entender el editor de sombreado y usar scripts, pero poco a poco me voy adaptando a él. Cuando intenté reconstruir la configuración en el editor de sombreado, no pude conectar el script al grupo ,, MaptThickness ". Copié el texto NormalDepth de su test_Thickness del volumen projekt @vklidu y lo guardé como (.py) para instalar como un complemento pero no funcionó. Cuando lo guardo como (.osl) Blender ni siquiera me lo muestra. Supongo que es bastante fácil, pero ¿cómo implemento realmente el script?

Respuestas

6 vklidu Aug 17 2020 at 11:41

¿Qué pasa con el nodo Ambient Oclussion con la función Inside habilitada?
No estoy seguro de la precisión del resultado, pero parece funcionar mucho mejor que el análisis de malla .

(La barra en la pantalla es solo un degradado 2D).

Compare con el análisis de malla, este sombreador:

  • se puede renderizar (con motor Cycles)
  • el color se asigna al vértice (no a una cara)

Consejos:

  • Para compartir el mismo nodo ColorRamp en ambos materiales, cierre este nodo en Grupo de nodos en un material y agregue este Grupo de nodos en el segundo material.
  • Cambio de gestión del color de Filmic a Standard

Nota: Eevee con AO habilitado produce colores, pero no hay una función "Interior" que usamos para el grosor.


Exactitud

Q bastante interesante ya que un espesor depende de la dirección de medición. Como placa de vidrio que solemos decir y medir un espesor en sentido de profundidad, que es delgado. Pero también puede medir el grosor en la dirección del ancho que sería muy grueso en este caso.

Eso es lo que mide el análisis de malla. Si marca la combinación de @RobinBetts con los sombreadores OSL, en el interior hay un material llamado NormalDepth y que hace exactamente lo mismo que el Análisis de malla : dispara un solo rayo en la dirección normal de la cara hasta otra cara. Esta distancia está representada por el color correspondiente asignado a una cara. Entonces, si abre el grupo de nodos y marca el nodo Rango de mapa , los dos primeros valores definen el inicio / final de la Rampa de color .

Ejemplo: Desde Mín = 0 significa que el rojo comienza en la distancia cero y Desde Máx = 1 significa que el azul termina en la distancia de 1 m. Jugando con estos dos valores, puede especificar exactamente qué distancia representa ColorRamp. Entonces este material parece ser el mejor para ti.

Pero al igual que el análisis de malla , genera caras de colores "extraños" que son matemáticamente correctas. Como cuando revisas la parte inferior de la mandíbula de Mono, hay azul oscuro incluso esa parte de la malla no es tan gruesa, pero el rayo disparado desde la cara llega hasta las cejas, lo que hace que la distancia corresponda al azul oscuro para esa cara.

Existen otros métodos para calcular el espesor, donde no se utiliza una sola dirección de rayo. Como AO disparó a muchos en direcciones hemisféricas. Los colores finales representan la media de estas distancias.

Comparación - Profundidad normal (OSL) / Oclusión ambiental / Profundidad de Lambert (OSL)

El objeto de barra tiene 1 m de altura y 1 m de profundidad en forma de objeto de cuña. La barra de la izquierda usa un sombreador de profundidad normal y funciona solo porque la distancia se mide ÚNICAMENTE desde una dirección. El cubo es de 0,5 m de color verde tan puro en el color correcto para la distancia en el medio de la barra. Pero como puede ver, otros dos sombreados le permiten saber que las esquinas del cubo son más delgadas en la observación 3D que la masa media del cubo.

El sombreador NormalDepth parece ser preciso ... con los valores de Ambient Occlusion y Lambert tuve que jugar, para obtener colores similares. Y no tengo ni idea de cómo controlar.

3 RobinBetts Aug 17 2020 at 21:16

Esto es solo un complemento de la respuesta de @ vklidu .. AO parece el camino correcto a seguir. Sin embargo, puede haber otras medidas de 'espesor' a considerar, dependiendo de su aplicación.

Iba a escribir un sombreador OSL rápido, tomando la longitud de un rayo de lo normal, pero todo el territorio ha sido cubierto de manera muy completa por @Robert Pali, aquí . Así que no hay crédito aquí por esta respuesta, por favor, los guiones son suyos.

Usando el grosor lambertiano de @ Pali (sesgado al normal, pero muestreando a su alrededor) para el modelo, y su grosor normal simple para la cuña de color de 0-1, produce esto:

Como mencionó @vklidu, puede asegurarse de que las asignaciones permanezcan sincronizadas. entre los materiales colocando el mapeo de rango en un grupo y editando el grupo, en un solo lugar para todos los materiales:

La única diferencia entre los sombreadores de @ Pali y AO es que AO envía rayos de muestreo de ' Muestras ' en el hemisferio alrededor del punto de sombreado normal, y envía solo uno, sesgado en las formas que describe en su respuesta.