Why A-Frame?
A-Frame was built by the Mozilla VR team to make it quicker and easier to build 3D/VR scenes in order for them to prototype faster and to bridge the web development community into the WebVR ecosystem. For WebVR to succeed, it needs content. There are only a handful of WebGL developers in the world, but there are millions of web developers, designers, and artists. A-Frame puts 3D/VR content creation into the hands of everyone.
A-Frame是一个开源框架,用于使用自定义的HTML元素创建WebVR体验。这些元素使用three.js 和 WebGL在场景中创建支持虚拟现实的元素,而无需开发人员仅仅为了构建简单的体验而去学习例如WebGL这样的较低级别的API。
个人感觉如果能够在web开放有一个良好的图像库,且支持VR设备等,会极大的推动VR的发展,浏览器也都逐渐的支持webGL了,现在很需要一个低门槛的框架,让web开发人员能够更容易的上手web端的3D开发。
建立一个简单的A-Frame官网的Demo。
如果没有安装node的环境的话,安装Node.js及NPM模块管理,最新的Node已经集成了NPM。官网下载,直接安装即可
A-Frame样板带有它自己准备使用的本地Web服务器。cmd中切换到A-Frame样板目录下,运行npm install && npm start,将安装Web服务器必需的所有文件。运行本地Web服务器,它应会自动打开我们的web浏览器并加载我们的模板网页文件。模板中加入了LiveReload支持——这意味着,无论何时更改页面其内容都会自动刷新。在浏览器中http://localhost:3000的地址即可访问,效果如下图:
- 通过手机访问此网页,也会出现这个界面,同事移动手机,场景也会相应的改变,但是手机上只是一个屏幕,右下角的符号应该是双屏模式,在手机上点了之后提示需要CardBoard,我理解的是应该它会检测cardBoard上的磁铁吧。
Node服务器和此Demo是如何运行在服务器上的不清楚,A-Frame支持CardBoard和Oculus等设备,通过手机访问佩戴CardBoard需要试一下能否双屏,Oculus如何访问webVR上的内容不清楚。
补充:
Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
单线程,事件驱动,Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理 —— Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。
Node.js利用Google V8来解释运行javascript,但是系统真正执行的代码是用C++写的。javascript做的只是调用这些API而已。因此,并无执行效率的问题。
参考资料:
http://www.360doc.com/content/16/0414/17/32212261_550608156.shtml