「油罐中的水粒子視界」 teamLab 技術賞析——主要技術簡析
- 2019 年 10 月 8 日
- 筆記
由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).