Depois de adicionar um modelo 3D ao app, você pode melhorar a experiência visual definindo propriedades de material personalizadas e aplicando texturas ao objeto. O sistema de materiais do Jetpack XR é baseado na especificação glTF™ 2.0 (em inglês), e os modelos 3D são renderizados usando a renderização baseada em física (PBR) (em inglês). São padrões abertos mantidos pelo Khronos Group.
Os atributos de material podem ser ajustados durante a execução para mudar a aparência de um objeto de forma dinâmica com base na entrada do usuário ou no estado atual do app.
Para detalhes sobre cada propriedade compatível e os parâmetros personalizáveis no Android XR, consulte nossa documentação de referência. Para entender melhor essas propriedades, consulte o glossário do Khronos.
Personalizar as propriedades de material do modelo 3D
Um Material define um conjunto de propriedades visuais para a superfície de um objeto e determina como essa superfície interage com a luz na cena.
No Jetpack XR, as classes KhronosPbrMaterial e KhronosUnlitMaterial
são usadas para criar e manipular esses materiais. Como o nome sugere, os KhronosUnlitMaterials não são iluminados e não são afetados pela iluminação da cena. Com KhronosPbrMaterial, é possível personalizar uma variedade maior de propriedades, como a cor do brilho, o nível de metalização ou aspereza de um objeto e se ele emite luz.

Para personalizar as propriedades de material do seu modelo 3D, primeiro crie o
novo material usando KhronosPbrMaterial. Você precisará definir o AlphaMode adequado para a aparência visual que você quer alcançar:
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
Em seguida, defina as propriedades que você quer modificar. Neste exemplo, usamos
setBaseColorFactor para mudar a cor de base. Esse método requer um Vector4, em que os componentes x, y, z e w correspondem aos valores RGBA (vermelho, verde, azul e alfa), respectivamente:
pbrMaterial.setBaseColorFactor( Vector4( x = 0.5f, y = 0.0f, z = 0.5f, w = 0.0f ) )
Criar texturas personalizadas para seu modelo 3D
Uma Texture é um recurso de imagem que pode ser aplicado à superfície de um modelo 3D para fornecer cor, detalhes ou outras informações de superfície. A API Jetpack XR
Texture permite carregar dados de imagem, como arquivos PNG, da pasta
/assets/ do app de forma assíncrona.
Ao carregar uma textura, é possível especificar um TextureSampler, que controla
como a textura é renderizada. O sampler define propriedades de filtragem (para quando
a textura aparece menor ou maior que o tamanho original) e modos de ajuste
(para processar coordenadas fora do intervalo padrão [0, 1]).
Um objeto Texture por si só é apenas um dado. Ele precisa ser atribuído a um Material para ter um efeito visual em um modelo 3D.

Para criar uma textura personalizada, primeiro salve o arquivo de imagem na pasta
/assets/. Como prática recomendada, crie também um subdiretório textures nessa pasta.
Depois de salvar o arquivo no diretório adequado, crie a textura
com a API Texture. É aqui também que você aplicaria um
TextureSampler opcional, se necessário:
val texture = Texture.create( session = xrSession, path = Path("textures/texture_file.png") )
Em seguida, defina o tipo de textura e os parâmetros correspondentes. Neste exemplo, aplicamos uma textura de oclusão e definimos a intensidade:
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
Aplicar materiais e texturas aos objetos 3D
Para aplicar o novo material ou textura, substitua o material atual de um nó específico na entidade glTF. Para fazer isso, chame setMaterialOverride no GltfModelEntity:
gltfModelEntity.setMaterialOverride( material = pbrMaterial, nodeName = "Node Name" )
Para remover os materiais recém-criados, chame clearMaterialOverride no
nó substituído anteriormente no seu GltfModelEntity. Isso retorna o modelo 3D ao estado padrão:
gltfModelEntity.clearMaterialOverride( nodeName = "Node Name" )
glTF e o logotipo glTF são marcas registradas da Khronos Group Inc.