Walkthrough 3: Multi-Monitor Workspaces (Scalable Multi-Screen)
This tutorial walks through building a multi-monitor productivity workspace in VR. Quest 3D WebView is not limited to 3 screens—you can create, spawn, and run as many concurrent web screens as your VR project needs.
🎯 Objective
Set up scalable virtual monitors with dedicated instances, custom URLs, independent TargetFPS limits, and dynamic runtime selection.
🛠️ Step 1: Place or Spawn Screen Actors
You can place pre-configured BP_WebScreen actors in the level or spawn them dynamically via Blueprint (SpawnActorFromClass):
Example Multi-Screen Setup:
- Screen 1 (AI Assistant):
- Instance Name:
"ChatGPT Assistant" - Initial URL:
https://chatgpt.com - Target FPS:
30.0
- Instance Name:
- Screen 2 (Cinema & Video):
- Instance Name:
"YouTube Cinema" - Initial URL:
https://www.youtube.com - Target FPS:
70.0
- Instance Name:
- Screen 3 (Project Board):
- Instance Name:
"Trello Board" - Initial URL:
https://trello.com - Target FPS:
30.0
- Instance Name:
- Screen 4 (Team Chat):
- Instance Name:
"Discord / Slack" - Initial URL:
https://discord.com/app - Target FPS:
20.0
- Instance Name:
- Screen 5 (Live Telemetry / Analytics):
- Instance Name:
"System Analytics" - Initial URL:
https://grafana.internal/dashboard - Target FPS:
15.0
- Instance Name:
🛠️ Step 2: Dynamic ComboBox Screen Selector
To build a dropdown switcher in your player controller or VR wrist menu:
- On
BeginPlay(or on demand), callGetAllActorsWithComponent(UQuestWebViewComponent). - Loop through each returned component and call
GetInstanceName(). - Add the names to your UMG
ComboBoxStringdropdown options. - When the user selects a screen in the dropdown, store the active component reference to route keyboard typing, media controls, and navigation buttons!
⚡ Multi-Screen Performance Optimization Tips
When running 4, 6, or 10+ simultaneous screens:
- Stagger TargetFPS: Keep high framerates (60–70+ FPS) on active video displays, and set text/documentation panels to 20–30 FPS.
- Dirty-Frame Gating: Quest 3D WebView executes 0 pixel copies on static web panels automatically.
- Pause Behind-Player Screens: Call
PauseRendering()when screens leave the player's immediate view cone.