> For the complete documentation index, see [llms.txt](https://docs.convai.com/api-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.convai.com/api-docs/plugins-and-integrations/convai-unity-sdk/features/vision.md).

# Vision

Vision gives Convai characters the ability to see what is happening inside your Unity scene. A frame source captures images from a Unity camera, physical webcam, or Meta Quest passthrough feed, and the SDK streams them to Convai over WebRTC alongside the audio conversation.

### Platform support

| Platform           | Supported frame sources                              | Notes                                                                                                             |
| ------------------ | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| PC / Mac / Console | `CameraVisionFrameSource`, `WebcamVisionFrameSource` | Full RenderTexture pipeline; max 30 fps                                                                           |
| Android / iOS      | `CameraVisionFrameSource`, `WebcamVisionFrameSource` | Webcam source requests camera permission at startup                                                               |
| WebGL              | *(Canvas, automatic)*                                | `canvas.captureStream()` path — no frame source component needed; frame rate capped at 15 fps; **HTTPS required** |
| Meta Quest 3 / 3S  | `QuestVisionFrameSource`                             | Requires Meta XR SDK and `horizonos.permission.HEADSET_CAMERA`                                                    |

{% hint style="info" %}
Vision requires `ConvaiRoomManager.Connection Type` set to **Video**. If it is set to `Audio`, `ConvaiVisionPublisher` remains idle regardless of how other components are configured.
{% endhint %}

{% hint style="danger" %}
**WebGL: HTTPS required.** The `canvas.captureStream()` API is blocked by browsers on non-HTTPS origins. `http://localhost` is the only exception. Deploy your WebGL build to an HTTPS host before testing Vision in production.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>How vision works</strong><br>Understand the pipeline architecture, key concepts, component placement, and the startup sequence.</td><td><a href="/pages/l8e8VHFqAfizSNNTRxLW">/pages/l8e8VHFqAfizSNNTRxLW</a></td></tr><tr><td><strong>Vision quick start</strong><br>Get a character receiving a live camera feed with a step-by-step Inspector walkthrough — no code required.</td><td><a href="/pages/XSaPw0kFVyXD2NbMU5k2">/pages/XSaPw0kFVyXD2NbMU5k2</a></td></tr><tr><td><strong>Vision frame sources</strong><br>Configure CameraVisionFrameSource, WebcamVisionFrameSource, and QuestVisionFrameSource for every platform and use case.</td><td><a href="/pages/ae0edd0be3d5b82330547283ee17259071673848">/pages/ae0edd0be3d5b82330547283ee17259071673848</a></td></tr><tr><td><strong>Publish policies</strong><br>Choose a publish policy, tune frame rate and bitrate, and understand platform-specific behavior including WebGL.</td><td><a href="/pages/8e81321c92ed2b28e658ae5686d3cac89efa9213">/pages/8e81321c92ed2b28e658ae5686d3cac89efa9213</a></td></tr><tr><td><strong>Vision debug preview</strong><br>Visualize the active frame source as an on-screen overlay and monitor capture health in the Editor.</td><td><a href="/pages/eP36iBni1AamThCZdCLM">/pages/eP36iBni1AamThCZdCLM</a></td></tr><tr><td><strong>Custom frame sources</strong><br>Implement IVisionFrameSource to publish any custom video pipeline — interface contract, Y-flip requirement, and minimal implementation.</td><td><a href="/pages/a605ab5aa55eec202ad6748667a5629e34141045">/pages/a605ab5aa55eec202ad6748667a5629e34141045</a></td></tr><tr><td><strong>Vision scripting API</strong><br>ConvaiVisionPublisher properties and methods, runtime state monitoring, and domain events for analytics integration.</td><td><a href="/pages/35fce4a7255d7ee06c08b0cc4b37b598f89f6068">/pages/35fce4a7255d7ee06c08b0cc4b37b598f89f6068</a></td></tr><tr><td><strong>Vision usage examples</strong><br>End-to-end examples for safety training, equipment onboarding, VR walkthroughs, and manual-trigger sessions.</td><td><a href="/pages/A2LuvcFg2YlW1OiZkeEV">/pages/A2LuvcFg2YlW1OiZkeEV</a></td></tr><tr><td><strong>Troubleshoot vision</strong><br>Diagnose publishing failures, blank feeds, permission errors, and platform-specific issues with a structured checklist and decision tree.</td><td><a href="/pages/nydFtT4kGp2HzURUi5L5">/pages/nydFtT4kGp2HzURUi5L5</a></td></tr></tbody></table>

### Next steps

Start with [Vision quick start](/api-docs/plugins-and-integrations/convai-unity-sdk/features/vision/quick-start.md) to get a working stream from a scene camera, then use [Vision frame sources](/api-docs/plugins-and-integrations/convai-unity-sdk/features/vision/frame-sources.md) to select the right capture method for your platform. For pipeline details, see [How vision works](/api-docs/plugins-and-integrations/convai-unity-sdk/features/vision/how-vision-works.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.convai.com/api-docs/plugins-and-integrations/convai-unity-sdk/features/vision.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
