一、为什么 kDesktop 作为竖屏 App,在进行“相机跟练”时却要求手机横屏放置?
核心原因在于,当前动作脚本的生成逻辑是以横屏分辨率作为参考基准设计的。具体体现在以下两个方面:
姿态点距离计算基于横屏坐标系
在开发与测试过程中,所有关节点的 X 轴距离、Y 轴距离及两点间欧氏距离的空间关系阈值,均是在横屏图像坐标系(典型分辨率为 1280×720)下完成标定和验证的。这并非出于理论偏好,而是由开发阶段的实际工作环境决定——开发人员在电脑上调试时,始终以横屏 USB 摄像头输入图像给 MediaPipe,因此所有参考值和判定标准都必须基于这一基准坐标系才能有效工作。若直接切换为竖屏坐标系(如 720×1280),由于坐标映射关系已发生改变,原先在横屏下标定的阈值将不再适用,判定逻辑会出现系统性偏差。因此,当前所有姿态判断逻辑均以横屏坐标系为统一基准,确保脚本数据与实际测试环境一致。
- 相机标定阶段基于横屏假设
在初始标定流程中,要求相机以“恰当”的位置和角度摆放,以获得更优的 33 个姿态点检测效果。这一标定过程中的画面构图、人物占比和视野范围,均是按照横屏取景框进行设计的。
为什么选择横屏作为统一标准,而不是竖屏?
这主要是出于跨设备兼容性的考虑。在实际使用场景中,不少用户在电脑上连接 USB 摄像头进行跟练,而市面上大多数 USB 摄像头本身就是为横屏使用而设计的(感光元件和镜头视野均为横向)。为了在 PC 和手机两端保持一致的用户体验,我们统一采用横屏作为默认方案。
至于手机端竖屏录制是否更有优势(例如在站立做操时能提供更多的垂直方向活动空间),这是未来可以优化的方向。我们计划后期为每个动作脚本增加一个“是否横屏”的配置字段,以实现更灵活的适配。但在当前阶段,所有脚本文件均仅支持横屏模式。
为什么录制时用的是竖屏窗口,却要求手机横屏放置?
这里涉及 kDesktop 的窗口方向与实际录制的图像方向的关系。
kDesktop 是一款竖屏应用,绝大多数使用场景下都保持竖屏显示。如果为了录制而强制将整个 App 的界面方向切换为横屏,将会导致大量 UI 布局和交互逻辑需要适配,开发成本高且维护困难。
因此,我们采用的方案是:保持 App 窗口竖屏,但让手机物理横屏放置。
此时,系统捕获到的原始画面尺寸为竖屏比例(如 720×1280)。为了让最终送给 MediaPipe 的图像符合横屏预期,我们会对画面进行旋转处理,将其转换为横屏尺寸(如 1280×720)。
由于手机本身是横屏放置的,旋转后的图像内容与真实世界的物理方向是对应的——横屏输出、横屏内容、横屏坐标,三者保持一致,因此送入 MediaPipe 的姿态检测结果是准确且符合预期的。
总结
| 维度 | 说明 |
| 为什么横屏 | 脚本生成、距离计算、标定流程均基于横屏坐标系 |
| 为何不直接切横屏窗口 | 竖屏 App 改为横屏涉及大量 UI 改动,维护成本高 |
| 如何实现横屏图像 | 物理横屏放置 + 竖屏窗口捕获 + 画面旋转至横屏尺寸 |
| 最终效果 | 送给 MediaPipe 的图像为横屏,坐标映射正确,检测结果准确 |
-----------------