[Botta&Risposta] Lente di ingrandimento

Tutorial, videotutorials ed esempi creati da noi
Rispondi
Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

[Botta&Risposta] Lente di ingrandimento

Messaggio da Homunculus »

Ispirato da un esempio sul forum ufficiale di GM, ho preparato una editabile che mostra come creare una lente di ingrandimento.

L'esempio originale (http://gmc.yoyogames.com/index.php?showtopic=493088) presenta un approccio con due surface, una su cui vien disegnata l'intera room e l'altra per la parte ingrandita. Funziona, ma ad ogni step ridisegna due volte l'intera room (una normalmente, una sulla surface) e sfrutta una surface grande quanto l'intera room, quindi é piuttosto poco performante come sistema.

Il mio esempio utilizza invece una surface e un background grandi al massimo quanto la zona ingrandita, e non necessita di ridisegnare l'intera room. L'unica cosa da fare é assicurarsi di mettere una depth molto bassa all'oggetto della lente, in modo che sia disegnato per ultimo, altrimenti non tutti gli oggetti vengono mostrati nella zona ingrandita. Ha anche un problema di stretch quando la lente supera i bordi dell'immagine, dovuto alla funzione background_create_from_screen, che per il momento non so come risolvere ma ci studio dietro e casomai aggiorno.

Download

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

Re: [Botta&Risposta] Lente di ingrandimento

Messaggio da Jak »

Bell'esempio, ma con l'interpoolazione è mooolto più godibile. Bella l'idea di usare il background per evitare di usare surface enormi(maledette view restrittive alla grandezza della room, io voglio room infinite caxxo, dove sarebbe il difficile? :furioso: ).
Per il problema ai bordi è tutta colpa della funzione che crea il background dallo schermo(bè chiamala colpa) che probabilmente:
-x ed y non vanno al di fuori della view di conseguenza andando a sinistra restano con x=0 come minimo(stessa cosa per la y)
-w ed h sono dipendenti da x ed y ma hanno il controllo dal loro corrispondente bordo.
-poichè w ed h sono dipendenti da x ed y e non viceversa andando in alto a sinistra x ed y restano dentro la visuale e w ed h restano a coordinate relative da x ed y mentre andando in basso a destra w ed h si aggiustano ma x ed y non hanno controlli che fanno si che restano sufficientemente distanti dal bordo basandosi su w ed h rimpicciolendo la zona di lavoro e quindi facendo quell'effetto scalatura.

Soluzione: non mettere la zona che verrà disegnata fuori dalla lente fuori dalla room perchè che abbia controlli o meno darà sempre un'effetto sbagliato. Bisogna sempre tenere la lente dentro la visuale.
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: [Botta&Risposta] Lente di ingrandimento

Messaggio da guidox »

Bell' esempio, l' avevo fatto anche io(ma con le surface... xD).

PS: Jak la view è infinita se gli setti la posizione a mano, l' ho fatto per il mio minecraft 2d... :)
Immagine

Immagine

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

Re: [Botta&Risposta] Lente di ingrandimento

Messaggio da Jak »

guidox ha scritto:Jak la view è infinita se gli setti la posizione a mano, l' ho fatto per il mio minecraft 2d... :)
o.O mi sa che sono rimasto ai tempi di gm6 quando ancora usavo le view
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

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti