Pemetaan Spasial di Unreal

Pemetaan spasial memungkinkan Anda menempatkan objek di permukaan fisik di dunia nyata. Ketika dunia di sekitar HoloLens dipetakan, hologram tampak lebih nyata bagi pengguna. Pemetaan spasial juga menjangkar objek di dunia pengguna dengan memanfaatkan isyarat kedalaman, membantu meyakinkan mereka bahwa hologram ini sebenarnya ada di ruang mereka. Hologram yang mengambang di ruang angkasa atau bergerak dengan pengguna tidak akan terasa nyata, jadi Anda selalu ingin menempatkan item untuk kenyamanan jika memungkinkan.

Anda dapat menemukan informasi selengkapnya tentang kualitas pemetaan spasial, penempatan, oklusi, penyajian, dan lainnya, dalam dokumen Pemetaan spasial .

Plugin Microsoft OpenXR harus diunduh untuk menggunakan pemetaan spasial, tersedia di Unreal Marketplace atau GitHub.

Mengaktifkan Pemetaan Spasial

Untuk mengaktifkan pemetaan spasial di HoloLens:

  • Buka Edit > Pengaturan Proyek dan gulir ke bawah ke bagian Platform .
    • Pilih HoloLens dan periksa Persepsi Spasial.

Cuplikan layar kemampuan pengaturan proyek HoloLens dengan persepsi spasial disorot

Untuk memilih pemetaan spasial dan men-debug MRMesh dalam game HoloLens:

  1. Buka ARSessionConfig dan perluas bagian Pemetaan Dunia ARSettings>.

  2. Centang Hasilkan Data Jala dari Geometri Terlacak, yang memberi tahu plugin HoloLens untuk mulai mendapatkan data pemetaan spasial secara asinkron dan memunculkannya ke Unreal melalui MRMesh.

  3. Centang Render Mesh Data di Wireframe untuk menampilkan kerangka kerangka kawat putih dari setiap segitiga di MRMesh.

Penyimpanan Spatial Anchors Siap

Pemetaan Spasial saat runtime

Anda dapat mengubah parameter berikut untuk memperbarui perilaku runtime pemetaan spasial:

  • Buka Edit > Pengaturan Proyek, gulir ke bawah ke bagian Platform, dan pilih Pemetaan Spasial HoloLens>:

Pengaturan Proyek Spatial Anchors

  • Segitiga Maks Per Meter Kubik memperbarui kepadatan segitiga dalam jala pemetaan spasial.
  • Ukuran Volume Meshing Spasial adalah ukuran kubus di sekitar pemutar untuk merender dan memperbarui data pemetaan spasial.
    • Jika lingkungan runtime aplikasi yang diharapkan diharapkan besar, nilai ini mungkin perlu besar untuk mencocokkan ruang dunia nyata. Nilainya bisa lebih kecil jika aplikasi hanya perlu menempatkan hologram di permukaan segera di sekitar pengguna. Saat pengguna berjalan di seluruh dunia, volume pemetaan spasial akan bergerak bersama mereka.

Bekerja dengan MRMesh

Pertama, Anda perlu memulai Pemetaan Spasial:

Cetak biru fungsi ToggleARCapture dengan jenis tangkapan pemetaan spasial disorot

Setelah pemetaan spasial diambil untuk ruang, sebaiknya alihkan pemetaan spasial. Pemetaan spasial dapat diselesaikan baik setelah sejumlah waktu tertentu, atau ketika raycast di setiap arah mengembalikan tabrakan terhadap MRMesh.

Untuk mendapatkan akses ke MRMesh pada runtime:

  1. Tambahkan Komponen ARTrackableNotify ke aktor Cetak Biru.

Spatial Anchors AR Trackable Notify

  1. Pilih komponen ARTrackableNotify dan perluas bagian Peristiwa di panel Detail .
    • Pilih tombol + pada peristiwa yang ingin Anda pantau.

Peristiwa Spatial Anchors

Dalam hal ini, peristiwa On Add Tracked Geometry sedang dipantau, yang mencari jala dunia yang valid yang cocok dengan data pemetaan spasial. Anda dapat menemukan daftar lengkap peristiwa di API komponen UARTrackableNotify .

Anda dapat mengubah materi jala di Grafik Peristiwa Cetak Biru atau di C++. Cuplikan layar di bawah ini menunjukkan rute Cetak Biru:

Contoh Spatial Anchors

Pemetaan Spasial di C++

Dalam file build.cs game Anda, tambahkan AugmentedReality dan MRMesh ke daftar PublicDependencyModuleNames:

PublicDependencyModuleNames.AddRange(
    new string[] {
        "Core",
        "CoreUObject",
        "Engine",
        "InputCore",    
        "EyeTracker",
        "AugmentedReality",
        "MRMesh"
});

Untuk mengakses MRMesh, berlangganan delegasi OnTrackableAdded :

#include "ARBlueprintLibrary.h"
#include "MRMeshComponent.h"

void AARTrackableMonitor::BeginPlay()
{
    Super::BeginPlay();

    // Subscribe to Tracked Geometry delegates
    UARBlueprintLibrary::AddOnTrackableAddedDelegate_Handle(
        FOnTrackableAddedDelegate::CreateUObject(this, &AARTrackableMonitor::OnTrackableAdded)
    );
}

void AARTrackableMonitor::OnTrackableAdded(UARTrackedGeometry* Added)
{
    // When tracked geometry is received, check that it's from spatial mapping
    if(Added->GetObjectClassification() == EARObjectClassification::World)
    {
        UMRMeshComponent* MRMesh = Added->GetUnderlyingMesh();
    }
}

Catatan

Ada delegasi serupa untuk peristiwa yang diperbarui dan dihapus, masing-masing AddOnTrackableUpdatedDelegate_Handle dan AddOnTrackableRemovedDelegate_Handle .

Anda dapat menemukan daftar lengkap peristiwa di UARTrackedGeometry API.

Lihat juga