Konfigurasi kamera menjelaskan properti sensor kamera
yang mendasari aplikasi. Di Unity, konfigurasi ini dapat diakses melalui
XRCameraConfiguration
.
Di platform Android, ARCore menyediakan
XRCameraConfigurationExtensions
untuk
mengekspos properti khusus ARCore 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 didukung oleh ARCore di platform Android.
- Penggunaan sensor kedalaman
- Rentang untuk kecepatan frame pengambilan gambar kamera target
- Dimensi tekstur eksternal yang dapat diakses GPU
- Arah hadap kamera
Mengakses konfigurasi kamera yang didukung
Gunakan ARCameraManager.GetConfigurations()
untuk mengakses konfigurasi kamera yang didukung untuk perangkat tertentu. Tindakan ini akan menampilkan
NativeArray
yang berisi beberapa
instance
XRCameraConfiguration
. Setiap
instance adalah konfigurasi kamera individual yang menentukan properti seperti
penggunaan kedalaman, kecepatan frame pengambilan target, resolusi, dan dimensi tekstur.
Mengonfigurasi kamera di tampilan aplikasi
Ikuti langkah-langkah berikut untuk mengonfigurasi kamera di scene aplikasi Anda.
Gunakan
ARCameraManager
denganARCameraManager.GetConfigurations()
untuk membuat kueri daftarXRCameraConfiguration
yang didukung.Jika Anda mem-build untuk Android, gunakan kombinasi fungsi apa pun di
XRCameraConfigurationExtensions
untuk mendapatkan properti khusus ARCore.Gunakan
cameraManager.currentConfiguration
untuk menetapkan 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 saat runtime dengan
memfilter berdasarkan kebutuhan aplikasi Anda.
Batasi kecepatan frame pengambilan gambar kamera hingga 30 FPS
Jika aplikasi Anda tidak memerlukan kecepatan frame kamera yang lebih cepat, Anda dapat membatasinya hingga 30 FPS. Pada perangkat yang mendukung kecepatan frame kamera 60 FPS, ARCore akan memprioritaskan konfigurasi kamera yang mendukung kecepatan frame tersebut secara default. Untuk memfilter semua konfigurasi kamera yang mendukung 60 FPS, pastikan Target Camera Framerate ditetapkan ke Target 30FPS.
Mencegah ARCore menggunakan sensor kedalaman
Jika aplikasi 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 memfilter semua konfigurasi kamera yang menggunakan sensor kedalaman, pastikan Depth Sensor Usage disetel ke Do Not Use.
Menggunakan filter konfigurasi kamera
Ikuti langkah-langkah berikut untuk mengaktifkan aplikasi Anda guna memfilter konfigurasi kamera.
Buka Assets > Create > XR > Camera Config Filter untuk membuat filter konfigurasi kamera baru.
Pilih konfigurasi yang ingin digunakan filter Anda.
Setelah membuat filter, gunakan filter tersebut dalam komponen ARCoreExtensions.
Mengonfigurasi kamera selama runtime
Anda dapat menggunakan peristiwa callback
ARCoreExtensions.OnChooseXRCameraConfiguration
untuk mengonfigurasi kamera selama runtime, berdasarkan 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;
}