Autor Wątek: Cieniowanie map 2d w celu symulacji efektu trójwymiarowości  (Przeczytany 2967 razy)

Offline kamykadze

  • Użytkownik

# Listopad 29, 2009, 16:54:45
Cześć!

Ostatnio zastanawiam się, w jaki sposób osiąga się takie efekty w grach 2d :



Interesuje mnie głównie cieniowanie mapy, które daje całkiem niezłe złudzenie "nierównego terenu".
Szperałem nieco po necie, ale trudno mi było znaleźć właściwy trop, najbardziej zbliżona do widocznych efektów wydaje się technika kartograficzna "relief shading", lecz nie wiem, czy interesując się nią za bardzo nie błądzę.

Będę wdzięczny za wskazówki i podpowiedzi.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline voytech

  • Użytkownik

# Listopad 29, 2009, 17:02:58
Mi to wygląda na teren 3D z jednym kierunkowym światłem i kamerą typu np. glOrtho2D w OGL ustawioną pod odpowiednim kątem. To że gra jest 2D nie oznacza, że gdzieś tam wewnątrz nie wykorzystuje technik 3D a tym samym korzysta ze wsparcia GPU.

Edit: no dobra, sprawdziłem na stronie gry i wygląda na to, że korzysta ona najprawdopodobniej DirectDraw bo to pochodzi jeszcze z czasów Win95. Na stronie http://www.knights.de/us/index.html piszą, że:

"Creating the landscape, with true-to-nature hills, valleys and plains, was extremely complex. To obtain a proper, natural image of different types of terrain, we used up to 256 different bitmaps, laid out in rectangular sections, each roughly 40 by 40 pixels"

jeżeli dobrze to rozumiem, to teren składa się z wielu rodzajów kafli, przygotowanych wcześniej w 3d studio. Na tych bitmapach cienie już pewnie są prerenderowane. Teraz lepiej takie rzeczy robić w 3D, wtedy GPU zrobi cienie w mgnieniu oka i na pewno będzie to znacznie łatwiejsze niż zabawy DirecDraw.
« Ostatnia zmiana: Listopad 29, 2009, 17:16:47 wysłana przez voytech »

Offline taki_tam

  • Użytkownik

# Listopad 29, 2009, 17:11:39
Kursy do Omegi pod Delphi.
Są tam artykuły na temat, o którym mówisz.

http://www.unit1.pl/224,idx

Pozdrawiam! ;)

# Listopad 29, 2009, 17:13:05
Mi to wygląda na teren 3D
Bo to jest teren 3D
"Knight and Merchants" :D

Offline raver

  • Użytkownik
    • Moja strona domowa.

# Listopad 29, 2009, 17:19:24
Imo to jest w 2D, 2 tekstury: 1 tekstura to render terenu w jakimś programie graficznym (bez oświetlenia), a druga to normalmapa nałożona na to z najzwyklejszym cieniowaniem (tu światło kierunkowe). Tylko, że w tym rozwiązaniu czasami góry nie zasłaniają obiektów, ale imo większość gór jest niska i większość obiektów za nie nie wchodzi (=można pominąć ten artefakt).

pozdrawiam

Offline Mattrick

  • Użytkownik

# Listopad 29, 2009, 19:51:45
To raczej nie jest 2 tekstury, normalmapy w 1998 roku? Toż to przecież w tym roku dopiero powstawało.

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Listopad 29, 2009, 19:58:58
To raczej nie jest 2 tekstury, normalmapy w 1998 roku? Toż to przecież w tym roku dopiero powstawało.
No i?
Deferred shading jest z 1988.
@edit AAaa dopiero doczytałem sry :-)


IMO to są zwykłe pre-renderowane mapy + ponowny rendering ich w przypadku zmiany. :-)
« Ostatnia zmiana: Listopad 29, 2009, 20:54:17 wysłana przez rm-f »

