Quali sono le funzioni di allentamento?


15

Ho trovato questo fantastico sito Web per lo sviluppo di giochi e ha un elenco di funzioni di semplificazione:

inserisci qui la descrizione dell'immagine

Sebbene il sito contenga una descrizione di ciò a cui servono, mi passa per la testa. Cosa sono le funzioni di allentamento e a cosa servono?

Aggiornare

Ho trovato un esempio migliore delle funzioni stesse dal codice sorgente di Phaser.io . Queste funzioni sono molto più semplici di quanto suggeriscano le risposte qui. Prendono un solo parametro, k. Come parte della risposta, vorrei sapere come usarli.


2
Un importante termine correlato è l'interpolazione. Guarda anche questo video youtube.com/watch?v=Fy0aCDmgnxg dove puoi vedere quanto sono enormi gli effetti delle funzioni di interpolazione e attenuazione!
Roy T.,

Risposte:


13

Le funzioni di andamento vengono utilizzate per l'interpolazione, in genere (ma non necessariamente) nell'animazione / movimento cinematico. L'interpolazione lineare (lerp) è qualcosa di cui potresti aver sentito parlare. Supponiamo che tu faccia una faccina sorridente da un angolo dello schermo all'altro (come per la tua immagine). Ciò significa che lo smiley si sposterà a una velocità costante dal punto A al punto B. Se dovessi applicarlo al movimento di un arto, sembrerebbe molto robotico e innaturale - gli attuatori / servi che i robot usano, funzionano in questo modo. Ovviamente, gli arti umani si muovono in un modo molto diverso. E la maggior parte del movimento che vedrai in natura avrà interessanti curve di movimento, piuttosto che la velocità costante e immutabile vista nell'interpolazione lineare.

Inserisci facilitazione. Allentare il movimento significa che la velocità non è costante. Ciò che ottiene è apparire più realistico. Guarda le persone, guarda diversi animali, osserva le piante che si piegano nel vento o anche come la pioggia che cade cambia direzione in una giornata raffinata. Guarda la velocità di una palla mentre la sollevi in ​​aria e rientra di nuovo. Guarda il movimento di una corda di chitarra mentre la pizzichi. Ognuno di questi tipi di movimento ha una curva diversa che descrive la velocità.

Ti suggerisco di giocare con GSAP online di GreenSock per avere un'idea di ciò che i diversi tipi di curve di allentamento producono in termini di movimento. È una di quelle cose in cui ci vuole tempo e pratica per mappare una particolare curva con nome al tipo di movimento che immagini di desiderare. Ma una volta che avrai compreso le basi, ti divertirai molto.

PS Come ho detto, l'allentamento non viene utilizzato solo per l'animazione. Può essere utilizzato per la panoramica del suono, per eseguire il movimento scheletrico a livello logico / modello o qualsiasi altra cosa a cui si possa pensare che potrebbe richiedere specifiche variazioni regolari nel tempo.


1
btw Easing è la seconda diapositiva nel link GreenSock. Utilizzare il menu a discesa sulla diapositiva per testare diverse funzioni di andamento.
jhocking

8

Una funzione di andamento ti permette di interpolare i valori da un valore all'altro in un dato intervallo usando qualcosa chiamato "funzione di andamento". Queste sono funzioni progettate per assumere un valore e in un dato punto dell'intervallo, emettere il valore in un determinato momento.

Questo può essere spiegato meglio dando un'occhiata a uno snippet di codice:

// simple linear tweening - no easing, no acceleration


Math.linearTween = function (t, b, c, d) {
    return c*t/d + b;
};

@t è l'ora (o la posizione) corrente dell'interpolazione. Può trattarsi di secondi o frame, passi, secondi, ms, qualunque cosa - purché l'unità sia la stessa utilizzata per il tempo totale

@b è il valore iniziale della proprietà.

@c è la modifica tra il valore iniziale e quello di destinazione della proprietà.

@d è il tempo totale dell'interpolazione.

Grazie, http://upshots.org/actionscript/jsas-understanding-easing

Questa è la definizione di una funzione di andamento lineare. Graficamente questo nel tempo in termini di 't' otteniamo un semplice grafico lineare.

Va bene, d'accordo. Per cosa possiamo usarli?

Ogni volta che hai in mente un inizio e una fine e desideri animarli, puoi utilizzare una "interpolazione" o una "funzione di andamento".

Ad esempio, ecco una GIF che ho appena fatto di Angry Birds:

inserisci qui la descrizione dell'immagine

Notare che il menu scorre verso il punto dello schermo, ma si ferma lentamente? Ciò è dovuto a una funzione di allentamento che si inserisce facilmente. Puoi vederli in tutto il Web. Se questa fosse una facilità lineare, sarebbe sempre la stessa.

Musica?

Sicuro! Se prendiamo il valore del nostro attuale valore della colonna sonora e lo interpoliamo tra quello e 0 su un totale di t di dire, 1 secondo, il nostro volume si attenuerà lentamente per un periodo di un secondo.

Oggetti limitanti

Ci sono anche funzioni che consentono il rimbalzo (vedi: http://easings.net/#easeOutBounce ) che possono produrre effetti come questo su uno sprite senza alcun sistema fisico:

inserisci qui la descrizione dell'immagine

Puoi trovare ulteriori informazioni sul Web cercando l'interpolazione.


@tieTYT Ho aggiunto una spiegazione per te. Che tipo di esempio di utilizzo stai cercando?
Vaughan Hilts,

Vedi il mio aggiornamento Se puoi spiegare come usare le funzioni che prendono solo kcome parametro, accetterò questa risposta. Grazie
Daniel Kaplan,

Queste funzioni non prendono solo k. Le funzioni iniziali usano queste che vengono poi tramandate a più complicate. Sei solo interessato all'implementazione dei phaser?
Vaughan Hilts,

Sembra che kmi prendano tutti . Dove vedi altrimenti?
Daniel Kaplan,

Tutte le funzioni di allentamento (tranne forse le interpolazioni di stile "shake") richiedono almeno tre parametri. Tempo (in genere un rapporto tra 0 e 1), un valore iniziale e un valore finale. A volte il tempo viene suddiviso in due parametri come l'ora corrente e la durata semplificata. Se i valori di inizio e fine sono già stati definiti (a seconda del sistema / libreria di allentamento), potrebbe essere necessario solo passare il tempo, ma non ho familiarità con nessuno. Ad esempio, se volevo un valore compreso tra 10 e 30 al 75% del percorso (3 secondi in una facilità di 4 secondi), devo passare il 10 e il 30, e anche il 75% (tempo / durata).
Doug.McFarlane,

2

Le funzioni di andamento servono a modificare un valore durante un periodo di tempo, da un numero iniziale a un numero finale.

Utilizzi quel valore per animare una proprietà di un oggetto nel tuo gioco, come posizione, rotazione, scala, modifica dei colori e altre proprietà che usano un valore.

Le diverse funzioni di andamento determinano la "sensazione" dell'animazione o come il valore cambia nel tempo.

Sul sito Web che hai pubblicato, il grafico mostra il valore che cambia nel tempo dall'inizio alla fine, quindi non significa che l'oggetto che stai animando seguirà il percorso della palla nel grafico.


Oh, quindi ora hai cambiato la tua risposta per riflettere la mia! Molto bello vedere che stai imparando.
Ingegnere

Questa risposta sembra più un riferimento che un tutorial. Ho bisogno di esempi per capire meglio
Daniel Kaplan,

@NickWiggill no, non ho nemmeno visto la tua risposta fino ad ora.
ino
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.