:a: Web framework for building virtual reality experiences.
Bug fixes
Subscribe to the newsletter to continue to support A-Frame!
Bug fixes
Subscribe to the newsletter to continue to support A-Frame!
1.0.0 post release bug fixes.
Subscribe to the newsletter to continue to support A-Frame!
glTF
models automatically. It now ignores query parameters that made it fail before. (#4219) (@dmarcos)VR / AR buttons
when double tapping on touch screens (@dmarcos)AR / VR buttons
background on mouseleave. CSS Hover is sticky on mobile devices (@dmarcos)magic window mode
in Daydream / ARCore Android devices. Use DeviceOrientationControls for tracking. (#4355) (@MK-LucidWeb, @vincentfretin, @dmarcos)laser-controls
(#4354) (@dala00, @dmarcos)video-sphere / photo-sphere
radius to prevent far plane clipping in VR mode on Android devices (#4365) (@AntoineLucidWeb, @dmarcos)modal dialogs
(#4359) (@thedart76, @dmarcos)WebXR
as the default code path for Oculus Browser. Oculus Browser 7.1 now ships the gamepad module (#4360) (@dmarcos)alert dialog
if the site is served over HTTP (#4357) (@brendanciccone, @thedart76, @mkungla, @dmarcos)desktop requests dialog
. Change Ok button text to Close (@dmarcos)Follow-up fix to 0.9.1 for fixing vrdisplayactivate
and link traversal flow.
vrdisplayactivate
handler back earlier to fix auto entering VR in many cases (#4155).vrdisplayactivate
and link traversal due to last build having outdated version our three.js fork.Entity.destroy
not catching if entity is not attached to scenegraph (#4140).requestPresent
calls if already presenting (#4148).Follow-up fixes and improvements to 0.9.0.
Released Hot Module Replacement loader for A-Frame: https://github.com/supermedium/aframe-super-hot-loader
Entity.destroy()
method to clear components and return their memory to the
pool (#4121).utils.device.isOculusGo
in favor of utils.device.isMobileVR
(#4032).vrdisplayactivate
path for more robust navigation (#4093, 3c2f68e).utils.coordinates.stringify
for zeroed vectors (#4017).navigator.xr.requestDevice
error (#4035).onEnded
not setting isPlaying
to false (#4061, #4097, #4101).obj-model
recursively (#4062)..flushToDOM
(#4069).getGamepads
on every tick for Chrome (#4116).Component.events
API to define event handlers that are automatically attached and detached depending on entity lifecycle (#4114).animation.property
(#4122).Entity.remove
detach entity to match HTML element behavior (#4082).hand-controls
model to glTF (#3932).shadow.enabled
property to shadow system (#4040).renderer.alpha
property to renderer system (#4040).AFRAME.coreComponents
for a list of the core components (#4064).Performance improvements, WebXR support, Inspector updates!
We continued to battle test A-Frame to produce native-like VR experiences and continue to add large performance gains. We have also introduced initial WebXR support! Although the spec is heavily in flux and yet to have feature parity with WebVR 1.1, we had A-Frame get a head start to help test it out and smooth out the changes.
<a-animation>
in favor of new animation component (#3678).collada-model
component (#3866).renderer.colorManagement
property (disabled by default) to accurately match colors against modeling tools, but may changes in scene colors when flipped on. renderer.gammaFactor
will be set to 2.2. Call scene.renderer.systems.applyColorCorrection
on THREE.Color
s and THREE.Texture
s to normalize changes (#3757)..setObject3D
. raycaster.objects
should be specified (e.g., objects: [data-raycastable] or objects: .raycastable
) because raycasting is expensive. raycaster.recursive
property removed (#3980) but will default to be recursive only under objects defined via .setObject3D
(#3652).renderer
component (#3757).antialias
attribute moved to renderer.antialias
.raycaster-intersected
no longer directly contain intersection data. Use .getIntersection
function supplied in event detail or el.components.raycaster.getIntersection(el)
to retrieve intersection data. Done to reduce garbage (a87e3b).link.visualAspectEnabled
), link component defaults to purely to listening to an event to trigger navigation (#3743).wasd-controls
to prevent judders during framedrops (#3830).tracked-controls
to fix children of camera and controllers not following parent (#3867).matrixAutoUpdate
for tracked-controls outside VR (643fdc).el.object3DMap
versus arbitrary children (8809e7)..setAttribute
on them (#3738).sound.on
(#3844).raycaster.objects
is not set. But you should always set it (#3840).daydream-controls
trigger not working with cursor by default (#3916).oculus-go-controls
, thanks Oculus! (cbbe75)vive-focus-controls
(#3876).loading-screen
component (#3760).?inspector={selector}
and Entity.inspect()
to automatically launch Inspector and focus on entity (#3894).renderer.highRefreshRate
to enable 72hz mode on Oculus Browser (#3967).tracked-controls.autoHide
property to configure whether controllers automatically hide when connected or disconnected (#3912).material.blending
property (#3543).light.shadowRadius
property (21b38).animation__foo__bar
) (030023).renderer.logarithmicDepthBuffer
option (d210a2).look-controls.reverseTouchDrag
property (#3761).sound.playSound()
(2b2819).html.a-fullscreen
) (#3828).displayconnected
event when headset connected (#3918).buildData
if updating component directly. 2x speed boost on .setAttribute
(#3835).navigator.getGamepad
calls in tracked-controls (#3816)..setAttribute(component, propertyName, value)
(#3812).raycaster.objects
(#3839).Kevin spent some time getting the Inspector into ship shape.
?inspector={selector}
to automatically launch Inspector and focus on entity.o
shortcut to toggle transform widget.esc
shortcut to unselect entity.Performance improvements.
object3dset
and object3dremove
events no longer bubble. (#3220)addState
and removeState
event detail modified to be the state name, not object. (#3171)<a-sky>
. (#2908)Support for Windows Mixed Reality Headsets and Microsoft Edge and glTF 2.0. Performance improvements to reduce garbage collection cycles.
previousData
is object and a property has a null
default value. (#3021)vrdisplayconnect
and vrdisplaydisconnect
events in VREffect and VRControls. (#3019)vrdisplaypointerrestricted
event in a-scene
. (#3014)stageParameters
. (#3000)vrdisplayconnect
and vrdisplaydisconnect
to enter and exit VR when headset is plugged or unplugged. (#2900)vertexColors
property to base material component. (#2901)emissive
and emissiveIntensity
properties to base material component. (#2896)attrValue
attributes into data anymore to reduce cloning. (#2939)Bug fixes, support for Firefox on Android, mouse-based cursor, enable motion capture developer tools in the Inspector.
from
if from
is not defined. (#2855)Link traversal for navigating from page to page while staying in VR. Support
for VR controllers across the board with the addition of Daydream and GearVR
controller components as well as laser interactions. Large performance
improvements around .getAttribute
and .setAttribute
.
AFRAME.utils.coordinates.isCoordinates
to AFRAME.utils.coordinates.isCoordinate
. (af3f89)origin
and direction
properties to configure raycaster component. (#2678)thumbstickmoved
and axismoved
for oculus-touch-controls. (#2513).update
handler. (#2548, #2613)controllerconnected
and controllerdisconnected
events. (#2505)onvrdisplaypresentchange
events to enter and exit VR. (#2751)material.alphaTest
and material.depthWrite
properties. (#2516)Component.tock
handler called after scene render for future post-processing support. (#1564)trackpadmoved
event for vive-controls component. (#2415)response-type
attribute to <a-asset-item>
to support array buffer responses. (#2442)camera.userHeight
to controller when no stage parameters (e.g., Daydream). (#2448).setAttribute('mixin', '')
and .removeAttribute('mixin')
. (a173509)<a-scene light="defaultLightsEnabled: false">
. (#2376)THREE.Cache
for asset responses. (#2435)file://
protocol. (#2540)System.el
to the scene element. (#2566)isControllerPresent
utility rather than checking navigator.getGamepads
in order to fake oculus-touch-controls for motion capture. (#2604)getElementById
vs. querySelector
for asset property types to be more strict. (#2578).setAttribute
more than once to consider it a validated object. (#2679).getAttribute
not clone component data object. Now returns raw reference to component data (#2689)componentchanged
event on each update to every 200ms. We recommend polling if more critical updates are needed. (#2683)string.split()
in .setAttribute()
to reduce memory in array instantiations. (#2674)<img>
from <a-assets>
and by using crossorigin
from the start. (#2544)getElementById
. (#2820)<a-cursor>
segments. (#2821).init
handler calls .setAttribute
on itself. (#2454)requestAnimationFrame
timestamps by using THREE.Clock
in the render loop. (#2471)material.side
component. (#2528)AFRAME.utils.device.checkHeadsetConnected
to check VRDisplay.isConnected
(for Windows Mixed Reality Headsets). (#2427)playsinline
. (#2610)mouseup
event not being emitted if entity no longer intersecting. (#2678)AFRAME.utils.deepEqual
recursion when comparing object with itself. (#2406)AFRAME.utils.deepEqual
when comparing non-Object objects like HTML elements (#2502)AFRAME.utils.isMobile
. (#2309)AFRAME.utils.coordinates.isCoordinate
with scientific notation. (#2475)setAttribute
wiping out DOM-defined data on init. (#2727)