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
appdo projeto contém uma pastasampledata.Para criar a pasta, clique com o botão direito do mouse na pasta
appna janela Project e selecione New > Sample Data Directory.A pasta
sampledatafaz 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,*.fbxou*.gltf) e todas as dependências dele (*.mtl,*.bin,*.png,*.jpgetc.) na pastasampledata.Não copie esses arquivos de origem para a pasta
assetsouresdo 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.gradledos apps e determinam onde os arquivos*.sfae*.sfbserã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 defaultdiz ao Sceneform's para usar o material padrão integrado ou o caminho para um arquivo*.matde 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
*.sfanã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.gradledo seu projeto se ele ainda não existe:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }Atualiza o arquivo
build.gradledo app's para incluir uma linhaapply plugine 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.gradledo 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
*.sfaexistente, 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*.sfaem 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
*.sfaem uma janela de texto e o*.sfbem 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.gradledo 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
*.sfausando 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
*.sfbpara 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
*.matdo Material Design personalizado durante o processo de importação.
Para atualizar um recurso importado anteriormente:
Se o conteúdo de
*.sfanão tiver sido personalizado, exclua os arquivos*.sfae*.sfbexistentes e a entradasceneform.asset()embuild.gradledos apps e depois reimporte o recurso. Isso garante que os atributos*.sfae os parâmetros do material gerados novamente correspondam aos atributos compatíveis com o material personalizado.Para preservar as personalizações do
*.sfafeitas, abra o arquivo*.sfae mude o atributosourcepara o caminho do arquivo*.matdo Material Design personalizado. Em seguida, ajuste manualmente os atributos*.sfae os parâmetros do Material Design para corresponder ao seu material personalizado.
- Especifique o arquivo

