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

[c++] Simple Engine 3D

Ostatnio zmodyfikowano 2023-11-19 18:22
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
[c++] Simple Engine 3D
» 2023-11-18 16:12:05
Witam.
Próbowałem stworzyć silnik 3D, lecz po wielu miesiącach zaciętej walki i prób zrozumienia poległem. Próbowałem wielu metod, z pół internetu skopiowałem, nie raz liczyłem na kartach matę i nic.

Posiadam model, który składa się z trójkątów. Potrzebuje narysować model w taki sposób, by był trójwymiarowy oraz do tego chciałbym móc go obracać wokół osi Y.

Wiem już, że należy wykonać następujące działania w tej właśnie kolejności : rotować trójkąty, posortować trójkąty, wyświetlić trójkąty.

Nie mam pojęcia jak rotować oraz jak sortować trójkąty.

C/C++
class trit
{
public:
   
float v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z; // vertices
   
float r, g, b, a; // colors
   
trit * next; // next triangle
    // ... //
   
trit( float, float, float, float, float, float, float, float, float, float, float, float, float );
   
trit( trit * );
   
~trit();
   
void render2D(); // render flat triangle without Z-coords
};

class model3D
{
public:
   
float cx, cy, cz; // center of model
   
trit * mesh; // triangles of model
   
   
model3D();
   
~model3D();
   
void setCenter( float, float, float ); // set the center point of model
   
void addTrit( trit * ); // add triangle to modelMesh
   
void render3D(); // how it work?
};
P-180450
pekfos
» 2023-11-18 18:20:34
https://en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions

Nie mam pojęcia jak sortować trójkąty.
Sortowanie nie jest wystarczające by renderować 3d rysując trójkąty w 2d, jeśli taki miałeś pomysł. Musiałbyś sortować po współrzędnej Z po transformacji widoku i perspektywy, tylko trójkąt ma 3 takie współrzędne i zależnie od wyboru możesz mieć zupełnie różne kolejności.
P-180452
tBane
Temat założony przez niniejszego użytkownika
» 2023-11-18 18:45:50
W takim razie jak sortować takie trójkąty, chodzi mi o zwykle proste nie przenikające się trójkąty ?
P-180453
pekfos
» 2023-11-18 20:28:47
std::sort(). Trójkąty nie muszą się przenikać żeby ta metoda dała błędny wynik.
P-180454
tBane
Temat założony przez niniejszego użytkownika
» 2023-11-19 15:08:50
Sprytnie :D
Znalazłem coś takiego jak Z-Buffer.
Teraz mogę ominąć macierze, zamknąć ten temat i powrócić do mojego silnika bez macierzy!

 temat do usunięcia
P-180456
« 1 »
  Strona 1 z 1