滑轨屏触发区间与防抖:推到哪、播到哪
定位做准了,只是让电脑知道屏在哪。什么时候切内容、切成什么,是另一件事。很多滑轨屏的”不好用”,根子不在定位不准,而在触发逻辑太老实:坐标一过线就切,一退回来又切回去。
三个让人头疼的现场表现
常见情形有三种,调试阶段往往一个都没发现,开放后观众一多就全冒出来:
- 边界来回闪:观众把屏推到两个展位交界处停下,手一松屏微微回弹,画面在两段视频之间来回切,声音也跟着一截一截地断。
- 快推一路闪:孩子抓着屏从一头猛推到另一头,每经过一个展位就切一次视频,每段只播开头一瞬,屏上像在放幻灯片。
- 灯光跟着乱跳:做了灯光联动的,灯光比画面更显眼——屏还没停,墙上的射灯已经在展位间跳了好几次。
这三种情况都有一个共同点:触发条件只看位置,没看状态。屏在不在区间里只是必要条件,屏是不是停稳了、是不是只是路过、是不是在边界抖,这些都得加进判断。
本文讲的方法对两种定位路线都适用:连续定位下,“区间”是软件里按坐标划出来的;离散点位下,“区间”就是感应器的触发范围。两条路线的差别见滑轨屏定位方式对比。
五个参数,各管一件事
| 参数 | 管的问题 | 设大了会怎样 | 设小了会怎样 |
|---|---|---|---|
| 触发区间宽度 | 屏在多大范围内算”到了这个展位” | 相邻展位可能重叠,停在中间也触发 | 观众要停得很准才触发,体验发涩 |
| 滞回(进出不同宽) | 边界来回抖时不反复切 | 离开展位后内容迟迟不切 | 起不到防抖作用 |
| 死区 | 两个展位之间的”谁都不算”地带 | 展位间空白过长,画面停留在过渡态 | 边界抖动直接跨到另一个展位 |
| 速度阈值 | 快速路过时不触发 | 观众慢慢推也不触发 | 快推时照样一路闪 |
| 停稳时间 | 屏停下多久才算真的停了 | 停下后要等很久才播,显得反应慢 | 手刚松开、屏还在回弹就触发 |
这些参数都没有通用数值,取决于展位宽度、屏宽、轨道阻尼、观众习惯,要在现场按下面的方法调。下面逐个讲。
触发区间与滞回:解决”边界来回闪”
区间怎么划
以展位中心为基准,左右各延伸一段,形成这个展位的触发区间。展位中心坐标来自方案阶段那张带坐标的立面图,见滑轨电视墙方案。区间宽度一般不超过展位宽度,相邻两个区间之间要留出间隙。
滞回:进门窄、出门宽
最关键的一招是滞回:进入区间和离开区间用两个不同的边界。
- 进入条件:屏中心进入”内圈”才算到达;
- 离开条件:屏中心退出”外圈”才算离开;
- 内圈比外圈窄。
这样,屏在内圈边界附近小幅抖动时,因为还没退出外圈,状态不会改变;只有真正推离了一段距离,才判定离开。这和电子电路里施密特触发器的思路一样,用一段”缓冲带”吃掉来回的小抖动。
死区:展位之间留空
相邻两个展位的外圈之间,再留出一段不属于任何展位的死区。屏在死区里时,画面可以保持上一个展位的内容,或者播放一段通用的过渡画面。死区的作用是:屏从一个展位推往下一个展位时,中间有一段”谁都不是”的距离,不会出现两个展位的判定挨着甚至重叠。
速度阈值:解决”快推一路闪”
观众快速推过时,屏会在每个展位的区间里停留很短时间。只看位置的话,每经过一个区间都会触发一次。
解决办法是在触发条件里加上速度:用最近一小段时间内的坐标变化算出当前速度,速度超过阈值时不触发新内容,只更新”当前经过的展位”这个内部状态。等屏慢下来、停在某个区间里,再触发该展位的内容。
速度怎么算要注意两点:
- 别只用相邻两帧:坐标本身有小抖动,相邻两帧一除,速度会忽大忽小。用一小段时间窗内的首尾坐标算,或者对速度做平滑;
- 阈值用符号先定,再现场调:假设把阈值设为 V,先让几个人用正常参观的速度推,观察速度读数的范围,再让人用”快推”的方式推,看两者能不能被 V 分开。分不开,说明需要配合停稳判定一起用。
离散点位方案拿不到连续坐标,可以用”两个相邻感应器被触发的时间差”粗略估算速度:时间差很短,说明是快速路过。
停稳判定:解决”灯光跟着乱跳”
什么叫停稳
屏进入区间、速度也降下来了,还不能马上触发——手推式的屏在观众松手后可能还会滑一小段,或者轻轻回弹。停稳判定要求:屏在一个很小的位置范围内保持了一段时间,才算真正停下。
用符号表示:最近 T 时间内,坐标的最大值和最小值之差小于 D,就判定为停稳。T 和 D 都要现场调:T 太长显得反应迟钝,T 太短挡不住回弹;D 太大会把慢推当成停稳,D 太小会被坐标本身的小抖动卡住永远判不了停稳。
停稳之后再联动
内容切换和灯光联动都放在”停稳”之后触发,而不是”进入区间”时触发。电动轨道也一样:电机到位、驱动器报告停止后再切内容,比按位置提前切更稳。电动轨道的到位信号怎么拿,见电动滑轨怎么控制。
有一种折中做法值得考虑:进入区间且速度降下来时,先切画面(让观众感觉响应快),停稳后再切灯光和声音(这两者乱跳更扎眼)。
把它们串成一个状态机
把上面几个参数组合起来,触发逻辑可以写成一个简单的状态机:
| 状态 | 含义 | 进入下一状态的条件 |
|---|---|---|
| 待机 | 无人推动,循环播放当前内容或待机内容 | 坐标开始变化 → 移动中 |
| 移动中 | 屏在动,只更新位置不触发内容 | 进入某展位内圈且速度低于阈值 → 停稳确认 |
| 停稳确认 | 等待屏真正停下 | 满足停稳条件 → 播放;又开始移动 → 移动中 |
| 播放 | 播放该展位内容、联动灯光 | 退出外圈 → 移动中;长时间无操作 → 待机 |
状态机的好处是每种异常都有明确归属:来回闪是”播放 → 移动中”的出门条件太松,快推一路闪是”移动中 → 停稳确认”缺少速度阈值判断,灯光乱跳是联动放在了错误的状态里。出问题时对着表查,比在一堆 if 里翻要快得多。
长时间无人操作后怎么回到待机、是否自动回位,属于播放功能设计,见互动滑轨屏播放功能设计。
坐标本身在跳:先过滤再判断
以上都假设坐标是”干净”的。如果定位数据本身偶尔跳变(测距光路被挡、线缆干扰),再好的状态机也会被带歪。所以在进入状态机之前,坐标要先过一道滤:
- 合理性过滤:相邻两次坐标差出屏物理上不可能达到的距离,直接丢弃,沿用上一个可信值;
- 轻度平滑:对坐标做简单的滑动平均,吃掉小幅抖动。注意平滑会带来延迟,连续滚动长卷的画面跟随对延迟敏感,平滑不能过头;
- 数据中断保护:一段时间收不到坐标,画面停在最后可信位置,不要乱跳。
坐标跳变的来源和接入端的处理,见编码器接入电脑;如果是慢慢漂移而不是跳变,那是标定和校正的问题,见滑轨定位精度怎么调整。
离散点位的防抖
离散点位方案的感应器是开关量,也会抖:遮光片或磁铁停在感应边缘时,信号会在”有”和”无”之间反复翻转。处理思路一样:
- 时间防抖:信号翻转后保持一段时间不变才认可;
- 只认进入沿:一个点位被触发后,直到另一个点位被触发之前,不再响应这个点位的反复翻转;
- 配合停稳:如果轨道上还有别的定位手段,可以等屏停下后再确认当前点位。
现场调参的顺序
- 先调停稳判定:让人正常推、正常松手,把 T 和 D 调到回弹不触发、停下后反应不迟钝;
- 再调滞回和死区:故意把屏停在展位边界,轻轻晃动,调到画面不再来回切;
- 最后调速度阈值:让人快推一趟、慢推一趟,调到快推不闪、慢推正常;
- 所有参数写进配置文件,不写死在代码里,交付文档里注明每个参数的含义和调整方向。
常见问题
连续滚动长卷的滑轨屏也需要防抖吗? 画面跟随本身不需要,坐标变了画面就该跟着动。但长卷方案里往往还有”到某个位置弹出详情""停下后播放解说”之类的触发,这些照样需要区间、滞回和停稳判定。
加了这么多判断,会不会让画面反应变慢? 会有一点,这是取舍。常见做法是画面跟随和内容触发分开处理:画面跟随追求实时,内容切换和灯光联动追求稳定,两者用不同的逻辑。
参数调好了,换一批观众又不行了? 可能是参数调得太贴近调试人员的习惯。调参时找几个不同的人来推,包括推得快的、推得犹豫的,参数要能覆盖这些情况。
延伸阅读
两种定位路线的差别,看滑轨屏定位方式对比;坐标怎么从编码器进到电脑,看编码器接入电脑;画面怎么和墙面图文对齐,看滑轨屏内容和墙面怎么对齐;上位机按位置播放的几种实现,看滑轨屏软件开发;已经在现场出现卡顿或漂移,按滑轨屏卡顿与定位漂移排查去查。
参考资料:CSDN:《滑轨电视互动原理》技术博文(点位触发与连续定位的公开描述)。
滑轨屏装好了,画面却在边界来回切、快推时一路闪?把定位方式、展位划分和现场表现发给我们,联系我们一起调触发逻辑。更多滑轨屏的结构、定位与内容做法,逛滑轨屏技术方案。
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。