SlaD3D

Gex, Dll, DyLib, Js e ogni tipo di estensione per GameMaker
Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Fatto l'importer OBJ.
Se nella stessa directory dell'OBJ specificato la funzione trova anche il suo MTL (non è necessario che si chiamino allo stesso modo: il nome del file .mtl è salvato nell' obj)
allora viene caricato anche quello.
Per chi non lo sapesse, i file .mtl di solito accompagnano quelli obj e contengono informazioni su texture e materiali.
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:Fatto l'importer OBJ.
Se nella stessa directory dell'OBJ specificato la funzione trova anche il suo MTL (non è necessario che si chiamino allo stesso modo: il nome del file .mtl è salvato nell' obj)
allora viene caricato anche quello.
Per chi non lo sapesse, i file .mtl di solito accompagnano quelli obj e contengono informazioni su texture e materiali.
sla sono seriamente interessato a convertire il mio progetto con d3d von la tua dll, per ora non ho incluso alcun tipo di modello,dunque si tratta piu che altro di sprite 2d, e un insieme di floors,walls e cubi.

Dunque con il giusto supporto potrei iniziare a fare qualche test di conversione,vi è una lista di tutte le funzioni presenti fin ora?? (cosi posso vedere se posso convertire il tutto in generale)



PS: il mio progetto include piu che altro edifici,quindi costruzioni da pochi poligoni,fin ora la costruzione degli edifici è avvenuta completamente in codice assemblando vari muri e pavimenti,se mai dovessi per comodità e qualità passare a costuirmi gli edifici tramite software di modellazioni , trattandosi comunque di pochi poligoni a edificio ipotizziamo per assurdo un massimo di 50 poligoni per edificio , le prestazioni potrebbero peggiorare o forse migliorare?
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Se utilizzi i modelli invece di molte funzioni wall e floor le prestazioni non possono che migliorare, ma questo vale anche in game maker.
Se poi usi la mia DLL puoi anche evitare di prenderti la briga di preoccuparti dei poligoni, ti fai i modelli con software come sketchup e ci metti quanti vertici vuoi.
Da sketchup li salvi in 3ds e puoi importarli già texturati.
Per una lista delle funzioni ti passo direttamente un pezzo dell'header del progetto

Codice: Seleziona tutto

//GOING TO 3D MODE
export D d3d_start(D hwnd,D windowed);
export D d3d_end();
//D d3d_set_hidden(D enable);
//D d3d_set_perspective(D enable);
export D d3d_render_begin();
export D d3d_render_end();

export D d3d_set_mipmap(D enable);

//LIGHTING
export D d3d_set_lighting(D enable);
export D d3d_set_ambient(D color);
export D d3d_set_shading(D smooth);
export D d3d_light_define_direction(D ind,D dx,D dy,D dz,D col);
export D d3d_light_define_point(D ind,D x,D y,D z,D range,D col);
export D d3d_light_enable(D ind,D enable);
//VIEWING THE WORLD
export D d3d_set_projection(D xfrom,D yfrom,D zfrom,D xto,D yto,D zto,D xup,D yup,D zup);
export D d3d_set_projection_ext(D xfrom,D yfrom,D zfrom,D xto,D yto,D zto,D xup,D yup,D zup,D angle,D aspect,D znear,D zfar);

//FOG
export D d3d_set_fog(D enable,D color,D start,D end);


//DRAWING BASIC SHAPES
export D d3d_draw_block(D x1,D y1,D z1,D x2,D y2,D z2,D texid,D hrepeat,D vrepeat);
export D d3d_draw_floor(D x1,D y1,D z1,D x2,D y2,D z2,D texid,D hrepeat,D vrepeat);


//TEXTURE HANDLING
D texture_set_repeat(D repeat);
export D load_texture(S fname);
export D load_texturedir(S fname);
export D texture_destroy(D ind);
export D texture_set_directory(S dir);

//CREATING MODELS
export D d3d_model_create();
export D d3d_model_exists(D ind);
export D d3d_model_destroy(D ind);
export D d3d_model_clear(D ind);
export D d3d_model_save(D ind,S fname);
export D d3d_model_load(D ind,S fname);

export D d3d_model_load_ex(D ind,S fname,D flag);

export D d3d_material_create(D ambient,D diffuse,D diff_alpha,D emissive,D power,D specular);
export D d3d_material_destroy(D ind);

export D d3d_model_primitive_begin(D ind,D kind);
export D d3d_model_primitive_end(D ind);
//export D d3d_model_primitive_end_ex(D ind, D matID,D texID);

