|
Download UNITY_SETUP.md from LoveLogicAI/xros-shell: direct link, hf CLI and curl.
- Browser
- Download file 4.67 kB
-
https://huggingface.co/LoveLogicAI/xros-shell/resolve/main/UNITY_SETUP.md
- Command line
-
hf download hf://LoveLogicAI/xros-shell/UNITY_SETUP.md
-
curl -L -o UNITY_SETUP.md https://huggingface.co/LoveLogicAI/xros-shell/resolve/main/UNITY_SETUP.md
4.67 kB
| # XROS Shell β Unity (Quest 3) Setup Guide | |
| This guide assembles the Unity frontend for the spatial OS shell. The backend | |
| (Python) runs on your computer; the Quest 3 app is a thin client that renders | |
| spatial panels and hosts the terminal. | |
| ## Architecture | |
| ``` | |
| Quest 3 (Unity) Your computer (Python) | |
| βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ | |
| β WorldPanelManager ββββspawn/moveββ€ xros_server.py β | |
| β (spatial panels) β /remove β ββ WorldState β | |
| β SpatialShellTerminal βββcommandββββββΊβ ββ SpatialShell β | |
| β (terminal panel) ββββoutputβββββββ€ (spawn/move/ls/gen)β | |
| β XrosClient (WebSocket) β β β | |
| βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ | |
| ``` | |
| ## 1. Prerequisites | |
| - **Unity 2022.3 LTS** (or newer) with **Android Build Support** module. | |
| - **Meta XR All-in-One SDK** (or Core SDK) β via the Unity Package Manager. | |
| - **Quest 3** in **Developer Mode** (Meta Horizon app β Settings β Developer). | |
| - **Python 3.11+** on your computer, with `websockets` installed | |
| (`pip install websockets`). | |
| ## 2. Create the project | |
| 1. New project β **3D (URP)** template. | |
| 2. **File β Build Settings β Android β Switch Platform**. | |
| 3. **Edit β Project Settings β Player β Other Settings**: | |
| - Set **Minimum API Level** to 29+ (Quest 3 requires 32). | |
| - Set **Scripting Backend** to IL2CPP, **Target Architectures** ARM64. | |
| 4. **Package Manager** β add **Newtonsoft Json** | |
| (`com.unity.nuget.newtonsoft-json`) β required by `XrosClient.cs`. | |
| 5. **Package Manager** β add **TextMeshPro** (import TMP Essentials when prompted). | |
| ## 3. Import Meta XR SDK | |
| 1. **Package Manager β Add package by name**: | |
| `com.meta.xr.sdk.all` (All-in-One) β or `com.meta.xr.sdk.core` for the minimum. | |
| 2. **Edit β Project Settings β XR Plug-in Management** β install **OpenXR**, | |
| enable it for Android, and add **Meta Quest Support**. | |
| 3. **Edit β Project Settings β Oculus** β enable **Passthrough** and | |
| **Hand Tracking** (or use the Meta XR setup wizard). | |
| ## 4. Build the scene | |
| 1. Delete the default camera. Add **OVRCameraRig** (Meta XR β OVRCameraRig). | |
| 2. Add an **OVRPassthroughLayer** to the rig's CenterEyeAnchor for passthrough. | |
| 3. Add **OVRHand** components (left + right) to the rig for hand tracking. | |
| 4. Create an empty GameObject **"XROS"** and add the three scripts: | |
| - `XrosClient.cs` | |
| - `WorldPanelManager.cs` | |
| - `SpatialShellTerminal.cs` | |
| ## 5. Terminal panel UI | |
| 1. Under the rig, create a **Canvas** (World Space), size ~0.8 Γ 0.5 m, | |
| positioned ~1.5 m in front of the user. | |
| 2. Add a **TMP_InputField** (the command line) and a **TMP_Text** (the output | |
| log) as children. | |
| 3. On `SpatialShellTerminal`, assign `client` (the XrosClient), `input`, and | |
| `output`. Wire the input field's **OnSubmit** to `Submit()`. | |
| ## 6. Panel prefab | |
| 1. Create a **Quad** (or a small World-Space Canvas) with a **TMP_Text** child | |
| named "Title". | |
| 2. Save it as a prefab and assign it to `WorldPanelManager.panelPrefab`. | |
| ## 7. Point the client at your backend | |
| 1. Find your computer's **LAN IP** (`ipconfig` / `ifconfig`). | |
| 2. On `XrosClient`, set `serverUrl` to `ws://<your-lan-ip>:8765`. | |
| 3. Start the backend on your computer: | |
| `python xros_server.py --host 0.0.0.0 --port 8765` | |
| 4. Ensure the Quest and your computer are on the **same Wi-Fi network**. | |
| ## 8. Build & run | |
| 1. **File β Build Settings β Build And Run** with the Quest connected via USB | |
| (or use **Quest Link** / **Air Link** for fast iteration). | |
| 2. Put on the headset. You should see passthrough, the terminal panel, and | |
| your hands. | |
| 3. Type in the terminal: | |
| - `help` | |
| - `spawn panel --title "Hello world"` | |
| - `gen a clock for the wall` | |
| - `ls` | |
| A panel should appear in the room for each `spawn`/`gen`, driven by the shared | |
| world model on your computer. | |
| ## Troubleshooting | |
| - **No connection**: check the LAN IP, that the backend is running with | |
| `--host 0.0.0.0`, and that both devices are on the same network. | |
| - **No passthrough**: enable Passthrough in Project Settings β Oculus, and add | |
| the OVRPassthroughLayer. | |
| - **No hands**: enable Hand Tracking and add OVRHand components. | |
| - **JSON errors**: confirm Newtonsoft Json is installed in the Package Manager. | |