Game Maker Italia - Sviluppo giochi e programmi con GameMaker /GMItalia
Game Maker Italia - Sviluppo giochi e programmi con GameMaker /GMItalia
  Registrati!
Oggi:
Menu
GmItalia
Home
Database Giochi
GM Video
Recensioni
Competizioni
Interviste
La storia di GMI
Staff e Contatti
Links

GameMaker
Cos'è GameMaker?
Risorse / Downloads
Risorse 3D
Tutorial GM
Snippet
Funzioni gml Manuale GM
3D Gm


La Community
Forum
Chat
GMI Quiz!
Gadget Shop
 
Interagisci
Accedi al tuo Pannello!

Iscriviti anche tu al Forum!
 
Locations of visitors to this page
Online ora
In questo momento ci sono, 7 Visitatori(e) e 1 Utenti(e) nel sito.

Non ci conosciamo ancora? Registrati gratuitamente Qui
 
Ultime Recensioni
· Bumps
· MADNESS MADNESS MADNESS
· Rosetta Stone
· Innoquous 3
· Flying Fight
· Megaman World
· Answers Game: Uccidi i criceti!
· THE TRICK virus attack
· Chapta the Game
· Bee Bee
 
Top 10 Download
· 1: GameMaker 7
· 2: Rivista Ufficiale GMI n°1
· 3: GameMaker 6.1
· 4: Map Generator 3D
· 5: Resource Pack 1
· 6: Resource Pack 4
· 7: Fontana
· 8: Resource Pack 3
· 9: Caricamento mappe
· 10: Dark Distance
 
In aggiornamento
3d

3d Gamemaker

In questa sezione verra' illustrato il 3d di gamemaker e le varie DLL che possono attivare il 3d

Menu:
  • 3d Built-in
  • Tabella esempi base
  • DLLs
3d built-in di GameMaker

Il 3d built-in di Gamemaker si basa sulle Direct-X, e' un 3d semplice senza caricamento di modelli 3d in file (risolto con appositi converter, sul forum se ne discute).

Funzioni principali:

L'inizio Per iniziare bisogna conoscere i comandi per "avviare" le funzioni 3d di GameMaker.
La funzioni base per l'uso e l'abbandono della modalita' 3d sono:
d3d_start()
d3d_end()
Queste due funzioni ritornano un valore True quando effettivamente il comando ha dato esito positivo.

Segue breve spiegazione dei comandi piu' usati, tra parentesi gli argomenti:
d3d_set_hidden(attivo) : Accetta i valori 0/1 (boolean), attiva la rimozione della superficie nascosta;

d3d_set_perspective(attivo): attiva l'uso della prospettiva o la disattiva, accetta sempre valori booleani;

