Shader de tache d'encre de Rorschach (alias images de test de psychologie)

12

entrez la description de l'image ici

entrez la description de l'image ici entrez la description de l'image ici
(source: bonnefil.com )

Je veux que ce magnifique motif soit dans mon jeu. Jusqu'à présent, j'ai compris ...

  1. Dessinez un côté, puis rendez-le deux fois à gauche et à droite.
  2. Comment rendre ce motif d'un côté? hmm ...
  3. J'ai besoin d'aide.

J'ai besoin d'un aperçu de l'écriture de shader pour cela.

Si vous pensez que ce n'est pas une tâche d'ajustement de shader, faites-le moi savoir, espérons-le, avec une solution alternative!

Cependant, je ne vois aucune approche possible pour y parvenir sans GPU. (à moins que vous ne suggériez de stocker des photos préparées de la photo de rorscach)

Blue Bug
la source
Quel moteur / langage / framework utilisez-vous?
akaltar
@akaltar Unity Shaderlab
Blue Bug

Réponses:

15

Pour obtenir ce look d'encre authentique, votre meilleur pari est probablement d'assembler une bibliothèque d'images d'éclaboussures d'encre, de stries et de dribbles.

Ensuite, vous pouvez sélectionner au hasard un certain nombre d'entre eux pour positionner et faire pivoter au hasard sur la moitié de l'image. (Avec un biais vers le bord de la couture de sorte que le milieu du test de Rorschach est le plus dense. Vous pourriez être en mesure d'utiliser un système de particules pour effectuer cette diffusion)

Rendez cela à une texture avec le mode d'habillage réglé sur miroir, et maintenant vous avez un tache d'encre symétrique que vous pouvez afficher sans shaders personnalisés.

Voici un exemple du type de résultat que vous pouvez obtenir de cette façon:

Inkblot assemblé à partir d'une bibliothèque d'images splat

Si vous ne vous souciez pas de ces formes d'encre signature, vous pouvez également le faire avec un shader qui seuil deux modèles de bruit qui défilent. Cela donne une forme irrégulière symétrique, qui peut être modifiée de façon continue au fil du temps si vous le souhaitez, mais elle ne ressemblera pas tout à fait à l'encre.

C'est la méthode que dnk drone.vs.drones suggère dans une autre réponse, et elle peut donner des résultats similaires à ceci:

Tache d'encre au seuil du bruit

Edit: voici une ventilation du fonctionnement de l'approche basée sur le bruit ...

Tout d'abord, nous commençons par du bruit. Le bruit 1 / f , souvent appelé turbulence, fonctionne plutôt bien. Vous pouvez cuire le bruit de mosaïque dans une texture, puis en additionner un ou plusieurs échantillons, en modifiant leurs décalages / rotations pour varier les formes que vous obtenez.

Turbulence Seuil

Si nous le seuillons directement, nous obtenons une image comme celle de droite. Les formes sont à peu près correctes, mais pour ressembler à un test de Rorschach, elles devraient être plus denses près du milieu et s'amincir vers les bords.

Nous pouvons faire ce travail en ajoutant un dégradé sur le dessus (contraste exagéré ici pour plus de clarté)

Masque de bord Masque ajouté au bruit

Ensuite, limitez-le en prenant (sum - blackLevel) * contrast

(Voici blackLevelun paramètre qui contrôle à quel point le résultat est tacheté vs blobby - des valeurs plus élevées signifient un noir plus solide - et contrastcontrôlent la netteté des bords)

Seuil

La mise en miroir de cette image vous donnera l'exemple de Rorschach ci-dessus.

DMGregory
la source
J'essaie de réaliser à travers des méthodes de drones. Pourriez-vous expliquer comment cela se fait? J'utilise la fonction de bruit Perlin traditionnelle mais la mienne ressemble plutôt à une collection de points aléatoires.
Blue Bug
@BlueBug, j'ai ajouté une ventilation étape par étape ci-dessus.
DMGregory
8

Vous pouvez essayer le bruit perlin (en utilisant un dégradé noir / blanc approprié), puis appliquer la mise en miroir droite / gauche

entrez la description de l'image ici

dnk drone.vs.drones
la source
Est-ce du bruit perlin? Cela semble radicalement différent du bruit perlin traditionnel. Wow qui ressemble énormément à une "encre trouble" comme celle du film Watchmen.
Blue Bug
2
Tout dépend de votre fonction de transfert de la valeur du bruit -> la valeur du pixel. Il semble qu'il y ait un niveau de fenêtre assez petit ici, ce qui entraîne un contraste saisissant entre le noir et le blanc avec une petite quantité de bords doux
MistaGiggles
Ouais juste faire un endroit de filtre passe - haut autour du gris puis faire sauter les sommets hors (c. -à multiplier par un grand nombre et le cuir chevelu haut de 255 ou quelle que soit la valeur de pixel max est)
Shayne