Virtual Screens And Media
Last reviewed: 2026-06-30
Screen Surfaces
The repo contains implementation artifacts for three virtual screen surfaces:
| Surface | Implemented evidence | Status |
|---|---|---|
| Main Screen | mainScreen models, mainscreen.html, MainScreenFlatQuad, MainScreenCurvedQuad, VirtualScreenCanvas. |
Present; scene wiring varies. |
| Companion Screen | companionScreen models, companionscreen.html, CompanionScreenCanvas, CompanionScreenRT. |
Present in config/assets; runtime wiring partially confirmed. |
| Emphasis Projection | emphasisProjection models, emphasisscreen.html, EmphasisScreenQuad, EmphasisScreenRT. |
Present in config/assets; runtime wiring partially confirmed. |
Media Types
| Media | Loader/player | Paths/examples | Notes |
|---|---|---|---|
| Images | UnityWebRequestTexture.GetTexture() |
screen.images[0].url, local StreamingAssets/*.png |
Main controller uses first image only. |
| Voiceover audio | UnityWebRequestMultimedia.GetAudioClip() |
voiceover.audio.url |
Supports extension-inferred audio types. |
| Background audio | UnityWebRequestMultimedia.GetAudioClip() |
audio.background.url, bg_audio.mp3 |
Looped/mixed through Unity audio and manual capture path. |
| Video files | Unity video module and AVPro Video assets are present; StreamingAssets/video.mp4 and AVPro samples exist. |
Runtime use by first-party controller Unknown / not confirmed in repo. | |
| HTML/Reveal | Vuplex WebView, generated HTML, Reveal.js distribution under StreamingAssets/dist. |
Used by screen bridge and legacy reveal scripts. |
Generated Virtual Screens
AnuvaScreenHtmlBuilder reads Assets/StreamingAssets/PresentationConfig.json and writes generated HTML under Assets/StreamingAssets/AnuvaVirtualScreens/generated/. It extracts surface blocks and rendererPayload.markup from the raw JSON text.
Runtime bridge:
| Component | Responsibility |
|---|---|
AnuvaScreenBridgeHost |
Loads a generated HTML file into a CanvasWebViewPrefab and executes bridge JavaScript commands. |
AnuvaVirtualScreensPlaybackController |
Builds a command schedule from screenContent.playbackOrder, fragment timings, and emphasis event timings. |
anuva-screen-bridge.js |
Browser-side command receiver for slide/event/fragment operations. |
| Template/theme registries | template-registry.json, theme-registry.json, and theme CSS files. |
Legacy Reveal/Vuplex Path
VuplexRevealBridge and SyncWebTime freeze or drive browser time to make Reveal/Chart-style animation deterministic for AVPro capture. These scripts directly use Vuplex WebView APIs and execute JavaScript such as Reveal.next() or virtual clock ticks.
This path appears experimental or legacy beside the generated multi-surface virtual screen package. Keep it documented, but avoid treating it as the only screen architecture.
Limitations
- Main controller image playback uses the first image in
screen.images; multiple image sequencing is not confirmed. - Runtime video playback as a virtual screen surface is Unknown / not confirmed in first-party controller code.
- Generated HTML builder uses regex over raw JSON, not the structured
PresentationConfigmodel. - Direct integration between the main playback controller and generated virtual-screen scheduler is Unknown / not confirmed in repo.
- Full-screen mode is implemented by toggling a Unity canvas between world space and screen-space overlay for camera shot
FullScreen.