基于 three.js 的 WebXR 框架

用 HTML 写 3D、VR 和 AR
一套代码跑遍所有头显

放入一个 <a-scene> 标签,A-Frame 接管 three.js 与 WebXR 的全部样板代码。

右侧是官方入门示例的实时渲染结果:立方体、球体、圆柱、平面与天空。

为什么是 A-Frame

它把三维与 WebXR 的复杂度收进一层薄薄的声明式外壳,又不去挡住你触碰底层。

让虚拟现实变得简单

只需放入 <a-scene>,A-Frame 就能处理好 3D 与 WebXR 的底层样板代码,让你的项目跨移动端、桌面端以及各类头显运行(需使用支持 WebXR 的浏览器)。

声明式 HTML

HTML 易于阅读,也易于复制粘贴。因为场景可以直接用 HTML 书写,它对每个人都很友好。

<a-box color="#4CC3D9"></a-box>

实体-组件架构

构建于 three.js 之上,提供可组合、可复用的结构;你仍然拥有对 JavaScript、DOM API、three.js、WebXR 与 WebGL 的完整访问权。

高性能

它是 three.js 之上的一层轻量框架。尽管使用 DOM,却不会触及浏览器的布局引擎。

跨平台

为任何支持 WebXR 的头显构建 VR 与 AR 应用。没有头显或控制器?桌面和手机上照样能跑。

可视化检查器

内置 3D 检查器,工作流类似浏览器开发者工具,界面则类似 Unity。打开任意 A-Frame 场景,按下组合键即可唤出。

Ctrl+Alt+I

丰富功能

内置组件让你迅速起步,社区组件让你走得更远。

几何体材质灯光动画 模型射线检测阴影位置音频 追踪控制器粒子系统物理 多人海洋山脉 语音识别传送

白色标签为内置组件,带色标签来自社区。

用法

几行 HTML,就是一整个场景

下面的代码都来自官方 README,可以直接复制粘贴到任意 HTML 文件里打开。

index.html
<html>
  <head>
    <script src="https://aframe.io/releases/1.8.0/aframe.min.js"></script>
  </head>
  <body>
    <a-scene>
      <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
      <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
      <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
      <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
      <a-sky color="#ECECEC"></a-sky>
    </a-scene>
  </body>
</html>

社区用它做出了什么

从绘画工具到音乐森林,下面这些都是真实运行于浏览器的 A-Frame 项目。

更多示例见 官网、 A Week of A-Frame 以及 WebVR Directory。

本地开发

三条命令把仓库跑起来,然后在浏览器里打开 http://localhost:8080。

  1. 克隆仓库

    git clone https://github.com/aframevr/aframe.git
  2. 安装依赖

    cd aframe && npm install
  3. 启动服务器

    npm start

想在头显里测试

需要用 https 方式运行 npm run start:https。查看控制台中 “On Your Network (IPv4)” 一行,把对应的 url 复制粘贴到 hmd.link 服务上;随后在头显浏览器中打开 hmd.link,点击列表里那个刚复制的 url(头显需与本机处于同一网络)。由于使用自签名证书,浏览器会提示页面危险,忽略该警告继续访问即可。

npm run start:https
# 生成构建版本
npm run dist

保持联系

遇到问题,这里有整条街的人

参与贡献

参与进来吧!查阅贡献指南了解如何开始。

你也可以通过购买带有专属设计的精美 A-Frame T 恤来支持开发。

看看那件 T 恤