Moduł cieniujący Rorschach ink blot (aka zdjęcia z testu psychologicznego)

12

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj
(źródło: bonnefil.com )

Chcę, aby ten wspaniały wzór był w mojej grze. Do tej pory wymyśliłem ...

  1. Narysuj jedną stronę, a następnie renderuj ją dwukrotnie w lewo i w prawo.
  2. Jak renderować ten wzór po jednej stronie? hmm ...
  3. Potrzebuję pomocy.

Potrzebuję do tego trochę wiedzy na temat pisania modułu cieniującego.

Jeśli uważasz, że to nie jest zadanie dopasowania shadera, daj mi znać, mam nadzieję, że z alternatywnym rozwiązaniem!

Jednak nie widzę żadnego możliwego podejścia do osiągnięcia tego bez GPU. (chyba że sugerujesz przechować kilka przygotowanych zdjęć rorscach pic)

Blue Bug
źródło
Jakiego silnika / języka / frameworka używasz?
akaltar
@akaltar Unity Shaderlab
Blue Bug

Odpowiedzi:

15

Aby uzyskać ten autentyczny atramentowy wygląd, najlepiej postawić bibliotekę z obrazami plam atramentowych, smug i dryblingów.

Następnie możesz losowo wybrać kilka z nich, aby ustawić je i losowo obrócić o połowę obrazu. (Z odchyleniem w kierunku krawędzi szwu, więc środek testu Rorschacha jest najgęstszy. Być może będziesz w stanie użyć układu cząstek do wykonania tego rozproszenia)

Renderuj to na teksturę z trybem zawijania ustawionym na odbicie lustrzane, a teraz masz symetryczny kleks, który możesz wyświetlić bez żadnych niestandardowych programów cieniujących.

Oto przykład wyniku, który możesz zrobić w ten sposób:

Inkblot zmontowany z biblioteki obrazów ikon

Jeśli nie przejmujesz się tymi charakterystycznymi atramentowymi kształtami, możesz to również zrobić za pomocą modułu cieniującego, który wykracza poza dwa wzorce szumów przewijających się obok siebie. Otrzymuje symetryczny nieregularny kształt, który można zmieniać w sposób ciągły w miarę upływu czasu, jeśli chcesz, ale nie będzie wyglądał jak tusz.

Jest to metoda sugerowana przez dnk drone.vs.drones w innej odpowiedzi, która może dać wyniki podobne do tego:

Kleks atramentowy próg od szumu

Edycja: oto podział działania podejścia opartego na hałasie ...

Najpierw zaczynamy od hałasu. Hałas 1 / f , często nazywany turbulencją, działa całkiem dobrze. Możesz upiec hałas sąsiadujący z teksturą, a następnie zsumować z niego jedną lub więcej próbek, zmieniając ich przesunięcia / obroty w celu zmiany otrzymanych kształtów.

Turbulencja Próg

Jeśli przekroczymy ten próg bezpośrednio, otrzymamy obraz podobny do tego po prawej. Kształty są prawie poprawne, ale aby wyglądać jak test Rorschacha, powinny być gęste w pobliżu środka i cienkie w kierunku krawędzi.

Możemy to zrobić, dodając gradient nad górą (kontrast przesadzony tutaj dla przejrzystości)

Maska krawędzi Maska dodana do hałasu

Następnie progu, biorąc (sum - blackLevel) * contrast

(Oto blackLevelparametr, który kontroluje, w jaki sposób plamisty vs plamisty jest wynik - wyższe wartości oznaczają bardziej jednolitą czerń - i contrastkontroluje, jak ostre są krawędzie)

Próg

Odbicie lustrzane tego obrazu da powyższy przykład Rorschacha.

DMGregory
źródło
Próbuję to osiągnąć metodami dronów. Czy potrafisz wyjaśnić, jak to się robi? Używam tradycyjnej funkcji szumu perlin, ale moja wygląda raczej jak zbiór przypadkowych kropek.
Blue Bug
@BlueBug, dodałem powyższy podział krok po kroku.
DMGregory
8

Możesz wypróbować szum perlina (używając odpowiedniego gradientu czarno-białego), a następnie zastosować lewe / prawe odbicie lustrzane

wprowadź opis zdjęcia tutaj

dnk drone.vs.drones
źródło
Czy to hałas perlin? Wygląda to drastycznie inaczej niż tradycyjny hałas perlin. Wow, który wygląda fatalnie podobnie do „pochmurnego atramentu”, jak ten z filmu Watchmen.
Blue Bug
2
Wszystko zależy od funkcji transferu od wartości szumu -> wartości piksela. Wygląda na to, że jest tu dość mały poziom okna, co powoduje wyraźny kontrast między czernią i bielą z niewielką ilością miękkich krawędzi
MistaGiggles
Tak, po prostu zrób filtr górnoprzepustowy gdzieś wokół szarego, a następnie zdmuchnij wzloty (tj. Pomnóż przez dużą liczbę i skalpuj górę przy 255 lub jakiejkolwiek maksymalnej wartości piksela)
Shayne