A-FRAME
VR for Web Developers
@andgokevin / @dmarcos / aframe.io
SFHTML5 / 25 May 2016
A-Frame Community Sneak Peeks
Too hard to create WebVR experiences.
Import WebVR Polyfill
Initialize scene
Instantiate renderer
Create render loopSearch for VREffect
Build UI for Entering VR
Set up Camera
Add lighting
Listen to window resize
Declare canvas
Geometry + Material + Add
<a-scene>
<a-box src=“texture.png” width=“5”>
<a-obj-model src=“fox.obj”>
<a-sky src=“360-image.png”>
Not powerful enough.
Escape hatches for extensibility.
Entity-Component-System
COMPOSING AN ENTITY
<a-entity>
COMPOSING AN ENTITY
<a-entity geometry=“primitive: sphere; radius: 100”

material=“color: skyblue”>
COMPOSING AN ENTITY
<a-entity geometry=“primitive: sphere; radius: 100”

material=“color: skyblue”
entity-generator=“mixin: rain; num: 100”>
COMPOSING AN ENTITY
<a-entity geometry=“primitive: sphere; radius: 100”

material=“color: skyblue”
entity-generator=“mixin: rain; num: 100”>
<a-mixin id=“rain”
geometry=“primitive: sphere; radius: 0.05”

material=“color: white; opacity: 0.5”>
COMPOSING AN ENTITY
<a-entity geometry=“primitive: sphere; radius: 100”

material=“color: skyblue”
entity-generator=“mixin: rain; num: 100”>
<a-mixin id=“rain”
geometry=“primitive: sphere; radius: 0.05”

material=“color: white; opacity: 0.5”
event-set=“_event: collide; explode: true”>
COMPOSING AN ENTITY
<a-entity geometry=“primitive: sphere; radius: 100”

material=“color: skyblue”
entity-generator=“mixin: rain; num: 100”>
<a-mixin id=“rain”
geometry=“primitive: sphere; radius: 0.05”

material=“color: white; opacity: 0.5”
event-set=“_event: collide; explode: true”

random-position=“min: -10 50 -10;
max: 10 80 10”>
COMPOSING AN ENTITY
<a-entity geometry=“primitive: sphere; radius: 100”

material=“color: skyblue”
entity-generator=“mixin: rain; num: 100”>
<a-mixin id=“rain”
geometry=“primitive: sphere; radius: 0.05”

material=“color: white; opacity: 0.5”
event-set=“_event: collide; explode: true”

