Uygulamanızdaki 3D modelleri özelleştirme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
XR Kulaklığı
Kablolu XR Gözlükleri

Uygulamanıza 3D model ekledikten sonra özel malzeme özellikleri tanımlayarak ve nesneye dokular uygulayarak görsel deneyimi iyileştirebilirsiniz. Jetpack XR'nin materyal sistemi glTF™ 2.0 spesifikasyonuna dayanır ve 3D modeller fiziksel tabanlı oluşturma (PBR) kullanılarak oluşturulur. Bunlar, Khronos Group tarafından desteklenen açık standartlardır.

Materyal özellikleri, çalışma zamanında ayarlanarak bir nesnenin görünümü kullanıcı girişine veya uygulamanın mevcut durumuna göre dinamik olarak değiştirilebilir.

Android XR'da desteklenen her özellik ve özelleştirilebilir parametreler hakkında ayrıntılı 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ştirme

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.

3D modeldeki temel renkleri değiştirme örneği

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 = 0.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şturması için bir Material nesnesine atanması gerekir.

3D modeldeki dokuyu değiştirme örneği

Ö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.