Jetpack XR SDK, 3D modellerle çalışırken glTF 2.0 açık standardını destekler. Android XR, Jetpack XR SDK ile oluşturulan uygulamaları oluşturduğunda 3D modeller, glTF 2.0 standardında belirtilen fiziksel tabanlı oluşturma(PBR) teknikleriyle (desteklenen uzantılarla birlikte) oluşturulur. Autodesk Maya, Maxon ZBrush, Blender ve Spline gibi çoğu dijital içerik oluşturma (dcc) aracı, 3D modelleri glTF biçiminde (.gltf veya .glb dosyaları) dışa aktarabilir.
Kullanıcı veya uygulamanız tarafından bir SpatialEnvironment gökyüzü kutusu belirtilmişse 3D modeller, ortam gökyüzü kutusu tarafından sağlanan aydınlatma bilgileriyle aydınlatılır. Yansıtıcı malzemeler ve parlak noktalar da ortam gökyüzü kutusunu yansıtır. Şeffaf mod etkinleştirilmişse aydınlatma, yansımalar ve parlak alanlar tek yönlü ışığın bulunduğu aydınlık bir odaya göre ayarlanır.
Desteklenen materyallerle ilgili hızlı bir genel bakış için Khronos sitesindeki glTF PBR Properties bölümüne bakın. 3D modellerinizi bu özelliklerle ve diğerleriyle nasıl özelleştireceğinizi öğrenmek için Uygulamanızdaki 3D modelleri özelleştirme başlıklı makaleye bakın.
Öğeler klasörünüze bir glTF dosyası ekleme
glTF dosyanızı oluşturduktan sonraki adım, bu dosyayı Android Studio'daki öğeler dizinine eklemektir. Öğe türlerinizi daha iyi düzenlemek için models dizini oluşturmanızı öneririz.

SpatialGltfModel kullanarak 3D nesne ekleme
Android XR, 3D modeller için glTF biçimini destekler. Bu biçimdeki dosyalar genellikle .glb olarak kaydedilir. Bu nesneleri düzeninize eklemek için SpatialGltfModel composable'ını kullanın. Bu API, öğe yükleme ve durumlarını yönetme sürecini basitleştirir.
Bir modeli görüntülemek için önce rememberSpatialGltfModelState kullanarak kaynağını ve durumunu tanımlayın. Modelleri uygulamanızın assets klasöründen, URI veya raw data'dan yükleyebilirsiniz.
val modelState = rememberSpatialGltfModelState( source = SpatialGltfModelSource.fromPath( Paths.get("models/model_name.glb") ) )
Durum tanımlandıktan sonra, alt uzayda oluşturmak için SpatialGltfModel composable'ı kullanın.
SpatialGltfModel(state = modelState, modifier = SubspaceModifier)
Compose SceneCoreEntity kullanarak 3D model yerleştirme
SceneCoreEntity kullanarak 3D model yerleştirmek için önce GltfModel.create() ile glTF'yi belleğe yüklemeniz gerekir. Ardından, SceneCore bileşenlerini XR düzenleri için Compose ile bağlamak üzere 3D modeli SceneCoreEntity içine yerleştirebilirsiniz. Düzeninize 3D nesne yerleştirmek için SceneCoreEntity kullanma başlıklı makaleyi inceleyin.
Jetpack Scenecore kullanarak 3D model yerleştirme
glTF modelini yüklemek için GltfModel.create() işlevini çağırın.
val gltfModel = GltfModel.create(session, Paths.get("models", "saturn_rings.glb"))
Bu noktada model belleğe yüklenir ancak henüz oluşturulmaz. Yüklenecek çok sayıda 3D modeliniz varsa veya modeliniz büyükse bunları önceden eşzamansız olarak yüklemeniz önerilir. Böylece kullanıcılar, modellerinizin belleğe yüklenmesini beklemek zorunda kalmaz.
glTF dosyasını ActivitySpace'ye ekleyin. adlı işlevi çağırarak bir öğe oluşturun ve GltfModelEntity.create içine yerleştirin.ActivitySpace En iyi uygulama olarak, uygulamanın, uzamsal özelliklere izin veren bir durumda olduğunu kontrol etmeniz gerekir.
if (session.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)) { val gltfEntity = GltfModelEntity.create(session, gltfModel) }
Artık uygulamanızı çalıştırdığınızda yüklenen 3D modeli görebilirsiniz.

Scene Viewer'ı kullanarak 3D model yükleme
Temel etkileşim özelliklerine sahip bir 3D modeli yüklemenin en basit yolunu arıyorsanız mobil cihazlarda olduğu gibi Scene Viewer'ı kullanmayı tercih edebilirsiniz. Android XR ve mobil cihazlardaki Scene Viewer arasındaki temel fark, Scene Viewer'ın yalnızca glTF dosyasına işaret eden dosya URI parametresini desteklemesi ve diğer tüm parametrelerin yok sayılmasıdır.
Scene Viewer, bir amaç kullanılarak çağrılan ve FullSpace Modu'nda çalışan ayrı bir uygulamadır. Bu nedenle, bu yöntemi çağırdığınızda uygulamanız artık görünmez ve Scene Viewer odaklanır. Değiştirmiş olabileceğiniz tüm ortamlar, kullanıcının sistem tercihlerine sıfırlanır.
Android XR'da Scene Viewer'da bir glTF dosyasını görüntülemek için Intent kullanma örneğini aşağıda bulabilirsiniz:
val url = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf" val sceneViewerIntent = Intent(Intent.ACTION_VIEW) val intentUri = Uri.parse("https://arvr.google.com/scene-viewer/1.2") .buildUpon() .appendQueryParameter("file", url) .build() sceneViewerIntent.setData(intentUri) try { startActivity(sceneViewerIntent) } catch (e: ActivityNotFoundException) { // There is no activity that could handle the intent. }
Scene Viewer'daki etkileşim seçenekleri hakkında daha fazla bilgi için 3D model tasarım belgelerimize bakın.
glTF uzantıları
Jetpack XR SDK, 3D modellerin özelliklerini genişleten çeşitli glTF uzantılarını destekler. Bu özellikler hem
GltfModelEntity hem de Sahne Görüntüleyici'de kullanılabilir.
KHR_animation_pointerKHR_draco_mesh_compressionKHR_lights_punctualKHR_materials_clearcoatKHR_materials_sheenKHR_materials_unlitKHR_materials_variantsKHR_mesh_quantizationKHR_texture_basisuKHR_texture_transformEXT_texture_webp