Uygulamanıza 3D model ekledikten sonra, modeli özelleştirerek görsel ve etkileşimli deneyimi iyileştirebilirsiniz. Örneğin, yerleştirilmiş glTF animasyonlarını oynatıp kontrol edebilir, özel materyal özellikleri (ör. temel renkler veya metalik pürüzlülük) tanımlayabilir ve 3D modellerinize özel dokular uygulayabilirsiniz. Bu özellikler, bir nesnenin görünümünü ve davranışını çalışma zamanında dinamik olarak değiştirmenize olanak tanır.
3D modelleri animasyon haline getirme
3D modeller, glTF spesifikasyonu kapsamında yerleştirilmiş animasyonlar içerebilir.
İskelet (rigged), katı ve şekil değiştirme hedefi (karıştırma şekilleri) animasyonlarının tümü Jetpack XR SDK'da desteklenir. KHR_animation_pointer glTF uzantısıyla oluşturulan materyal animasyonları da desteklenir.
Bir animasyonu oynatmak için animations listesinden belirli parçanın adını belirtin. Oynamaya başlamak için Arama'yı
GltfAnimation.start() tıklayın. GltfAnimationStartOptions simgesini kullanarak isteğe bağlı olarak hızı, arama süresini ve animasyonun döngüye girip girmeyeceğini belirtebilirsiniz.
val animation = gltfEntity.animations.find { it.name == "Walk" } animation?.start(GltfAnimationStartOptions(shouldLoop = true))
Ayrıca animasyonları pause(), resume() ve stop() işlemlerini yapabilir, animasyon parçasında belirli bir zamana gitmek için seekTo() simgesini kullanabilirsiniz. Animasyonun mevcut durumunu sorgulamak için GltfAnimation.AnimationState değerini kullanın.
3D modelinizin malzeme özelliklerini özelleştirme
Jetpack XR'nin materyal sistemi glTF™ 2.0 spesifikasyonuna dayanır ve 3D modeller fiziksel tabanlı oluşturma (PBR) kullanılarak oluşturulur. Bir nesnenin görünümünü kullanıcı girişine veya uygulamanın mevcut durumuna göre dinamik olarak değiştirmek için çalışma zamanında malzeme özelliklerini ayarlayabilirsiniz.
Material, bir nesnenin yüzeyi için bir dizi görsel özellik tanımlar ve bu yüzeyin sahnedeki ışıkla nasıl etkileşime gireceğini belirler.
Jetpack XR'da bu materyalleri oluşturmak ve değiştirmek için KhronosPbrMaterial ve KhronosUnlitMaterial sınıfları kullanılır. Adından da anlaşılacağı gibi, KhronosUnlitMaterials ışıklandırılmaz ve sahne aydınlatmasından etkilenmez. KhronosPbrMaterial, parlaklık rengi, bir nesnenin ne kadar metalik veya pürüzlü olduğu ve ışık yayıp yaymadığı gibi daha geniş bir özellik aralığını özelleştirmenize olanak tanır.
Desteklenen her özellik ve Android XR'daki özelleştirilebilir parametreler hakkında daha fazla bilgi için referans belgelerimize göz atın. Bu özellikleri daha iyi anlamak için Khronos sözlüğüne bakın.

3D modelinizin malzeme özelliklerini özelleştirmek için önce KhronosPbrMaterial simgesini kullanarak yeni malzemeyi oluşturursunuz. Elde etmeye çalıştığınız görsel görünüm için uygun AlphaMode değerini ayarlamanız gerekir:
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
Ardından, değiştirmek istediğiniz özellikleri tanımlayın. Bu örnekte, temel rengi değiştirmek için
setBaseColorFactor kullanıyoruz. Bu yöntem için bir
Vector4 gerekir. Burada x, y, z ve w bileşenleri sırasıyla RGBA
(Kırmızı, Yeşil, Mavi ve Alfa) değerlerine karşılık gelir:
pbrMaterial.setBaseColorFactor( Vector4( x = 0.5f, y = 0.0f, z = 0.5f, w = 1.0f ) )
3D modeliniz için özel dokular oluşturma
Texture, renk, ayrıntı veya diğer yüzey bilgilerini sağlamak için 3D modelin yüzeyine uygulayabileceğiniz bir resim öğesidir. Jetpack XR
Texture API, PNG dosyaları gibi resim verilerini uygulamanızın /assets/ klasöründen eşzamansız olarak yüklemenize olanak tanır.
Bir dokuyu yüklerken dokunun nasıl oluşturulacağını kontrol eden bir TextureSampler belirtebilirsiniz. Örnekleyici, filtreleme özelliklerini (doku orijinal boyutundan daha küçük veya daha büyük göründüğünde) ve sarmalama modlarını (standart [0, 1] aralığının dışındaki koordinatları işlemek için) tanımlar.
Tek başına bir Texture nesnesi yalnızca veridir. 3D model üzerinde görsel efekt oluşturmak için bir Material nesnesine atanması gerekir.

Özel doku oluşturmak için öncelikle resim dosyasını /assets/ klasörünüze kaydetmeniz gerekir. En iyi uygulama olarak, bu klasörde bir textures
alt dizin de oluşturabilirsiniz.
Dosyayı uygun dizine kaydettikten sonra Texture API'si ile dokuyu oluşturun. Gerekirse isteğe bağlı bir TextureSampler de burada uygulayabilirsiniz:
val texture = Texture.create( session = xrSession, path = Path("textures/texture_file.png") )
Ardından, doku türünü tanımlayın ve ilgili parametreleri ayarlayın. Bu örnekte, bir kapatma dokusu uygulayıp gücü ayarlıyoruz:
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
3D nesnelerinize malzeme ve doku uygulama
Yeni malzemeyi veya dokuyu uygulamak için glTF düğümünüzdeki belirli bir düğümün mevcut malzemesini geçersiz kılın. Bunu yapmak için GltfModelNode üzerinden setMaterialOverride numaralı telefonu arayın:
gltfModelNode.setMaterialOverride( material = pbrMaterial )
Yeni oluşturulan materyalleri kaldırmak için GltfModelNode üzerindeki daha önce geçersiz kılınan düğümde clearMaterialOverride işlevini çağırın. Bu işlem, 3D modelinizi varsayılan durumuna döndürür:
gltfModelNode.clearMaterialOverride()
glTF ve glTF logosu, Khronos Group Inc. şirketinin ticari markalarıdır.