同事有研究AR的,所以学习一下,近日看一份外面的研究报告,题目貌似很有料,可惜有两个严重的混淆。一、虚拟现实和增强现实的混淆;二、立体成像和平面3D的混淆。所以整篇报告虽然作者查阅并归纳很多信息,终是说不清道不明。故在网上翻翻,写下这篇笔记。文中关于虚拟社会游戏,运营者努力报纸虚拟设备中币值的稳定,深以为然,稳定货币无论在虚拟社会还是现实社会都很重要。
增强现实(Augmented Reality),是一種實時地計算攝影機影像的位置及角度並加上相應圖像的技術,這種技術的目標是在螢幕上把虛擬世界套在現實世界並進行互動。即虚拟和实际结合+即时互动+3D。
增强现实和虚拟现实(VR)这两个词很相近,但增强现实强调了虚拟和现实的结合,更靠近现实世界,目的是更为了解现实的信息,而虚拟现实是将现实镜像搬入虚拟世界中。梦境是VR,产生幻觉是AR。(这样的类比我居然能给出,哈哈)
立体3D
立体3D就是3D电影,3D电视这类需要带眼镜辅助,或者裸眼3D。原来就是人用两只眼睛看东西。基于三维立体的增强现实的例子就是带眼罩式的眼镜或者头盔,在人的视野将虚拟信息和实际影像相结合,计算人视线(方向、角度),或通过摄像镜头所得图像进行检索分析。在Star Trek的NGN系列中有黑人工程师的眼罩,以及经常出问题的全息影像房。到了终极,就像黑客帝国中,到底是庄周梦蝶还是蝶梦庄周。
手机上的AR和平面3D
手机只是增强现实的其中一个载体,还有电影技术、眼镜等等。在智能手机上,AR也是一个研究热点。有个招牌式应用就是手机图像和显示图像重叠,然后在手机图像是现实相应的信息。这是在百度上search的一张图片(Google有些问题)。这类图片都是经过艺术加工,虚拟和现实呈现相同的景深。注意:2D不存在景深,即使裸眼3D,景深也很小,所以不是真实效果图。对于人眼焦距的调节,3D影响将很有帮助,2D也无所谓,我们一直就是这样看星图的。
AR由于包括图形信息处理和分析,数据信息,因此AR技术也将利用云计算实现,终端主要用户数据采集和内容/信息呈现。3D技术目前不能解决景深(这是3D电影和裸眼3D技术,这类的屏目前还没有用在手机上),但是能解决立体(平面立化),可以向用户传递更多的信息。
在互联网上传递3D信息有:1、先驱者W3C的VRML,效果一般,终于VRML97;2、VRML改名Web3D,制定了XML格式的X3D。wiki(zh)是这样介绍的:X3D是一种专为万维网而设计的三维图像标记语言。全称可扩展三维(语言),是由Web3D联盟设计的,是VRML标准的最新的升级版本。 X3D基于XML格式开发,所以可以直接使用XML DOM文档树、XML Schema校验等技术和相关的XML编辑工具。目前X3D已经是通过ISO认证的国际标准。
X3D可通过X3DOM可以通过WebGL和JavaScript,无需plugin来实现。
X3DOM is a framework for integrating and manipulating (X)3D scenes as HTML5 DOM elements that are rendered via WebGL. The system allows defining 3D scene description and runtime behavior declaratively, without any low-level JavaScript or GLSL coding.
WebGL is based on OpenGL ES 2.0 and is a JavaScript API for rendering interactive 3D graphics and 2D graphics within any compatible web browser without the use of plug-ins. It uses the HTML5 canvas element and is accessed using Document Object Model interfaces. Automatic memory management is provided as part of the JavaScript language.WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.
我们注意到WebGL的Delevoper是WebGL Working Group,而不是W3C,从标准的角度看,HTML5并不包含WebGL,但是由于WebGL是JS的API,也可以通过X3DOM混入到HTML5中,通常作为整体的HTML5解决方案一共出现。如果在讨论HTML5是否支持3D,是要注意。单纯HTML5来将,CSS3可以支持一些简单的3D效果,例如翻页之类,见http://desandro.github.com/3dtransforms/,但这些只是2D图片通过透视、缩放、旋转等效果,不支持动画,类似于clutter的无动画情况,它自称是3D transforms,加上transforms,算不算3D,见仁见智,我认为不算。纠结于这些,在于回答“HTML5是否支持3D”。但浏览器可以支持3D。
应用例子
导航类的信息展现。商品展现(例如试衣魔镜)。3D游戏(又一摧残青少年视力和身心的业务),有立体和平面3D游戏,立体3D如在Star Trek中有一个打球的虚拟现实。对于平面3D游戏,就如同3D动画片加上互动,可以转动某物体,空间感更强,我觉得3D动画经过初期建模后,成本比2D要低。
参考资料:
【1】http://en.wikipedia.org/wiki/X3D
【2】http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=x3dom%20description
【3】http://en.wikipedia.org/wiki/WebGL