Bagikan melalui


Pelacakan tangan di Unreal

Sistem pelacakan tangan menggunakan telapak tangan dan jari seseorang sebagai input. Data pada posisi dan rotasi setiap jari, seluruh telapak tangan, dan gerakan tangan tersedia. Mulai dari Unreal 4.26, pelacakan tangan didasarkan pada plugin Unreal HeadMountedDisplay dan menggunakan API umum di semua platform dan perangkat XR. Fungsionalitas sama untuk sistem Windows Mixed Reality dan OpenXR.

Pose tangan

Pose tangan memungkinkan Anda melacak dan menggunakan tangan dan jari pengguna Anda sebagai input, yang dapat diakses di Cetak Biru dan C++. API Unreal mengirimkan data sebagai sistem koordinat, dengan kutu disinkronkan dengan Mesin Tidak Nyata.

Gambar kerangka tangan dengan overlay sendiKerangka Tangan

Hierarki dijelaskan oleh EHandKeypoint enum:

Gambar opsi bluprint titik kunci tangan

Anda bisa mendapatkan semua data ini dari tangan pengguna menggunakan fungsi Dapatkan Data Pengontrol Gerakan. Fungsi tersebut mengembalikan struktur XRMotionControllerData . Di bawah ini adalah sampel skrip Cetak Biru yang mengurai struktur XRMotionControllerData untuk mendapatkan lokasi sendi tangan dan menggambar sistem koordinat debug di setiap lokasi bersama.

Cetak biru fungsi data get gaze yang terhubung ke pelacakan garis berdasarkan fungsi saluran

Penting untuk memeriksa apakah struktur valid dan itu adalah tangan. Jika tidak, Anda mungkin mendapatkan perilaku yang tidak terdefinisi dalam akses ke posisi, rotasi, dan array radii.

Pose tangan diekspos ke Animasi menggunakan plugin Live Link.

Jika plugin Windows Mixed Reality dan Live Link diaktifkan:

  1. Pilih Tautan Langsung Jendela > untuk membuka jendela editor Tautan Langsung.
  2. Pilih Sumber dan aktifkan Sumber Pelacakan Tangan Windows Mixed Reality

Sumber Tautan Langsung

Setelah Anda mengaktifkan sumber dan membuka aset animasi, perluas bagian Animasi di tab Adegan Pratinjau juga lihat opsi tambahan.

Animasi Tautan Langsung

Hierarki animasi tangan sama seperti dalam EWMRHandKeypoint. Animasi dapat ditargetkan ulang menggunakan WindowsMixedRealityHandTrackingLiveLinkRemapAsset:

Animasi Tautan Langsung 2

Ini juga dapat disubkelas di editor:

Remap Tautan Langsung

Jala Tangan

Penting

Jala tangan membutuhkan OpenXR.

Plugin Microsoft OpenXR harus digunakan, tersedia dari Unreal Marketplace atau GitHub.

Jala Tangan sebagai Geometri Terlacak

Penting

Mendapatkan jala tangan sebagai geometri terlacak di OpenXR mengharuskan Anda memanggil Atur Gunakan Jala Tangan dengan Geometri Pelacakan yang Diaktifkan.

Untuk mengaktifkan mode tersebut, Anda harus memanggil Atur Gunakan Jala Tangan dengan Geometri Pelacakan yang Diaktifkan:

Cetak biru peristiwa mulai diputar terhubung untuk mengatur menggunakan fungsi jala tangan dengan mode geometri pelacakan yang diaktifkan

Catatan

Kedua mode tidak dapat diaktifkan secara bersamaan. Jika Anda mengaktifkannya, yang lain secara otomatis dinonaktifkan.

Mengakses Data Jala Tangan

Jala Tangan

Sebelum dapat mengakses data jala tangan, Anda harus:

  • Pilih aset ARSessionConfig Anda, perluas pengaturan AR Pengaturan -> Pemetaan Dunia, dan centang Buat Data Jala dari Geometri Terlacak.

Di bawah ini adalah parameter jala default:

  1. Gunakan Data Jala untuk Oklusi
  2. Hasilkan Tabrakan untuk Data Jala
  3. Hasilkan Nav Mesh untuk Data Jala
  4. Render Mesh Data in Wireframe – parameter debug yang menunjukkan jala yang dihasilkan

Nilai parameter ini digunakan sebagai default jala pemetaan spasial dan jala tangan. Anda dapat mengubahnya kapan saja di Cetak Biru atau kode untuk jala apa pun.

Referensi API C++

Gunakan EEARObjectClassification untuk menemukan nilai jala tangan di semua objek yang dapat dilacak.

enum class EARObjectClassification : uint8
{
    // Other types
	HandMesh,
};

Delegasi berikut dipanggil ketika sistem mendeteksi objek yang dapat dilacak, termasuk jala tangan.

class FARSupportInterface
{
    public:
    // Other params
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableAdded)
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableUpdated)
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableRemoved)
};

Pastikan penangan delegasi Anda mengikuti tanda tangan fungsi di bawah ini:

void UARHandMeshComponent::OnTrackableAdded(UARTrackedGeometry* Added)

