
等待
无人参与时,泡泡在屏幕中自主漂浮、偶尔彼此融合,装置外的灯带渐渐闪烁,泡泡机在气泡碰撞时喷出泡泡,装置以自我演示的状态等待参与者走近。
艺术互动装置

Dubble Bubble 是一件双人实时互动装置。两个人面对面站立,分别向装置两侧的交互端吹气;泡泡从屏幕中生成,向中央漂移,当两侧的形态相遇,它们连接、变形,融合成新的形态。每一次相遇的结果都不相同,也没有人能提前预知。我独立完成了它的实时视觉、全部技术链路与宣传片。
作品讨论的是交流中的“认知迷雾”。两位参与者无法事先商量,只能用呼吸,看各自的输入如何在画面中相遇、纠缠与改变。
我们想做一件关于“两个人”的作品,这个想法也是我对毕业设计构思的起点。基于这个概念,我们想到最常聊的场景是线上交流:你打出的本是询问,屏幕另一端读出的却可能是责怪。对方收到的往往只是你本意的一半,另一半由他自己的猜测补齐。我们借用“认知迷雾”这个既有名词,来解释在自己的聊天里看到的这种缺失。
我们先在小尺度上验证信息不对等的感受能否被身体感知,才谈更大的实现。设计问题由此钉下:如何让两个无法事先商量的人,用最直觉的动作形成一个共同结果。

泡泡由我最先提出。怎么把主题变成可以玩的东西?泡泡能同时承载输入、相遇与结果:呼吸是最直接的输入,抽象的信息获得形状与轨迹,两侧形态相遇即融合,而结果保留未知——谁也无法独自决定最终的形态。小组确认了这个隐喻,体验沿五个阶段展开:
横向拖动查看五个阶段 ← →

无人参与时,泡泡在屏幕中自主漂浮、偶尔彼此融合,装置外的灯带渐渐闪烁,泡泡机在气泡碰撞时喷出泡泡,装置以自我演示的状态等待参与者走近。

超声波距离传感器检测到有人进入交互区域,系统切换至可交互状态。

向交互端吹气,对应一侧生成新的泡泡。

两侧形态向中央运动,接触后连接、变形,随机落定为五种形态之一。

参与者离开,画面以粒子形式消散,回到等待状态。
我从圆形、矩形等基础几何形态出发,将它们变换成泡泡。清晰的轮廓是融合与形变的参照:没有可辨认的起点,过程就无法被追踪。

我把运动分为四段:从两侧生成,被输入推向中央,融合后向上漂浮,离开时以粒子消散。运动方向与交互顺序一致,参与者凭画面位置就能判断输入是否生效。

青、蓝、黄、红与品红的高饱和渐变,安放在深色背景上,是因为在现场:空间无法完全遮光,深色背景配高饱和形体,才能在观看距离内维持可读性。形态连接后,渐变映射重新组织颜色。
在 TouchDesigner 中,我先渲染基础轮廓,再用反馈、色阶、模糊与合成处理形体之间的连续边缘,这是融合看起来“柔软”而不是“硬碰”的关键;最后叠加渐变映射、噪声与位移,获得流动的色彩与有机的形变。
两侧泡泡相遇时,系统随机落定五种结果之一。五个名字对应交流中的五种典型处境:

Misunderstandings swell like waves.

Debating in the fog of cognition.

Information eroded in transit.

Thoughts tangle like creeping ivy.

Submerged in debate's false harmony.
参与者无法选择得到哪一种结果,只能再次吹气,用下一轮输入去改变两侧的关系。
我独立完成了传感器连接、Arduino 程序、串口通信、TouchDesigner 与全部现场技术调试;策划与实体结构由小组共同完成,平面与展陈设计由其他成员负责。


系统只有两类输入:超声波距离传感器决定“系统是否该醒来”,吹气传感器决定“画面何时出现新形态”。

传感器信号并不会被直接使用。早期原型中,Arduino 以 9600 波特率读数,每约 100 毫秒更新一次,距离阈值设为 50 厘米;进入 TouchDesigner 后还要经过转换、筛选与稳定,才驱动画面。两级过滤让现场的信号抖动不会影响最终效果。

方案里,装置曾有更大的样子:双投影包围画面,灯光引导参与者站位,交互端是定制的泡泡棒,但最终实现依然遇到问题:


横向拖动查看四次取舍 ← →
最初版本用声音传感器识别吹气,我在测试中发现不同阶段需要分别设置阈值,而现场环境声随人流与说话声持续变化——教室里可用的参数,搬进展出空间就误触发。调软件追不上环境,我更换为成本更高、但指向明确的吹气传感器;更换之后,环境声不再干扰系统。
原方案的泡泡棒几轮搭建下来,传感器与线路始终暴露在外。展示前来不及定制外壳,我们改用台灯罩与艺术灯架重组交互端:灯罩维持吹气方向的暗示,灯架内部容纳传感器与线路。它最终不是最初设想的样子,但完整。
双投影与灯光引导超出预算与周期能支撑的范围,我们改为显示器输出。画面规模变了,体验没有缩水:距离检测、吹气触发、双人输入、五种融合形态、粒子消散与自动复位均被保留。
TouchDesigner 端的视觉反馈有明显延迟,原有组件无法让参数自然过渡,叠加平滑也没有用。我放弃了那条路径,重新设计状态切换与参数过渡,重建了视觉响应。