
复活老旧眼镜实现 3DoF 悬停一副只能「贴脸」的 AR 眼镜一块会跟着你转头乱跑的屏幕和一次把 IMU 翻出来的折腾。一、思路把眼镜的姿态读出来眼镜里有一颗六轴 IMU陀螺仪 加速度计通过 USB HID 暴露出来VID0x1BBB、PID0xAF5064 字节报文大约 460Hz。于是整个程序的骨架就出来了眼镜 IMU ──USB HID──► 姿态解算 ──► 渲染时反向位移 ──► 眼镜里看到的画面 ▲ 手机屏幕 ──截屏/应用自绘──► 虚拟屏 ──────┘读姿态陀螺仪积分得到转动加速度计修正「哪边是上」用 Mahony 互补滤波融合成四元数渲染把手机画面贴到一块虚拟屏上用一个带透视的四边形画出来相机朝向 头部朝向的反方向画面就钉住了手机端既是配置界面也是一块触控板——相对移动光标、轻点、长按、双指滚动操作注入到眼镜那块屏。二、现在它能做什么能力说明 3DoF 悬停画面按左右/上下/翻滚反向位移尺寸、虚拟距离、视场角都能调 两种投屏形态镜像整屏整块手机屏幕/扩展屏挑一个 App 单独跑到眼镜屏上 手机当触控板相对位移光标、轻点、长按、双指滚动还有黑屏模式手机全黑、眼镜光标隐藏⚡ 免 Shizuku用无障碍服务自动确认授权弹窗、注入触摸不装 Shizuku 也能点 静止冻结停下时画面完全不动抑制漂移 断线自愈拔插重协商、6 秒无帧都会自动重挂三、项目地址github.com/kerwenfly/glass3dof_flutter/四、它还不完美老实说清楚边界没有 Shizuku 时只能用触摸点击、滑动、返回没问题键盘打不了字dispatchGesture只能模拟手势扩展屏能不能启动第三方 App看厂商脸色部分 ROM 会把应用重定向回手机屏这时得开 Shizuku 用受信屏DRM 视频是黑的Netflix、部分会员视频走硬件保护通路截屏拿不到画面无解无障碍自动化不符合 Google Play 政策所以只能侧载自用。还有一层物理极限眼镜没有磁力计也没有摄像头偏航角没有绝对参考只能靠零偏精度和偶尔的「画面复位」。想要真正的空间锚定得靠摄像头做视觉惯性里程计——那是另一个量级的事。五、最后现在的状态插上眼镜点「开始悬停」画面就钉在眼前那块空间里手机变成触控板不看手机也能操作眼镜里的内容。黑屏模式一开手机全黑、眼镜里连光标都消失躺着看电影不刺眼。代码在两个工程里glass3dof纯原生 UI看得见每一行 View 代码和glass3dof_flutterFlutter 重写的界面引擎共用。如果你也在折腾这类眼镜或者想要一个能改的 3DoF 投屏欢迎拿去改。