Sceneform'u kullanmaya başlama

Bu sayfada, Merhaba Sahne Formu örnek uygulamasındaki kodu inceleyerek önemli kavramlar açıklanmaktadır. Not:

  • Bu örnekte Sceneform ve ARCore kullanılmaktadır.

    Sceneform'u ARCore olmadan kullanmak için ARCore bağımlılığı ve CAMERA izin gereksinimlerini göz ardı ederken aşağıdaki adımları uygulayın. Uygulamanızın düzeninde Sahneyi Oluşturma bölümünde açıklandığı gibi SceneView aracını kullanın.

  • Bu örnek uygulama, Artırılmış Gerçeklik (AR) Gerekli uygulama olarak yazılmıştır.

    AR İsteğe Bağlı ve AR Gerekli uygulamaları hakkında daha fazla bilgi edinmek için ARCore'u Etkinleştirme sayfasını inceleyin.

Projenizde Sceneform'u kullanmaya başlamak için şunları yapmanız gerekir:

  1. Sceneform eklentisini içe aktarma
  2. Projenizin build.gradle dosyalarını yapılandırın
  3. AndroidManifest.xml cihazınızı güncelleyin
  4. Çalışma zamanı denetimleri gerçekleştirme ve sahne görünümü oluşturma
  5. Oluşturulabilir oluşturma
  6. Sahneyi oluşturun

Sceneform eklentisini projenize aktarın

Sceneform eklentisi, yüklendikten sonra Android Studio'daki AR uygulamaları için Sceneform SDK'da 3D öğeleri içe aktarıp görüntüleyebilir ve oluşturabilirsiniz. Android Studio'nun 3.1 ve daha yeni sürümlerini kullanmanız gerekir.

Eklentiyi yüklemek için:

  1. Android Studio'da Eklentiler ayarlarını açın:

    • Windows: Dosya > Ayarlar > Eklentiler > Veri Havuzlarına Göz At

    • macOS: Android Studio > Tercihler > Eklentiler

  2. Veri depolarına göz at'ı tıklayın ve Google Sahne Araçları'nı (Beta) yükleyin.

