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, ML modeline dayalı, gerçek zamanlı semantik bilgiler sağlayarak geliştiricilerin kullanıcının etrafındaki sahneyi anlamasını sağlar. Bir dış mekan sahnesinin görüntüsü sayesinde API, gökyüzü, bina, ağaç, yol, kaldırım, araç, kişi ve diğer pek çok kullanışlı semantik 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 açık hava sahnesinde belirli bir etiketin yaygınlığını sorgulamak için kullanımı kolay bir yol sunar.

Soldan sağa, giriş resmi, piksel etiketlerinin anlamsal resmi ve karşılık gelen güven resmi örnekleri:

Giriş resmi, anlamsal resim ve anlamsal 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ştir

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.

Kaynakları kaydetmek için Scene Semantics, ARCore'da varsayılan olarak devre dışıdır. Uygulamanızın Scene Semantics API'yi kullanması için semantik modu etkinleştirin.

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

Anlamsal mod Etkin olarak ayarlandı.

iOS kullanıyorsanız Semantics, proje ayarlarında da 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'ta Anlamsal'ı seçin.

İsteğe Bağlı Özelliklerde iOS'te Semantik Etkinleştirildi.

Anlamsal resmi edinin

Scene Semantics etkinleştirildiğinde semantik resim alınabilir. Anlamsal resim bir TextureFormat.R8 resmidir. Burada her piksel SemanticLabel tarafından tanımlanan anlamsal bir etikete karşılık gelir.

Anlamsal resmi edinmek için ArSemanticManager.TryGetSemanticTexture() değerini kullanın:

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

Anlamsal çıkış resimleri, cihaza bağlı olarak oturumun başlangıcından itibaren yaklaşık 1-3 kareden sonra kullanılabilir.

Güven resmini elde edin

Her piksel için bir etiket sağlayan semantik resme ek olarak, API aynı zamanda karşılık gelen piksel güven değerlerinin bir güven görüntüsü de sağlar. Güven resmi bir TextureFormat.Alpha8 resmidir. Burada her piksel, [0, 255] aralığındaki bir değere ve her piksel için anlamsal etiketiyle ilişkili olasılığa karşılık gelir.

Anlamsal güven görüntüsünü edinmek için ArSemanticManager.TryGetSemanticConfidenceTexture() değerini kullanın:

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

Çıkış güveni görüntüleri, cihaza bağlı olarak, oturumun başlangıcından itibaren yaklaşık 1-3 kareden sonra kullanılabilir olmalıdır.

Anlamsal bir etiket için piksel oranını sorgulama

Geçerli karede gökyüzü gibi belirli bir sınıfa ait piksellerin oranını da sorgulayabilirsiniz. Bu sorgu, anlamsal resmi döndürmek ve belirli bir etiket için piksel düzeyinde arama yapmaktan daha etkilidir. Döndürülen kesir, [0.0, 1.0] aralığındaki bir ondalık değerdir.

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

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