A-Frame 0.2.0 – 可扩展的 VR 网页

A-Frame 是一个框架,它简化了为 Web 构建虚拟现实 (VR) 内容的过程。它提供以下功能:

  • 使用声明性 HTML 构建 3D 场景的能力。
  • 在多个平台上开箱即用的响应式 WebVR 场景。
  • 一个 实体-组件-系统模式,它促进了可组合性和可扩展性。

经过三个月令人愉快的繁忙开发工作,我们很自豪地宣布 A-Frame 版本 0.2.0 发布。此版本的主题是可扩展性。为了让 WebVR 在 VR 仍然被封闭的原生生态系统主导的时期快速发展,A-Frame 需要支持开放式实验和快速迭代。A-Frame 的固有可扩展性赋予开发者无许可创新权,使其成为 VR 版本的 可扩展 Web 宣言

*如果你不熟悉 A-Frame,请阅读 Mozilla Hacks 上 A-Frame 的先前介绍

A-Frame Community Examples

自发布以来

A-Frame 通过在 Web 上实现沉浸式 3D 内容创建的民主化获得了压倒性的积极反响。从数字上看:

社区成员将 A-Frame 用于一些有趣的用例:

A-Frame 还获得了高知名度的使用:

A-Frame 0.2.0 中改进的可扩展性

A-Frame 将实体-组件-系统 模式带入了 HTML。场景 中的所有内容都是一个 实体。实体是一个通用的占位符对象,它本身不会执行任何操作,也不会渲染任何内容。组件是可重用数据和逻辑的容器;当插入到实体中时,组件会为它们提供外观、行为和功能。开发者可以编写组件来执行他们想要的任何操作,直接访问 three.js,然后与社区共享这些组件。在 A-Frame 中可以实现的所有内容都可以在 three.js 和 WebGL 中实现。

自 A-Frame 首次发布以来,我们一直在努力改进 组件 API。我们经历了创建组件、发现 API 中的局限性,然后编写补丁来改进 A-Frame 的循环。通过使用我们自己的框架,我们能够发现扩展 A-Frame 时遇到的障碍:

  • 组件 API 通过属性类型、模式配置以及更多生命周期方法(pauseplaytick)得到了增强。
  • 基元(诸如 <a-sphere> 之类的便利元素)能够接受组件。

此外,我们为开发者提供了更多用于深入研究的逃生通道。他们现在可以:

  • 为更灵活的组件 API 定义自定义属性类型。
  • 注册 GLSL 着色器或 three.js 材质。
  • 注册基元。
  • 注册系统以向组件提供全局范围和服务。

阅读 完整的 0.2.0 版本发行说明 以获取更多详细信息。

可扩展 VR Web 的体现

可扩展 Web 鼓励想法和 API 之间的良性竞争。只有在新兴想法和 API 成熟之后,才应该将其标准化。为了让 WebVR 取得成功,必须遵循这种理念,否则将再次出现 Web 落后于时代的局面,届时所有筹码都被吃掉了。A-Frame 就是这些理念的体现。

如前所述,由于 A-Frame 是建立在实体-组件-系统模式之上的,开发者可以编写、共享和插入组件,以扩展新功能。如果某个功能尚不存在或未达到要求,社区就可以着手开发。生态系统已经包含社区构建的组件,这些组件能够支持游戏手柄控制、语音识别和物理模拟。借助这种短期创新方案,开发者可以快速尝试想法,以帮助推动 A-Frame 以及 WebVR 的发展。

例如,Don McCurdy 在他的 A-Frame playground 存储库中迭代了标准的 A-Frame 组件,而 A-Frame 核心团队则致力于支持可扩展性。在此基础上,他重构并增强了 A-Frame 的整个控件系统和物理系统。在这些组件得到验证后,我们将它们上游集成到标准 A-Frame 组件集合中。

社区中的一些人一直在寻找一种方法,将文本和 HTML 元素作为纹理渲染到 A-Frame 中。学生 Max Krieger 挺身而出,编写了组件来支持使用 <canvas> 元素作为纹理以及支持文本换行。

此外,Ben NolanSceneVR 的成员)最近移植了他的客户端代码以使用 A-Frame。他正在开发能够支持交互式多用户体验的组件,这是 A-Frame 核心团队今年晚些时候的目标。更重要的是,Ben 正在开发一个用于 A-Frame 场景的 所见即所得 编辑器。我们也在开发一个编辑器。

社区支持功能并共享组件的这种良性循环,继续成为 WebVR 生态系统的巨大福音。我们没有在闭门造车,而是构建了 A-Frame,将整个 Web 社区纳入到这项工作中。我们将一起尝试很多事情,然后逐渐专注于那些有效的事情。

展望未来

我们将致力于构建更多演示、改进交互性和提高性能。一旦 polyfill 稳定下来,我们将快速在 A-Frame 中发布 WebVR 1.0 支持

关于 Kevin Ngo

Kevin 是 Mozilla 的虚拟现实开发者,也是 A-Frame(一个开源 WebVR 框架)的核心开发者。他的 Twitter 账号是 @ngokevin_。

更多 Kevin Ngo 的文章…


2 条评论

  1. Angel Celis Botto

    太棒了,非常有趣!

    2016 年 3 月 31 日 下午 4:34

  2. Ian Sun.Ra

    Kevin 做得很好,我是一名电影制作人,正在将我的故事讲述方式融入 360 VR 世界。我正在努力在最短的时间内学到尽可能多的东西。A-Frame 看起来是一个非常棒且民主的工具,我期待着使用它来帮助讲述新的故事。

    2016 年 4 月 27 日 下午 11:01

本文的评论已关闭。