Ten artykuł został stworzony dla starszych wersji GameMakera i może nie być aktualny.

Obsługa 3D w GM6

Sobota, 18 Września 2004, 16:32
Czas czytania 5 minut, 14 sekundy
Zgodne z GM: gm6
Artykuł dla średnio-zaawansowanych użytkowników Game Makera. Opisuje on komendy do obsługi 3D w GM6.
Ten artykuł jest bardziej przeznaczony dla osób którym nie chce się tłumaczyć helpa, albo nie znają angielskiego. Pomoże on napewno nie tylko tym :) . Komentarze umieszczam w /* */ czyli w nowym standardzie GMa.

Wejście w tryb grafiki 3D
d3d_start() /* włącza tryb grafiki 3D */
d3d_end() /* wyłącza tryb grafiki 3D */
d3d_set_hidden(enable) /* ukrywanie powierzchni (true włącza, false wyłącza) */
d3d_set_perspective(enable) /* tryb projekcji perspektyw (true włącza, false wyłącza) */

Łatwe rysowanie
d3d_set_depth(depth) /* ustawia głębokość dla rysowania */

Rysowanie polygonów w 3D
d3d_primitive_begin(kind) /* zaczyna 3D prymitywa poprzez określenie rodzaju: pr_pointlist, pr_linelist, pr_linestrip,pr_trianglelist,pr_trianglestrip albo pr_trianglefan. */
d3d_vertex(x,y,z) /* dodaje vertexa (x,y,z) na prymitywa, używającego kolor i wartość alpha ustawianą wcześniej */
d3d_vertex_color(x,y,z,col,alpha) /* dodaje vertexa (x,y,z) do prymitywa, z własnym kolorem i wartością alpha */
d3d_primitive_begin_texture(kind,texid) /* zaczyna 3D prymitywa poprzez określenie rodzaju i nadanie tekstury */
d3d_vertex_texture(x,y,z,xtex,ytex) /* dodaje vertexa (x,y,z) do prymitywa wraz z pozycją (xtex,ytex) na teksturze, wraz z kolorem i alpha blendingiem ustawianymi wcześniej */
d3d_vertex_texture_color(x,y,z,xtex,ytex,col,alpha) /* dodaje vertexa (x,y,z) do prymitywa wraz z pozycją (xtex,ytex) na teksturze, wraz z kolorem i alpha blendingiem ustawianymi wraz z tym vertexem */
d3d_primitive_end() /* kończy prymitywa */
d3d_set_culling(cull) /* culling startujący przez tylną stronę objektu (true włącza, false wyłącza) */

Rysowanie podstawowych kształtów
d3d_draw_block(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat) /* Rysuje graniastosłup z aktywnym kolorem wraz z pokazaniem przeciwległych rogów używając wskazanej tekstury. Wpisz -1 jeżeli nie korzystasz z tekstur. hrepeat wskazuje ile razy musi być powtórzona tekstura w poziomie. vrepeat robi to samo ale w pionie. */
d3d_draw_cylinder(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps) /* Rysuje pionowy walec z aktywnym kolorem. Wartości hrepeat i vrepeat oznaczają to co powyżej. closed wskazuje kiedy ma być zamknięty owy walec. steps oznacza ile kroków ma zrobić. Domyślnie jest to 24. */
d3d_draw_ellipsoid(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,steps) /* Rysuje ellipsoid w aktywnym kolorze. Wszystko jest takie same jak w poprzednich przypadkach */
d3d_draw_wall(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat) /* Rysuje pionową ścianę w aktywnym kolorze. Znów wszystko jest takie jak powyżej */
d3d_draw_floor(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat) /* Rysuje (ukośną) podłogę w aktywnym kolorze. Jeszcze raz macie wszystko powyżej */

Patrzenie na świat :)
d3d_set_projection(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup) /* definiuje ono patrzenie na świat */
d3d_set_projection_ext(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup,angle,aspect,znear,zfar) /* Jest to polepszona wersja poprzedniego. Można ustawić w nim kąt, pole widzenia, z aspect ratio przy widzeniu pionowym i poziomym */
d3d_set_projection_ortho(x,y,w,h,angle) /* Zwykłe wyświetlanie w stylu ortograficznym :D . */