export D d3d_model_vertex(D ind,D x,D y,D z);
export D d3d_model_vertex_color(D ind,D x,D y,D z,D col,D alpha);
export D d3d_model_vertex_texture(D ind,D x,D y,D z,D xtex,D ytex);
export D d3d_model_vertex_texture_color(D ind,D x,D y,D z,D xtex,D ytex,D col,D alpha);
export D d3d_model_vertex_normal(D ind,D x,D y,D z,D nx,D ny,D nz);
export D d3d_model_vertex_normal_texture(D ind,D x,D y,D z,D nx,D ny,D nz,D xtex,D ytex);
export D d3d_model_vertex_normal_color(D ind,D x,D y,D z,D nx,D ny,D nz,D col,D alpha);
export D d3d_model_vertex_normal_texture_color(D ind,D x,D y,D z,D nx,D ny,D nz,D xtex,D ytex,D col,D alpha);

export D d3d_model_draw(D ind,D x,D y,D z,D texid);

export D d3d_model_calculate_normals(D ind);

//TRANSFORMATIONS
export D d3d_transform_set_identity();

export D d3d_transform_set_translation(D xt,D yt,D zt);
export D d3d_transform_set_scaling(D xs,D ys,D zs);
export D d3d_transform_set_rotation_x(D angle);
export D d3d_transform_set_rotation_y(D angle);
export D d3d_transform_set_rotation_z(D angle);
export D d3d_transform_set_rotation_axis(D xa,D ya,D za,D angle);

export D d3d_transform_add_translation(D xt,D yt,D zt);
export D d3d_transform_add_scaling(D xs,D ys,D zs);
export D d3d_transform_add_rotation_x(D angle);
export D d3d_transform_add_rotation_y(D angle);
export D d3d_transform_add_rotation_z(D angle);
export D d3d_transform_add_rotation_axis(D xa,D ya,D za,D angle);

//COLLISION DETECTION
export D d3d_collision_ray_model(D xr,D yr,D zr,D xv,D yv,D zv,D model);
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:Se utilizzi i modelli invece di molte funzioni wall e floor le prestazioni non possono che migliorare, ma questo vale anche in game maker.
Se poi usi la mia DLL puoi anche evitare di prenderti la briga di preoccuparti dei poligoni, ti fai i modelli con software come sketchup e ci metti quanti vertici vuoi.
Da sketchup li salvi in 3ds e puoi importarli già texturati.
Per una lista delle funzioni ti passo direttamente un pezzo dell'header del progetto

Codice: Seleziona tutto

//GOING TO 3D MODE
export D d3d_start(D hwnd,D windowed);
export D d3d_end();
//D d3d_set_hidden(D enable);
//D d3d_set_perspective(D enable);
export D d3d_render_begin();
export D d3d_render_end();

export D d3d_set_mipmap(D enable);

//LIGHTING
export D d3d_set_lighting(D enable);
export D d3d_set_ambient(D color);
export D d3d_set_shading(D smooth);
export D d3d_light_define_direction(D ind,D dx,D dy,D dz,D col);
export D d3d_light_define_point(D ind,D x,D y,D z,D range,D col);
export D d3d_light_enable(D ind,D enable);
//VIEWING THE WORLD
export D d3d_set_projection(D xfrom,D yfrom,D zfrom,D xto,D yto,D zto,D xup,D yup,D zup);
export D d3d_set_projection_ext(D xfrom,D yfrom,D zfrom,D xto,D yto,D zto,D xup,D yup,D zup,D angle,D aspect,D znear,D zfar);

//FOG
export D d3d_set_fog(D enable,D color,D start,D end);


//DRAWING BASIC SHAPES
export D d3d_draw_block(D x1,D y1,D z1,D x2,D y2,D z2,D texid,D hrepeat,D vrepeat);
export D d3d_draw_floor(D x1,D y1,D z1,D x2,D y2,D z2,D texid,D hrepeat,D vrepeat);


//TEXTURE HANDLING
D texture_set_repeat(D repeat);
export D load_texture(S fname);
export D load_texturedir(S fname);
export D texture_destroy(D ind);
export D texture_set_directory(S dir);

//CREATING MODELS
export D d3d_model_create();
export D d3d_model_exists(D ind);
export D d3d_model_destroy(D ind);
export D d3d_model_clear(D ind);
export D d3d_model_save(D ind,S fname);
export D d3d_model_load(D ind,S fname);

export D d3d_model_load_ex(D ind,S fname,D flag);

export D d3d_material_create(D ambient,D diffuse,D diff_alpha,D emissive,D power,D specular);
export D d3d_material_destroy(D ind);

export D d3d_model_primitive_begin(D ind,D kind);
export D d3d_model_primitive_end(D ind);
//export D d3d_model_primitive_end_ex(D ind, D matID,D texID);

