253 lines
5.9 KiB
Markdown
253 lines
5.9 KiB
Markdown
# VR测试说明
|
||
|
||
## 📋 测试条件说明
|
||
|
||
### 🎮 VR测试的两种模式
|
||
|
||
#### 1. 模拟模式(推荐用于开发和调试)
|
||
- **无需VR硬件**
|
||
- **无需SteamVR**
|
||
- **无需ALVR服务器**
|
||
- 自动启用,当真实VR不可用时
|
||
- 模拟头盔和控制器追踪数据
|
||
- 立体渲染显示到窗口
|
||
- 适用于功能测试和开发
|
||
|
||
#### 2. 真实VR模式(需要完整VR设备)
|
||
- **需要VR头盔**
|
||
- **需要SteamVR运行**
|
||
- **需要ALVR服务器(Quest无线)**
|
||
- 真实的6DOF追踪
|
||
- 立体渲染到VR头盔
|
||
- 完整的VR交互体验
|
||
|
||
## 🔧 软件要求
|
||
|
||
### 必需依赖
|
||
```bash
|
||
# 安装VR相关依赖
|
||
pip install -r requirements/vr-requirements.txt
|
||
|
||
# 主要包含:
|
||
# - openvr>=1.26.7
|
||
# - psutil>=5.9.0
|
||
# - numpy>=1.21.0
|
||
# - Pillow>=9.0.1
|
||
```
|
||
|
||
### 系统要求
|
||
- Python 3.8+
|
||
- Panda3D
|
||
- PyQt5
|
||
- OpenGL支持的显卡
|
||
|
||
## 🎮 硬件要求(完整VR模式)
|
||
|
||
### 最低硬件要求
|
||
- **显卡**: GTX 1060 / RX 580 或更好
|
||
- **内存**: 8GB RAM
|
||
- **处理器**: Intel i5-4590 / AMD FX 8350 或更好
|
||
- **USB**: 至少1个USB 3.0端口
|
||
|
||
### 支持的VR头盔
|
||
- **Quest 2/3**: 有线(USB-C)或无线(ALVR)
|
||
- **Valve Index**: DisplayPort + USB 3.0
|
||
- **HTC Vive**: HDMI + USB 3.0
|
||
- **其他OpenVR兼容设备**
|
||
|
||
## 🌐 连接方式
|
||
|
||
### 有线连接
|
||
1. **Quest 2/3**: USB-C数据线连接PC
|
||
2. **Valve Index**: DisplayPort + USB 3.0
|
||
3. **HTC Vive**: HDMI + USB 3.0
|
||
|
||
### 无线连接(推荐Quest)
|
||
1. **下载ALVR服务器**: [GitHub](https://github.com/alvr-org/ALVR)
|
||
2. **在PC上运行ALVR服务器**
|
||
3. **在Quest上安装ALVR客户端**
|
||
4. **连接到同一Wi-Fi网络(5GHz推荐)**
|
||
|
||
## 🔄 启动顺序
|
||
|
||
### 完整VR模式启动顺序
|
||
1. **连接VR头盔**到PC
|
||
2. **启动SteamVR**
|
||
3. **(可选)启动ALVR服务器**(Quest无线)
|
||
4. **运行VR测试脚本**
|
||
|
||
### 模拟模式启动顺序
|
||
1. **直接运行VR测试脚本**
|
||
2. **系统会自动切换到模拟模式**
|
||
|
||
## 📊 测试项目说明
|
||
|
||
### 1. 基本VR功能测试
|
||
- VR系统初始化
|
||
- 控制器检测
|
||
- 追踪数据获取
|
||
- 立体渲染测试
|
||
|
||
### 2. VR模拟模式测试
|
||
- 强制启用模拟模式
|
||
- 模拟数据更新
|
||
- 控制器输入模拟
|
||
- 立体渲染显示
|
||
|
||
### 3. ALVR串流测试
|
||
- ALVR服务器连接
|
||
- 串流质量设置
|
||
- 触觉反馈测试
|
||
- 串流开关控制
|
||
|
||
### 4. VR GUI控制面板
|
||
- 图形界面控制
|
||
- 实时状态监控
|
||
- 参数调整
|
||
- 系统开关
|
||
|
||
### 5. VR交互功能测试
|
||
- 控制器射线显示
|
||
- 手势识别
|
||
- 对象交互
|
||
- 输入处理
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 开发和调试(推荐)
|
||
```bash
|
||
# 直接运行,会自动使用模拟模式
|
||
python vr_test.py
|
||
|
||
# 选择 "2. VR模拟模式测试"
|
||
```
|
||
|
||
### 完整VR测试
|
||
```bash
|
||
# 确保VR设备已连接并启动SteamVR
|
||
# 然后运行
|
||
python vr_test.py
|
||
|
||
# 选择 "1. 基本VR功能测试"
|
||
```
|
||
|
||
## 💡 故障排除
|
||
|
||
### 常见问题
|
||
|
||
#### 1. OpenVR初始化失败
|
||
**现象**: 显示"OpenVR初始化失败"
|
||
**解决方案**:
|
||
- 检查SteamVR是否运行
|
||
- 确认VR头盔被系统识别
|
||
- 重启SteamVR和头盔
|
||
- 系统会自动切换到模拟模式
|
||
|
||
#### 2. 控制器未检测到
|
||
**现象**: 控制器显示"未连接"
|
||
**解决方案**:
|
||
- 确保控制器已配对
|
||
- 检查控制器电量
|
||
- 在SteamVR中重新配对
|
||
- 模拟模式下会显示模拟控制器
|
||
|
||
#### 3. ALVR连接失败
|
||
**现象**: ALVR串流测试失败
|
||
**解决方案**:
|
||
- 确保ALVR服务器正在运行
|
||
- 检查Quest上的ALVR客户端
|
||
- 确认PC和Quest在同一网络
|
||
- 使用5GHz Wi-Fi网络
|
||
|
||
#### 4. 性能问题
|
||
**现象**: 帧率低或卡顿
|
||
**解决方案**:
|
||
- 降低渲染分辨率
|
||
- 关闭不必要的后台程序
|
||
- 检查显卡驱动更新
|
||
- 使用模拟模式进行开发
|
||
|
||
### 日志分析
|
||
测试过程中的详细日志可以帮助诊断问题:
|
||
- `✓` 表示成功
|
||
- `⚠` 表示警告(非致命)
|
||
- `✗` 表示失败
|
||
- `🔧` 表示配置或调试信息
|
||
|
||
## 📈 性能优化建议
|
||
|
||
### 开发阶段
|
||
1. **使用模拟模式**进行功能开发
|
||
2. **降低渲染分辨率**提高帧率
|
||
3. **关闭不必要的特效**
|
||
4. **使用性能分析工具**
|
||
|
||
### 生产部署
|
||
1. **使用真实VR模式**
|
||
2. **根据硬件配置调整质量**
|
||
3. **启用异步时间扭曲**
|
||
4. **优化渲染管线**
|
||
|
||
## 🔍 调试技巧
|
||
|
||
### 1. 检查VR系统状态
|
||
```python
|
||
# 在代码中添加调试信息
|
||
vr_info = world.getVRInfo()
|
||
print(f"VR模式: {vr_info['mode']}")
|
||
print(f"模拟模式: {vr_info['simulation_mode']}")
|
||
```
|
||
|
||
### 2. 监控性能
|
||
```python
|
||
# 获取VR系统状态
|
||
status = world.getVRStatus()
|
||
print(f"VR启用: {status['vr_enabled']}")
|
||
print(f"控制器数量: {len(status['controllers'])}")
|
||
```
|
||
|
||
### 3. 测试特定功能
|
||
```python
|
||
# 强制启用模拟模式
|
||
world.vr_manager.enable_simulation_mode()
|
||
|
||
# 更新模拟数据
|
||
world.vr_manager.update_simulation_data('head_pose', new_data)
|
||
```
|
||
|
||
## 📚 API参考
|
||
|
||
### VR系统控制
|
||
- `world.initializeVR()` - 初始化VR系统
|
||
- `world.shutdownVR()` - 关闭VR系统
|
||
- `world.isVREnabled()` - 检查VR状态
|
||
- `world.getVRInfo()` - 获取VR信息
|
||
|
||
### 模拟模式
|
||
- `world.vr_manager.enable_simulation_mode()` - 启用模拟模式
|
||
- `world.vr_manager.get_simulation_data()` - 获取模拟数据
|
||
- `world.vr_manager.update_simulation_data()` - 更新模拟数据
|
||
|
||
### ALVR串流
|
||
- `world.initializeALVR()` - 初始化ALVR
|
||
- `world.startALVRStreaming()` - 开始串流
|
||
- `world.stopALVRStreaming()` - 停止串流
|
||
- `world.setALVRStreamQuality()` - 设置质量
|
||
|
||
### VR输入
|
||
- `world.startVRInput()` - 启动输入处理
|
||
- `world.showControllerRays()` - 显示控制器射线
|
||
- `world.getAllControllers()` - 获取所有控制器
|
||
- `world.getControllerState()` - 获取控制器状态
|
||
|
||
## 🎯 总结
|
||
|
||
现在的VR测试系统具有以下优势:
|
||
|
||
1. **自动适应**: 自动在真实VR和模拟模式之间切换
|
||
2. **开发友好**: 无需VR硬件即可开发和测试
|
||
3. **完整功能**: 支持所有VR功能的测试
|
||
4. **详细反馈**: 提供清晰的状态信息和错误提示
|
||
5. **灵活配置**: 可根据需要调整各种参数
|
||
|
||
无论您是否拥有VR设备,都可以使用这个测试系统来验证VR功能的正确性。 |