Transformacje
d3d_transform_set_identity() /* Ustawienie identyczności (bez transformacji) */
d3d_transform_set_translation(xt,yt,zt) /* Ustawia transformację w przejście */
d3d_transform_set_scaling(xs,ys,zs) /* Ustawia scalowanie */
d3d_transform_set_rotation_x(angle) /* Ustawia rotację do pozycji X */
d3d_transform_set_rotation_y(angle) /* Ustawia rotację do pozycji Y */
d3d_transform_set_rotation_z(angle) /* Ustawia rotację do pozycji Z */
d3d_transform_set_rotation_axis(xa,ya,za,angle) /* Ustawia rotację wokół ustawionego axisa */
d3d_transform_add_translation(xt,yt,zt) /* Dodaje przejście */
d3d_transform_add_scaling(xs,ys,zs) /* Dodaje scalowanie */
d3d_transform_add_rotation_x(angle) /* Dodaje rotację do pozycji X */
d3d_transform_add_rotation_y(angle) /* Dodaje rotację do pozycji Y */
d3d_transform_add_rotation_z(angle) /* Dodaje rotację do pozycji Z */
d3d_transform_add_rotation_axis(xa,ya,za,angle) /* Dodaje rotację wokół ustawionego axisa */
/* UWAGA! Pomijam komendy ze STACKami, ze względu na to, że nie są aż tak potrzebne, a w każdej chwili można zajrzeć do helpa */

Mgła
d3d_set_fog(enable,color,start,end) /* Włącza lub wyłącza mgłę. color ustawia kolor mgły. start ustawia gdzie się mgła zaczyna. end ustawia gdzie się mgła kończy. */

Oświetlenie
d3d_set_lighting(enable) /* Włącza lub wyłącza oświetlenie */
d3d_set_shading(smooth) /* Ustawia nasycenie cieni lub ich brak */
d3d_light_define_direction(ind,dx,dy,dz,col) /* Ustawia kierunek światła. ind to indeks światła (użyj małej liczby pozytywnej). (dx,dy,dz) to kierunek światła. col to kolor światła. */
d3d_light_define_point(ind,x,y,z,range,col) /* Ustawia punkt który ma być oświetlony. ind oznacza to co powyżej. (x,y,z) to pozycja punktu który ma być oświetlony. range ustawia jak daleko ma być to oświetlenie. col to kolor światła. */
d3d_light_enable(ind,enable) /* Włącza (true) lub wyłącza (false) światło o podanym indeksie (wartość ind). */

To chyba na tyle. Chciałem wam pokazać przez to, jak duże możliwości ma GM 6. Mam też nadzieję, że pomoże wam to w zrobieniu jakiejś gry 3D. Napewno nie zrobicie DOOMa 3, ale ta zabawa napewno przyniesie sporo satysfakcji.
Komentarze (łącznie 35, wyświetlam 1 - 15):
T
~Tails (Sob., 30 Lip. 05, 17:49)
#1

Nawet niezłe spróbuje coś z tego zrobić!!!

t
~t1theone (Pią., 06 Sty. 06, 13:20)
#2

A ja nie kapuje za bardzo ! :(
co trzeb wpisywać w te nawiasy ?
proszę o pomoc
moj nr gg to: 5170289

BP Ultimate (Pią., 06 Sty. 06, 16:36)
#3

Przecież to jest intuicyjne. Zamiast enable wpisujesz true lub false. Tam gdzie jest alpha stopień przeźroczystości, w X, Y i Z położenie objektu.

b
bigshark (Pią., 06 Sty. 06, 20:00)
#4

@t1theone Poprostu musisz skorzystać z mojego przykładu walka turowa 3d, znajdziesz go w dziale: przykłady , skrypty itd. Dzięki niemu poznasz lepiej 3D w GM. I nie czuj się wyróżniony: Z Walki turowej 3D skorzystały już miliony osób !

BP Ultimate (Pią., 06 Sty. 06, 21:01)
#5

Ty bigshark przestań pieprzyć o tej walce turowej, bo to się robi już coraz bardziej wkur**ające...

Ranmus (Pią., 06 Sty. 06, 21:22)
#6

Bigshark: Czuj się wyróżniony, że brałeś korepetycje z GM'a u najlepszego czyli u mnie. Ale jeszcze wiele musisz poznać, my young padawan! Tylko wolałbym się do tego nie przyznawać, bo to trochę... sami wiecie. ;P

p
pinker (Wto., 28 Sie. 07, 22:23)
#7

to mistrzu skrypt pajęczyny z gry która jest w kategorii skrypty,3d dodatki...... temat pajęczyna.

K
kasa100 (Wto., 28 Sie. 07, 22:36)
#8

Fajne...!! :)

