A Unity VR application for Meta Quest 3 that provides vision accessibility features through mixed reality passthrough.
This is a Unity port of the NewSight Android application, designed specifically for Meta Quest 3 with controller-based interaction and passthrough camera integration.
- Unity Version: 2022.3.62f1 LTS (or later 2022.3.x)
- Target Platform: Meta Quest 3
- Meta XR SDK: v69.0.1 or later
- Open Unity Hub
- Click "Open" and navigate to
NewSight-Quest3-Unityfolder - Select Unity 2022.3.62f1 LTS as the Unity version
- Wait for package resolution (may take a few minutes)
If the Meta XR SDK doesn't auto-import:
- Go to Window > Package Manager
- Click the + button and select "Add package by name"
- Enter:
com.meta.xr.sdk.all - Click "Add"
Alternatively, import from Asset Store:
- Go to Asset Store (Window > Asset Store)
- Search for "Meta XR All-in-One SDK"
- Download and import
- Go to File > Build Settings
- Select Android platform
- Click Switch Platform
- Click Player Settings
- Configure the following:
- Company Name: NewSight
- Product Name: NewSight Quest3
- Package Name: com.newsight.quest3
- Minimum API Level: Android 10.0 (API 29)
- Target API Level: Android 12 (API 32)
- Scripting Backend: IL2CPP
- Target Architectures: ARM64
- Go to Edit > Project Settings > XR Plug-in Management
- Select the Android tab
- Enable Oculus checkbox
- Go to XR Plug-in Management > Oculus
- Set Target Devices to Quest 3
For each scene that uses VR:
- Create an empty GameObject named "OVRCameraRig"
- Add the OVR Camera Rig component
- Add the OVR Manager component
- Enable Passthrough in OVR Manager settings
Create the following scenes in Assets/Scenes/:
| Scene Name | UI Script |
|---|---|
| Login | LoginUI |
| Signup | SignupUI |
| ForgotPassword | (similar to Login) |
| Home | HomeUI |
| Settings | SettingsUI |
| UserProfile | UserProfileUI |
| TrustedContacts | (similar to Settings) |
| Privacy | (similar to Settings) |
| Help | (similar to Settings) |
| Navigation | NavigationUI |
| GetDirections | (similar to Navigation) |
| Emergency | EmergencyUI |
| EmergencySetup | (similar to Emergency) |
| DetectObjects | ObjectDetectionUI |
| ReadText | TextDetectionUI |
| DetectFaces | FaceDetectionUI |
| DetectColors | ColorDetectionUI |
| Communicate | ASLDetectionUI |
| VoiceCommand | VoiceCommandUI |
For each scene:
- Create a new scene
- Add OVRCameraRig prefab
- Create an empty GameObject named "UI"
- Add the appropriate UI script component
- Add Canvas component to UI (World Space)
- Configure Canvas:
- Render Mode: World Space
- Width: 800, Height: 1000 (varies by screen)
- Scale: 0.001, 0.001, 0.001
- Build your UI elements as children
NewSight-Quest3-Unity/
├── Assets/
│ ├── Scenes/ # Unity scenes for each screen
│ ├── Scripts/
│ │ ├── API/ # Backend communication
│ │ │ ├── ApiManager.cs
│ │ │ ├── BackendConfig.cs
│ │ │ └── WebSocketManager.cs
│ │ ├── Core/ # Core app functionality
│ │ │ ├── AppManager.cs
│ │ │ ├── SceneLoader.cs
│ │ │ └── VRInputHandler.cs
│ │ ├── Passthrough/ # Quest 3 passthrough camera
│ │ │ └── PassthroughManager.cs
│ │ └── UI/ # Screen-specific UI scripts
│ │ ├── UITheme.cs
│ │ ├── VRUIPanel.cs
│ │ ├── UIComponentFactory.cs
│ │ ├── LoginUI.cs
│ │ ├── HomeUI.cs
│ │ ├── SettingsUI.cs
│ │ ├── NavigationUI.cs
│ │ ├── EmergencyUI.cs
│ │ ├── DetectionUI.cs
│ │ ├── VoiceCommandUI.cs
│ │ └── ...
│ ├── Prefabs/ # Reusable UI prefabs
│ ├── Materials/ # UI materials
│ ├── Fonts/ # TextMeshPro fonts
│ └── Resources/ # Runtime-loaded assets
├── Packages/
│ └── manifest.json # Package dependencies
└── ProjectSettings/ # Unity project settings
The app connects to the NewSight backend hosted on Render.com:
Base URL: https://cis4398-project-newsight-backend.onrender.com
| Endpoint | Purpose |
|---|---|
/auth/login |
User login |
/auth/signup |
User registration |
/voice/transcribe |
Voice to text |
/voice/wake-word |
Wake word detection |
/emergency_alert/{id} |
Emergency SOS |
/detect/objects |
Object detection |
/detect/text |
OCR text reading |
/detect/faces |
Face recognition |
/detect/colors |
Color detection |
/detect/asl |
ASL translation |
/navigation/directions |
Get directions |
| Endpoint | Purpose |
|---|---|
/ws/verify |
Auth verification |
/location/ws |
Real-time location |
/navigation/ws |
Navigation updates |
/ws/camera |
Camera frame streaming |
The UI matches the original Android app design:
| Name | Hex | Usage |
|---|---|---|
| Primary | #0b61da | Buttons, accents |
| Background | #f8f9fa | Screen backgrounds |
| Foreground | #15181d | Primary text |
| Card | #ffffff | Card backgrounds |
| Surface1 | #f2f4f6 | Input backgrounds |
| Surface2 | #e6eaee | Secondary surfaces |
| MutedForeground | #5b6470 | Secondary text |
| Red | #ef4042 | Emergency, errors |
| Green | #3bd8ad | Success states |
- Title: 28sp bold
- Header: 32sp bold
- Normal: 16sp
- Small: 14sp
- Tiny: 12sp
- Connect Quest 3 via USB (Developer Mode enabled)
- Go to File > Build Settings
- Ensure Android platform is selected
- Click Build and Run
Or for APK:
- Click Build
- Choose save location
- Install APK via
adb install NewSight.apk
- Rewards & points display
- Voice search bar
- Feature grid:
- Emergency SOS
- Navigation
- Read Text (OCR)
- Identify Objects
- Faces Recognition
- ASL Translation
- Color Detection
- Enter destination
- Get turn-by-turn directions
- Real-time location updates via WebSocket
- One-tap SOS button
- 5-second countdown (cancelable)
- Sends location to trusted contacts
- Uses Quest 3 passthrough cameras
- Sends frames to backend for processing
- Displays detection results with TTS
- Press and hold to record
- Sends to backend for transcription
- Processes commands like "Navigate to...", "What do you see?", etc.
| Button | Action |
|---|---|
| Trigger | Select/Click |
| B Button | Back |
| Thumbstick | Scroll |
- Check internet connection
- Try Assets > Reimport All
- Manually add packages via Package Manager
- Ensure Quest 3 is selected as target device
- Enable passthrough in OVR Manager settings
- Check Quest 3 has latest firmware
- Check Canvas render mode is World Space
- Verify Canvas scale is 0.001
- Ensure UI is positioned in front of camera
- Check internet connectivity on Quest 3
- Verify backend is running on Render.com
- Check console for specific error messages
© 2024 NewSight Team. All rights reserved.