【摘要】本文将为大家介绍最简单易用的Web虚拟现实支持实现方案——A-Frame框架。A-Frame是一个开源框架,用于通过自定义HTML元素构建WebVR解决方案。有了这个框架,网络程序员就可以在网络开发中添加虚拟现实支持,而无需学习一门全新的语言或Unity和Unreal等3D引擎。作为入门教程,本文将带您一步步实现构建支持Web虚拟现实的网页的全过程。1.什么是A-FrameA-Frame(https://aframe.io/)是一个开源框架,用于使用自定义HTML元素创建WebVR体验。这些元素使用three.js(http://threejs.org/)和WebGL(https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API)在场景中创建支持虚拟现实的元素,无需开发人员学习WebGL等较低级别的API即可构建简单的体验。A-Frame开发团队正在努力创建可扩展的虚拟现实网络,使开发人员能够构建具有竞争力的API。此外,一旦这个想法被广泛采用和确立,它很可能成为定义标准的一部分。这使我们能够使用新功能,例如JavaScript框架和浏览器的实验版本,而无需等待某些标准被浏览器实现和支持。2.设备兼容性接下来很可能会出现一个很重要的问题:A-Frame框架是否跨浏览器兼容?一个意想不到的结论是:在各种平台上,只要是兼容WebGL的浏览器,A-Frame体验都很好;当然,3D场景在没有VR支持的情况下还是可以看到的。这意味着Chrome、Firefox、Edge和Opera等流行浏览器都能够显示桌面级交互式3D体验。对于虚拟现实体验,OculusRift等设备需要连接到一些支持WebVR技术的浏览器,以实现虚拟现实兼容性(见下文)。说到智能手机,运行iOS和Android的最近两代现代智能手机是最合适的(iPhone6+、三星GalaxyS6+和我个人的HTCOneM9都很好用)。这些智能手机中的大多数在插入GoogleCardboard耳机时也支持虚拟现实。因此,与让VR在桌面环境中工作相比,在智能手机上实现和管理VR兼容性实际上更容易。3.准备工作按照本文的说明完成基于A-Frame的实验,您需要做以下准备工作:l实现基本类型的非VR体验:n您需要安装支持的浏览器WebGL如上所述。l要实现基于桌面的VR体验:n您需要安装支持WebGL的浏览器,例如最新的ChromiumWebVR版本(https://drive.google.com/folderview?id=0BzudLt22BqGRbW9WTHMtOWMzNjQ)或FirefoxNightly版本(https://nightly.mozilla.org/)。nOculusRift耳机(可能还有HTCVive,我只是还没有实际测试过)。l要实现基于移动端的VR体验,需要具备以下条件:n最新款的智能设备一般至少能够实现场景显示,让你在半虚拟现实的视野中环顾四周。nGoogleCardboard或GearVR耳机。4.开始工作首先,请打开A-Frame框架的入门教程页面(https://aframe.io/docs/guide/getting-started.html)。目前,A-Frame团队提供了各种选项来方便与A-Frame框架相关的各种实验,包括CodePen代码片段、npm构建版本、A-Frame框架JS文件(直接下载或通过CDN)、HTML模板和本地开发服务器。为了尽可能简单,我们将下载并直接使用A-Frame样板(https://github.com/aframevr/aframe-boilerplate/archive/master.zip)。将上述模板解压缩到您的Web项目所在的系统中。此模板不一定必须在本地Web服务器上运行。该模板使用CDN的A-Frame,所以我们只需要关注index.html文件即可。配置文件package.json中提供了一个基于npm的本地Web服务器用于测试目的。在本文中,我们将使用此服务器——但是,现在没有必要对其进行测试。5.启动本地服务器如上所述,A-Frame模板自带本地Web服务器,随时可以使用。虽然这对于测试A-Frame并不总是必要的,但这是一种很好的做法,可以降低通过计算机文件系统运行网页时出现各种跨源策略问题的风险。来糊涂了要运行本地Web服务器,请从终端/命令提示符切换到模板项目文件夹并运行以下命令:npminstall&&npmstart这将为Web服务器安装所有必需的文件,然后运行它。之后,如果你想再次运行服务器,只需运行命令“npmstart”。一旦本地网络服务器运行,它应该会自动打开我们的网络浏览器并加载我们的模板网页文件。模板中添加了LiveReload支持——这意味着无论何时更改页面,其内容都会自动刷新。如果您需要在不同的设备上打开网页,或者运行本地Web服务器后网页不会自动打开,您可以在浏览器中输入http://localhost:3000或http://192.168.0.1:3000。请注意,此处的IP地址对应于您计算机的IP地址。您应该看到初始场景如下所示:6.构建新场景现在,让我们删除模板代码并删除
标记内的所有内容,只留下