123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- <!DOCTYPE html>
- <html lang="pt-br">
- <head>
- <meta charset="utf-8" />
- <base href="../../../" />
- <script src="page.js"></script>
- <link type="text/css" rel="stylesheet" href="page.css" />
- </head>
- <body>
- <h1>[name]</h1>
- <p class="desc">
- Um KeyframeTrack é uma sequência cronometrada de [link:https://en.wikipedia.org/wiki/Key_frame keyframes],
- que são compostos de listas de tempos e valores relacionados, e que são usados para animar uma
- propriedade específica de um objeto.
- </p>
- <p>
- Para obter uma visão geral dos diferentes elementos do sistema de animação three.js, consulte o
- artigo "Sistema de animação" na seção "Próximos Passos" do manual.
- </p>
- <p>
- Em contraste com a hierarquia de animação do
- [link:https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3 JSON model format] uma
- `KeyframeTrack` não armazena seus keyframes únicos como objetos em um array de "chaves" (mantendo os
- tempos e os valores de cada frame juntos em um só lugar).
- </p>
- <p>
- Em vez disso, há sempre dois arrays em um `KeyframeTrack`: o array [page:.times times]
- armazena os valores de tempo para todos os keyframes desta track em ordem sequencial, e o
- array [page:.values values] contém os valores alterados correspondentes da propriedade animada.
- </p>
- <p>
- Um único valor, pertencente a um determinado ponto do tempo, pode não ser apenas um simples número, mas (por
- exemplo) um vetor (se uma posição for animada) ou um quaternion (se uma rotação for animada). Por
- isso o array de valores (que também é um array plano) pode ser três ou quatro vezes maior que
- o array de tempo.
- </p>
- <p>
- Correspondendo aos diferentes tipos possíveis de valores animados existem várias subclasses de
- `KeyframeTrack`, herdando a maioria das propriedades e métodos:
- </p>
- <ul>
- <li>[page:BooleanKeyframeTrack]</li>
- <li>[page:ColorKeyframeTrack]</li>
- <li>[page:NumberKeyframeTrack]</li>
- <li>[page:QuaternionKeyframeTrack]</li>
- <li>[page:StringKeyframeTrack]</li>
- <li>[page:VectorKeyframeTrack]</li>
- </ul>
- <p>
- Alguns exemplos de como criar manualmente [page:AnimationClip AnimationClips] com diferentes tipos de
- KeyframeTracks pode ser encontrado no arquivo [link:https://threejs.org/examples/jsm/animation/AnimationClipCreator.js AnimationClipCreator].
- </p>
- <p>
- Como os valores explícitos são especificados apenas para os pontos discretos de tempo armazenados no array de tempo,
- todos os valores intermediários devem ser interpolados.
- </p>
- <p>
- O nome da track é importante para a conexão desta track com uma propriedade específica do
- nó animado (feito por [page:PropertyBinding]).
- </p>
- <h2>Construtor</h2>
- <h3>[name]( [param:String name], [param:Array times], [param:Array values], [param:Constant interpolation] )</h3>
- <p>
- [page:String name] - o identificador do `KeyframeTrack`.<br />
- [page:Array times] - um array de keyframes, convertidos internamente para um
- [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array].<br />
- [page:Array values] - um array com os valores relacionados ao array times, convertidos internamente para um
- [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array].<br />
- [page:Constant interpolation] - o tipo de interpolação a ser usado. Ver
- [page:Animation Animation Constants] para valores possíveis. O padrão é [page:Animation InterpolateLinear].
- </p>
- <h2>Propriedades</h2>
- <h3>[property:String name]</h3>
- <p>
- O nome da track pode se referir a morph targets ou [page:SkinnedMesh bones] ou possivelmente outros valores dentro de um objeto animado. Ver
- [page:PropertyBinding.parseTrackName] para as formas de strings que podem ser analisadas para propriedades
- vinculativas:
- </p>
- <p>
- O nome pode especificar o nó usando seu nome ou seu uuid (embora precise estar na
- subárvore do nó do grafo de cena passado para o mixer). Ou, se o nome da track começar com um ponto,
- a track se aplica ao nó raiz que foi passado para o mixer.
- </p>
- <p>
- Normalmente, após o nó, uma propriedade será especificada diretamente. Mas você também pode especificar um
- subpropriedade, como .rotation[x], se você quiser apenas direcionar o componente X da rotação
- através de uma track flutuante.
- </p>
- <p>
- Você também pode especificar bones ou multimateriais usando um nome de objeto, por exemplo:
- .bones[R_hand].scale; o canal vermelho da cor difusa do quarto material em um
- array de materiais - como um exemplo - pode ser acessado com .materials[3].diffuse[r].
- </p>
- <p>
- PropertyBinding também resolverá nomes de morph targets, por exemplo: .morphTargetInfluences[run].
- </p>
- <p>
- Nota: o nome da track não precisa necessariamente ser único. Várias tracks podem conduzir a mesma
- propriedade. O resultado deve ser baseado em uma mistura ponderada entre as várias tracks de acordo com
- os pesos de suas respectivas ações.
- </p>
- <h3>[property:Float32Array times]</h3>
- <p>
- Um [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
- convertido do array de tempos que é passado no construtor.
- </p>
- <h3>[property:Float32Array values]</h3>
- <p>
- Um [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
- convertido do array de valores que é passada no construtor.
- </p>
- <h3>[property:Constant DefaultInterpolation]</h3>
- <p>
- O tipo de interpolação padrão: [page:Animation InterpolateLinear].
- </p>
- <h3>[property:Constant TimeBufferType ]</h3>
- <p>
- [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
- o tipo de buffer usado internamente para os tempos.
- </p>
- <h3>[property:Constant ValueBufferType ]</h3>
- <p>
- [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
- o tipo de buffer usado internamente para os valores.
- </p>
- <h2>Métodos</h2>
- <h3>[method:KeyframeTrack clone]()</h3>
- <p>
- Retorna uma cópia desta track.
- </p>
- <h3>[method:Interpolant createInterpolant]()</h3>
- <p>
- Cria um [page:LinearInterpolant LinearInterpolant], [page:CubicInterpolant CubicInterpolant]
- ou [page:DiscreteInterpolant DiscreteInterpolant], dependendo do valor do parâmetro interpolação
- passado no construtor.
- </p>
- <h3>[method:Interpolant getInterpolation]()</h3>
- <p>
- Retorna o tipo da interpolação.
- </p>
- <h3>[method:Number getValueSize]()</h3>
- <p>
- Retorna o tamanho de cada valor (que é o comprimento do array [page:.values values] dividido
- pelo comprimento do array [page:.times times]).
- </p>
- <h3>[method:DiscreteInterpolant InterpolantFactoryMethodDiscrete]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
- <p>
- Cria uma nova [page:DiscreteInterpolant DiscreteInterpolant] a partir do
- [page:KeyframeTrack.times times] e [page:KeyframeTrack.times values]. Um Float32Array pode ser
- passado e receberá os resultados. Caso contrário, um novo array com o tamanho apropriado será
- criado automaticamente.
- </p>
- <h3>[method:LinearInterpolant InterpolantFactoryMethodLinear]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
- <p>
- Cria uma nova [page:LinearInterpolant LinearInterpolant] a partir do
- [page:KeyframeTrack.times times] e [page:KeyframeTrack.times values]. Um Float32Array pode ser
- passado e receberá os resultados. Caso contrário, um novo array com o tamanho apropriado será
- criado automaticamente.
- </p>
- <h3>[method:CubicInterpolant InterpolantFactoryMethodSmooth]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
- <p>
- Cria uma nova [page:CubicInterpolant CubicInterpolant] a partir do
- [page:KeyframeTrack.times times] e [page:KeyframeTrack.times values]. Um Float32Array pode ser
- passado e receberá os resultados. Caso contrário, um novo array com o tamanho apropriado será
- criado automaticamente.
- </p>
- <h3>[method:this optimize]()</h3>
- <p>
- Remove chaves sequenciais equivalentes, que são comuns em morph targets.
- </p>
- <h3>[method:this scale]()</h3>
- <p>
- Dimensiona todos os tempos de keyframe por um fator.<br /><br />
- Nota: Isso é útil, por exemplo, para conversões para uma determinada taxa de quadros por segundo (como
- é feito internamente por
- [page:AnimationClip.CreateFromMorphTargetSequence animationClip.CreateFromMorphTargetSequence]).
- </p>
- <h3>[method:this setInterpolation]( [param:Constant interpolationType] )</h3>
- <p>
- Define o tipo de interpolação. Veja [page:Animation Animation Constants] para opções.
- </p>
- <h3>[method:this shift]( [param:Number timeOffsetInSeconds] )</h3>
- <p>
- Move todos os keyframes para frente ou para trás no tempo.
- </p>
- <h3>[method:this trim]( [param:Number startTimeInSeconds], [param:Number endTimeInSeconds] )</h3>
- <p>
- Remove keyframes antes de `startTime` e depois de `endTime`,
- sem alterar nenhum valor dentro do intervalo [`startTime`, `endTime`].
- </p>
- <h3>[method:Boolean validate]()</h3>
- <p>
- Executa validação mínima nas tracks. Retorna verdadeiro se válido.
- </p>
- <p>
- Este método registra erros no console se uma track estiver vazia, se o [page:.valueSize value size] não for
- válido, se um item no array [page:.times times] ou [page:.values values]
- não for um número válido ou se os itens no array `times` estiverem fora de ordem.
- </p>
- <h2>Métodos Estáticos</h2>
- <h3>[method:JSON toJSON]( [param:KeyframeTrack track] )</h3>
- <p>
- Converte a track para JSON.
- </p>
- <h2>Source</h2>
- <p>
- [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
- </p>
- </body>
- </html>
|