Google berkomitmen untuk memajukan kesetaraan ras bagi komunitas Kulit Hitam. Lihat bagaimana.

Mengonfigurasi kamera

Konfigurasi kamera menjelaskan properti dari sensor kamera yang mendasari aplikasi. Dalam Unity, konfigurasi ini dapat diakses melalui XRCameraConfiguration .

Pada platform Android, Arcore menyediakan XRCameraConfigurationExtensions untuk mengekspos sifat Arcore khusus tambahan dalam XRCameraConfiguration . Anda dapat menggunakan properti ini untuk menyiapkan konfigurasi kamera yang sesuai untuk aplikasi Anda.

Properti konfigurasi kamera yang diperluas (Android)

Properti yang diperluas berikut ini didukung oleh ARCore pada platform Android.

Akses konfigurasi kamera yang didukung

Gunakan ARCameraManager.GetConfigurations() untuk mengakses konfigurasi kamera didukung untuk perangkat tertentu. Ini mengembalikan NativeArray mengandung beberapa contoh XRCameraConfiguration . Setiap instance adalah konfigurasi kamera individual yang menentukan properti seperti penggunaan kedalaman, kecepatan bingkai pengambilan target, resolusi, dan dimensi tekstur.

Konfigurasikan kamera di adegan aplikasi Anda

Ikuti langkah-langkah ini untuk mengonfigurasi kamera di adegan aplikasi Anda.

  1. Gunakan ARCameraManager dengan ARCameraManager.GetConfigurations() untuk query daftar didukung XRCameraConfiguration s.

  2. Jika Anda sedang membangun untuk Android, menggunakan kombinasi dari fungsi dalam XRCameraConfigurationExtensions untuk mendapatkan sifat Arcore-spesifik.

  3. Gunakan cameraManager.currentConfiguration untuk mengatur konfigurasi saat ini.

using UnityEngine.XR.ARFoundation;


// Adds XRCameraConfigurationExtensions extension methods to XRCameraConfiguration.
// This is for the Android platform only.
using Google.XR.ARCoreExtensions;

// Must be set in the editor.
public ARCameraManager cameraManager;

// Use ARCameraManager to obtain the camera configurations.
using (NativeArray<XRCameraConfiguration> configurations = cameraManager.GetConfigurations(Allocator.Temp))
{
    if (!configurations.IsCreated || (configurations.Length <= 0))
    {
        return;
    }

    // Iterate through the list of returned configs to locate the config you want.
    var desiredConfig = configurations[0];
    for (int i = 1; i < configurations.Length; ++i)
    {
        // Choose a config for a given camera that uses the maximum
        // target FPS and texture dimension. If supported, this config also enables
        // the depth sensor.
        if (configurations[i].GetFPSRange().y > desiredConfig.GetFPSRange().y &&
            configurations[i].GetTextureDimensions().x > desiredConfig.GetTextureDimensions().x &&
            configurations[i].GetTextureDimensions().y > desiredConfig.GetTextureDimensions().y &&
            configurations[i].CameraConfigDepthSensorUsage() == CameraConfigDepthSensorUsage.RequireAndUse)
        {
            desiredConfig = configurations[i];
        }
    }

    // Set the configuration you want. If it succeeds, the session
    // automatically pauses and resumes to apply the new configuration.
    // If it fails, cameraManager.currentConfiguration throws an exception.
    if (desiredConfig != cameraManager.currentConfiguration)
    {
        cameraManager.currentConfiguration = desiredConfig;
    }
}

Filter konfigurasi kamera

Anda dapat menggunakan ARCoreExtensionsCameraConfigFilter untuk mempersempit konfigurasi kamera yang tersedia untuk perangkat tertentu pada saat runtime dengan penyaringan berdasarkan kebutuhan aplikasi Anda.

Batasi kecepatan bingkai pengambilan kamera hingga 30 FPS

Jika aplikasi Anda tidak memerlukan kecepatan bingkai kamera yang lebih cepat, Anda dapat membatasinya hingga 30 FPS. Pada perangkat yang mendukung frame rate kamera 60 FPS, ARCore akan memprioritaskan konfigurasi kamera yang mendukung frame rate tersebut secara default. Untuk menyaring semua konfigurasi kamera yang support 60 FPS, pastikan bahwa target Kamera Framerate diatur ke Target 30fps.

Cegah ARCore menggunakan sensor kedalaman

Jika aplikasi Anda tidak memerlukan Kedalaman, Anda dapat mencegah ARCore menggunakan sensor kedalaman. Pada perangkat yang memiliki sensor kedalaman yang didukung, ARCore ARCore memprioritaskan konfigurasi kamera yang menggunakan sensor kedalaman. Untuk menyaring semua konfigurasi kamera yang menggunakan sensor kedalaman, pastikan bahwa Kedalaman Sensor Penggunaan diatur untuk Do Not Gunakan.

Gunakan filter konfigurasi kamera

Ikuti langkah-langkah ini untuk mengaktifkan aplikasi Anda untuk memfilter konfigurasi kamera.

Pergi ke Aset> Buat> Arcore Extensions> Kamera Config Filter untuk membuat filter baru kamera config.

Pilih konfigurasi yang Anda ingin filter Anda gunakan.

Setelah Anda membuat filter, menggunakannya dalam komponen ARCoreExtensions.

Konfigurasikan kamera selama runtime

Anda dapat menggunakan event callback ARCoreExtensions.OnChooseXRCameraConfiguration untuk mengkonfigurasi kamera selama runtime, berdasarkan faktor-faktor seperti jenis perangkat.

// Unity's Awake() method
public void Awake()
{
    …
    // If the return value is not a valid index (ex. the value if -1),
    // then no camera configuration will be set. If no previous selection exists, 
    // the ARCore session will use the previously selected camera configuration 
    // or a default configuration.
    arcoreExtensions.OnChooseXRCameraConfiguration = SelectCameraConfiguration;
    …
}

// A custom camera configuration selection function
int SelectCameraConfiguration(List<XRCameraConfiguration> supportedConfigurations)
{
    int index = 0;

    // Use custom logic here to choose the desired configuration from supportedConfigurations.

    return index;
}