> 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/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/vision/how-vision-works.md).

# 视觉的工作方式

Vision 将来自 Unity 的实时摄像头画面流式传输到 Convai，并与音频对话一起进行处理。此页面解释了管线架构、各组件的作用，以及 Vision 启动时 SDK 在运行时的行为。

### 架构

帧源从你的场景中捕获图像，并将它们传递给 `ConvaiVisionPublisher`，它通过 LiveKit 层管理一条 WebRTC 视频轨道。协调器会应用已配置的发布策略（帧率和比特率），然后将帧转发给 Convai 进行 AI 处理，并与音频对话一起处理。

```mermaid
flowchart LR
    subgraph Sources["帧源（选择一个）"]
        A1[CameraVisionFrameSource]
        A2[WebcamVisionFrameSource]
        A3[QuestVisionFrameSource]
    end

    B[ConvaiVisionPublisher\nIConvaiModule]
    C[VisionPublishCoordinator]
    D[VideoTrackManager]
    E[LiveKit Room\nWebRTC]
    F[Convai\nAI Vision Processing]

    A1 -->|RenderTexture| B
    A2 -->|RenderTexture| B
    A3 -->|RenderTexture| B
    B --> C
    C -->|policy: FPS + bitrate| D
    D -->|AsyncGPUReadback| E
    E -->|WebRTC video track| F
```

在 WebGL 上， `ConvaiVisionPublisher` 完全绕过帧源，并通过浏览器画布直接发布 `canvas.captureStream()`。WebRTC 和 Convai 处理层在所有平台上都相同。

### 关键概念

| 概念       | 其含义                                                                                                    |
| -------- | ------------------------------------------------------------------------------------------------------ |
| **帧源**   | A `MonoBehaviour` 用于捕获帧并将其公开为 Y 轴翻转的 `RenderTexture`。三个内置实现覆盖了 Unity 摄像机、物理摄像头以及 Meta Quest 透视。        |
| **发布策略** | 控制向 Convai 流式传输时使用的客户端帧率和比特率。不控制后端使用哪种 AI 模型或视觉提供方。                                                    |
| **视频轨道** | 发布到当前 Convai 房间中的一条 WebRTC 视频轨道。通过以下内容标识： **轨道名称** 上的字段 `ConvaiVisionPublisher` （默认： `"unity-scene"`). |
| **房间连接** | Vision 仅在以下情况下发布： `ConvaiRoomManager` 已连接到 **连接类型** 设置为 **视频**。仅音频连接不携带视频。                             |

### 组件放置

了解每个组件应放置在何处，可以避免最常见的配置错误。

| 组件                        | 放置位置                              | 说明                                  |
| ------------------------- | --------------------------------- | ----------------------------------- |
| `ConvaiRoomManager`       | 任何持久的场景 GameObject                | **连接类型** 必须设置为 **视频**               |
| `ConvaiVisionPublisher`   | 任何持久的场景 GameObject                | 通常放置在 NPC 根对象上或其附近                  |
| `CameraVisionFrameSource` | 与发布器相同的 GameObject 或其子 GameObject | 每个捕获源一个                             |
| `WebcamVisionFrameSource` | 与发布器相同的 GameObject 或其子 GameObject | 每个捕获源一个                             |
| `QuestVisionFrameSource`  | 与发布器相同的 GameObject 或其子 GameObject | 仅限 Meta Quest 3 / 3S；需要 Meta XR SDK |
| `VisionDebugPreview`      | 任何场景 GameObject                   | 仅限编辑器；在播放器构建中会自动禁用                  |

### 启动顺序

当 `ConvaiRoomManager` 连接到 **连接类型** 设置为 **视频**，以下操作会自动发生： `AutoCompatible`, `高响应`，以及 `低开销` 策略：

1. `ConvaiRoomManager` 与 Convai 建立视频连接。
2. `ConvaiVisionPublisher` 检测当前活动房间，并通过以下方式解析帧源： `GetComponent` 或 `GetComponentsInChildren`.
3. 帧源开始捕获并发出 `就绪`。对于 `CameraVisionFrameSource`，这会渲染分配的摄像头（或 `Camera.main`）到一个 `RenderTexture`.
4. `VisionPublishCoordinator` 应用所选发布策略（例如， `AutoCompatible`：10 fps，750 kbps），并开始将帧转发到视频管线。
5. 名为 `"unity-scene"` 的 WebRTC 视频轨道会发布到 Convai 房间。 `ConvaiVisionPublisher.IsPublishing` 变为 `true` 以及 `VideoTrackPublished` 领域事件触发。

对于 `Manual` 策略，第 5 步不会自动发生——请从脚本中调用 `EnablePublishing(true)` 以开始发布。

### 下一步

{% content-ref url="/pages/8688e51bd7c568104d68e6f3c42a8d7ef8b881e8" %}
[视觉快速开始](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/vision/quick-start.md)
{% endcontent-ref %}

{% content-ref url="/pages/3c41ddceb11fc2af6b830a08a48c437b590c8882" %}
[视觉帧来源](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/vision/frame-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/9ee175b12da238182d707abd778abdc3a8706c80" %}
[Vision 脚本 API](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/vision/scripting-api.md)
{% endcontent-ref %}


---

# 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/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/vision/how-vision-works.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.
