设想一条这样的反馈:“我和朋友比60秒深蹲,他做了50个,我做了32个,可我每一下都蹲到大腿和地面差不多平行。”打开回放就能看出差别,朋友的膝盖只弯了不到一半就站起来,节奏很快,系统照样给他计了数。这并不说明玩家有多狡猾,而是规则本身留了口子:只要半蹲也能被算成一次,竞技模式就会把所有人往浅处推。
在深蹲竞技的整体评分设计里,九游体育已经讨论过如何综合标准度、节奏和稳定性。这篇只聚焦一个更窄的问题:系统凭什么认定“这一下蹲够了”,以及当玩家没蹲够时,应该在什么时候、用什么方式告诉他。
先把一次深蹲拆开:下降、到达深度、回到站立
摄像头看到的是一串连续的身体关键点。以 MediaPipe Pose 这类模型为例,每帧会输出33个关键点,其中髋、膝、踝三点决定膝角,髋部与膝盖的相对高度决定下蹲深度。如果把“膝角小于某个值”直接当成一次,玩家只要在门槛附近上下晃动,就可能被连续计数。
更稳妥的做法是把一次深蹲看成几个状态依次完成:
站立 → 下降 → 到达目标深度 → 上升 → 回到站立
只有状态按顺序走完,才生成一次有效次数(Valid Rep)。进入“到达深度”用一个门槛,离开底部、回到“站立”又用另一个门槛,两者之间留出缓冲区,关键点在门槛附近抖动时就不会被重复触发。半蹲的问题也因此变得清楚:它卡在“下降”和“到达深度”之间,没有完成关键状态,自然不产生计数。
统一的膝角门槛会误伤人:腿长、柔韧性和机位都在改变“到位”
很多健身游戏用一个固定角度作为深度标准,比如示例设定里的“膝角小于100度算蹲到位”。问题是同样的膝角,在不同身体上的意义并不相同。大腿明显长于小腿的玩家,要达到同样的髋部高度,躯干往往需要更大的前倾;踝关节活动度有限的人,膝角还没到门槛,髋部可能已经接近膝盖高度。固定门槛对一部分人偏严,对另一部分人又偏松。
所以九游体育在Form这一层使用的是个体化深度:
- 身体比例:来自首次动作校准时记录的身高、大腿与小腿的长度比例,用来换算髋部下降到哪个相对位置算到位。
- 髋部高度为主:以髋部相对膝盖的高度作为深度的主要依据,膝角作为辅助,而不是反过来。
- 机位修正:侧面拍摄与正面拍摄时,髋膝的投影高度差会被不同程度地压缩,系统根据校准时的视角做归一化,避免因为手机摆放位置不同而得出不同的深度结论。
个体化并不等于放水。目标深度有统一的下限,任何人都不能把“稍微屈膝”校准成标准深蹲;它解决的是同一套规则在不同身体上是否一样严格。
有效次数怎么判:先看状态是否完整,再谈快慢
到了Score这一层,判定顺序很重要。系统先回答“这一下是否成立”,再去评价速度、节奏和稳定性。下面是一套示例设定:
| 情况 | 判定 | 对竞技分数的影响 |
|---|---|---|
| 达到个体目标深度并回到站立 | 有效次数 | 计数,并参与速度与稳定性加分 |
| 下降到目标深度的七成左右就折返 | 未达深度 | 不计数,记入训练记录 |
| 到达底部但没有站直就开始下一次 | 未完成回位 | 不计数,提示“先站直” |
| 髋或膝关键点 Confidence 过低 | 无法判定 | 不计数也不判错,提示调整机位 |
最后一行容易被忽略。当沙发挡住膝盖,或者光线太暗导致关键点置信度下降时,系统不应该把“看不清”当成“没蹲到”。给出明确的“无法判定”,并提示玩家后退一步或调整摄像头,比强行判错更公平,也不会让认真做动作的人被冤枉。
提醒要出现在底部附近,而不是出现在结算页
半蹲问题的另一半在于反馈时机。如果系统等60秒结束才告诉玩家“你有18次没蹲到位”,玩家既不知道是哪几次,也没有机会调整。更有用的提示发生在动作过程中:当髋部下降停止并开始上升,而深度还没到目标时,系统立刻给出“再低一点”的语音,屏幕上的深度条同时变色。
这里要处理两件事。第一是延迟:从摄像头采集到提示出现,中间有检测、姿态估计和判定的耗时,提示如果晚到半秒,玩家已经站起来了,所以底部判断通常用下降速度接近零作为信号,而不是等上升过程走完。第二是提示频率:同一组里连续出现未达深度时,只在前几次给出具体语音,之后改为深度条持续显示,避免语音不停打断节奏。
没蹲够的那几下去了哪里:进入训练记录,调整下一轮
在Challenge与Progress层,未达深度的动作不会出现在排行榜上,但也不会被丢弃。它们会被记入训练记录,用来区分两种情况:一种是整组从头到尾都偏浅,说明目标深度对这位玩家当前的活动度可能偏高,下一轮会先用“深度练习”替代限时挑战;另一种是前半组都达标、后半组逐渐变浅,这更像疲劳导致的幅度缩短,下一轮更合理的调整是减少次数或插入休息,而不是降低深度标准。
短期状态和长期能力因此被分开记录:今天后半组变浅,不会立刻改写这位玩家的目标深度;连续多次训练都能稳定达到目标,系统才会考虑让深度提示更精细。更多玩法可以在AI健身竞技栏目中查看。