export D d3d_model_vertex(D ind,D x,D y,D z);
export D d3d_model_vertex_color(D ind,D x,D y,D z,D col,D alpha);
export D d3d_model_vertex_texture(D ind,D x,D y,D z,D xtex,D ytex);
export D d3d_model_vertex_texture_color(D ind,D x,D y,D z,D xtex,D ytex,D col,D alpha);
export D d3d_model_vertex_normal(D ind,D x,D y,D z,D nx,D ny,D nz);
export D d3d_model_vertex_normal_texture(D ind,D x,D y,D z,D nx,D ny,D nz,D xtex,D ytex);
export D d3d_model_vertex_normal_color(D ind,D x,D y,D z,D nx,D ny,D nz,D col,D alpha);
export D d3d_model_vertex_normal_texture_color(D ind,D x,D y,D z,D nx,D ny,D nz,D xtex,D ytex,D col,D alpha);

export D d3d_model_draw(D ind,D x,D y,D z,D texid);

export D d3d_model_calculate_normals(D ind);

//TRANSFORMATIONS
export D d3d_transform_set_identity();

export D d3d_transform_set_translation(D xt,D yt,D zt);
export D d3d_transform_set_scaling(D xs,D ys,D zs);
export D d3d_transform_set_rotation_x(D angle);
export D d3d_transform_set_rotation_y(D angle);
export D d3d_transform_set_rotation_z(D angle);
export D d3d_transform_set_rotation_axis(D xa,D ya,D za,D angle);

export D d3d_transform_add_translation(D xt,D yt,D zt);
export D d3d_transform_add_scaling(D xs,D ys,D zs);
export D d3d_transform_add_rotation_x(D angle);
export D d3d_transform_add_rotation_y(D angle);
export D d3d_transform_add_rotation_z(D angle);
export D d3d_transform_add_rotation_axis(D xa,D ya,D za,D angle);

//COLLISION DETECTION
export D d3d_collision_ray_model(D xr,D yr,D zr,D xv,D yv,D zv,D model);

x ora per convertire il mio progetto , giusto per qualche test necessiterei dei draw fondametali : d3d_draw_wall e draw_floor nell'ultimo esempio che ho scaricato c è invece solo draw_block,se hai il tempo includere e aggiornare aspetto il prossimo rilascio, dopo qualche test posso provare invece ad utilizzare modelli ;)
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Presto posto una nuova release.
Sto studiando gli shader in HLSL e sto creando un sistema alternativo di luci.
utilizzando semplicemente

Codice: Seleziona tutto

d3d_set_pixel_lighting(true)
potete renderizzare tutte le luci che avete creato in pixel lighting invece di vertex-lighting.
Immagine.
eppure mi sembra tutto giusto...

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: SlaD3D

Messaggio da BaronVsCorsar »

Super_Slascio ha scritto:Presto posto una nuova release.
Sto studiando gli shader in HLSL e sto creando un sistema alternativo di luci.
utilizzando semplicemente

Codice: Seleziona tutto

