高级功能
本节介绍艾克斯场景编辑器的高级功能,包括触发器、开关、音频区域等交互和逻辑功能。
一、交互系统概览
┌─────────────────────────────────────────────────────────────────────────────┐
│ 艾克斯场景编辑器交互系统 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 触发器 │─────→│ 逻辑处理 │─────→│ 目标执行 │ │
│ │ (Trigger) │ │ (Switch) │ │ (Target) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ • 用户进入 • 开关状态切换 • 灯光开关 │
│ • 用户离开 • 多状态控制 • 门开启/关闭 │
│ • 距离检测 • 逻辑条件 • 音频播放/停止 │
│ • 碰撞检测 • 对象显示/隐藏 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
二、Trigger Volume (触发器)
功能说明
Trigger Volume 用于检测用户何时进入或离开特定区域。它是实现交互的基础组件。
核心属性
| 属性 | 说明 | 默认值 | 建议值 |
|---|---|---|---|
| Size | 触发区域大小 (X, Y, Z) | (1, 1, 1) | 根据场景调整 |
| Enter Distance | 进入触发距离 | 0 | 0-1 |
| Leave Distance | 离开触发距离 | 0 | 0-1 |
| Target | 目标对象 | - | 需要控制的元素 |
工作原理
┌─────────────────────────────────────────────────────────────┐
│ 触发器工作示意图 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ Trigger Box │ │
│ │ (触发器区域) │ │
│ │ │ │
│ User │ ┌───────┐ │ │
│ 👤 ────────→ │ │ │ │ 进入触发区域 │
│ 接近 │ │ │ │ │
│ │ └───────┘ │ │
│ │ │ │
│ └─────────────────┘ │
│ │
│ 事件触发: │
│ • 用户进入区域 ──→ onEnter 事件 │
│ • 用户离开区域 ──→ onLeave 事件 │
│ │
└─────────────────────────────────────────────────────────────┘
使用场景
1. 欢迎区域
创建一个用户进入场景时的欢迎区域:
- 添加 Trigger Volume
- 设置 Size 覆盖入口区域
- 连接 Audio 播放欢迎语音
2. 安全区域
检测用户是否进入危险区域:
- 在危险区域放置 Trigger
- 连接提示或传送功能
3. 互动游戏
创建寻宝或探索游戏:
- 在目标位置放置隐藏 Trigger
- 用户到达触发奖励
设置步骤
添加 Trigger Volume
- 从 Elements 面板拖拽 Trigger Volume
- 或右键 → Add Element → Trigger Volume
调整大小
- 选择 Trigger Volume
- 使用缩放工具调整 Size
- 或使用属性面板精确设置
设置目标
- 在属性面板设置 Target
- 选择要控制的元素
测试
- 发布场景到 Hubs
- 测试触发效果
三、Switch (开关)
功能说明
Switch 是一个可以切换状态的控制器,用于控制其他元素的开/关状态。
核心属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| Target | 目标对象 | - |
| Initial State | 初始状态 | Off |
工作原理
┌─────────────────────────────────────────────────────────────┐
│ 开关工作流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 用户操作 ──→ Switch 状态切换 ──→ 目标对象响应 │
│ │
│ 示例:灯光开关 │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 点击 │ │ Switch │ │ Light │ │
│ │ 开关 │─────→│ 状态: │─────→│ 开关状态 │ │
│ │ │ │ Off → On │ On/Off │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
使用场景
1. 灯光开关
控制房间灯光:
- 添加 Switch
- 设置 Target 为灯光元素
- 用户点击 Switch 切换灯光
2. 门控制
控制门的开/关:
- 添加 Switch
- 设置 Target 为门(Model 或 Group)
- 通过开关控制门的可见性
3. 多状态控制
控制多个元素的组合状态:
- 一个 Switch 控制多个 Target
- 实现场景模式切换
组合使用示例
自动门系统:
Trigger Volume (门口)
│
▼
Switch (自动开关)
│
▼
Door (门元素)
设置步骤:
- 在门口放置 Trigger Volume
- 设置 Trigger 的 Target 为 Switch
- 设置 Switch 的 Target 为门
- 用户接近门自动打开
四、Way Point (路径点)
功能说明
Way Point 是场景中的导航点,用户点击可以快速传送到该位置。开启「巡航停靠点」后,路径点还可作为 AI 智能体巡航路线的停靠站。
核心属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| Can Be Spawn Point | 可作为出生点 | false |
| Can Be Occupied | 可被占据 | false |
| 姿态类型 | 传送后的姿态(站立/坐下/躺下) | 站立 |
| 巡航停靠点 | 标记为 AI 巡航停靠站 | false |
| 巡航顺序 | 在路线中的停靠顺序 | 0 |
| 触发关键词 | 知识库检索关键词 | "" |
工作原理
┌─────────────────────────────────────────────────────────────┐
│ 路径点导航系统 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Way Point A Way Point B │
│ ● ● │
│ / / │
│ / / │
│ User ─ ────────────── ──→ 点击传送 │
│ / / │
│ / / │
│ │
│ 功能: │
│ • 点击路径点图标传送 │
│ • 路径点之间可以连接形成路径 │
│ • 可用于引导用户游览场景 │
│ │
└─────────────────────────────────────────────────────────────┘
使用场景
1. 快速导航
在大型场景中设置传送点:
- 入口
- 各个功能区域
- 观景点
2. 导览路径
创建场景游览路线:
- 按顺序放置 Way Point
- 用户可按顺序参观
- 适合教学或展示场景
3. AI 巡航停靠站
将路径点加入 Patrol Route(巡航路线):
- 在 Way Point 属性中开启「巡航停靠点」
- 设置巡航顺序和触发关键词
- 智能体按顺序到达并在此停留解说
4. 位置标记
标记重要位置:
- 会议室位置
- 展示区
- 信息点
设置建议
- 密度:大型场景每 10-20 米一个
- 位置:放在空旷、可见的位置
- 命名:使用描述性名称便于识别
- 巡航关键词:为巡航停靠点设置能概括该位置内容的关键词,如"展厅入口"、"产品展示区"
五、Patrol Route (巡航路线)
功能说明
Patrol Route 定义 AI 智能体的巡航路线。智能体按路线顺序在各停靠点(Way Point)之间移动,到达每个停靠点后停留并解说。配合知识库系统,可实现智能场景导览。
核心概念
┌─────────────────────────────────────────────────────────────┐
│ 巡航路线工作原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Patrol Route │
│ ┌──────────────────────────────────────────┐ │
│ │ │ │
│ │ ●1 ──→ ●2 ──→ ●3 ──→ ●4 │ │
│ │ 停靠点1 停靠点2 停靠点3 停靠点4 │ │
│ │ (入口) (展厅A) (展厅B) (出口) │ │
│ │ │ │
│ │ 循环模式:●4 ──→ ●1 继续巡航 │ │
│ │ 非循环:到达 ●4 后停止 │ │
│ └──────────────────────────────────────────┘ │
│ │
│ 触发方式: │
│ • 用户说出触发关键词(如"开始导览") │
│ • 智能体进入空闲状态时自动开始 │
│ │
│ 停靠行为: │
│ • 智能体到达停靠点后停留 5-10 秒 │
│ • 使用触发关键词检索知识库 │
│ • 基于检索结果进行语音解说 │
│ • 解说完成后前往下一个停靠点 │
│ │
└─────────────────────────────────────────────────────────────┘
核心属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| 路线名称 | 巡航路线名称 | "" |
| 循环路线 | 完成一圈后继续巡航 | true |
| 最短停留时间(秒) | 每站最短停留 | 5 |
| 最长停留时间(秒) | 每站最长停留 | 10 |
| 分配角色 | 使用此路线的角色 | 智能导览 |
| 触发关键词 | 语音激活关键词 | "" |
路线分配优先级
当场景中有多条巡航路线时,系统按以下优先级为智能体分配路线:
- Hubs 配置指定:在 AI 配置面板中为智能体指定路线名称
- 智能体名称匹配:路线「分配角色」属性中指定了智能体名称
- 角色类型匹配:路线的「分配角色」与智能体角色一致
- 通用路线:分配角色为"所有角色"的路线
- 首个可用路线:作为兜底
路线可视化
选中 Patrol Route 后,编辑器在视口中显示路线可视化:
| 可视元素 | 含义 |
|---|---|
| 绿色虚线 | 可通行路径(导航网格内) |
| 红色虚线 | 不可通行路径(跨导航网格组) |
| 数字标签 | 停靠点顺序编号 |
| 箭头标记 | 行进方向 |
注意:红色虚线表示该段路径无法通过导航网格到达。此时智能体会直线穿过障碍物。建议调整停靠点位置,或检查 Floor Plan 覆盖范围。
创建巡航路线完整流程
步骤 1:准备停靠点
- 在场景关键位置放置 Way Point 元素
- 在每个 Way Point 的属性面板中开启「巡航停靠点」
- 为每个停靠点设置「触发关键词」(如"大厅入口"、"展厅A"、"休息区")
- 设置「姿态类型」(智能体到达后是站立、坐下还是躺下)
步骤 2:创建路线
- 添加 Patrol Route 元素到场景
- 在属性面板中设置路线名称和触发关键词
- 选择是否循环路线
- 设置停留时间范围
步骤 3:添加停靠点
- 点击「添加巡航点」下拉菜单
- 依次选择已开启巡航属性的 Way Point
- 拖拽调整停靠点顺序
- 为每个停靠点设置独立的叙述触发词
步骤 4:验证路线
- 确保场景中有 Floor Plan 元素
- 点击「开始预览」在视口中查看动画
- 检查路线可视化是否全为绿色(无红色段)
- 发布到 Hubs 进行实际测试
知识库关联
巡航停靠点可以关联知识库文件,实现智能解说:
- 在 Way Point 属性面板底部找到「知识文件」区域
- 点击「获取文件」加载已上传的知识文件列表
- 点击「关联」将文件与停靠点绑定
- 文件的 spatial_tag 与停靠点的触发关键词匹配时会自动关联
当智能体到达停靠点时:
- 系统用停靠点的触发关键词检索知识库
- 匹配的知识片段作为上下文发送给 LLM
- 智能体基于知识内容生成个性化解说
常见问题
Q: 智能体不按路线巡航?
A: 检查以下几点:
- 场景中是否有 Floor Plan 导航网格
- 巡航路线是否设置了停靠点
- 智能体角色类型与路线「分配角色」是否匹配
- 在 Hubs AI 配置面板中是否为智能体指定了路线名称
Q: 路线可视化显示红色虚线?
A: 红色虚线表示两个停靠点之间的路径跨越了导航网格组边界,智能体无法通过正常导航到达。解决方案:
- 调整停靠点位置到同一导航网格组内
- 检查 Floor Plan 是否覆盖了所有停靠点区域
- 确保场景中没有大型障碍物阻断导航网格
Q: 智能体到达停靠点后没有解说?
A: 检查:
- 停靠点是否设置了触发关键词
- 知识库中是否有与关键词匹配的内容
- 知识文件是否已正确上传并关联
- TTS 语音合成是否已启用
Q: 如何让用户手动触发巡航?
A: 为路线设置「触发关键词」(如"导览"、"讲解"),用户对智能体说出关键词即可触发巡航。多个关键词用「、」分隔。
六、Audio Zone (音频区域)
功能说明
Audio Zone 创建空间化的音频区域,进入/离开区域会改变音频的音量或效果。
核心属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| Size | 区域大小 | (1, 1, 1) |
| Target | 目标音频源 | - |
| Gain | 区域内增益 | 1.0 |
工作原理
┌─────────────────────────────────────────────────────────────┐
│ 音频区域效果 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 区域外 (Gain: 0.2) 区域内 (Gain: 1.0) │
│ │
│ ○ ○ ○ ○ ○ ○ ○ ○ ○ ┌─────────────────────┐ │
│ ○ ○ ○ ○ ○ ○ ○ ○ ○ │ Audio Zone │ │
│ ○ ○ ○ ○ ○ ○ ○ ○ ○ │ │ │
│ ○ ─ ─ ─ ─ ─ ─ ─ ─ → │ 👤 User │ │
│ 音量低 │ │ │
│ └─────────────────────┘ │
│ 音量高 │
│ │
└─────────────────────────────────────────────────────────────┘
使用场景
1. 背景音乐区域
特定区域播放背景音乐:
- 创建 Audio Zone 覆盖房间
- 设置 Target 为背景音乐 Audio
- 离开区域音乐渐弱
2. 环境音效
模拟不同环境的声音:
- 室内:混响效果
- 室外:开阔效果
- 水下:低沉效果
3. 语音聊天区域
创建语音聊天室:
- 区域内开启语音
- 区域外静音
七、Spawner (生成器)
功能说明
Spawner 可以动态生成对象,用于创建交互式内容。
核心属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| Source | 生成对象的模型 | - |
| Spawn Rate | 生成频率 | 1 |
| Max Objects | 最大对象数 | 10 |
使用场景
1. 动态装饰
随时间生成装饰物:
- 飘落的雪花
- 飞舞的蝴蝶
- 漂浮的气泡
2. 游戏机制
创建游戏元素:
- 生成收集物
- 生成障碍物
- 生成敌人
3. 互动反馈
用户交互后生成效果:
- 点击生成粒子
- 触发生成奖励
八、Media Frame (媒体框)
功能说明
Media Frame 是一个固定的媒体展示区域,用户可以将图片、视频或模型放置到其中。
核心属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| Size | 框架大小 | (1, 1, 0.1) |
| Snap To Center | 媒体居中 | true |
| Media Type | 允许的媒体类型 | All |
使用场景
1. 画廊展示
创建图片展示墙:
- 放置多个 Media Frame
- 用户可以将图片放入框架
- 自动适配框架大小
2. 视频播放区
固定视频播放位置:
- 创建大屏幕 Media Frame
- 视频自动适应屏幕
- 支持控制播放
3. 模型展台
展示 3D 模型:
- 创建立方体 Media Frame
- 模型放入后自动居中
- 可以从各个角度观看
九、Link (链接)
功能说明
Link 创建可点击的传送门,点击后跳转到其他场景或网页。
核心属性
| 属性 | 说明 |
|---|---|
| URL | 目标地址 |
| Title | 链接标题 |
使用场景
1. 场景跳转
连接多个相关场景:
场景 A ──Link──→ 场景 B ──Link──→ 场景 C
↑ │
└──────────────────────────────┘
2. 外部链接
链接到外部资源:
- 公司网站
- 文档页面
- 相关产品
3. 导览系统
创建场景导览:
- 入口场景
- 各展区场景
- 返回主场景
十、高级交互组合
示例 1:自动门系统
组件:
├── Trigger Volume (门口区域)
├── Switch (门控制器)
├── Group (门模型)
└── Audio (开门音效)
逻辑:
1. 用户进入 Trigger 区域
2. Trigger 激活 Switch
3. Switch 打开 Group (门)
4. 同时播放 Audio (开门声)
示例 2:展厅讲解系统
组件:
├── Way Point (观景点)
├── Trigger Volume (展品区域)
├── Audio (讲解音频)
└── Media Frame (展品信息)
逻辑:
1. 用户点击 Way Point 到达观景点
2. 进入展品区域的 Trigger
3. 自动播放讲解 Audio
4. Media Frame 显示详细信息
示例 3:多房间音频系统
组件:
├── Audio Zone (房间 A)
├── Audio Zone (房间 B)
├── Audio (音乐 A)
└── Audio (音乐 B)
逻辑:
1. 房间 A 的 Audio Zone 控制音乐 A
2. 房间 B 的 Audio Zone 控制音乐 B
3. 用户移动时音乐平滑过渡
4. 不同房间不同氛围
示例 4:互动游戏
组件:
├── Trigger Volume (目标点)
├── Switch (计分器)
├── Spawner (生成目标物)
└── Audio (得分音效)
逻辑:
1. Spawner 定时生成目标物
2. 用户触碰目标物触发 Trigger
3. Switch 记录得分
4. 播放得分音效
十一、调试技巧
可见化调试
显示触发区域:
- Trigger Volume 和 Audio Zone 在编辑器中可见
- 发布后这些辅助线会隐藏
测试交互:
- 发布到 Hubs
- 使用 VR 或桌面模式测试
- 检查交互是否正常触发
常见问题
Q: Trigger 不触发?
A: 检查以下几点:
- Floor Plan 是否正确覆盖区域
- Trigger Size 是否合适
- Target 是否正确设置
Q: Switch 不工作?
A: 检查:
- Target 元素是否存在
- Target 是否支持开关控制
- 初始状态设置
Q: Way Point 不可见?
A: 检查:
- Way Point 位置是否被遮挡
- 是否设置 Can Be Spawn Point
- 场景光照是否足够
下一步
- 常见问题 - 查看常见问题解答