Skocz do zawartości

super 3d problem


Rekomendowane odpowiedzi

GML
d3d_transform_add_scaling( scalex, scaley, scalez );

d3d_transform_add_rotation_x( Roll );

d3d_transform_add_rotation_y( Pitch );

d3d_transform_add_rotation_z( Yaw );

d3d_transform_add_translation( x, y, z );

 

// teraz funkcje rysujace d3d np model albo figurę

d3d_model_draw( jakis_model, xOffset, yOffset, zOffset, jakas_textura );

 

d3d_transform_set_identity();

 

Jest parę rzeczy które trzeba wiedzieć używając tych funkcji by nie nadziać się na jakieś bugi.

 

1. Ważna jest kolejność transformacji.

Najpierw trzeba skalować, potem obracać potem dopiero przemieszczać obiekt. Oczywiście można pominąć którąś z tych rzeczy ale kolejność jest ważna.

 

2. funkcje d3d_transform_add_* od d3d_transform_set_* różnią się tym że set zanim wykona jakie kolwiek transformacje najpierw wyzeruje wszystko. To znaczy że d3d_transform_set_* są połączeniem funkcji d3d_transform_set_identity(); z d3d_transform_add_*

 

3. Po dokonaniu transformacji i narysowaniu figury należy pamiętać by zresetować macierz transformującą za pomocą d3d_transform_set_identity(); Bo inaczej transformacja przejdzie do kolejnych obiektów.

 

4.

Normalnie bez transformacji gdy rysujesz jakąś figurę np boxa i chcesz go przemieścić to wpisujesz współrzędne w pierwszych sześciu argumentach d3d_draw_block(x1,y1,z1,x2,y2,z2 jednak gdy używasz przemieszczenia funkcją d3d_transform_add_translation() to te współrzędne wpisujesz właśnie w niej a te z d3d_draw_block(x1,y1,z1,x2,y2,z2 będą zmieniać origin obiektu nie pozycję

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...