Anda dapat mengakses data jala melalui UARTrackedGeometry::GetUnderlyingMesh:

UMRMeshComponent* UARTrackedGeometry::GetUnderlyingMesh()

Referensi API Cetak Biru

Untuk bekerja dengan Jala Tangan di Cetak Biru:

  1. Menambahkan Komponen ARTrackableNotify ke aktor Blueprint

ARTrackable Notify

  1. Buka panel Detail dan perluas bagian Peristiwa .

ArTrackable Notify 2

  1. Timpa Add/Update/Remove Tracked Geometry dengan node berikut di Event Graph Anda:

Pada ARTrackable Notify

Visualisasi Jala Tangan di OpenXR

Cara yang disarankan untuk memvisualisasikan jala tangan adalah dengan menggunakan plugin XRVisualization Epic bersama dengan plugin Microsoft OpenXR.

Kemudian di editor cetak biru, Anda harus menggunakan fungsi Atur Gunakan Jala Tangan dari plugin Microsoft OpenXR dengan XRVisualization yang Diaktifkan sebagai parameter:

Cetak biru peristiwa mulai diputar terhubung untuk mengatur menggunakan fungsi jala tangan dengan mode xrvisualisasi yang diaktifkan

Untuk mengelola proses penyajian, Anda harus menggunakan Render Motion Controller dari XRVisualization:

Cetak biru fungsi data get motion controller yang terhubung ke fungsi pengontrol gerakan render

Hasilnya:

Gambar tangan digital yang dilapisi pada tangan manusia nyata

Jika Anda membutuhkan sesuatu yang lebih rumit, seperti menggambar jala tangan dengan shader kustom, Anda perlu mendapatkan jala sebagai geometri terlacak.

Sinar tangan

Mendapatkan pose tangan berfungsi untuk interaksi dekat seperti mengambil objek atau menekan tombol. Namun, terkadang Anda perlu bekerja dengan hologram yang jauh dari pengguna Anda. Ini dapat dicapai dengan sinar tangan, yang dapat digunakan sebagai perangkat penunjuk di C++ dan Cetak Biru. Anda dapat menarik sinar dari tangan Anda ke titik yang jauh dan, dengan beberapa bantuan dari pelacakan sinar tidak nyata, pilih hologram yang jika tidak akan berada di luar jangkauan.

Penting

Karena semua hasil fungsi mengubah setiap bingkai, semuanya dibuat dapat dipanggil. Untuk informasi selengkapnya tentang fungsi murni dan tidak murni atau dapat dipanggil, lihat panduan pengguna Cetak biru tentang fungsi.

Untuk mendapatkan data untuk sinar tangan, Anda harus menggunakan fungsi Dapatkan Data Pengontrol Gerakan dari bagian sebelumnya. Struktur yang dikembalikan berisi dua parameter yang dapat Anda gunakan untuk membuat sinar tangan – Aim Position dan Aim Rotation. Parameter ini membentuk sinar yang diarahkan oleh siku Anda. Anda harus membawanya dan menemukan hologram yang diarahkan oleh.

Di bawah ini adalah contoh menentukan apakah sinar tangan mengenai Widget dan mengatur hasil hit kustom:

Cetak biru fungsi data get motion controller

Gestur

HoloLens 2 melacak gerakan spasial, yang berarti Anda dapat menangkap gerakan tersebut sebagai input. Pelacakan gerakan didasarkan pada model langganan. Anda harus menggunakan fungsi "Konfigurasi Gerakan" untuk memberi tahu perangkat gerakan mana yang ingin Anda lacak. Anda dapat menemukan detail selengkapnya tentang gerakan adalah dokumen Penggunaan Dasar HoloLens 2.

Realitas Campuran Windows

Cetak biru peristiwa mulai diputar terhubung untuk mengonfigurasi fungsi gerakan

Kemudian Anda harus menambahkan kode untuk berlangganan peristiwa berikut:

Cetak biru penangguhan input spasial Windows, ketuk, dan gerakan manipulasi kiriCuplikan layar opsi gerakan ketuk input spasial Windows di panel detail

OpenXR

Di OpenXR, peristiwa gerakan dilacak melalui alur input. Menggunakan interaksi tangan, perangkat dapat secara otomatis mengenali gerakan Ketuk dan Tahan, tetapi bukan yang lain. Mereka dinamai sebagai Pemetaan OpenXRMsftHandInteraction Select dan Grip. Anda tidak perlu mengaktifkan langganan, Anda harus mendeklarasikan peristiwa di Project Pengaturan/Engine/Input, seperti ini:

Cuplikan layar pemetaan tindakan OpenXR

Titik Pemeriksaan Pengembangan Berikutnya

Jika Anda mengikuti perjalanan pengembangan Unreal yang telah kami susun, Anda berada di tengah-tengah menjelajahi blok bangunan inti MRTK. Dari sini, Anda dapat melanjutkan ke blok penyusun berikutnya:

Atau lompat ke kemampuan dan API platform Mixed Reality:

Anda selalu dapat kembali ke titik pemeriksaan Pengembangan tidak nyata kapan saja.