Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pozycjonowanie obiektow w swiecie gry oraz ich poprawne renderowanie

Ostatnio zmodyfikowano 2023-08-12 10:33
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
[C++] Pozycjonowanie obiektow w swiecie gry oraz ich poprawne renderowanie
» 2023-08-07 12:30:49
Obiekty w grze powinny byc rysowane tak jak je widzimy w prawdziwym swiecie.
Zeby w komputerze osiagnac zblizony efekt, nalezy liste obiektw posortowac tak, aby na poczatku listy byly obiekty najdalej polozone od kamery.
Render obiektow w ten sposob, pozwala blizszym obiektom zaslaniac te dalsze.

Teraz wprowadzamy kolejna funkcjonalnosc - baze obiektu. Baza obiektu, czyli jego podstawa ( kolo, elipsa ), ktora ma sluzyc do prawidlowego renderowania wzgledem swiata, jak i pozniej do sprawdzania kolizji w grze.

sklad bazy obiektu
C/C++
cx cy, scale; // center ( x,y ) of elipse, scale
hr, vr; // horizontal and vertical radius of elipse
texw = texh = 128; // texture (width, height )


 wlasciwosci osii
Osie ( x, y ) rosna w prawo i w gore. Punkt zero to srodek ekranu. wartosc osi [ (-scrw/2.f, scrw/2.f), (-scrh/2.f, scrh/2.f) ].
Tekstury sa rysowane wzgledem srodka tzn ( x, y, x-width/2.f, height/2.f );

Zadaniem naszym jest render textury wzgledem pozycji tej elipsy, czyli podanie poprawnych wzorow dla rysowania textury

 obecne wzory, ktore nie dzialaja:
C/C++
float x = x - tw / 2.f * s +( cx * s + 1.f ) - cam->x;
float y = y - th / 2.f * s +( cy * s + 1.f ) - cam->y;

ps1. Wrzuciłem ten post, by w razie utraty danych mieć backup.
ps2. Chat GPT nie pomógł :-/
P-180237
DejaVu
» 2023-08-07 13:07:41
Po prostu włącz Z-buffer, który rozwiązuje problem kolejności 'renderowania' wszystkiego.
P-180238
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-07 13:20:55
Nie mam Z-Buffera. Tworzę grę 2D w C++, SDL2 oraz opengles2 ..
No więc, wzór w tym przypadku jest niezbędny.
Liczę od dwóch dni i nadal nie wyliczylem tego co potrzebuje, więc jak masz jakiś pomysł to będę wdzięczny :-)

A tu taki bonus, którym się motywuje :D
https://m.youtube.com/watch?v=_ewr2o0PEzc
P-180239
DejaVu
» 2023-08-07 16:48:25
To włącz w 2D bufor 3D? To w niczym nie przeszkadza. Jeżeli masz sprajty 2D i musisz je rysować w odpowiedniej kolejności, to wystarczy obiekty posortować wg 'warstwy' (koniecznie stable sort, aby tekstury nie migały na tym samym poziomie).

Jeżeli robisz grę 2D z teksturami 2D (bez modeli 3D) to czemu nie używasz SFML-a, który ma renderowanie i rotacje tekstur z ładnym API zapewnionym? :)
P-180242
pekfos
» 2023-08-07 16:58:20
Jeszcze przed chwilą robiłeś to w 3D. Czy te 2D to nie jest 3D po projekcji? Takie podejście zadziała tylko gdy wszystko jest billboardami, tj prostopadłe do kamery. W ogólnym przypadku wielokąty mogą się dowolnie przecinać. Depth test określa widoczny obiekt niezależnie dla każdego piksela ekranu, zwykłe sortowanie nie da rady.

Wrzuciłem ten post, by w razie utraty danych mieć backup.
Robisz tu backup 5 linii kodu? Serio, rozpoznaj jakieś systemy kontroli wersji. Skoro robisz backupy w postach na forum, to może załóż projekt open source na githubie..?
P-180243
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-07 18:34:19
Nie, otóż projekt "Terrain War" zawiesilem na czas nieokreślony, wewnętrzny ból, weltschmerz i ogólne uczucie pustki nie pozwalają mi jeszcze na kontynuowanie pracy. W celu ukojenia tego uczucia postanowiłem rozpocząć pracę nad nowym projektem. Otóż tworzę grę 2D RPG przygodowa w podobnym klimacie.

Tworzę obecnie edytor map.

Nie chce aby mój projekt był Open-Source, no kto by chciał się dzielić za darmo czymś nad czym spędził wiele dni, miesięcy? Jeśli ktoś z tego forum będzie potrzebował pomocy lub rad, to chętnie podzielę się wiedzą i doświadczeniem, ale całego projektu nie zamierzam oddawać.

Niebawem, gdy skończę edytor, system skryptów i powstaną pierwsze zalążki gry, wrzucę jakies screeny :-)
P-180244
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-12 10:33:21
Post usunięty przez moderatora
P-180256
« 1 »
  Strona 1 z 1