Sombreador de mancha de tinta Rorschach (también conocido como imágenes de prueba de psicología)

12

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí
(fuente: bonnefil.com )

Quiero que este magnífico patrón esté en mi juego. Hasta ahora he descubierto ...

  1. Dibuja un lado, luego hazlo dos veces hacia la izquierda y hacia la derecha.
  2. ¿Cómo renderizo este patrón en un lado? hmm ...
  3. Necesito ayuda.

Necesito una idea de cómo escribir shader para esto.

Si crees que no es una tarea de ajuste de sombreador, ¡házmelo saber, con suerte con una solución alternativa!

Sin embargo, no veo un enfoque posible para lograr esto sin gpu. (a menos que sugiera almacenar un montón de fotos preparadas de la foto rorscach)

Bicho azul
fuente
¿Qué motor / idioma / marco estás usando?
akaltar
@akaltar Unity Shaderlab
Blue Bug

Respuestas:

15

Para obtener ese aspecto auténtico de tinta, su mejor opción es probablemente armar una biblioteca de imágenes de salpicaduras de tinta, rayas y regateos.

Luego, puede seleccionar aleatoriamente algunos de ellos para colocarlos y rotarlos al azar sobre la mitad de la imagen. (Con un sesgo hacia el borde de la costura para que la mitad de la prueba de Rorschach sea más densa. Es posible que pueda usar un sistema de partículas para dispersar)

Procese eso en una textura con el modo de ajuste ajustado en espejo, y ahora tiene una mancha de tinta simétrica que puede mostrar sin sombreadores personalizados.

Aquí hay un ejemplo del tipo de resultado que puede obtener de esta manera:

Mancha de tinta ensamblada a partir de la biblioteca de imágenes splat

Si no le importan esas formas de tinta distintivas, también puede hacerlo con un sombreador que umbral dos patrones de ruido que se desplazan uno al lado del otro. Eso tiene una forma simétrica irregular, que se puede hacer que cambie continuamente con el tiempo si lo desea, pero no se verá como la tinta.

Este es el método que dnk drone.vs.drones sugiere en otra respuesta, y puede dar resultados similares a este:

Mancha de tinta azotada por el ruido

Editar: aquí hay un desglose de cómo funciona el enfoque basado en el ruido ...

Primero comenzamos con algo de ruido. El ruido 1 / f , a menudo llamado turbulencia, funciona bastante bien. Puede hornear el ruido de mosaico en una textura y luego sumar una o más muestras, cambiando sus desplazamientos / rotaciones para variar las formas que obtenga.

Turbulencia Thresholded

Si limitamos esto directamente, obtenemos una imagen como la de la derecha. Las formas son correctas, pero para que parezca una prueba de Rorschach, debe ser más densa cerca del medio y adelgazar hacia los bordes.

Podemos hacer que esto funcione agregando un degradado sobre la parte superior (contraste exagerado aquí para mayor claridad)

Máscara de borde Máscara agregada al ruido

Luego umbralalo tomando (sum - blackLevel) * contrast

(Aquí blackLevelhay un parámetro que controla cuán moteado vs blobby es el resultado - valores más altos significan un negro más sólido - y contrastcontrola qué tan afilados son los bordes)

Thresholded

Reflejar esta imagen le dará el ejemplo de Rorschach anterior.

DMGregory
fuente
Estoy tratando de lograr a través de métodos de drones. ¿Podrías elaborar cómo se hace? Estoy usando la función de ruido perlin tradicional, pero la mía parece más bien una colección de puntos aleatorios.
Blue Bug
@BlueBug, he agregado un desglose paso a paso arriba.
DMGregory
8

Puede probar el ruido perlin (usando un gradiente blanco / negro adecuado) y luego aplicar la duplicación derecha / izquierda

ingrese la descripción de la imagen aquí

dnk drone.vs.drones
fuente
¿Es ese ruido perlin? Eso se ve drásticamente diferente del ruido tradicional de perlin. Wow, eso se parece fantásticamente a la "tinta turbia", como la de la película Watchmen.
Blue Bug
2
Todo depende de su función de transferencia del valor de ruido -> valor de píxel. Parece que hay un buen nivel de la ventana pequeña que aquí lo que se traduce en el marcado contraste entre el blanco y negro con una pequeña cantidad de bordes suaves
MistaGiggles
Sí, solo haga un filtro de paso alto en algún lugar alrededor del gris y luego sople los agudos (es decir, multiplíquelo por un gran número y corte la parte superior en 255 o el valor máximo de píxeles)
Shayne