d3d_set_depth(profondita'): imposta la profondita' dell'oggetto disegnato, utile se in un pezzo di codice sto disegnando vari oggetti e ne voglio decidere la profondita';

d3d_set_fog(enable,color,start,end): attiva/disattiva la nebbia.
è un attributo di tipo booleano che indica l'attivazione o meno della nebbia, indica il colore della nebbia, start e end indicano la distanza da cui appare la nebbia e la distanza da cui oltre non viene disegnato nulla.

Disegnare poligoni in 3d:

d3d_primitive_begin(tipo): comincia il disegno di poligoni in 3d di cui ci sono vari tipi. Per questi tipi sono indicati delle costanti (pr_pointlist, pr_linelist,pr_linestrip,pr_trianglelist,pr_trianglestrip or pr_trianglefan). In pratica la prima costante (pr_pointlist) passata come argomento a questa funzione fa si che la lista di vertici che scriveremo dopo andra' a creare una serie di punti, con la costante pr_linelist delle linee ecc...
Prima di cominciare ad usare un d3d_vertex(x,y,z) o altre funzioni di tipo aggiunta bisogna usare questa funzione.

d3d_vertex(x,y,z): aggiunge un vertice;

d3d_vertex_color(x,y,z,col,alpha): aggiunge un vertice, ma con le impostazioni di colore e trasparenza settate;

d3d_primitive_end(): chiude la costruzione dell'insieme dei poligoni e disegna a schermo (se messa su draw).

I poligoni si possono anche texturare con queste altre funzioni che vanno a sostituire le precedenti:
d3d_primitive_begin_texture(tipo,texid)
d3d_vertex_texture(x,y,z,xtex,ytex)
d3d_vertex_texture_color(x,y,z,xtex,ytex,col,alpha)


L'argomento texid viene caricato con l'id di uno sfondo o di uno sprite con questi due comandi:
textid= background_get_texture(nomesfondo);
textid=sprite_get_texture(nomesprite,numeroimmagine);
Ovviamente lo sfondo e lo sprite sono dentro le apposite cartelle sulla gui di gamemaker.

d3d_set_culling(cull): con un argomento di tipo booleano (true/false-0/1) si puo' impostare se disegnare o meno la faccia nascosta dei poligoni disegnati in modo da risparmiare risorse.

Disegnare forme semplici in 3d

d3d_draw_block(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat): disegna un cubo, texid è l'id della texture (vedi sopra), hrepeat e vrepeat è la ripetizione della texture sulla faccia del cubo.

d3d_draw_cylinder(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps) : disegna un cilindro, in questa funzione abbiamo gli argomenti closed che indica se disegnare o meno il fondo al cilindro e l'argomento steps che indica i 'lati' del cilindro, un numero alto lo fara' sembrare meno squadrato.

d3d_draw_cone(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps) : disegna un cono, gli argomenti sono come quelli del cilindro.

d3d_draw_ellipsoid(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,steps): disegna una sfera (se il diametro è uguale in ogni punto).

d3d_draw_wall(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat): disegna un pannello verticale.

d3d_draw_floor(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat): disegna un pannello orizzontale.

Punto di vista:

d3d_set_projection(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup): gli attributi from indicano il punto di vista da cui si guarda mentre gli attributi to indicano le coordinate del punto da guardare. Gli attributi up indicano la rotazione della camera sui vari assi.

Trasformazioni:

Spostare un oggetto, ruotarlo, scalarlo, sono operazioni di trasformazione.

d3d_transform_set_identity(): definisce l'insieme di oggetti da prendere in considerazione, va messo prima di disegnarli e successivamente averli disegnati.

d3d_transform_set_translation(xt,yt,zt): sposta gli oggetti alle coordinate stabilite.

d3d_transform_set_scaling(xs,ys,zs): imposta la scala per l'oggetto, ovviamente 1 = scala normale, se viene messo 2 l'oggetto diventa piu' grande due volte se stesso ecc... Si possono variare i 3 parametri con diversi valori.

d3d_transform_set_rotation_x(angle)
d3d_transform_set_rotation_y(angle)
d3d_transform_set_rotation_z(angle)
: imposta la rotazione all'oggetto secondo gli assi x, y e z.

Esistono poi le funzioni sopra con la scritta "add" al posto di "set" che aggiungono al valore gia' impostato l'argomento passato.

Gestione luci:

Con il 3d di GameMaker è possibile anche gestire le luci.
Il comando per attivare/disattivare la gestione dell'illuminazine è:
d3d_set_lighting(attivo)

Alla funzione va passato come argomento il solito valore booleano.

Per attivare lo smooth shading (interpolazione del colore sui poligoni in base alla luce) bisogna usare la funzione
d3d_set_shading(attivo)

Su GameMaker ci sono 2 tipi di luce:
  • Luce direzionale:
    è una luce diretta che illumina tutto l'ambiente.
    d3d_light_define_direction(ind,dx,dy,dz,col)
  • Punto luce:
    è una luce definita in un punto (una lampadina ecc...)
    d3d_light_define_point(ind,x,y,z,range,col)
Spiegazione sugli argomenti:
ind : Ogni luce ha un suo indice che la identifica, quindi ad ogni luce creata ind sara' un numero diverso (bisogna usare un piccolo numero positivo esempio 1,2,3...);
dx,dy,dz : per la luce direzionale indicano la direzione della luce;
; col : il colore della luce che puo' essere espresso in costanti (c_white per il bianco) o con la funzione per creare i colori;
x,y,z: le coordinate del punto luce;
range: la portata della luce ovvero fino a dove illumina;

Per vedere le luci bisogna prima attivare il comando d3d_set_lighting(1) come spiegato sopra. Ogni luce poi puo' essere attivata o disattivata con il comando:
d3d_light_enable(ind,attivo)

in cui ind è l'indice della luce come ho spiegato prima e è il valore booleano che indica se attivare o meno la luce.

Quando si costruiscono i poligoni (vedi sopra) sarebbe opportuno attivare anche le 'normali' per gestire meglio l'illuminazione sull'oggetto. Le 'normali' o Normal Shading è quando la luce viene riflessa sull'oggetto in base ad una linea di direzione, la normale appunto.
Per aggiungere vertici con normali si usa d3d_vertex_normal(x,y,z,nx,ny,nz) ed inoltre sono presenti anche le altri funzioni che gestiscono il colore e la texture con l'aggiunta della gestione delle normali.

Modelli

GM puo' gestire la creazione di modelli e la loro gestione.
Ovviamente non sto parlando di modelli tipo 3ds,x,obj ecc.., ma di insieme di coordinate che creano poligoni e che a loro volta danno origine ai vari oggetti di un modello.
Per gestire i modelli di tipo 3ds,x,obj ecc... si vedano gli appositi convertitori (cerca pure sul forum) costruiti anche usando GM che importano un file di un modello e lo trasformano in codice GML (insieme di funzioni per la creazione di vertici ecc...).

Per creare un modello si usa la funzione d3d_model_create() che ritorna l'indice del modello, utile per tutte le altre funzioni.

Es. indice=d3d_model_create();

Le altre funzioni sono:
d3d_model_destroy(ind) : distrugge il modello liberando la memoria
d3d_model_clear(ind) : pulisce il modello da tutte le coordinate, ma non lo cancella;
d3d_model_save(ind,fname) d3d_model_load(ind,fname) : funzioni di caricamento e salvataggio del modello dove ind è l'indice e è una variabile di tipo stringa contentente il percorso e il nome del file.
Queste funzioni NON caricano i modelli di tipo 3ds ecc.., ma solo i modelli creati con i comandi di GM.

Per disegnare infine l'oggetto bisogna usare il comando d3d_model_draw(ind,x,y,z,texid)
ind è l'indice del modello da disegnare, x,y,z la posizione di disegno dell'oggetto mentre texid è l'id della texture (vedere disegnare poligoni per la spiegazione su come caricare texture)

Le funzioni per aggiungere poligoni o forme semplici ai modelli sono uguali a quelle gia' riportate solo che nella funzione è presente la dicitura "model". Ne riporto solo alcune, mentre le altre sono disponibili sul manuale:
d3d_model_primitive_begin(ind,tipo)
d3d_model_vertex(ind,x,y,z)
d3d_model_primitive_end(ind)
d3d_model_block(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat)



Per altre info esegui una ricerca sul forum!
Questa è una prima stesura a cui verranno aggiunte nuove informazioni e dettagli


Tabella Esempi gm6 da scaricare


DLL 3d

Le DLL piu' famose per l'uso del 3d sono :
  • Extreme 3d
  • Irrlicht (derivante dalla libreria per il c++)
  • Ultimate 3d


GameMaker Italia - 2D / 3D Game Developers - Versione 5
Tutti i loghi e le marche in questo sito sono dei rispettivi proprietari. I commenti e i posts sono dei rispettivi autori. Il resto è:
(C) 2003/2007 GMItalia
Versione 5 by Maz85 & Benia
//

PHP-Nuke Copyright © 2005 by Francisco Burzi.
Generazione pagina: 0.07 Secondi