Johnny 著名目标演示在本地浏览器中复现:https://shopify.github.io/spatial-commerce-projects/WonkaVision/
- 🎯 实时眼动追踪
- 🎨 3D圆环目标动画效果
- 🌫️ 可调节雾效和隧道背景
- 📱 响应式GUI控制界面
- 🎬 目标喷射动画系统
- 📐 离轴投影校准
3D/
├── index.html # 主入口文件
├── README.md # 项目文档
├── src/ # 源代码目录
│ ├── core/ # 核心模块
│ │ ├── main.js # 主程序入口
│ │ ├── config.js # 全局配置
│ │ └── sceneElements.js # 3D场景基础元素
│ ├── managers/ # 管理器模块
│ │ ├── backgroundGridManager.js # 背景网格管理
│ │ ├── fogManager.js # 雾效管理
│ │ ├── targetObjectManager.js # 目标对象管理
│ │ ├── textOverlayManager.js # 文字覆盖层管理
│ │ └── virtualScreenManager.js # 虚拟屏幕管理
│ ├── tracking/ # 追踪相关
│ │ └── mediaPipeHandler.js # MediaPipe处理器
│ └── ui/ # 用户界面
│ └── guiManager.js # GUI控制面板
- 现代浏览器(在谷歌浏览器上通过测试)
- 摄像头访问权限
- HTTPS环境(本地开发可使用localhost)
- 克隆项目到本地
- 使用HTTP服务器运行(不能直接打开文件)
- 访问
index.html - 允许摄像头权限
# 使用Python启动本地服务器
python -m http.server 8000
- 眼动追踪:面对摄像头,眼睛移动会实时改变3D视角
- GUI控制:右侧面板可调节各种参数
- 动画控制:支持重播目标喷射动画
- 灵敏度调节:控制眼动响应强度
- 深度校准:调节距离检测范围
- 屏幕校准:匹配实际屏幕尺寸
- 视觉效果:雾效、网格、透明度等
- Three.js - 3D图形渲染
- MediaPipe - 面部和眼动检测
- lil-gui - 控制面板界面
- 眼动追踪:基于虹膜直径估算深度距离
- 离轴投影:根据眼部位置计算视锥体
- 动画系统:缓动函数实现平滑过渡
// 追踪灵敏度
movementMultiplier: 2.5 // 左右/上下移动敏感度
depthMultiplier: 1.0 // 深度敏感度
// 深度范围
minDepth: 15 // 最小检测距离(cm)
maxDepth: 100 // 最大检测距离(cm)
// 屏幕校准
screenWidth: 34.5 // 屏幕宽度(cm)
screenHeight: 19.4 // 屏幕高度(cm)// 雾效设置
fogNear: 20 // 雾起始距离
fogFar: 90 // 雾终止距离
// 网格设置
gridCellSize: 4 // 网格单元大小
tunnelLength: 120 // 隧道长度-
眼动追踪不准确
- 调节FOV参数匹配自己的设备,直至深度等坐标计算合适
- 确保充足光线环境
- 调节深度范围参数
-
性能问题
- 降低网格密度
- 减少目标对象数量
- 关闭不必要的效果
在 mediaPipeHandler.js 中取消注释调试日志:
console.log(`Video Width: ${videoElement.videoWidth}, FOV: ${appParams.fov}`);