本文写的是我们实际交付过的项目,技术细节未作修改;客户主体按行业与规模做了脱敏处理。
某植物科普场馆家族树互动墙:投影只叠交互层,树是打印的
这是一面植物家族树互动墙。观众走到墙前,用手指点墙上某一个「科」的标签,对应的科普介绍就弹出来。
一个反直觉的方案选择:树不是投出来的
做互动墙最容易想到的做法是:整棵树都用投影打出来,交互和画面都归软件管。
这个项目没这么做。树是物理打印的灯箱片,直接贴在墙上;天花板的投影仪不渲染树背景,只叠加交互层——涟漪、高亮、弹窗。
这样拆有几个实打实的好处:
画质。 一棵植物家族树上密密麻麻是科名、拉丁名、细枝末节的插画。投影打这种高密度细节,观众凑近看就是糊的;而打印灯箱片是印刷精度,凑到眼前也清晰。
亮度。 科普馆的环境光通常不暗,投影打大面积浅色背景会被环境光冲淡,整面墙发灰。灯箱是自发光的,不吃这个亏。
故障降级。 这是最关键的一条。投影仪坏了、软件挂了,这面墙仍然是一面完整可读的科普展板,观众照样能看内容,只是不能点。如果整棵树都靠投影,设备一停这面墙就是块白板。
代价是软件端变复杂了:它必须知道墙上每个标签的精确位置,才能在对的地方叠对的效果。
对齐是这个项目的命脉
投影画面和打印墙必须像素级对上,否则观众点的是「蔷薇科」,高亮却糊在旁边的「百合纲」上。
对齐要解决两件事:
一是拿到墙的原始坐标。 最理想的输入是设计端的分层源稿(AI/PSD/CDR),可以写脚本自动把每个标签的坐标提取出来,误差最小、还省掉人工量取。次一等是送印用的导出成品图——必须是导出文件而不是现场翻拍,翻拍会带透视畸变,一畸变整套坐标就废了。同时还要拿到设计画布的像素尺寸和墙体的实际物理尺寸(mm),两者一比才能建立换算关系。
二是现场标定。 投影仪装在天花板上,投出来的画面和墙面之间必然有梯形畸变和位置偏移。这一步没法在办公室完成,必须在现场把打印墙的四角在投影画面中的位置标出来,让软件建立投影坐标系到墙面坐标系的映射。所以排期时要专门跟场馆要一段能在墙前调试的时间——这个时段经常被忽略,等到了现场才发现展厅白天要开放、只能等闭馆后调。
触摸怎么来的
输入走 TUIO 协议(TUIO 1.1,UDP 3333),对接的是青华 InteractionEngine_Pro 这类互动引擎设备。
现场要确认的几个点:
- 感应区覆盖范围是否和打印墙对得上;
- TUIO 的坐标方向是否需要翻转——这个不核对的话,会出现「点左边亮右边」的镜像问题;
- 观众是手指直接点(触摸框)还是隔空挥动(雷达)。这条决定误触阈值和热区大小:隔空的话精度差得多,热区必须放大,否则观众怎么点都点不中。
开发期软件保留了鼠标回退——即便配置成 TUIO 输入模式,没有雷达在场也能用鼠标点着调试,不然每改一次都要跑现场。
多人同时点怎么办
科普馆的观众是成群来的,一面墙前经常同时站好几个人。
所以弹窗不是「同时只能开一个」的模式,而是允许多个共存:同屏最多 6 个弹窗(max_popups),每个停留 30 秒后自动收(popup_timeout_sec)。这两个值都是配置项,现场可以按实际人流密度调——人少的场馆可以把停留时间放长,人挤的时候调短,避免屏幕被十几个弹窗糊满。
内容侧的一个现实问题
这棵树上有 83 个科。项目里必须提前问清楚的是:这 83 个科是不是每一个都有内容,还是只有其中一部分有。
没有内容的科被点到时要有明确表现——是完全无反应,还是提示「暂无介绍」。这个不定义清楚,现场就会出现观众反复点某个标签、以为设备坏了的情况。
内容交付格式上,最省事的是一张 Excel/CSV,列是科ID|中文名|拉丁名|正文|图片文件名|视频文件名,图片视频按文件名单独打包,然后走脚本批量导入。这比一个个手工录入靠谱得多,也便于甲方那边组织人分头写。
可复用的经验
能用物理介质承载的静态内容,就别用投影去渲染。 投影负责「变化的部分」,物理介质负责「不变的部分」——画质、亮度、故障降级三头都占。
现场标定时段必须写进排期。 它不是「装完调一下」的收尾工作,是决定整个交互能不能用的关键环节。
隔空和触摸是两套热区参数。 立项时就要问清楚观众是碰得到墙还是碰不到。