O que são funções de atenuação?


15

Encontrei este site interessante para o desenvolvimento de jogos e ele tem uma lista de funções de atenuação:

insira a descrição da imagem aqui

Embora o site contenha uma descrição do seu objetivo, ele passa por minha cabeça. O que são funções de atenuação e para que são usadas?

Atualizar

Encontrei um exemplo melhor das funções do código-fonte do Phaser.io . Essas funções são muito mais simples do que as respostas aqui sugerem. Eles usam apenas um parâmetro k. Como parte da resposta, eu gostaria de saber como usá-las.


2
Um termo importante relacionado é interpolação. Veja também este vídeo youtube.com/watch?v=Fy0aCDmgnxg, onde você pode ver como são enormes os efeitos das funções de interpolação e facilitação!
Roy T.

Respostas:


13

As funções de atenuação são usadas para interpolação, normalmente (mas não necessariamente) na animação / movimento cinemático. Interpolação linear (lerp) é algo que você já deve ter ouvido falar. Digamos que você leia um rosto sorridente de um canto da tela para outro (como na sua imagem). Isso significa que o smiley se moverá a uma velocidade constante do ponto A ao ponto B. Se você aplicasse isso ao movimento de um membro, pareceria muito robótico e não natural - os atuadores / servos que os robôs usam, executam dessa maneira. Obviamente, os membros humanos se movem de uma maneira muito diferente. E a maioria dos movimentos que você verá na natureza terá curvas de movimento interessantes, em vez da velocidade constante e imutável vista na interpolação linear.

Digite atenuação. Aliviar o movimento significa que a velocidade não é constante. O que isso alcança é parecer mais realista. Observe pessoas, observe animais diferentes, observe plantas se dobrando ao vento ou até como a chuva muda de direção em um dia tempestuoso. Observe a velocidade de uma bola enquanto a joga no ar e volta a descer. Assista ao movimento de uma corda de violão enquanto você o aperta. Cada um desses tipos de movimento tem uma curva diferente que descreve a velocidade.

Sugiro que você jogue com o GSAP da GreenSock on - line para ter uma idéia do que os diferentes tipos de curvas de atenuação produzem em termos de movimento. É uma daquelas coisas em que leva tempo e prática mapear uma determinada curva nomeada para o tipo de movimento que você imagina que deseja. Mas depois de entender o básico, você se divertirá bastante.

PS Como eu disse, o relaxamento não é usado apenas para animação. Ele pode ser usado para a panorâmica do som, para efetuar movimentos esqueléticos no nível lógico / do modelo ou qualquer outra coisa que você possa imaginar que possa precisar de variação suave específica ao longo do tempo.


11
btw Easing é o segundo slide no link GreenSock. Use o menu suspenso no slide para testar diferentes funções de atenuação.
Jhocking

8

Uma função de atenuação permite interpolar valores de um valor para outro em um determinado intervalo usando algo chamado "função de atenuação". Essas são funções projetadas para obter um valor e, em qualquer ponto do intervalo, produzir o valor em um determinado momento.

Isso pode ser melhor explicado examinando um trecho de código:

// simple linear tweening - no easing, no acceleration


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

@t é a hora atual (ou posição) da interpolação. Podem ser segundos ou quadros, etapas, segundos, ms, o que for - desde que a unidade seja a mesma usada durante o tempo total

@b é o valor inicial da propriedade.

@c é a alteração entre o valor inicial e o destino da propriedade.

@d é o tempo total da interpolação.

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

Esta é a definição de uma função de flexibilização linear. Fazendo um gráfico disso ao longo do tempo em termos de 't', obtemos um mero gráfico linear.

OK fixe. Para que podemos usá-los?

Sempre que você tiver um começo e um final em mente e quiser animá-los, poderá usar uma "interpolação" ou "função de alívio".

Por exemplo, aqui está um GIF que eu peguei do Angry Birds:

insira a descrição da imagem aqui

Observe o menu deslizando para o ponto da tela, mas para lentamente? Isso ocorre devido a uma função de facilitação que se encaixa no lugar. Você pode ver aqueles em toda a web. Se isso fosse uma facilidade linear, seria o mesmo por toda parte.

Música?

Certo! Se pegarmos o valor do nosso valor atual da trilha sonora e o interpolarmos entre esse e 0 em um total de t digamos, 1 segundo, então nosso volume diminuirá lentamente durante um período de um segundo.

Objetos delimitadores

Também existem funções que permitem saltar (consulte: http://easings.net/#easeOutBounce ) que podem produzir efeitos como esse em um sprite sem nenhum sistema de física:

insira a descrição da imagem aqui

Você pode encontrar mais informações na web pesquisando interpolação.


@tieTYT Adicionei uma explicação para você. Que tipo de exemplo de uso você está procurando?
precisa saber é o seguinte

Veja minha atualização. Se você puder explicar como usar as funções que usam apenas kcomo parâmetro, aceitarei esta resposta. Graças
Daniel Kaplan

Essas funções não levam apenas k. As funções iniciais usam essas que são passadas para as mais complicadas. Você está interessado apenas na implementação de phasers?
Vaughan Empunhaduras

Parece que todos eles kme levam . Onde você está vendo o contrário?
Daniel Kaplan

Todas as funções de atenuação (exceto talvez os tweens no estilo 'shake') requerem um mínimo de três parâmetros. Tempo (geralmente uma proporção entre 0 e 1), um valor inicial e um valor final. Às vezes, o tempo é dividido em dois parâmetros, como horário atual e duração da facilidade. Se os valores inicial e final já tiverem sido definidos (dependendo do sistema / biblioteca de facilitação), talvez você precise passar o tempo, mas eu mesmo não conheço nenhum. Por exemplo, se eu quisesse o valor entre 10 e 30 a 75% do caminho (3 segundos em uma facilidade de 4 segundos), precisaria passar os 10 e 30 e também os 75% (tempo / duração).
precisa saber é o seguinte

2

As funções de atenuação servem para alterar um valor durante um período de tempo, de um número inicial para um número final.

Você usa esse valor para animar uma propriedade de um objeto em seu jogo, como posição, rotação, escala, alteração de cores e outras propriedades que usam um valor.

As diferentes funções de atenuação determinam a "sensação" da animação ou como o valor muda com o tempo.

No site que você publicou, o gráfico mostra o valor que muda ao longo do tempo, do início ao fim, portanto não significa que o objeto que você está animando siga o caminho da bola no gráfico.


Ah, agora você mudou sua resposta para refletir a minha! Muito bom ver que você está aprendendo.
Engineer

Esta resposta parece mais uma referência do que um tutorial. Preciso de exemplos para ter uma melhor compreensão
Daniel Kaplan

@NickWiggill não, eu nem vi sua resposta até agora.
Ino 23/04
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.