“油罐中的水粒子视界” teamLab 技术赏析——主要技术简析

  • 2019 年 10 月 8 日
  • 筆記

由上篇文章,我们介绍了teamLab在上海的光影艺术展览。在这篇文章中,我们将简析其背后的技术。

由teamLab公众号文章中说到。

作品是通过电脑程式实时地不断进行描绘,并不是将预先制作好的影像进行放映。从整体来说,并不是复制以前的状态,而是受到观赏者的行为举动的影响,不断地持续进行变化。眼前这一瞬间的画面,错过就无法再看到第二次了。并且,花朵会因为受到【油罐中的水粒子世界】中水流的影响而凋谢,飘落。 teamLab,公众号:teamLabArtteamLab将为上海油罐艺术中心举办开幕展

我们可以提炼出几个关键词。

实时动画人体动作追踪基于投影的增强现实

实时动画。在teamLab的光影艺术中,我们可以看到水流动画的模拟,花朵盛开凋谢的动画等。这些都属于图形学物理模拟动画的范畴。我不太熟悉这方面知识,只能列出一些资源。

基于GPU算法实现一个快速的流体动态模拟的交互动画。[1]

Github上也有很多关于流体模拟的开源代码。比如Google的LiquidFun。

关于流体模拟的教程,在GPU Gems上有详细介绍[3]。

在teamLab的展厅中,还有一部分大量涉及了这样的流体动画。如模拟日本名画《神奈川冲浪》巨浪的流体动画。

人体动作捕捉。我在之前的文章中解析过Room2Room论文的技术。该文章使用投影仪捕捉人体,并投影到墙面。还有另一篇论文 RoomAlive [4],该论文实现了一个基于多投影的实时沉浸式游戏。

目前几乎所有的深度摄像头一定会配置这样一个基础应用:人体追踪或人脸追踪。微软的Kinect v1,Kinect One,Kinect Azure DK都配备了相应的人体跟踪模块。

(PS:关于Kinect Azure DK我将在后续文章中介绍,敬请期待。)

teamLab在巨大的油罐中也使用类似的技术实现动态人体跟踪,并实时生成三维动画。

基于投影的增强现实。类似于RoomAlive的沉浸式体验场所都会使用多投影来制作增强现实场景。

我个人猜测,teamLab团队使用Unity游戏引擎实现了基于投影的增强现实。

首先,应该配置一组硬件设备作为 投影+跟踪。如RoomAlive使用的投影仪+Kinect。

并将多组配置在一个房间中,以覆盖整个房间所有表面。

关于这样的系统。我们需要先对投影仪+Kinect这样的硬件系统做标定,得到投影仪和Kinect之间的相对位置关系、多组硬件设备之间的相对位置关系。

然后使用Kinect获取室内场景点云。将点云拼接为一个完整的室内场景模型,并分离出墙面、天花板、地板这样的结构元素。

使用Unity设计游戏场景,并将游戏场景适配于对应的室内空间,由投影仪将虚拟动画投影到室内。

在上述罗列的三种技术中,人体追踪是固定模块,由Kinect等摄像头提供。

实时三维动画,需要艺术家设计,并由程序员基于开源代码制作出相应的艺术效果。这种技术随应用场景变化不尽相同。

只有基于投影的增强现实技术是关于沉浸式体验应用的底层核心技术。后续文章,我将重点讲解其技术细节。

引用

[1] https://paveldogreat.github.io/WebGL-Fluid-Simulation/

[2] http://google.github.io/liquidfun/

[3] https://developer.download.nvidia.cn/books/HTML/gpugems/gpugems_ch38.html

[4] Jones, B. R., Sodhi, R., Murdock, M., Mehra, R., Benko, H., Wilson, A. J., … Shapira, L. (2014). RoomAlive: magical experiences enabled by scalable, adaptive projector-camera units. In Proceedings of the 27th annual ACM symposium on User interface software and technology (pp. 637–644).