发布与分享
本节介绍如何将场景编辑器中的场景发布到艾克斯虚拟空间,以及发布后的管理和分享。
发布流程概览
┌─────────────────────────────────────────────────────────────────────────────┐
│ 发布流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 1. 准备 │───→│ 2. 预览 │───→│ 3. 导出 │───→│ 4. 发布 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ • 检查场景 • 生成缩略图 • 导出 GLB • 上传到 │
│ • 保存项目 • 预览场景 • 压缩优化 • Reticulum │
│ • 优化性能 • 检查问题 • 验证格式 • 生成房间 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
1. 发布前准备
场景检查清单
必需元素:
- 至少一个 Spawn Point(出生点)
- Scene Preview Camera 设置好角度(用于缩略图)
- 基本的光照配置
- Floor Plan 覆盖可行走区域
性能优化:
- 静态元素已标记为 Static
- 阴影设置合理(仅主光源开启)
- 模型面数在合理范围
- 纹理尺寸适中(< 2048x2048)
用户体验:
- 出生点位置合理(不会卡在物体中)
- 场景可以正常导航
- 重要内容可见
- 音频音量合适
保存项目
本地保存:
- Ctrl + S 或 File → Save
- 项目保存到浏览器本地存储
- 登录后可同步到云端
命名规范:
- 使用描述性名称
- 避免特殊字符
- 可以添加版本号(如 "Meeting Room v2")
2. 发布场景
发布步骤
方法一:通过工具栏
- 点击工具栏的 Publish 按钮
- 等待场景处理
- 填写场景信息
- 点击 Publish
方法二:通过菜单
- File → Publish to Hubs
- 等待场景处理
- 填写场景信息
- 点击 Publish
发布对话框
┌─────────────────────────────────────────────────────────────┐
│ 发布场景 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Scene Name: │
│ [Meeting Room ] │
│ │
│ Description: │
│ [A modern conference room for up to 8 people. │
│ Features a large screen for presentations.] │
│ │
│ Allow Remixing: [✓] 允许他人基于此场景创建 │
│ │
│ Attribution: │
│ [Created by Your Name ] │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 场景预览 │ │
│ │ │ │
│ │ [缩略图预览区域] │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ [取消] [发布到 Hubs] │
│ │
└─────────────────────────────────────────────────────────────┘
发布选项
| 选项 | 说明 | 建议 |
|---|---|---|
| Scene Name | 场景名称 | 使用简洁描述性名称 |
| Description | 场景描述 | 说明场景用途和特点 |
| Allow Remixing | 允许再创作 | 公开场景建议勾选 |
| Attribution | 署名 | 填写作者信息 |
发布过程
发布时会执行以下操作:
生成缩略图
- 使用 Scene Preview Camera 角度
- 生成场景预览图
导出 GLB
- 将场景转换为 GLB 格式
- 包含所有几何体、材质、纹理
- 添加
MOZ_hubs_components扩展数据
优化处理
- 压缩纹理
- 优化几何体
- 减少文件大小
上传到 Reticulum
- 上传到 Hubs 后端服务器
- 生成场景 ID
创建 Hubs 房间
- 生成可访问的房间链接
- 设置默认房间配置
3. 发布后的管理
查看已发布场景
- 点击头像或菜单
- 选择 My Scenes
- 查看所有已发布场景列表
场景管理选项
| 选项 | 功能 |
|---|---|
| Open | 在 Hubs 中打开场景 |
| Edit | 在场景编辑器中编辑场景 |
| Duplicate | 复制场景(创建新版本) |
| Delete | 删除场景 |
| Share | 获取分享链接 |
更新已发布场景
- 在场景编辑器中打开原项目
- 进行修改
- 再次点击 Publish
- 选择 Update Existing Scene
- 选择要更新的场景
- 确认更新
注意:
- 更新会替换原有场景
- 已创建的 Hubs 房间不受影响
- 可以回滚到之前的版本
4. 分享场景
获取分享链接
发布后,你会获得:
| 链接类型 | 用途 | 格式 |
|---|---|---|
| 场景页面 | 查看场景详情 | https://hubs.local:4000/scenes/{scene-id} |
| 直接房间 | 直接进入房间 | https://hubs.local:4000/{room-code} |
| 嵌入代码 | 嵌入网页 | iframe 代码 |
分享方式
直接分享链接:
- 复制房间链接
- 发送给朋友或同事
- 点击链接即可进入
社交媒体分享:
- 分享到 Twitter
- 分享到 Facebook
- 复制链接分享到其他平台
嵌入网页:
<iframe
src="https://hubs.local:4000/{room-code}"
width="100%"
height="100%"
allow="xr-spatial-tracking"
></iframe>
5. 房间设置
创建房间
发布场景后,可以:
创建私人房间
- 只有自己可以进入
- 需要邀请链接才能加入
创建公共房间
- 任何人可以通过链接加入
- 显示在公共房间列表
房间权限
| 权限 | 说明 |
|---|---|
| Room Owner | 房间创建者,拥有所有权限 |
| Moderator | 主持人,可以踢人、静音 |
| Participant | 普通参与者 |
| Spectator | 旁观者,只能观看 |
房间设置选项
在 Hubs 房间中可以设置:
- 房间名称:自定义房间显示名称
- 最大人数:设置房间人数上限
- 语音模式:开启/关闭语音
- 视频模式:开启/关闭视频
- 媒体权限:谁可以放置媒体
- 锁定房间:防止新用户加入
6. 场景权限
权限级别
| 级别 | 可见性 | 可再创作 |
|---|---|---|
| Private | 仅自己 | 否 |
| Unlisted | 知道链接的人 | 取决于设置 |
| Public | 所有人 | 取决于设置 |
设置场景权限
- 进入 My Scenes
- 选择场景
- 点击 Settings
- 调整权限选项
允许再创作 (Remix)
勾选 Allow Remixing 后:
- 其他用户可以将你的场景作为模板
- 创建他们自己的版本
- 原场景署名会保留
7. 性能优化与发布
导出前优化
文件大小优化:
| 优化项 | 目标 |
|---|---|
| GLB 文件大小 | < 50MB |
| 纹理总大小 | < 100MB |
| 三角形总数 | < 500k |
优化技巧:
纹理压缩
- 使用 JPG 代替 PNG(无透明度)
- 降低纹理分辨率
- 使用纹理图集
模型优化
- 减少多边形数量
- 合并相同材质的网格
- 删除隐藏的面
光照烘焙
- 静态光照预先计算
- 减少实时光源数量
移动端优化
针对移动端用户的额外优化:
- 进一步降低模型面数
- 使用更小的纹理
- 减少粒子效果
- 简化后期处理
8. 故障排除
发布失败
问题:发布按钮无响应
解决方案:
- 检查网络连接
- 确认已登录
- 尝试刷新页面
- 检查浏览器控制台错误
问题:导出失败
解决方案:
- 检查场景是否有损坏的元素
- 尝试删除最近添加的元素
- 检查模型文件是否完整
- 减少场景复杂度
问题:上传超时
解决方案:
- 压缩场景资源
- 减少文件大小
- 使用更快的网络
- 分批发布(先简化场景)
发布后问题
问题:场景加载慢
解决方案:
- 优化纹理大小
- 减少模型面数
- 使用 CDN 加速
- 启用压缩
问题:某些元素不显示
解决方案:
- 检查元素是否设置为 Visible
- 确认资源链接有效
- 检查 CORS 设置
- 重新导入资源
问题:导航网格有问题
解决方案:
- 调整 Floor Plan 参数
- 检查 Floor Plan 覆盖范围
- 重新生成导航网格
- 添加更多碰撞体
9. 最佳实践
发布前检查流程
发布前 24 小时:
├── 完成场景设计
├── 进行性能测试
└── 收集反馈
发布前 1 小时:
├── 最终检查清单
├── 测试发布流程
└── 准备描述文字
发布时:
├── 保存项目
├── 生成预览图
├── 填写场景信息
└── 确认发布
发布后:
├── 测试房间链接
├── 检查移动端体验
└── 收集用户反馈
场景描述模板
[场景名称]
简介:
[一句话描述场景的用途和特点]
特点:
• [特点1]
• [特点2]
• [特点3]
适合场景:
• [使用场景1]
• [使用场景2]
建议人数:[X] 人
预计加载时间:[X] 秒