random-position=“min: -10 50 -10;
max: 10 80 10”
template=“src: #rain-animation”>
– @wizgrav
“A-Frame is like when MVC landed in traditional
front-end work…[where] three.js is like jQuery.”
Reduces boilerplate
Empowers web developers and designers
Declarative ECS framework for three.js
A-Frame Community Sneak Peeks
obj-model
rotation
scale material
fog geometry
position
lightcontrols
sound
text collada-model
obj-model collada-model
rotation
scale material
fog geometry
position
lightcontrols
sound
text
along-path
leap-motion-controls
proxy-controls
layout
lazy-load
extrude-geometry
collider
entity-generator
physics
gamepad-controls
lathe-geometry
randomizertemplate
gltf
fbx
firebase audio-visualization
follow
meshline
crease
html-shadermouse-cursor
no-click-look-controls
ocean
universal-controls
draw
hreffence mesh-line
hud
gif-shader
aframe-react
grid-helper
interpolation
stereo
aframe-extras
draggable
selectableexplode
noise
text
fit-texture
look-at
d3
aframe-meteor
altspace
orbit-controls
780 members on Slack (http://aframevr-slack.herokuapp.com/)
2000 stars, 40 contributors on GitHub
Over 120 projects featured on https://aframe.io/blog
A-Frame Community Sneak Peeks
[MULTIUSER]
Multiuser
See you at tiny.cc/aframe-multi
A-Frame Editor
Embedded Scenes
Room Scale
Local Multiplayer
LinkTraversal
Try it out https://aframe.io
Join us on Slack http://aframevr-slack.herokuapp.com/
Follow us @aframevr

A-Frame: VR for Web Developers

  • 1.
    A-FRAME VR for WebDevelopers @andgokevin / @dmarcos / aframe.io SFHTML5 / 25 May 2016
  • 3.
  • 4.
    Too hard tocreate WebVR experiences. Import WebVR Polyfill Initialize scene Instantiate renderer Create render loopSearch for VREffect Build UI for Entering VR Set up Camera Add lighting Listen to window resize Declare canvas Geometry + Material + Add
  • 5.
  • 6.
    <a-box src=“texture.png” width=“5”> <a-obj-modelsrc=“fox.obj”> <a-sky src=“360-image.png”> Not powerful enough.
  • 7.
    Escape hatches forextensibility.
  • 8.
  • 9.
  • 10.
    COMPOSING AN ENTITY <a-entitygeometry=“primitive: sphere; radius: 100”
 material=“color: skyblue”>
  • 11.
    COMPOSING AN ENTITY <a-entitygeometry=“primitive: sphere; radius: 100”
 material=“color: skyblue” entity-generator=“mixin: rain; num: 100”>
  • 12.
    COMPOSING AN ENTITY <a-entitygeometry=“primitive: sphere; radius: 100”
 material=“color: skyblue” entity-generator=“mixin: rain; num: 100”> <a-mixin id=“rain” geometry=“primitive: sphere; radius: 0.05”
 material=“color: white; opacity: 0.5”>
  • 13.
    COMPOSING AN ENTITY <a-entitygeometry=“primitive: sphere; radius: 100”
 material=“color: skyblue” entity-generator=“mixin: rain; num: 100”> <a-mixin id=“rain” geometry=“primitive: sphere; radius: 0.05”
 material=“color: white; opacity: 0.5” event-set=“_event: collide; explode: true”>
  • 14.
    COMPOSING AN ENTITY <a-entitygeometry=“primitive: sphere; radius: 100”
 material=“color: skyblue” entity-generator=“mixin: rain; num: 100”> <a-mixin id=“rain” geometry=“primitive: sphere; radius: 0.05”
 material=“color: white; opacity: 0.5” event-set=“_event: collide; explode: true”
 random-position=“min: -10 50 -10; max: 10 80 10”>
  • 15.
    COMPOSING AN ENTITY <a-entitygeometry=“primitive: sphere; radius: 100”
 material=“color: skyblue” entity-generator=“mixin: rain; num: 100”> <a-mixin id=“rain” geometry=“primitive: sphere; radius: 0.05”
 material=“color: white; opacity: 0.5” event-set=“_event: collide; explode: true”
 random-position=“min: -10 50 -10; max: 10 80 10” template=“src: #rain-animation”>
  • 16.
    – @wizgrav “A-Frame islike when MVC landed in traditional front-end work…[where] three.js is like jQuery.”
  • 17.
    Reduces boilerplate Empowers webdevelopers and designers Declarative ECS framework for three.js
  • 18.
  • 20.
  • 21.
    obj-model collada-model rotation scale material foggeometry position lightcontrols sound text along-path leap-motion-controls proxy-controls layout lazy-load extrude-geometry collider entity-generator physics gamepad-controls lathe-geometry randomizertemplate gltf fbx firebase audio-visualization follow meshline crease html-shadermouse-cursor no-click-look-controls ocean universal-controls draw hreffence mesh-line hud gif-shader aframe-react grid-helper interpolation stereo aframe-extras draggable selectableexplode noise text fit-texture look-at d3 aframe-meteor altspace orbit-controls
  • 22.
    780 members onSlack (http://aframevr-slack.herokuapp.com/) 2000 stars, 40 contributors on GitHub Over 120 projects featured on https://aframe.io/blog
  • 23.
  • 24.
  • 25.
  • 27.
  • 29.
  • 31.
  • 33.
  • 35.
    Try it outhttps://aframe.io Join us on Slack http://aframevr-slack.herokuapp.com/ Follow us @aframevr