kriso99 Opublikowano 22 Stycznia 2013 Udostępnij Opublikowano 22 Stycznia 2013 witajcie mam parę pytań: 1. jak zrobić hud w 3d 2. jakie funkcje podawać przy rozpoczęciu 3d i co one oznaczają, każdy przykład podaje inne i inne wartości 3. jak narysować sprite'a w 3d aby był na wysokości np 10 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Stycznia 2013 Udostępnij Opublikowano 22 Stycznia 2013 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 Więcej opcji udostępniania...
kriso99 Opublikowano 22 Stycznia 2013 Autor Udostępnij Opublikowano 22 Stycznia 2013 dzięki działa:D jeszcze tylko potrzebuje odp. na pytanie nr.3 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Stycznia 2013 Udostępnij Opublikowano 22 Stycznia 2013 To zależy od ustawień kamery, to widok 3D wysokość może być w każdym kierunku. No i wytłumacz co rozumiesz mając na myśli sprit. Czy ci chodzi o billboard co stoi i się obraca do kamery? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kriso99 Opublikowano 22 Stycznia 2013 Autor Udostępnij Opublikowano 22 Stycznia 2013 chodzi o zwykły sprite(2D) ale aby był rysowany na wysokości 10 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Stycznia 2013 Udostępnij Opublikowano 22 Stycznia 2013 Taki leżący tak? GML d3d_transform_set_translation( x, y, tutaj wpisz tą wysokosc ); draw_sprite( sprit, -1, 0, 0 ); // te zera w x i y są ważne od teraz nie zmieniają pozycji a origin spritu d3d_transform_set_identity(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kriso99 Opublikowano 22 Stycznia 2013 Autor Udostępnij Opublikowano 22 Stycznia 2013 dzięki HuderLord o to mi chodziło Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę