场景管理
本节介绍如何有效地组织和管理场景,包括层级结构、性能优化和最佳实践。
场景层级结构
层级面板概览
Scene (场景根)
├── Spawn Point ← 用户出生点
├── Scene Preview Camera ← 缩略图相机
├── Environment ← 环境组
│ ├── Ambient Light
│ ├── Directional Light
│ ├── Skybox
│ └── Ground Plane
├── Architecture ← 建筑组
│ ├── Floor Plan
│ ├── Walls (Group)
│ │ ├── Wall 1
│ │ ├── Wall 2
│ │ └── Door
│ └── Furniture (Group)
│ ├── Table
│ └── Chairs
├── Interactive ← 交互元素组
│ ├── Way Points
│ ├── Audio Sources
│ └── Triggers
└── Decorations ← 装饰组
├── Plants
└── Pictures
组织原则
1. 按功能分组
好的组织: 差的组织:
├── Building ├── Model 1
│ ├── Walls ├── Light 1
│ ├── Roof ├── Model 2
│ └── Door ├── Model 3
├── Furniture ├── Light 2
│ ├── Table └── Model 4
│ └── Chairs
└── Lighting
├── Main Light
└── Accent Light
2. 命名规范
| 类型 | 命名示例 | 说明 |
|---|---|---|
| 建筑 | "Main Building" | 描述性名称 |
| 灯光 | "Ceiling Light 01" | 类型+编号 |
| 家具 | "Conference Table" | 功能描述 |
| 装饰 | "Plant - Ficus" | 类别-具体 |
3. 层级深度建议
- 建议最大深度:4-5 层
- 过深的层级影响性能
- 过浅的层级难以管理
推荐深度: 避免过深:
Scene Scene
└── Group └── Group
└── Subgroup └── Group
└── Element └── Group
└── Group
└── Element
组的用法
创建组
方法 1:选择后成组
- 选择多个元素(Ctrl+点击或框选)
- 右键 → Group(或 Ctrl+G)
- 输入组名称
方法 2:先创建空组
- 右键 Scene 或 Group
- Add Element → Group
- 拖拽元素到组内
组的特性
| 特性 | 说明 |
|---|---|
| 变换继承 | 子元素跟随父组变换 |
| 可见性控制 | 隐藏组会隐藏所有子元素 |
| 批量操作 | 可对组内所有元素批量设置 |
| 嵌套支持 | 组可以包含其他组 |
解组
- 选择组
- 右键 → Ungroup(或 Ctrl+Shift+G)
- 子元素提升到父级
组的最佳实践
场景结构模板:
Scene
├── Spawn Point ← 出生点(必需)
├── Scene Preview Camera ← 预览相机
├── [Scene Name] - Environment ← 环境
│ ├── Lighting ← 所有灯光
│ ├── Ground/Sky ← 地面天空
│ └── Navigation ← 导航相关
├── [Scene Name] - Architecture ← 建筑结构
│ ├── [Building 1]
│ ├── [Building 2]
│ └── Connectors
├── [Scene Name] - Interactive ← 交互元素
│ ├── Audio
│ ├── Triggers
│ └── Waypoints
└── [Scene Name] - Decorations ← 装饰
├── Props
└── Details
可见性和锁定
可见性控制
切换可见性:
- 点击层级面板中的眼睛图标 👁️
- 或修改属性面板的 Visible 属性
用途:
- 暂时隐藏不需要编辑的元素
- 减少视口杂乱
- 测试不同配置
锁定元素
锁定功能:
- 防止意外选择和编辑
- 在复杂场景中保护已完成的部分
操作方法:
- 目前场景编辑器无内置锁定功能
- 可通过 Group 并命名 "[LOCKED]" 提示
选择和过滤
选择技巧
| 操作 | 方法 | 效果 |
|---|---|---|
| 单选 | 点击 | 选中一个元素 |
| 加选 | Ctrl+点击 | 添加/移除选择 |
| 范围选 | Shift+点击 | 选择两个元素之间的所有元素 |
| 全选 | Ctrl+A | 选择所有元素 |
| 反选 | - | 目前不支持 |
| 选择子元素 | 双击组 | 选择组内所有元素 |
框选
在视口中拖拽框选:
- 从左上到右下:完全包含在选择框内的元素
- 从右下到左上:接触选择框的元素
性能优化
静态 vs 动态
Static Mode(静态模式):
- 标记为静态的元素会自动优化
- 静态几何体可以合并,减少 draw call
- 提高渲染性能
设置静态:
- 选择元素
- 在属性面板找到 Static 选项
- 勾选启用
建议标记为静态的元素:
- 建筑结构
- 固定家具
- 装饰物
- 地面
建议标记为动态的元素:
- 交互元素
- Spawner 生成的对象
- 可能移动的元素
灯光优化
| 优化项 | 建议 |
|---|---|
| 阴影 | 只有主光源开启阴影 |
| 范围 | 合理设置光源范围 |
| 数量 | 点光源建议 < 10 个 |
| 烘焙 | 静态光照可预先计算 |
模型优化
面数控制:
- 主要模型:10k-50k 面
- 次要模型:< 10k 面
- 远景模型:< 1k 面
纹理优化:
- 使用纹理图集
- 控制纹理尺寸(最大 2048x2048)
- 使用压缩格式
场景大小
建议限制:
- 总元素数量:< 500
- 三角形总数:< 500k
- 纹理内存:< 100MB
- 导出文件大小:< 50MB
导航网格
Floor Plan 的作用
Floor Plan 自动生成导航网格,决定用户可以在哪里行走。
导航网格生成
┌─────────────────────────────────────────────────────────────┐
│ 导航网格生成原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 分析场景几何体 │
│ ┌──────┐ ┌──────┐ │
│ │Object│ │Object│ │
│ └──┬───┘ └──┬───┘ │
│ │ │ │
│ 2. 识别可行走表面 │
│ ░░░░░░░░░░░░░░░░░░░░ ← 标记为可行走 │
│ ░┌────┐░░┌────┐░░░░ │
│ ░│ │░░│ │░░░░ ← 障碍物周围标记为不可行走 │
│ ░└────┘░░└────┘░░░░ │
│ │
│ 3. 生成导航网格 │
│ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐ │
│ ├─┼─┼─┼─┼─┼─┼─┼─┼─┤ ← 网格单元 │
│ ├─┼─┼─┼─┼─┼─┼─┼─┼─┤ │
│ └─┴─┴─┴─┴─┴─┴─┴─┴─┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Floor Plan 参数调优
| 参数 | 说明 | 建议值 |
|---|---|---|
| Agent Height | 角色高度 | 1.6-1.8m |
| Agent Radius | 角色半径 | 0.2-0.3m |
| Max Climb | 最大攀爬高度 | 0.3-0.5m |
| Max Slope | 最大坡度 | 45° |
| Cell Size | 网格精度 | 0.1-0.2m |
常见问题
用户穿墙?
- 增加 Agent Radius
- 确保墙壁有碰撞体
用户无法走上台阶?
- 增加 Max Climb 值
- 或添加斜坡
导航网格缺失区域?
- 检查 Floor Plan 位置
- 确保覆盖整个可行走区域
- 调整 Cell Size
场景模板
创建可复用模板
保存为模板:
- 组织好场景结构
- 删除场景特定内容
- File → Save As Template
- 命名模板
使用模板:
- File → New Project
- 选择你的模板
- 基于模板创建新项目
推荐模板结构
会议室模板:
Meeting Room Template
├── Spawn Point (入口)
├── Environment
│ ├── Ambient Light
│ ├── Directional Light
│ └── Floor Plan
├── Room Structure
│ ├── Floor
│ ├── Walls
│ └── Ceiling
├── Furniture
│ ├── Conference Table
│ └── Chairs (x8)
├── Media
│ ├── Screen (Media Frame)
│ └── Whiteboard
└── Navigation
├── Way Point (入口)
└── Way Point (屏幕前)
版本控制
项目版本
场景编辑器自动保存版本历史:
- 每次保存创建新版本
- 可以查看历史版本
- 可以回滚到特定版本
查看历史
- File → Version History
- 浏览历史版本列表
- 点击版本预览
- 选择 Restore 恢复
场景清单
发布前检查
必需元素:
- 至少一个 Spawn Point
- Scene Preview Camera 设置好角度
- 合理的灯光配置
- Floor Plan 覆盖可行走区域
性能检查:
- 静态元素已标记 Static
- 不必要的阴影已关闭
- 模型面数合理
- 纹理尺寸适中
体验检查:
- 出生点位置合理
- 用户可以自由导航
- 重要内容可见
- 音频设置合适