d3d_set_pixel_lighting(true)
potete renderizzare tutte le luci che avete creato in pixel lighting invece di vertex-lighting.
Immagine.
questo significa che la luce si diffonde bene anceh se ho un poligono di 10000x10000, esattamente come se lo ridefinisco utilizzando un triangle_fan con migliaia di vertici?
molto interessante...
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Esattamente.
Il pixel-lighting funziona con uno shader che definisce il colore pixel per pixel, non importa il numero di vertici.
Il vertex-lighting di game maker colora triangolo per triangolo, un effetto cosi non può venire se non con centinaia di triangoli (l'esempio ne ha 2 per faccia).
Ora implementando lo shader per l'effetto specular, ovvero la riflessione della luce in punti più luminosi propria dei materiali più lucidi.
Immagine
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

:fapensare: FICATA, voglio testare con mano .v. , PS: come d3d supporterà l'utilizzo delle risorse interne?
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

No, non posso utilizzare le risorse caricate sul device di game maker perchè è creato con Directx8, mentre sto facendo la DLL con DX9. Dovrai salvare la risorsa in un file e caricarla con le apposite funzioni.
eppure mi sembra tutto giusto...

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: SlaD3D

Messaggio da Jak »

Sei arrivato all'hlsl finalmente, ottimo lavoro :sisisi:
BaronVsCorsar ha scritto:questo significa che la luce si diffonde bene anceh se ho un poligono di 10000x10000, esattamente come se lo ridefinisco utilizzando un triangle_fan con migliaia di vertici?
molto interessante...
Baron che si stupisce di fronte ad uno shader basilare? Incredibile!
Quindi pensavi che una sfera bump mappata avesse decine di migliaia di triangoli? :paura:
Ti sorprenderà sopratutto la velocità di effetti simili :twisted:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:No, non posso utilizzare le risorse caricate sul device di game maker perchè è creato con Directx8, mentre sto facendo la DLL con DX9. Dovrai salvare la risorsa in un file e caricarla con le apposite funzioni.
Possibile che ci sia la piu remoto possibilità di importare sprites? cioe *.gmspr con relative informazioni x rimediare a questa "pecca" ? :fapensare:
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Fai come tutti i veri giochi e carichi la risorsa esternamente. Se proprio vuoi puoi posso aggiungere qualche funzione per caricare file criptati e protetti da password (che scegli te).
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:Fai come tutti i veri giochi e carichi la risorsa esternamente. Se proprio vuoi puoi posso aggiungere qualche funzione per caricare file criptati e protetti da password (che scegli te).
era piu per una questione di comodità che ho riscontrato in d3d che appunto lo permette a differenza di u3d , so bene che l'importazione delle risorse è una cosa ormai obbligatoria per un gioco come si deve ma la mie esigenze nascono dal fatto che per i tds 3d,un misto di sprites e scenario 3d, ho molto a che fare con immagini 2d,dunque sprites, dunque variabili relative agli sprites come xorigin e y origin ecc...

Poi se questo ovviamente non è fattibile mi adatterò dico solo che siccome sempre di GM si tratta rendere possibile o quantomeno "simulare" o rattoppare questa "falla" sarebbe un idea non di certo inutile.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

non capisco..
nel 3d cambia qualcosa se modifichi i valori xorigin/yorigin di una sprite nel momento in cui la usi come texture? mi pare proprio di no.. cosi come le altre variabili.
Se è una questione di comodità per poter lavorare sulla immagine sprite con gm ti fai lo script:
sprite_save("ciao.bmp");
dll_load_texture("ciao.bmp")
file_delete("ciao.bmp");
e lo esegui una volta ad inizio gioco.

cmq, implementato lo specular, viene uguale alla immagine postata prima, che avevo preso da wiki 8)
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

ora che ci penso forse sto dicendo delle cazzate, però ad esempio in u3d ho potuto impostare xorigin e y origin solamente nel "draw_cube" , mentre nei wall e floor no, queste assurdità spero che nel tuo non ci saranno :D , poi un altra cosa che secondo me è utilissima sarebbe utile una funzione che restituisca le coordinate 2d del mouse col 3d attivo.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

ehm... le coordinate 2d del mouse non cambiano.
Intendi il picking? Cioè quale punto nello spazio 3d stai puntando col mouse (ammesso che stai puntando un triangolo disegnato) ?
Non è difficile da fare :)

(Eccoti una teapot illuminata a puntino con l'effetto specular appena aggiunto)
Immagine
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:ehm... le coordinate 2d del mouse non cambiano.
Intendi il picking? Cioè quale punto nello spazio 3d stai puntando col mouse (ammesso che stai puntando un triangolo disegnato) ?
Non è difficile da fare :)

(Eccoti una teapot illuminata a puntino con l'effetto specular appena aggiunto)
Immagine
davvero bellissimo effetto... comunque parlavo del rilevamento di mouse_x e mouse_y, dato che nel 3d queste coordinate non corrispondono all'effettiva posizione del mouse.Infatti esistono script per convertire il vettore delle coordinate del mouse in coordinate 2d mi pare.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

?!? si che corrispondono! Cmq, anche se cosi non fosse, gm resta nella modalità 2d mentre la dll disegna sulla finestra di gioco. mouse_x e mouse_y non vengono intaccati
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:?!? si che corrispondono! Cmq, anche se cosi non fosse, gm resta nella modalità 2d mentre la dll disegna sulla finestra di gioco. mouse_x e mouse_y non vengono intaccati
be nel d3d e nell u3d vengono "sballati" se mai dovessi far ruotare qualcosa in base a point_direction(x,y,mouse_x,mouse_y) la direzione non corrisponderebbe a quella diretta verso il mouse come nel 2d.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: SlaD3D

Messaggio da Tizzio »

Super_Slascio ha scritto:ehm... le coordinate 2d del mouse non cambiano.
Intendi il picking? Cioè quale punto nello spazio 3d stai puntando col mouse (ammesso che stai puntando un triangolo disegnato) ?
Non è difficile da fare :)

(Eccoti una teapot illuminata a puntino con l'effetto specular appena aggiunto)
Immagine
http://learningwebgl.com/blog/?p=1658
Cel'avete tutti colla teiera?

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti