Unity' AR Foundation'da kullanıcı ortamını anlama

Scene Semantics API'yi kendi uygulamalarınızda nasıl kullanacağınızı öğrenin.

Scene Semantics API, geliştiricilerin ML modeline dayalı, gerçek zamanlı anlamsal bilgiler sağlayarak kullanıcıyı çevreleyen sahneyi anlamalarına olanak tanır. API, açık hava sahnesinin bir resmi verildiğinde gökyüzü, bina, ağaç, yol, kaldırım, araç, kişi ve daha fazlası gibi yararlı bir dizi anlamsal sınıfta her piksel için bir etiket döndürür. Scene Semantics API, piksel etiketlerine ek olarak her piksel etiketi için güven değerleri ve belirli bir etiketin açık hava sahnesindeki yaygınlığını sorgulamanın kolay bir yolunu da sunar.

Soldan sağa doğru giriş resmi örnekleri, piksel etiketlerinin anlamsal resmi ve ilgili güven resmi:

Giriş resmi, semantik resim ve semantik güven resmi örneği.

Ön koşullar

Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.

Sahne semantiğini etkinleştirme

Yeni bir ARCore oturumunda, kullanıcının cihazının Scene Semantics API'yi destekleyip desteklemediğini kontrol edin. ARCore uyumlu cihazların tümü, işlem gücü kısıtlamaları nedeniyle Scene Semantics API'yi desteklemez.

Kaynak tasarrufu sağlamak için ARCore'da sahne semantikleri varsayılan olarak devre dışıdır. Uygulamanızın Scene Semantics API'yi kullanması için anlamsal modu etkinleştirin.

ARCoreExtensionsConfig dosyanızda Semantik Modu'nu Etkin olarak ayarlayın.

Semantik modu Etkin olarak ayarlandı.

iOS kullanılıyorsa proje ayarlarında anlambilim de etkinleştirilmelidir:

  1. Düzenle > Proje Ayarları > XR Eklenti Yönetimi > ARCore Uzantıları'na gidin.
  2. İsteğe bağlı özellikler bölümünde iOS'te anlambilim'i seçin.

iOS'te isteğe bağlı özelliklerde etkinleştirilen semantikler.

Semantik resmi alma

Sahne semantikleri etkinleştirildikten sonra semantik resim alınabilir. Anlamsal görüntü, her pikselin SemanticLabel tarafından tanımlanan bir anlamsal etikete karşılık geldiği bir TextureFormat.R8 görüntüdür.

Semantik resmi almak için ArSemanticManager.TryGetSemanticTexture() öğesini kullanın:

if (semanticManager.TryGetSemanticTexture(out Texture2D semanticImage))
{
    using (semanticImage)
    {
        // Use the semantic image here.
    }
}

Çıkışta anlamsal görüntüler, cihaza bağlı olarak oturumun başlangıcından yaklaşık 1-3 kare sonra kullanılabilir.

Güven resmini alma

API, her piksel için etiket sağlayan semantik görüntüye ek olarak, ilgili piksel güven değerlerinin güven görüntüsünü de sağlar. Güvenilirlik resmi, her pikselin [0, 255] aralığındaki bir değere karşılık geldiği bir TextureFormat.Alpha8 görüntüsüdür. Bu değer, her pikselin semantik etiketiyle ilişkili olasılığa karşılık gelir.

Semantik güven resmini almak için ArSemanticManager.TryGetSemanticConfidenceTexture() öğesini kullanın:

if (semanticManager.TryGetSemanticConfidenceTexture(out Texture2D semanticConfidenceImage))
{
    using (semanticConfidenceImage)
    {
        // Use the semantic confidence image here.
    }
}

Çıkış güvenilirlik resimleri, cihaza bağlı olarak oturumun başlangıcından yaklaşık 1-3 kare sonra kullanılabilir.

Semantik etiket için piksellerin oranını sorgulayın

Mevcut karedeki belirli bir sınıfa (ör. gökyüzü) ait piksellerin oranını da sorgulayabilirsiniz. Bu sorgu, semantik resmi döndürüp belirli bir etiket için piksel bazında arama yapmaktan daha verimlidir. Döndürülen kesirli sayı, [0.0, 1.0] aralığındaki bir kayan noktalı değerdir.

Belirli bir etiketin kesirli kısmını almak için ArSemanticManager.GetSemanticLabelFraction() değerini kullanın:

var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);