koko123 (śro., 29 Sie. 07, 00:27)
#9

@pinker: To był rozkaz?? Bye Bye :3
Fajny kursik, mi się przydał do nauki 3D w GMie :)

kubasz (Wto., 01 Kwi. 08, 18:58)
#10

Ja polecam Ultimate 3D.
To jest taki dll do gm.
ultimate3d.org

a
adamek2323 (Nie., 16 Lis. 08, 17:48)
#11

ej jestem początkującym jeżeli chodzi o GM (dopiero zacząłem pracę nad nim) i mam pytanie jak gdzie moge uruchomić trub 3D w GM7 ????? Bardzo proszę o pomoc...

m
~mimek (Nie., 16 Lis. 08, 18:10)
#12

d3d_start() :) ta dam

a
adamek2323 (Pon., 17 Lis. 08, 06:39)
#13

ale to odrazu wpisać czy muszę wejść gdzieś????

Zychu (Pon., 17 Lis. 08, 07:27)
#14

najlepiej bez włączania gma. :)

P
PsichiX (Pon., 17 Lis. 08, 08:00)
#15

adamek2323: jesli gma masz od wczoraj to najpierw zaznajom sie z jego obsluga

Najnowsze wersje GameMakera:

Stabilna
2024.8.1.171 • 2024.8.1.218
wydana 75 dni temu
LTS
2022.0.3.83 • 2022.0.3.98
wydana  3 dni temu
Beta
2024.1100.0.686 •
2024.1100.0.707
 0.13.0

wydana 9 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
2 użytkowników aktywnych:
gości: 1, userów: 1
 Adriann
(~ostatnie 15 minut)
Discord
33 użytkownicy online na discordzie:
Kysiu, 🧁Cupcake🧁, Nikas, Alice, Nitro Slav, Carl-bot, EchoDuck, p..., GibkiKaktus, Grela, m..., GMRussell, OdrzuconyKrakers, fervi, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, antek, HappyOrange, Arrekin, MagnusArias, LadyLush, Dyno, 🆅🅸🆃🅾74🅼, szmalu, Miłosz, Voytec, m..., l..., moeglich, s..., Add92, Shockah, Cosplyfanka, PeekoHiko
Shoutbox
gnysek (11:46, 17.11.24)
Witamy, witamy!
baca (12:22, 16.11.24)
To już 25 lat.. Witam po paru latach nieobecności.
gnysek (11:05, 15.11.24)
Natomiast obecne forum istnieje od 2004, jak z iglu.cz na gmclan.org przeszliśmy i od tego czasu nie było resetów danych.
gnysek (12:35, 13.11.24)
Ogólnie GMCLAN istnieje 22 lata, ale na to trofeum nie zrobiłem (jeszcze xD)
Chell (20:41, 08.11.24)
wow, ta emotka w ogóle nie wygląda jak : O xD
Chell (20:40, 08.11.24)
tylko? :O 4tk ma 15
Borek (18:12, 07.11.24)
Właśnie dostałem powiadomienie z forum, że jestem na GMClanie 18 lat :D Ja pierdzielę...
S
Sutikku (08:43, 18.10.24)
TIL, gamemaker jest starszy ode mnie
gnysek (16:04, 15.10.24)
Za równo miesiąc, GameMaker kończy 25 lat.
Wojo (15:38, 05.09.24)
Ciekawe
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?