You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					262 lines
				
				9.9 KiB
			
		
		
			
		
	
	
					262 lines
				
				9.9 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								<!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>
							 |