Projenizin build.gradle dosyalarını yapılandırın

  1. build.gradle projenizde Google Maven deposunun bulunduğundan emin olun:

    allprojects {
        repositories {
            google()
            …
    
  2. Uygulamanızdaki build.gradle öğeleri, en güncel ARCore ve Sceneform kullanıcı deneyimi bağımlılıklarını ekleyerek güncelleyin. Ayrıca proje ayarlarınızın her iki kitaplıkla da uyumlu olduğundan emin olun.

    android {
        …
        defaultConfig {
            // Sceneform requires minSdkVersion >= 24.
            minSdkVersion 24
            …
        }
        // Sceneform libraries use language constructs from Java 8.
        // Add these compile options if targeting minSdkVersion < 26.
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    
    dependencies {
        …
        // Provides ARCore Session and related resources.
        implementation 'com.google.ar:core:1.15.0'
    
        // Provides ArFragment, and other UX resources.
        implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.15.0'
    
        // Alternatively, use ArSceneView without the UX dependency.
        implementation 'com.google.ar.sceneform:core:1.15.0'
    }
    

AndroidManifest.xml öğenizi güncelleyin

AndroidManifest.xml öğesini, uygulamanızın (AR İsteğe bağlı) ARCore ve CAMERA erişimi kullandığını veya gerektirdiğini (AR Gerekli) gösterecek şekilde değiştirin:

<!-- Both "AR Optional" and "AR Required" apps require CAMERA permission. -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- Sceneform requires OpenGL ES 3.0 or later. -->
<uses-feature android:glEsVersion="0x00030000" android:required="true" />

<!-- Indicates that app requires ARCore ("AR Required"). Ensures the app is
     visible only in the Google Play Store on devices that support ARCore.
     For "AR Optional" apps remove this line. -->
<uses-feature android:name="android.hardware.camera.ar" />

<application>
    …
    <!-- Indicates that app requires ARCore ("AR Required"). Causes the Google
         Play Store to download and install Google Play Services for AR along
         with the app. For an "AR Optional" app, specify "optional" instead of
         "required".
    -->
    <meta-data android:name="com.google.ar.core" android:value="required" />
</application>

Çalışma zamanı kontrolleri gerçekleştirme ve sahne görünümü oluşturma

Sceneform'u kullanmaya başlamanın ve sahne görünümü oluşturmanın en kolay yolu, gerekli ARCore çalışma zamanı denetimlerini gerçekleştirdikten sonra ARCore oturum yönetimini otomatik olarak işleyen bir ArFragment kullanmaktır:

  1. AR için Google Play Hizmetleri'nin uyumlu bir sürümünün yüklü olup olmadığını kontrol eder. Bu sayede kullanıcıdan gerektiği şekilde yükleme veya güncelleme yapmasını isteyebilir

  2. Uygulamanın kameraya erişimi olup olmadığını kontrol eder ve henüz izin verilmediğinde kullanıcıdan izin ister

Uygulamanızın ek izin istemesi gerekiyorsa veya AR oturumunun nasıl ve ne zaman oluşturulduğunu özelleştirmek isterseniz bunun yerine şunları yapabilirsiniz:

  • Ek izin istemek için ArFragment adlı bir alt sınıf oluşturun.

  • Doğrudan ArSceneView kullanın veya genişletin. Güneş Sistemi örnekte gösterildiği gibi, uygulamanızın ARCore oturumunu manuel olarak oluşturmak için ARCore sürüm kontrolü ve setupSession() çağrıları yapması gerekir.

Kontroller başarılı olduktan sonra ArFragment şunlar oluşturulur:

  1. getArSceneView() üzerinden erişilebilen ve aşağıdaki özelliklere sahip bir ArSceneView:

    • Oturumdaki kamera görüntülerini yüzeye işler

    • Kullanıcılara, artırılmış gerçeklik deneyimini sağlamak için telefonlarını nasıl taşımaları gerektiğini gösteren yerleşik bir Sceneform kullanıcı deneyimi animasyonu oluşturur.

    • Öne çıkanlar, varsayılan PlaneRenderer kullanılarak Planes algılandı

  2. getSession() üzerinden erişilebilen bir ARCore Session

Uygulamanızda ArFragment kullanmak için Merhaba Sahne Formu örneğinde belirtildiği gibi, activity_ux.xml bölümünde gösterildiği gibi etkinliğinizin düzenine ekleyin:

<fragment android:name="com.google.ar.sceneform.ux.ArFragment"
    android:id="@+id/ux_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Oluşturulabilir oluşturma

Renderable, sahnenin herhangi bir yerine yerleştirilebilen ve örgü, malzeme ve dokulardan oluşan 3D modeldir.

Oluşturulabilir şu kaynaklardan oluşturulabilir:

Örnek uygulama, 3D andy.obj öğe dosyasından oluşturulabilir. Bu öğe içe aktarıldığında, Sceneform eklentisi eklentiyi uygulamak ve içe aktarılan model için bir sceneform.asset() girişi eklemek üzere uygulamayı build.gradle günceller:

apply plugin: 'com.google.ar.sceneform.plugin'

sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import.
                'default',                    // 'Material Path' specified during import.
                'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import.
                'src/main/res/raw/andy')      // '.sfb Output Path' specified during import.

res/raw/andy kaynağı, ModelRenderable oluşturmak için kullanılır:

private ModelRenderable andyRenderable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    …

    ModelRenderable.builder()
        .setSource(this, R.raw.andy)
        .build()
        .thenAccept(renderable -> andyRenderable = renderable)
        .exceptionally(
            throwable -> {
            Log.e(TAG, "Unable to load Renderable.", throwable);
            return null;
        });
}

Sahneyi Oluşturma

ARSceneView öğesine Scene eklenmiş. Sahne, üretilecek sanal nesneler olan Node öğelerinin bulunduğu, ağaç benzeri bir veri yapısıdır.

Burada Andy oluşturma işlemi, doğrudan kök Sahne düğümüne eklenir:

Node node = new Node();
node.setParent(arFragment.getArSceneView().getScene());
node.setRenderable(andyRenderable);

Her düğüm, Sceneform'un oluşturulması için gereken tüm bilgileri (konumu, yönü ve oluşturulabilir nesnesi dahil) içerir ve onunla etkileşime girer (çakışma şekli ve etkinlik dinleyicileri dahil).

Düğümler diğer düğümlere eklenerek üst-alt ilişkisi oluşturabilir. Bir düğüm başka bir düğümün alt parçası olduğunda, vücudunuz hareket ettiğinde kollarınız nasıl hareket ettiği gibi üst düğümüyle birlikte hareket eder, döner ve ölçeklenir. Bir düğümün birden fazla alt öğesi, ancak yalnızca bir üst öğesi olabilir, dolayısıyla ağaç benzeri bir yapı oluşturur. Bu yapı, sahne grafiği olarak bilinir.

Sceneform her karede sahneyi Kamera'nın bakış açısından oluşturur (ARCore hareket izleme tarafından yönlendirilir). Uygulamanız, dokunma ve hareket etkinliklerini izleyerek, düğümlere karşı isabet testleri gerçekleştirerek ve bağlayıcılar yerleştirerek sahneyle etkileşime girebilir. Daha fazla bilgi için Sahneyi Oluşturma ve Etkileşim Kurma bölümüne bakın.