Subruang adalah partisi ruang 3D dalam aplikasi Anda tempat Anda dapat menempatkan model 3D, membuat tata letak 3D, dan menambahkan kedalaman pada konten 2D. Subruang hanya dirender jika spatialisasi diaktifkan. Di Ruang Rumah atau di perangkat non-XR, kode apa pun dalam subruang tersebut akan diabaikan.
Anda dapat menggunakan composable subspace seperti Volume dan SpatialPanel
untuk menempatkan model 3D. Beberapa komponen XR seperti Orbiter atau
SpatialDialog adalah composable 2D standar yang dapat digunakan di mana saja dalam
hierarki UI 2D, tetapi SubspaceComposable harus dipanggil di
subruang aplikasi Anda. Untuk melakukannya, gunakan composable ApplicationSubspace atau
composable Subspace.
Seperti namanya, composable ApplicationSubspace harus berisi
semua konten spasial aplikasi Anda. Composable Subspace ideal
untuk menyusun bertingkat partisi ruang 3D lebih dalam dalam hierarki UI aplikasi yang ada.
Seperti composable lainnya, Anda dapat memanggil Subspace secara langsung dalam hierarki
UI 2D. Namun, penting untuk mengetahui implikasi dari tempat
dalam hierarki Anda memanggil Subspace.
Tentang hierarki subspace
Subruang tingkat atas adalah subruang terluar yang dipanggil oleh aplikasi Anda. Gunakan
composable ApplicationSubspace untuk subruang tingkat atas, tetapi, jika Anda
hanya menggunakan composable Subruang di aplikasi, composable Subspace
terluar akan menjadi subruang tingkat atas. Secara default, subruang tingkat teratas ini
dibatasi oleh ruang yang direkomendasikan untuk melihat aplikasi, dan biasanya merupakan tempat
Anda menempatkan tata letak spasial dan SpatialPanel aplikasi. Jika Anda perlu
mengubah batas subruang tingkat teratas, teruskan
VolumeConstraints yang berbeda ke ApplicationSubspace.
Namun, jika Anda menyusun subruang lain di dalam hierarki UI 2D di panel yang terdapat dalam subruang tingkat atas, subruang bertingkat tersebut akan berperilaku berbeda.
Subruang bertingkat memiliki dua perbedaan utama dari Subspace tingkat atas:
- Mereka berpartisipasi dalam tata letak 2D tempat mereka dipanggil. Artinya, tinggi dan lebar subruang akan dibatasi oleh tinggi dan lebar tata letak induk 2D-nya.
- Perilakunya sama seperti turunan entity tempatnya dipanggil. Artinya,
jika Anda memanggil composable
Subspaceyang disusun bertingkat di dalamSpatialPanel, subruang tersebut adalah turunan dariSpatialPanelyang dipanggil.
Perilaku ruang sub-bertingkat ini memungkinkan kemampuan seperti:
- Memindahkan turunan dengan entity induk
- Menambahkan offset lokasi turunan menggunakan offset
SubspaceModifier - Menampilkan objek 3D yang melayang di atas UI 2D dan cocok dengan tinggi dan lebar ruang yang sesuai dalam tata letak 2D
Menambahkan subruang ke aplikasi
Contoh kode berikut menunjukkan cara menambahkan subspace tingkat atas dan bertingkat ke aplikasi Anda:
setContent { // This is a top-level subspace ApplicationSubspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is a nested subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in a top-level Subspace Subspace { ObjectInAVolume(true) } }