# Listopad 29, 2009, 20:44:18
IMO to są zwykłe pre-renderowane mapy + ponowny rendering ich w przypadku zmiany. :-)
Raczej odpada, bo mapa jest za duża , a zmian mapy nie ma.
#Dadane
Czyba że ci chodzi o rending do bufora podłoża , i przy przewijaniu mapy , odświerzanie bufora podłoża
« Ostatnia zmiana: Listopad 29, 2009, 20:49:11 wysłana przez Wladekprogramista »

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Listopad 29, 2009, 20:53:10
Cytuj
odpada, bo mapa jest za duża , a zmian mapy nie ma.
No i co z tego że jest duza? I tak czy siak zajmie tyle samo miejsca. A zmiany są, popatrz na kamieniarza, budowanie budynku.........................

Cytuj
Czyba że ci chodzi o rending do bufora podłoża , i przy przewijaniu mapy , odświerzanie bufora podłoża
Co ty pierniczysz?

# Listopad 29, 2009, 21:04:14
Cytuj
Czyba że ci chodzi o rending do bufora podłoża , i przy przewijaniu mapy , odświerzanie bufora podłoża
Co ty pierniczysz?
chodzi o to , że teren jest rendowany nie na ekran , a do pewnego bufora , a późnie kopiowany do bufora koloru , i wtedy na bufor koloru nakłada się inny bufor (z alfą) , w którym są rysowane ludziki ,  i później władowuje się to do buforu ekranu... Wiem że trochę nakombinowałem  :P , mam nadzieję że zrozumiecie o co mi biega.

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Listopad 29, 2009, 22:36:56
Cytuj
Ostatnio zastanawiam się, w jaki sposób osiąga się takie efekty w grach 2d
Zatrudnia się zdolnego artystę. Nie zdziwiłbym się wcale, gdyby to wszystko było ręcznie namazane, w dodatku na zwykłych kaflach. Już nie takie rzeczy graficy odstawiali. :)


EDIT: A że o żadnych shaderach, normalmapach, cieniowaniu i tym podobnym raczej nie ma tu mowy, przekonuje mnie jedna rzecz: cień za górna prawą chatką wygląda tak, jakby był zrobiony z gęstej siatki pikseli (na innych chatkach nie widać, bo kompresja to zjadła z uwagi na mniejszą róznicę jasności), co sugeruje, że nawet alpha blendingu w tej grze nie mieli. :)
« Ostatnia zmiana: Listopad 29, 2009, 22:39:55 wysłana przez Krzysiek K. »

Offline Kos

  • Użytkownik
    • kos.gd

# Listopad 29, 2009, 22:45:48
Faktycznie! Krzysiek, myślałeś o karierze detektywa? ;)

Offline Kitsune

  • Użytkownik

# Listopad 29, 2009, 23:33:44
Cienie budynków to faktycznie siatka pixeli. Ale nierówności terenu można imitować też poprzez łączenie kolorów. Kafel zanim zostanie wyświetlony zostaje przepuszczony przez coś w rodzaju shadowmapy. Nie wiem czy wszyscy rozumieją o co mi chodzi więc przedstawię przykład który zrobiłem na szybko.
Obraz (kafel tła)
Obraz z którym zmieszamy ten 1-szy:
(Można to też zrobić w postaci innych danych np. tekstowych)

No i wynik:

(Oczywiście nie wykorzystywałem do tego żadnych efektów graficznych tylko pobierałem wartości pixeli z obydwu obrazów i sumowałem je w 3 obrazie)

« Ostatnia zmiana: Listopad 30, 2009, 00:03:28 wysłana przez Kitsune »

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Listopad 29, 2009, 23:49:41
Faktycznie! Krzysiek, myślałeś o karierze detektywa? ;)
Nie. Jedynie detektywa do spraw shaderów i efektów graficznych. ;)


Cytuj
Nie wiem czy wszyscy rozumieją o co mi chodzi więc przedstawię przykład który zrobiłem na szybko.
Po tym "wyjaśniającym" rozumiem z Twojej koncepcji jeszcze mniej, niż przed. :)

Offline Kitsune

  • Użytkownik

# Listopad 29, 2009, 23:56:03
Można zrobić taką imitację poprzez manipulację kolorami np. zwiększać lub zmniejszać składowe (o kilka punktów - tak by kolor się nie zmienił tylko odcień). Ja wykorzystałem do tego inny obraz.