Rorschach Ink Blot (aka Psychologie Testbilder) Shader


12

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben
(Quelle: bonnefil.com )

Ich möchte dieses großartige Muster in meinem Spiel haben. Bisher habe ich herausgefunden ...

  1. Zeichnen Sie eine Seite und rendern Sie sie dann zweimal nach links und rechts.
  2. Wie rendere ich dieses Muster auf einer Seite? hmm ...
  3. Ich brauche Hilfe.

Ich brauche einen Einblick in das Schreiben von Shadern.

Wenn du denkst, es ist keine Shader-Fitting-Aufgabe, dann lass es mich wissen, hoffentlich mit einer alternativen Lösung!

Allerdings sehe ich keinen möglichen Ansatz, um dies ohne GPU zu erreichen. (es sei denn, Sie schlagen vor, ein paar vorbereitete Bilder von Rorscach Bild zu speichern)


Welche Engine / Sprache / Framework verwenden Sie?
Altar

@akaltar Unity Shaderlab
Blue Bug

Antworten:


15

Um diesen authentischen Inky-Look zu erzielen, sollten Sie wahrscheinlich eine Bibliothek mit Bildern von Tintenflecken, Streifen und Tropfen zusammenstellen.

Dann können Sie zufällig eine Anzahl von ihnen auswählen, um sie zufällig über die Hälfte des Bildes zu positionieren und zu drehen. (Mit einer Neigung zur Nahtkante, sodass die Mitte des Rorschach-Tests am dichtesten ist. Möglicherweise können Sie ein Partikelsystem verwenden, um diese Streuung durchzuführen.)

Rendern Sie dies in eine Textur, bei der der Wrap-Modus auf Spiegeln eingestellt ist. Jetzt haben Sie einen symmetrischen Ink-Blot, den Sie ohne benutzerdefinierte Shader anzeigen können.

Hier ist ein Beispiel für das Ergebnis, das Sie auf diese Weise erzielen können:

Inkblot aus einer Sammlung von Splat-Bildern zusammengestellt

Wenn Sie sich nicht für diese charakteristischen Tintenformen interessieren, können Sie dies auch mit einem Shader tun, der zwei Rauschmuster, die aneinander vorbeirollen, unterdrückt. Das Ergebnis ist eine symmetrische, unregelmäßige Form, die sich nach Belieben im Laufe der Zeit kontinuierlich ändern kann, aber nicht ganz wie Tinte aussieht.

Dies ist die Methode, die dnk drone.vs.drones in einer anderen Antwort vorschlägt. Sie kann zu ähnlichen Ergebnissen führen:

Inkblot gegen Rauschen abgeschwächt

Bearbeiten: Hier ist eine Aufschlüsselung der Funktionsweise des geräuschbasierten Ansatzes ...

Zuerst fangen wir mit etwas Lärm an. 1 / f-Rauschen , oft Turbulenzen genannt, funktioniert ziemlich gut. Sie können Kachelrauschen in eine Textur backen und dann ein oder mehrere Samples daraus summieren, wobei Sie deren Offsets / Rotationen ändern, um die erhaltenen Formen zu variieren.

Turbulenz Schwellenwert

Wenn wir dies direkt einschränken, erhalten wir ein Bild wie das auf der rechten Seite. Die Formen sind ungefähr korrekt, aber um wie ein Rorschach-Test auszusehen, sollte er in der Mitte am dichtesten und in Richtung der Ränder dünner sein.

Wir können diese Arbeit machen, indem wir einen Farbverlauf darüber hinzufügen (der Kontrast ist hier zur Verdeutlichung übertrieben).

Kantenmaske Maske zum Rauschen hinzugefügt

Dann schwelle es durch Einnahme (sum - blackLevel) * contrast

(Hier blackLevelist ein Parameter, der steuert, wie fleckig das Ergebnis im Vergleich zu blobigem Ergebnis ist - höhere Werte bedeuten festeres Schwarz - und contrastwie scharf die Kanten sind.)

Schwellenwert

Wenn Sie dieses Bild spiegeln, erhalten Sie das obige Rorschach-Beispiel.


Ich versuche es durch Drohnenmethoden zu erreichen. Könnten Sie näher erläutern, wie es gemacht wird? Ich benutze die traditionelle Perlin-Rauschfunktion, aber meine scheint eher eine Ansammlung von zufälligen Punkten zu sein.
Blue Bug

@BlueBug, ich habe oben eine schrittweise Aufschlüsselung hinzugefügt.
DMGregory

8

Sie können Perlin-Rauschen (unter Verwendung eines geeigneten Schwarz / Weiß-Verlaufs) ausprobieren und dann die rechte / linke Spiegelung anwenden

Bildbeschreibung hier eingeben


Ist das Perlin-Geräusch? Das sieht drastisch anders aus als das traditionelle Perlinrauschen. Wow, das sieht furchtbar ähnlich aus wie "wolkige Tinte" im Film Watchmen.
Blue Bug

2
Es hängt alles von Ihrer Übertragungsfunktion ab Rauschwert -> Pixelwert. Es sieht so aus, als gäbe es hier eine ziemlich kleine Fensterebene, die zu einem starken Kontrast zwischen Schwarz und Weiß mit einer kleinen Menge weicher Kanten führt
MistaGiggles,

Ja, mache einfach einen Hochpassfilter irgendwo um das Grau herum und blase die Höhen aus (dh multipliziere mit einer großen Zahl und ziehe den oberen Wert bei 255 oder einem beliebigen maximalen Pixelwert)
Shayne,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.