Saiba como importar modelos 3D, convertê-los no formato de cenário e visualizá-los no Android Studio.
Importar um novo recurso 3D
O Sceneform é compatível com recursos 3D nos seguintes formatos:
- OBJ
- glTF (não há suporte para animações)
- KTX, com ou sem animações.
Siga estas etapas para importar um novo recurso 3D:
Verifique se a pasta
app
do projeto contém uma pastasampledata
.Para criar a pasta, clique com o botão direito do mouse na pasta
app
na janela Project e selecione New > Sample Data Directory.A pasta
sampledata
faz parte do projeto do Android Studio, mas o conteúdo dela não será incluído no APK.Copie o arquivo de recurso de origem do modelo 3D (
*.obj
,*.fbx
ou*.gltf
) e todas as dependências dele (*.mtl
,*.bin
,*.png
,*.jpg
etc.) na pastasampledata
.Não copie esses arquivos de origem para a pasta
assets
oures
do projeto, porque isso fará com que eles sejam incluídos desnecessariamente no APK.Clique com o botão direito do mouse no recurso de origem do modelo 3D e selecione Import Sceneform Asset para iniciar o processo de importação.
Os valores são usados pela entrada
sceneform.asset()
nobuild.gradle
dos apps e determinam onde os arquivos*.sfa
e*.sfb
serão gerados no projeto.Se você estiver importando um modelo pela primeira vez, use os valores padrão.
Campo Descrição Caminho do recurso de origem Nome de arquivo do recurso do modelo 3D OBJ, KTX ou glTF para importar. Caminho do Material Design default
diz ao Sceneform's para usar o material padrão integrado ou o caminho para um arquivo*.mat
de material personalizado.
Caminho de saída.sfa Use o padrão ou especifique outro caminho na pasta sampledata
.O arquivo .sfa será gerado se estiver ausente. Ele pode ser modificado para controlar alguns aspectos do processo de importação.
Isso garante que
*.sfa
não seja incluído no APK de forma não intencional.Caminho de saída do .sfb Por padrão, a pasta src/main/assets/
é usada, o que permite o uso de nomes de arquivo de recursos arbitrários.Se o nome do arquivo (sem a extensão de arquivo) for um identificador de recurso válido (por exemplo,
R.raw.filename
), você poderá usar a pastasrc/main/res/raw/
se preferir.Consulte Visão geral dos recursos de app do Android para saber mais sobre como usar as pastas
assets/
eres/
no seu app.Arquivos de animação Se você estiver importando arquivos de animação
*.fbx
, clique no sinal de adição (+) e adicione o restante dos arquivos individualmente.Clique em Concluir para iniciar o processo de importação.
Para importar seu recurso, o plug-in faz o seguinte:
O plug-in do Gradle do Sceneform foi adicionado ao
build.gradle
do seu projeto se ele ainda não existe:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }
Atualiza o arquivo
build.gradle
do app's para incluir uma linhaapply plugin
e uma entradasceneform.asset()
para o recurso recém-importado:apply plugin: 'com.google.ar.sceneform.plugin' sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import. 'default', // 'Material Path' specified during import. 'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import. 'src/main/res/raw/andy') // '.sfb Output Path' specified during import.
Estas novas entradas no
build.gradle
do app's criam duas tarefas do Gradle:createAsset-<asset-name>
cria um arquivo de definição de recurso do Sceneform (*.sfa
) se ele ainda não existir.Essa tarefa não substituirá um arquivo
*.sfa
existente, o que significa que as modificações feitas no arquivo SFA após a importação não serão substituídas.O
*.sfa
é um arquivo de texto que contém uma descrição completa e legível das configurações de importação do recurso. Ele faz referência aos modelos e texturas no recurso de origem e também define os materiais, fornecendo parâmetros para materiais físicos do Sceneform.O
compileAsset-<asset-name>
compila o arquivo*.sfa
em um arquivo de recursos binários do Sceneform (*.sfb
).Esse arquivo
*.sfb
é integrado ao APK do seu app e é carregado no momento da execução para criar o elemento de renderização.
Para ver mais informações, consulte a referência do plug-in do Gradle para Sceneform.
Abre o
*.sfa
em uma janela de texto e o*.sfb
em uma janela Viewer.
Atualizar um recurso 3D importado anteriormente
Quando você atualiza um arquivo de recurso de origem de modelo OBJ, AppSheet ou glTF importado
anteriormente (*.obj
, *.fbx
ou *.gltf
), a entrada sceneform.asset()
correspondente no
build.gradle
do app's faz com que o plug-in gere automaticamente um
arquivo *.sfb
atualizado, com base nos parâmetros *.sfa
atuais.
Para iterar os parâmetros de um recurso já importado:
- Modifique o arquivo de texto
*.sfa
usando a referência do formato de arquivo SFA como guia. - Salve as alterações. Isso faz com que o recurso seja recompilado e atualiza o
arquivo
*.sfb
. - Visualize o recurso atualizado clicando duas vezes no arquivo
*.sfb
para abrir a janela Viewer.
Se você estiver atualizando um recurso já importado que inclui dados de animação,
importe cada um dos arquivos *.fbx
atualizados individualmente com o sinal de adição (+)
na seção Arquivos de animação da caixa de diálogo de importação.
Definições de recursos do Gradle
O processo de importação adiciona todos os arquivos de animação *.fbx
ao final do
arquivo build.gradle
.
sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])
Criar o Renderable
Depois que o recurso for compilado no formato *.sfb
, crie um
ModelRenderable
e anexe-o a um nó na cena da seguinte maneira:
ModelRenderable.builder()
// To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
.setSource(this, Uri.parse("andy.sfb"))
// Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
//.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
Como usar materiais personalizados
Os materiais padrão do Sceneform e permitem que os desenvolvedores consigam resultados com ótima visualização. Você também pode usar materiais personalizados para personalizar profundamente a aparência dos recursos.
Para atribuir um material personalizado ao seu recurso, faça o seguinte:
Crie um arquivo de definição de material personalizado (
*.mat
) usando a [referência do material personalizado](/sceneform/develop/custom-material como guia.Aplique o material personalizado ao recurso:
Ao importar um novo recurso:
- Especifique o arquivo
*.mat
do Material Design personalizado durante o processo de importação.
Para atualizar um recurso importado anteriormente:
Se o conteúdo de
*.sfa
não tiver sido personalizado, exclua os arquivos*.sfa
e*.sfb
existentes e a entradasceneform.asset()
embuild.gradle
dos apps e depois reimporte o recurso. Isso garante que os atributos*.sfa
e os parâmetros do material gerados novamente correspondam aos atributos compatíveis com o material personalizado.Para preservar as personalizações do
*.sfa
feitas, abra o arquivo*.sfa
e mude o atributosource
para o caminho do arquivo*.mat
do Material Design personalizado. Em seguida, ajuste manualmente os atributos*.sfa
e os parâmetros do Material Design para corresponder ao seu material personalizado.
- Especifique o arquivo