[#1] Jak zakodować takie cuś?
Zastanawiam się jak napisać coś takiego jak na poniższym obrazku. Wiem, że efekt bazuje na prekalkulowanych tablicach offsetów X i Y, tak jak tunel pseudo 3D. Ale jak policzyć te offsety? Jakieś sugestie?




Ostatnia aktualizacja: 24.10.2023 16:12:16 przez zilog
[#2] Re: Jak zakodować takie cuś?

@zilog, post #1

Jeśli chodzi Ci o zakresy 1-2-3 parametrów to proponuję ustawić jakieś zakresy i po prostu przetestować.

Ryzykujesz tylko tym, że dostaniesz coś lepszego niż to, co pierwotnie planowałeś
[#3] Re: Jak zakodować takie cuś?

@_DiskDoctor_, post #2

Chodzi mi o to, jak obliczyć offsety przesunięć X i Y . Wspomniany efekt działa, o ile dobrze się orientuję, w oparciu o tablice przesunięć, czyli tzw. offsety. Nie jest to efekt 3D, chociaż wygląda trójwymiarowo a podobnie jak pseudo tunel 3D jest efektem 2D.



Działa on na podstawie tablic przesunięć X i Y, które liczy się dla tablicy offsetów X w oparciu o wzór:

offx=d/sqrt(x^2+y^2)

a dla tablicy offsetów Y w oparciu o wzór:

offy=atan((x/y)*szer tekstury)/pi, gdzie zawsze Y musi byc <> 0.

Efekt ten nie wymaga shaderów ani innych "nowinek". Dokonując niewielkich przekształceń powyższych wzorów i manipulując teksturą można z niego uzyskać tunel pseudo 3D moja twoja z pseudo obrotem 3D (jak w moim intrze 64k apx-breadbox z 2022), jak w intrze Informera apx-spawn z 1997 roku, czy meta bloob effect jak w moim intrze 4k apx-blood z 2021 lub efekt 3 nałożonych tunelików jak w moim intrze 64k apx-tower z 1999. Wszystkie te efekty to tak naprawdę jeden i tem sam efekt, bazujący na tunelu 2D.
Chodzi mi w tym poście o wzory na offsety X i Y, dla tego:



lub o opis efektu, ewentualnie odsyłacz do kompetentnego tutoriala.
Nie bierzcie pod uwagę pseudo światełka, bo to tekstura z nałożoną bump mapą - trywialne. Zresztą efekt też pewnie jest trywialny, ale jak zwykle diabeł tkwi w szczegółach.


Ostatnia aktualizacja: 24.10.2023 18:48:37 przez zilog
[#4] Re: Jak zakodować takie cuś?

@zilog, post #3

Powyższe wzory odnoszą się oczywiście do tunelu. Mi potrzebne są wzory do kulki.
[#5] Re: Jak zakodować takie cuś?

@zilog, post #4

No to masz tunel to walec 2D w 3D a kulka to... kulka 2D w 3D


Działa on na podstawie tablic przesunięć X i Y, które liczy się dla tablicy offsetów X w oparciu o wzór:

offx=d/sqrt(x^2+y^2)

a dla tablicy offsetów Y w oparciu o wzór:

offy=atan((x/y)*szer tekstury)/pi, gdzie zawsze Y musi byc <> 0.


Jeśli dobrze rozumiem... To jest jak pisałem. Nie znam dokładnej odpowiedzi.

W międzyczasie, możesz próbować X = -8 -4 -2 -1 -0.5 -0.25 0 0.25 0.5 1 2 3 4 ++ Y = -8 -4 -2 -1 -0.5 -0.25 0.25 0.5 1 2 3 4.

Daje to 156 kombinacji (wariacji ściślej). Zakoduj, puść do renderowania i zobacz. Do tego czasu może ktoś tutaj poda rozwiązanie OK
[#6] Re: Jak zakodować takie cuś?

@_DiskDoctor_, post #5

Przy kalkulacji wspomnianych wyżej offsetów X i Y dla tunelu, używasz kolejnych współrzędnych X i Y, dla całej szerokości i wysokości ekranu - liniowo. Np. jeśli ekran jest 320x200 pixeli, jedziesz po kolei od 0 do 320 i tak każdą linię. Nie tędy więc droga, chyba, że po drodze te współrzędne są jakoś przetwarzane.

Na początek niech ktoś powie, jak w ogóle nazywa się ten efekt, to będzie wiadomo czego szukać.
[#7] Re: Jak zakodować takie cuś?

@_DiskDoctor_, post #5

Coś takiego znalazłem.

Słowo klucz... ... ... tekstura szeroki uśmiech
[#8] Re: Jak zakodować takie cuś?

@_DiskDoctor_, post #7

Nie no to jest strona z której pochodzi górny obrazek z mojego postu #3. Gość opisuje tu jak zakodować tunel, czyli to samo co opisuję w poście #3. Nie o ten efekt chodzi.
Jak nazywa się ten efekt:


[#9] Re: Jak zakodować takie cuś?

@zilog, post #1

Na zrzucie ekranu niewiele widać. Skąd to pochodzi?
[#10] Re: Jak zakodować takie cuś?

@Kefir_Union, post #9

Haupex by Haujobb & Scoopex
2
[#11] Re: Jak zakodować takie cuś?

@Kefir_Union, post #9

40k Haupex, ale to samo mozna zobaczyc w intrze apx-melba kolegi Emersa. Niestety nie mam z nim kontaktu.
[#12] Re: Jak zakodować takie cuś?

@zilog, post #11

W demku Floppy "Turn on - tune in - drop out" w 2:46 jest ten sam efekt:

Gdyby ktoś miał możliwość, to może udałoby się podejrzeć mapę UV w pamięci.

Ostatnia aktualizacja: 25.10.2023 09:53:21 przez Gordian
[#13] Re: Jak zakodować takie cuś?

@Gordian, post #12

No dokładnie. To ten sam efekt tyle, że offsety x i y sa uśrednione (podzielone / 3 i złożone do kupy przy rysowaniu klatki z przesunięciem), przez co wygląda jakby 3 tunele były nałożone na siebie - dokładnie to samo jest w moim intrze apx-tower. Ta metoda jest wykorzystywana też do tunelu moja twoja (offset x i y podzielone przez 2 i dodane odwrócone ofsety x i y podzielone przez 2). Oczywiście offsety muszą być odpowiednio szersze i wyższe od rozmiaru okna roboczego ekranu.
Problemem jest JAKI wzór został użyty do kalkulacji offsetów x i y. Bo daję głowę, że jest to jakaś iteracja wzorów:

offx=d/sqrt(x^2+y^2)

i

offy=atan((x/y)*szer tekstury)/pi.

Fajnie by też było wiedzieć jak nazywa się ten efekt.


Ostatnia aktualizacja: 25.10.2023 10:38:53 przez zilog
[#14] Re: Jak zakodować takie cuś?

@zilog, post #13

Ahhh... Nie zauważyłem wcześniej, że jest tam też i kulka w wersji klasycznej. dokładnie taka o którą pytam.



Jak to się nazywa i jak policzyć do tego offsety

Oglądanie mapy pamięci raczej nic nie da. Już lepiej zapytać autora.

Poniższy klip to też ten sam efekt, tyle, że dla offx policzone sa offsety x a offy=offx:





Ostatnia aktualizacja: 25.10.2023 10:39:54 przez zilog
[#15] Re: Jak zakodować takie cuś?

@zilog, post #14

A mi się wydaje, że widząc mapę można by łatwiej znaleźć równanie.
1
[#16] Re: Jak zakodować takie cuś?

@zilog, post #1

Wyszedłbym od wzoru na kulę:

x*x+y*y+z*z=R*R

R jest stałą, promieniem naszej kuli

i podstawiałbym do niego punkty ekranowe wiedząc że:

x' = (x*D)/z oraz y' = (y*D)/z

Po podstawieniu powinno się dać obliczyć x,y,z dla danego punktu ekranowego x', y'.
Równanie powinno mieć dwa rozwiązania, dla z ujemnego i dodatniego. Odrzucamy ten z niewidocznej strony kuli.

Mając x,y,z można obliczyć kąt do osi X oraz do osi Y i dzięki temu wiemy jakie przypisać współrzędne tekstury.
3
[#17] Re: Jak zakodować takie cuś?

@Kefir_Union, post #16

To jest interesujące. Muszę pokombinować.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem