Specchi in d3d

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Specchi in d3d

Messaggio da guidox »

Idee? :lol:
Avevo visto tempo fa qualcosa con le view ma non lo ritrovo più...
Qualcuno sa qualche tecnica? :fapensare:
Immagine

Immagine

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

Re: Specchi in d3d

Messaggio da Jak »

guidox ha scritto:Idee? :lol:
Avevo visto tempo fa qualcosa con le view ma non lo ritrovo più...
Qualcuno sa qualche tecnica? :fapensare:
Se hai gm8.1 ti basta draware su una surface il mondo con la telecamera che si basa su coordinate particolari in base al riflesso. Poi usi la surface come texture.
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
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

Jak ha scritto:
guidox ha scritto:Idee? :lol:
Avevo visto tempo fa qualcosa con le view ma non lo ritrovo più...
Qualcuno sa qualche tecnica? :fapensare:
Se hai gm8.1 ti basta draware su una surface il mondo con la telecamera che si basa su coordinate particolari in base al riflesso. Poi usi la surface come texture.
Ho provato anche questo, ma ho qualche problemino. -.-
Domani ti posto il codice ora sono le 2. :P
Immagine

Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

Ecco:
Create:

Codice: Seleziona tutto

surface=surface_create(32,32);
in step:

Codice: Seleziona tutto

surface_set_target(surface);
draw_clear(c_white);
d3d_set_projection(
128,32,16,
128,32+10,16,
0,0,1);
surface_reset_target();
in draw:

Codice: Seleziona tutto

a=surface_get_texture(surface);
draw_set_color(c_white);
d3d_draw_wall(128-16,32,0,128+16,32,32,a,1,1);
Ma mi da un muro bianco... :(

Idee?
Immagine

Immagine

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

Re: Specchi in d3d

Messaggio da Tizzio »

infatti sbagli... devi fare che ogni oggetto
quando tu fai d3d_draw_blah venga drawwato 2 volte
1 sulla surfacee e 1 su schermo normale...
esisteva già da tempo una dll chiamata surfacefix.dll che permetteva di usare le surface nel 3d
e c'era un esempio allegato di un monitor..
ecco il link.
http://gmc.yoyogames.com/index.php?showtopic=454468

l'esempio è in puro gml.

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

Re: Specchi in d3d

Messaggio da BaronVsCorsar »

gm 8.1.qualchecosa gestisce (finalmente) le surface anche nel 3d, senza dll esterna.

questo codice:

d3d_set_projection(
128,32,16,
128,32+10,16,
0,0,1);

prepara la modalità 3d, ma poi non ci disegna assolutamente nulla, giustamente non hai nulla nella surface che vai a disegnare. oltre a configurare la proiezione devi poi disegnare gli oggetti 3d al suo interno ;)
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
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Specchi in d3d

Messaggio da Tizzio »

BaronVsCorsar ha scritto:gm 8.1.qualchecosa gestisce (finalmente) le surface anche nel 3d, senza dll esterna.

questo codice:

d3d_set_projection(
128,32,16,
128,32+10,16,
0,0,1);

prepara la modalità 3d, ma poi non ci disegna assolutamente nulla, giustamente non hai nulla nella surface che vai a disegnare. oltre a configurare la proiezione devi poi disegnare gli oggetti 3d al suo interno ;)
si si ma l'ho segnalato proprio perchè dentro c'è un esempio di monitor..
e poi non tutti hanno gm 8.1

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

BaronVsCorsar ha scritto:gm 8.1.qualchecosa gestisce (finalmente) le surface anche nel 3d, senza dll esterna.

questo codice:

d3d_set_projection(
128,32,16,
128,32+10,16,
0,0,1);

prepara la modalità 3d, ma poi non ci disegna assolutamente nulla, giustamente non hai nulla nella surface che vai a disegnare. oltre a configurare la proiezione devi poi disegnare gli oggetti 3d al suo interno ;)
Infatti ora ho capito, ma come faccio, secondo vai ha senso mettere screen_redraw() dentro? xD
Oppure un ogni oggetti metto tutti e 2 i draw va... :fapensare:
Immagine

Immagine

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

Re: Specchi in d3d

Messaggio da BaronVsCorsar »

la seconda.

ora con "screen_redraw" non ricordo se viene chiamato anche l'evento draw di tutti gli oggetti o se semplicemente si butta sulla memoria video quanto era nella memoria di appoggio (ad esempio se usi funzioni grafiche non in evento draw)...
mi pare non chiami gli eventi draw.

se programmi bene l'evento draw e se screen_redraw invoca anche tutti gli eventi draw *potrebbe* essere sufficiente usarlo mentre dirotti la surface da utilizzare...
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
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

Ok ci sono riuscito. 8)
Ora calcolo anche l' angolazione dello specchio rispetto a quella del pg... effetto eccezionale. 8)
Dopo posto un esempio. :)
Immagine

Immagine

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: Specchi in d3d

Messaggio da maz85 »

Mi hai letto nel pensiero, lo stavo facendo qualche giorno fa :shock:

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

Figo... sicuramente il tuo è meglio del mio. :roll:
Postalo a e facci vedere, io sto ancora sistemando 2 cosette... :)
Immagine

Immagine

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

Re: Specchi in d3d

Messaggio da Jak »

Ma perchè anzichè lo specchio non ti fai direttamente i portali? :twisted:
Ah già non hai i piani di ritaglio più flessibili come il u3d, vabbè basta che eviti di usare i portali su pareti molto fine ma ti accontenti dei muri :lol:
PS: una curiosità, ma se usate una surface più piccola dello schermo e drawate su quella le dimensioni vengono fatte in proporzione alle dimensioni dello schermo o della surface? Sarebbe utile disegnare l'immagine specchiata con una risoluzione minore per ottimizzare le prestazioni :roll:
PS2: mi hai fatto venire voglia di continuare il 3d anaglifico che, lo dico già, nocche l'ha testato e funge perfettamente, almeno nel 2d. :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
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: Specchi in d3d

Messaggio da BaronVsCorsar »

usando le view con le funzioni 3D ho realizzato uno schermo secondario di 1/8 dello schermo totale, senza dover modificare nulla negli eventi draw.
basta scrivere il codice utilizzando le variabili interne delle dimensioni delle view invece di costanti numeriche.
Non ho mai provato con le surface, ma non vedo perchè dovrebbe cambiare.
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
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

Visto che non voglio aprire un nuovo topic lo scrivo qui...
Per postare l' esempio dello specchio mi stavo facendo un bel ambientino con sketchup ma vado ad aprire marzipan(è la prima volta su win 7) e non mi si apre, in realtà apre solo un processo MARZIPAN SE ma nient'altro... :fapensare:
Idee?
Immagine

Immagine

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: Specchi in d3d

Messaggio da maz85 »

Non ho provato marzipan altrove hum... :fapensare:
Comunque il mio esempio diciamo che non è prettamente uno specchio, ma serve per fare un riflesso su un bicchiere, ma comunque la tecnica è quella:
- cam secondaria
- target su surface
- d3d_set_projection partendo dalla posizione della cam
- performa l'evento draw degli oggetti che mi interessano
- reset surface
- texture from surface
- applica texture al modello

ovviamente ogni tot step e la surface è 128x128 perchè più grande non serve. E' per un gioco che ho in progetto quindi se permetti mi scoccia postarlo ora o ritagliare l'esempio. :lol:
Per fare un monitor secondario si possono usare le viste (vedi ShellGround64) come ha detto Baron e all'inizio volevo provare in questa maniera per fare lo specchio per poi fare un cattura schermo, ma mi è sembrato scomodo e non l'ho provato.

Avatar utente
HenrikUp
Membro super
Messaggi: 584
Iscritto il: 04/07/2011, 10:50
Specialità: Programmatore
Uso: GM:Studio 1.4 Standard
Località: SudItalia
Contatta:

Re: Specchi in d3d

Messaggio da HenrikUp »

Questa la so'!Anche a me non funzionava marzipan per questo ne ho scaricata un altra versione che ti funzionera' sicuramente e in formato gmk crea l'executable e usalo!
Allegati
Marzipan.gmk
(71.14 KiB) Scaricato 114 volte

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Specchi in d3d

Messaggio da guidox »

Ho risolto usando il converter per vista e 7. ;)
Immagine

Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti