Skocz do zawartości

[3D] parę pytań


kriso99

Rekomendowane odpowiedzi

2.

GML
// uruchamia tryb 3D

d3d_start();

 

/* Pozwala ustalić czy GM ma obliczać depth obiektów zależną od perspektywy ( true )

Ustawienie tego na false spowoduje że GM będzie wyświetlał depth obiektów tak jak w trybie 2D

czyli kolejność wyświetlania będzie zgodna z wartościami depth ustalonymi we właściwościach obiektów

Przydatne tylko wtedy kiedy chcemy wyświeltać Hud ( bo wtedy 3D obiekty go nie będą przysłaniać )

*/

d3d_set_hidden( enable );

 

// Włącza funkcje perspektyw

d3d_set_perspective( enable );

 

/* Włącza backface culling. Każdy polygon ma 2 strony - przednią i tylnią. Ustawienie tego na false

włączy wyświetlanie dwustronne, true wyświeli tylko przednią stronę. Przydatne do optymalizacji

bo GM wtedy rysuje 2 razy mniej textur. Ale trzeba z tym stworzyć poprawny model

( Blenderowa funkcja recalculate normals zwykle pomaga ale i tak trzeba sprawdzać ręcznie czy model nie ma błędów )

*/

d3d_set_culling( cull );

 

// Włącza mgłę o podanym kolorze i zakresie jej występowania ( odległość od kamery )

d3d_set_fog( enable, color, start, end );

 

/* Włącza funkcje odpowiedzialne za światło. Trzeba mieć na uwadze to że nic nie będzie widać gdy nie wstawimy

żadego źródła światła a ambient light jest ustawiony na zero ( domyślnie tak jest )

*/

d3d_set_lighting( enable )

 

/* Wygładza cienie na modelach ( funkcja d3d_set_lighting musi być włączona i musi być jakieś żródło światła )

To jak cień będzie wyglądał jednak nie zależy od samego GMa, trzeba jeszcze zadbać o to by Vertex normale w

modelach były poprawnie wygładzone.

*/

d3d_set_shading( smooth );

 

/* Tą funkcją można wpływać na ogólny klimat otoczenia. Jest to tak jakby kolor cieni rzucanych przez światło.

Gdy nie ma żadnego źródła światła jedyny kolor jaki widzimy to właśnie ambient light, domyślnie jest ustawion na 0

Dlatego też po uruchomieniu d3d_set_lighting( true ) bez źródeł światła widzimy czerń.

*/

d3d_light_define_ambient( colour );

 

Edit:

1.

 

Hud najlepiej jest zrobić w osobnym obiekcie, by uniknąć niechcianych problemów z głębią

Depth obiektu Huda musi być mniejszy od wszystkich obiektów i dużo mniejszy od depthu kamery,

przesadzić też nie można bo kamera się sypnie. Ja stosuję depth taki:

 

kamera 5000

obiekty -4999 do 4999

Hud -5000

 

Teraz w draw Huda trzeba przełączyć perspektywę na Ortho i wyłączyć funkcje świetlne ( by ambient nie wpływał na kolory Huda )

wyłączenie hidden też nie zaszkodzi.

 

GML (Draw)
d3d_set_lighting( 0 );

d3d_set_hidden( 0 );

 

draw_set_color( c_white );

d3d_set_projection_ortho( 0, 0, view_wview, view_hview, 0 );

draw_text( 0, 0, fps );

 

d3d_set_hidden( 1 );

d3d_set_lighting( 1 );

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ę...