Uygulamanızdaki 3D modelleri özelleştirme

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

Uygulamanıza 3D model ekledikten sonra özel materyal ö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üzeyine ait görsel özellikler kümesini tanımlar ve bu yüzeyin sahnedeki ışıkla nasıl etkileşime gireceğini belirler.

Jetpack XR'de 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 ışıklandırması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 yelpazesini ö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, Vector4 gerektirir. 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 bir 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 varlığınızdaki belirli bir düğümün mevcut malzemesini geçersiz kılın. Bunu yapmak için GltfModelEntity üzerinden setMaterialOverride numarasını arayın:

gltfModelEntity.setMaterialOverride(
    material = pbrMaterial,
    nodeName = "Node Name"
)

Yeni oluşturulan materyalleri kaldırmak için GltfModelEntity üzerinde 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:

gltfModelEntity.clearMaterialOverride(
    nodeName = "Node Name"
)


glTF ve glTF logosu, Khronos Group Inc. şirketinin ticari markalarıdır.