O Sceneform permite importar modelos com animação. É possível usar as APIs Sceneform para reproduzir e controlar a animação e anexar nós a um esqueleto de um modelo.
Por exemplo, o exemplo de Animation (link em inglês) de cenas do cenário inclui arquivos usados para criar modelos do Android, do Android e de um boné de beisebol. O modelo Andy contém dados de animação, enquanto o boné de baseball é um modelo não animado. Quando você executa a amostra, Andy rompe os braços e acena com os braços enquanto o chapéu permanece fixo na cabeça dele usando um nó.
Animação de modelo de cena x animação de propriedade do Android
É importante diferenciar entre a animação de modelos no Sceneform e a animação de propriedade no Android.
As animações de modelos são criadas antecipadamente pelos artistas usando softwares de modelagem e animação. Eles contêm dados de animação esquelética. Essas animações precisam ser exportadas como arquivos
*.fbx
e, em seguida, importadas para um arquivo*.sfb
para ser usado no Sceneform.A animação de propriedade é um conceito fundamental do Android e não é específico ao Sceneform. Esse tipo de animação pode alterar qualquer valor mutável em um objeto Java que tenha um getter e um setter. Os valores animados podem ser definidos dinamicamente, mas não podem ser empacotados em um arquivo
*.sfb
.As animações de propriedade e modelo são compatíveis com a API Animator do Android's . Ambos são compatíveis com listeners, controle de reprodução (start/stop/end/pause/cancel), duração e atraso de início.
Somente a compatibilidade limitada com a reprodução de
TimeInterpolators
é fornecida nas animações do modelo. A reprodução reversa não é compatível com animações de modelos.Para ver a modelagem de animações do Sceneform em ação, consulte o exemplo de Animação (link em inglês).
Para ver a animação de propriedade usando o Sceneform em ação, consulte a amostra do Sistema solar.
Conceitos de animação de modelos
Antes de começar a trabalhar com modelos animados, é uma boa ideia entender conceitos específicos relacionados à animação esquelética, além de restrições e recursos relacionados que se aplicam à forma de cena.
Os benefícios. Um modelo animado contém ossos conectados entre si, formando relações pai-filho em uma hierarquia. A animação altera a posição e a orientação dos ossos durante a reprodução.
Da mesma forma que mover um
Node
pai no Sceneform faz com que todos osNode
s filhos também se movam, movendo um osso pai no Sceneform move os filhos. Os ossos podem ser movidos por animação ou acessados como um nó pela classeSkeletonNode
. Quando os ossos são acessados comoNode
, as novas posições são substituídas a cada frame por animação, se houver.Esqueleto. O esqueleto compreende todos os ossos juntos, formando uma hierarquia de relações pai-filho.
Por exemplo, um modelo de um braço humano pode conter ossos, como “quot;cotovelo esquerdo”/quot;, "cotovelo esquerdo, quot; A partir do ombro esquerdo, como pai dessa hierarquia, o braço superior esquerdo é atribuído como filho. Filhos de "esquerdo do braço superior" podem ser o "cotovelo esquerdo" e ossos inferiores. Quando o osso do ombro é girado, o braço, o antebraço, o cotovelo e quaisquer ossos abaixo se moverão juntos.
O Sceneform não tem uma API para mudar as relações pai-filho entre ossos no esqueleto. Isso precisa ser feito antecipadamente em um pacote de animação e modelagem externo.
Mesmo modelos que retratam objetos inorgânicos podem usar esqueletos para facilitar o realismo. Por exemplo, um modelo de um sofá pode ter ossos e um esqueleto.
Pele. A pele é um peso aplicado à malha de superfície desenhada do modelo. A posição e a forma da malha de pele são calculadas com base nos ossos próximos. Essa conexão de ossos a pele mapeia como o modelo se delimita, proporcionando um movimento mais realista.
A aparência precisa ser preparada antecipadamente usando um pacote de modelagem e animação. O cenário pode mudar o material da malha de pele para mudar a aparência do modelo.