Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Animazioni
Forum - Algoritmi - Animazioni

Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:39
Lunedì, 04/04/2016
Buongiorno ragazzi,
Voglio aprire questo topic per avere alcune delucidazioni su un argomento che sto trattando
in questi giorni.

Prima di partire, vi mostro una screen dell'editor.

http://goo.gl/WHKtWf
(scusate per eventuali errori nella skin, ma è ancora da sistemare per le scrollbar )


dalla screen potete notare i due componenti ( PictureBox ) che creano l'animazione.

il metodo è simile ad una gif.
Nel senso che frame per frame viene creata una animazione.

Il riquadro in basso, serve per prendere i vari pezzi per comporre l'animazione.
il riquadro centrale, dovrebbe indicare un Pivot centrale. Dove si posiziona l'immagine.


ora guardando esempio quest'altra screen

http://goo.gl/qOz7wC

Ci sono degli slot, dove l'utente può personalizzare l'animazione del un personaggio.
tipo una corsa e poi un attacco, ecc. ecc.

https://www.youtube.com/watch?v=4RYLrnOI7to


Il mio dubbio è questo.

Come posso tenere sempre il pivot centrale anche se le animazioni nella prima screen saranno leggermente spostate dal centro?


Se esempio creo una camminata che andrà in nel punto centrale?


http://goo.gl/wYd7k8

che metodo mi consigliate di utilizzare?

io ho una struttura

Codice sorgente - presumibilmente C++

  1. struct _anim
  2. {
  3.    public Point pos; /* posizione */
  4.    public int frame; /* ID del frame */
  5.    public int pic_frame; /* ID della picture di un frame */
  6.  
  7. }



Questo potrebbe essere un esempio di come potrei fare la struttura.

Ma in precedenza avevo pensato di utilizzare una di questo genere


Codice sorgente - presumibilmente C++

  1. struct _anim
  2. {
  3.  
  4.  public int frame;
  5.  public byte[] image;
  6.  
  7. }



Nel secondo esempio sarebbe tutto più facile, ma ci sarebbe un dispendio di risorse
e di spazio che occuperebbe un animazione notevole.

di solito, in alcuni casi converto l'immagine in byte[] per renderla disponibile anche su altri computer.
Dichiarando semplicemente Image nella struttura riceverei un errore successivamente.

Non chiedetemi il perché ma ci ho già provato in passato.
forse si basa su un qualcosa temporaneo nel mio computer.
Ma poi quando vado a rilasciare il file e come se non ritrovasse l'immagine.
per questo ho usato il byte[].

oltre a queste due soluzioni cosa mi consigliate di fare?

come potrei tenere sempre centrata un animazioni relativa ad un pivot?

il pivot che si vede nella screen, potrebbe essere relativo ad un oggetto presente nella scena di rendering.
come un ostacolo esempio, un nemico, ecc. ecc.

Questo è il mio dubbio.
Per il comparto animazione non dovrà essere un problema di quantità.
perché al massimo si può eseguire una animazione alla volta e non in contemporanea.

Dovrà essere solo un sistema fluido ed affidabile.

Dimenticavo.
Il pivot è un punto dinamico.
Può cambiare anche posizione durante la riproduzione.

Chiedevo solo se sto percorrendo la strada giusta, o in seguito mi ritrovo un muro d'avanti.


Ultima modifica effettuata da Thejuster il 04/04/2016 alle 12:54


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 3:31
Mercoledì, 06/04/2016
Testo quotato


Nel secondo esempio sarebbe tutto più facile, ma ci sarebbe un dispendio di risorse
e di spazio che occuperebbe un animazione notevole.



Esattamente. Usa degli indici (come nel primo esempio).

Non ho ben chiaro cosa intendi per "tenere sempre il pivot centrale", non ho abbastanza esperienza nello sviluppo di RPG nello specifico, ma se il tuo scopo è allineare i frames dell'animazione, dovrai memorizzare, al minimo, un offset verticale e orizzontale. Durante il rendering poi aggiungi l'offset alla posizione del frame.

Se devi gestire anche zoom e rotazioni per motivi di allineamento, invece usa le matrici.


Il mio blog: https://piero.dev
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:35
Mercoledì, 06/04/2016
Grazie per la risposta piero :)

Il pivot come ben sai è un punto di ancoraggio di un immagine.
Può essere scelta dall'utente "Centrale" come può essere scelta "Basso" o "Alto"

Il dubbio a cui mi riferivo era questo.

Ho un Nemico che misura esempio: 190 X 190  e l'utente sceglie di impostare il Pivot alla base dei piedi.

quindi il centro dell'animazione non sarà più la parte centrale del riquadro.
Ma dovrà essere la parte bassa del nemico selezionato.
che ovviamente le dimensioni possono variare, non sono statiche.

Ora se le l'utente le posiziona tutte centralmente, cambiando il pivot in basso le animazioni si spostano dal
centro al basso. Fin qui non ci dovrebbero essere problemi nel farlo.

Ma quando esempio faccio un qualcosa del genere come funziona?

http://goo.gl/Or9gTg

cambiando ovviamente il pivot dal centro / alto / basso + posizione dinamica

Nella screen esempio ho 3 elementi, ma potrebbero essercene anche 10 o 20.

Edit:
Anche lo schermo ha una risoluzione personalizzabile.
non è statica. normalmente il viewport lavora su 800 x 600



Ultima modifica effettuata da Thejuster il 06/04/2016 alle 10:37


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:42
Mercoledì, 06/04/2016
Ahh ok.

Confermo la mia risposta, memorizza un offset se hai solamente bisogno di spostare la posizione. Se devi supportare zoom e rotazioni, invece codifica l'informazione in una matrice.


Il mio blog: https://piero.dev
PM Quote