跳至主内容
← 返回

高级功能

本节介绍艾克斯场景编辑器的高级功能,包括触发器、开关、音频区域等交互和逻辑功能。

一、交互系统概览

┌─────────────────────────────────────────────────────────────────────────────┐
│                      艾克斯场景编辑器交互系统                               │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   ┌──────────────┐      ┌──────────────┐      ┌──────────────┐             │
│   │   触发器      │─────→│   逻辑处理    │─────→│   目标执行    │             │
│   │  (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. 欢迎区域

创建一个用户进入场景时的欢迎区域:

  1. 添加 Trigger Volume
  2. 设置 Size 覆盖入口区域
  3. 连接 Audio 播放欢迎语音

2. 安全区域

检测用户是否进入危险区域:

  1. 在危险区域放置 Trigger
  2. 连接提示或传送功能

3. 互动游戏

创建寻宝或探索游戏:

  1. 在目标位置放置隐藏 Trigger
  2. 用户到达触发奖励

设置步骤

  1. 添加 Trigger Volume

    • 从 Elements 面板拖拽 Trigger Volume
    • 或右键 → Add Element → Trigger Volume
  2. 调整大小

    • 选择 Trigger Volume
    • 使用缩放工具调整 Size
    • 或使用属性面板精确设置
  3. 设置目标

    • 在属性面板设置 Target
    • 选择要控制的元素
  4. 测试

    • 发布场景到 Hubs
    • 测试触发效果

三、Switch (开关)

功能说明

Switch 是一个可以切换状态的控制器,用于控制其他元素的开/关状态。

核心属性

属性 说明 默认值
Target 目标对象 -
Initial State 初始状态 Off

工作原理

┌─────────────────────────────────────────────────────────────┐
│                     开关工作流程                             │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   用户操作 ──→ Switch 状态切换 ──→ 目标对象响应              │
│                                                              │
│   示例:灯光开关                                             │
│                                                              │
│   ┌─────────┐      ┌─────────┐      ┌─────────┐            │
│   │ 点击    │      │ Switch  │      │  Light  │            │
│   │ 开关    │─────→│ 状态:  │─────→│ 开关状态 │            │
│   │         │      │ Off → On      │ On/Off   │            │
│   └─────────┘      └─────────┘      └─────────┘            │
│                                                              │
└─────────────────────────────────────────────────────────────┘

使用场景

1. 灯光开关

控制房间灯光:

  1. 添加 Switch
  2. 设置 Target 为灯光元素
  3. 用户点击 Switch 切换灯光

2. 门控制

控制门的开/关:

  1. 添加 Switch
  2. 设置 Target 为门(Model 或 Group)
  3. 通过开关控制门的可见性

3. 多状态控制

控制多个元素的组合状态:

  1. 一个 Switch 控制多个 Target
  2. 实现场景模式切换

组合使用示例

自动门系统:

Trigger Volume (门口)
        │
        ▼
    Switch (自动开关)
        │
        ▼
    Door (门元素)

设置步骤:

  1. 在门口放置 Trigger Volume
  2. 设置 Trigger 的 Target 为 Switch
  3. 设置 Switch 的 Target 为门
  4. 用户接近门自动打开

四、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. 导览路径

创建场景游览路线:

  1. 按顺序放置 Way Point
  2. 用户可按顺序参观
  3. 适合教学或展示场景

3. AI 巡航停靠站

将路径点加入 Patrol Route(巡航路线):

  1. 在 Way Point 属性中开启「巡航停靠点」
  2. 设置巡航顺序和触发关键词
  3. 智能体按顺序到达并在此停留解说

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
分配角色 使用此路线的角色 智能导览
触发关键词 语音激活关键词 ""

路线分配优先级

当场景中有多条巡航路线时,系统按以下优先级为智能体分配路线:

  1. Hubs 配置指定:在 AI 配置面板中为智能体指定路线名称
  2. 智能体名称匹配:路线「分配角色」属性中指定了智能体名称
  3. 角色类型匹配:路线的「分配角色」与智能体角色一致
  4. 通用路线:分配角色为"所有角色"的路线
  5. 首个可用路线:作为兜底

路线可视化

选中 Patrol Route 后,编辑器在视口中显示路线可视化:

可视元素 含义
绿色虚线 可通行路径(导航网格内)
红色虚线 不可通行路径(跨导航网格组)
数字标签 停靠点顺序编号
箭头标记 行进方向

注意:红色虚线表示该段路径无法通过导航网格到达。此时智能体会直线穿过障碍物。建议调整停靠点位置,或检查 Floor Plan 覆盖范围。

创建巡航路线完整流程

步骤 1:准备停靠点

  1. 在场景关键位置放置 Way Point 元素
  2. 在每个 Way Point 的属性面板中开启「巡航停靠点」
  3. 为每个停靠点设置「触发关键词」(如"大厅入口"、"展厅A"、"休息区")
  4. 设置「姿态类型」(智能体到达后是站立、坐下还是躺下)

步骤 2:创建路线

  1. 添加 Patrol Route 元素到场景
  2. 在属性面板中设置路线名称和触发关键词
  3. 选择是否循环路线
  4. 设置停留时间范围

步骤 3:添加停靠点

  1. 点击「添加巡航点」下拉菜单
  2. 依次选择已开启巡航属性的 Way Point
  3. 拖拽调整停靠点顺序
  4. 为每个停靠点设置独立的叙述触发词

步骤 4:验证路线

  1. 确保场景中有 Floor Plan 元素
  2. 点击「开始预览」在视口中查看动画
  3. 检查路线可视化是否全为绿色(无红色段)
  4. 发布到 Hubs 进行实际测试

知识库关联

巡航停靠点可以关联知识库文件,实现智能解说:

  1. 在 Way Point 属性面板底部找到「知识文件」区域
  2. 点击「获取文件」加载已上传的知识文件列表
  3. 点击「关联」将文件与停靠点绑定
  4. 文件的 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. 背景音乐区域

特定区域播放背景音乐:

  1. 创建 Audio Zone 覆盖房间
  2. 设置 Target 为背景音乐 Audio
  3. 离开区域音乐渐弱

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. 画廊展示

创建图片展示墙:

  1. 放置多个 Media Frame
  2. 用户可以将图片放入框架
  3. 自动适配框架大小

2. 视频播放区

固定视频播放位置:

  1. 创建大屏幕 Media Frame
  2. 视频自动适应屏幕
  3. 支持控制播放

3. 模型展台

展示 3D 模型:

  1. 创建立方体 Media Frame
  2. 模型放入后自动居中
  3. 可以从各个角度观看

九、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 在编辑器中可见
  • 发布后这些辅助线会隐藏

测试交互:

  1. 发布到 Hubs
  2. 使用 VR 或桌面模式测试
  3. 检查交互是否正常触发

常见问题

Q: Trigger 不触发?

A: 检查以下几点:

  • Floor Plan 是否正确覆盖区域
  • Trigger Size 是否合适
  • Target 是否正确设置

Q: Switch 不工作?

A: 检查:

  • Target 元素是否存在
  • Target 是否支持开关控制
  • 初始状态设置

Q: Way Point 不可见?

A: 检查:

  • Way Point 位置是否被遮挡
  • 是否设置 Can Be Spawn Point
  • 场景光照是否足够

下一步