视觉如何工作
了解 Unreal 视觉组件如何被发现、启动、限流,以及在 Convai 会话期间如何用于发送场景帧。
视觉会向 Convai 对话中添加场景图像。角色上的帧源组件捕获关卡,并且 Convai Chatbot 该组件在会话处于活动状态时将这些帧发送到 Convai。
运行时会发生什么
内置路径有三个部分:
帧源 — 环境摄像头 (
UEnvironmentWebcam)通过一个USceneCaptureComponent2D并写入到一个UTextureRenderTarget2D.视觉契约 —
IConvaiVisionInterface定义了聊天机器人期望任何帧源提供的方法。聊天机器人发送器 —
UConvaiChatbotComponent在同一个Actor,按配置速率读取帧,并通过活动会话发送它们。
视觉附加到 聊天机器人角色,而不是玩家 Pawn。玩家组件发起对话;聊天机器人组件负责帧发现和上传。
关键概念
帧源
聊天机器人上的一个组件 Actor 实现了 IConvaiVisionInterface 并提供图像数据。
环境摄像头
随附的帧源。它将场景捕获到渲染目标中。它不是物理设备摄像头。
渲染目标
该 UTextureRenderTarget2D 分配给 Convai 渲染目标。捕获组件将场景像素写入此资源。
视觉状态
EVisionState 跟踪捕获是否处于活动状态。随附实现只设置 Stopped 和 正在捕获 。
帧节流
聊天机器人根据源组件的 最大 FPS (m_MaxFPS),并限制为 1–60 在上传期间。
视频连接
会话设置使用连接类型 video 当支持视觉或当 AlwaysAllowVision 在项目设置中启用时。
组件发现
在 BeginPlay, UConvaiChatbotComponent 搜索所属的 Actor ,查找实现了 UConvaiVisionInterface 并注册第一个匹配项。
Set Vision Component 当同一个
Actor.支持视觉 返回
true当注册了有效源时。如果尚未注册任何源,聊天机器人会搜索Actor一次后再返回。传入一个普通的
USceneCaptureComponent2D设为 Set Vision Component 返回false。捕获组件不是 Convai 帧源。
Set Vision Component 和 支持视觉 由 UConvaiPlayerComponent继承,但它们返回 false 在那里,因为只有 UConvaiChatbotComponent 才启用视觉注册。请在聊天机器人组件上使用这些节点。
捕获并上传
当 环境摄像头 处于 正在捕获 状态:
其内部
USceneCaptureComponent2D将场景渲染到 Convai 渲染目标.每次聊天机器人 tick 会累积时间,直到来自
GetMaxFPS()达到。聊天机器人调用
CaptureRaw()在活动源上,并通过SendImage.Convai 通过活动视频连接接收这些帧。
默认发送间隔为 1.0f / 15.f。如果 GetMaxFPS() 返回 0 或是无效值,聊天机器人会回退到 15 FPS 作为上传计时。
视觉状态和事件
EVisionState 包括 Stopped, 启动中, 正在捕获, 停止中,和 已暂停。在当前随附实现中, 环境摄像头 仅在 Stopped 和 正在捕获.
Blueprint 用户可以绑定 帧就绪时 到帧源上。它会在 tick 期间广播,只要组件处于 正在捕获 且该事件至少有一个绑定。
C++ 集成也可以使用 FOnVisionStateChanged, FOnFirstFrameCaptured,和 FOnFramesStopped 在 IConvaiVisionInterface。这些委托不能在 Blueprint 中赋值。
延迟视觉设置
常规 Blueprint 设置会将 环境摄像头 放在聊天机器人上 Actor 之前 BeginPlay。在这种情况下, 支持视觉 足以让会话设置选择 video 连接。
启用 AlwaysAllowVision 在 编辑 > 项目设置 > 插件 > Convai (高级类别)仅当你的项目在初始连接设置之后注册或替换视觉组件时使用。
下一步
视觉快速开始视觉帧源视觉 Blueprint 参考最后更新于
这有帮助吗?