A-Frame v0.9.0 Release Notes

Release Date: 2019-02-07 // about 5 years ago
  • ๐ŸŽ 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.

    Major Changes

    • โฌ†๏ธ Bump to three.js r101 on a branch with a few extra patches for WebXR support (f9f314).
    • ๐Ÿ‘ WebXR support (#3875).
    • โœ‚ Remove <a-animation> in favor of new animation component (#3678).
    • โœ‚ Remove collada-model component (#3866).
    • โž• Add 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.Colors and THREE.Textures to normalize changes (#3757).
    • ๐Ÿšš Have raycasters only intersect against objects defined via .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).
    • โž• Add renderer component (#3757).
    • ๐Ÿšš antialias attribute moved to renderer.antialias.
    • Raycaster events such as 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).
    • 0๏ธโƒฃ Disable link portal appearance by default (link.visualAspectEnabled), link component defaults to purely to listening to an event to trigger navigation (#3743).

    ๐Ÿ›  Fixes

    • Frame-independent easing for wasd-controls to prevent judders during framedrops (#3830).
    • โšก๏ธ Enable matrix auto updates for tracked-controls to fix children of camera and controllers not following parent (#3867).
    • ๐Ÿ›  Fix removing mixins not removing components (#3982).
    • ๐Ÿ›  Fix timing issues with mixins on still-initializing entities (#3859).
    • setPoseTarget to underlying object3D to fix issues with entities as child of camera (#3820).
    • โšก๏ธ Don't disable matrixAutoUpdate for tracked-controls outside VR (643fdc).
    • Render spectator view after VR submit frame (#3577).
    • ๐Ÿ›  Fix mouse cursor events not being re-enabled on resume (#3904).
    • ๐Ÿ‘ Allow components to write to camera Z rotation when look-controls enabled (9a78a)
    • Clear raycaster intersections when toggling disabled (#3594).
    • Postpone renderer until scene is appended to DOM (#3574).
    • ๐Ÿ›  Fix canvas textures (b47f20).
    • ๐Ÿ›  Fix faces and vertices numbers on stats panel (#3573).
    • ๐Ÿ›  Fix magic window mode on Chrome (aaa3bf).
    • ๐Ÿ›  Fix audio asset preloading (2a899c).
    • ๐Ÿ›  Fix raycaster flatten to only include objects part of el.object3DMap versus arbitrary children (8809e7).
    • ๐Ÿ›  Fix canvas getting squished on orientation change on mobile (64ed3d).
    • โšก๏ธ Update position, rotation, scale components when calling .setAttribute on them (#3738).
    • โšก๏ธ Update canvas bounds for mouse cursor on renderer resize (a4cf08).
    • ๐Ÿ›  Fix controller reconnecting on Oculus Go and GearVR (dc8662).
    • ๐Ÿ›  Fix playing sound on event with sound.on (#3844).
    • ๐Ÿ›  Fix Chrome WebView (#3852).
    • ๐Ÿ›  Fix raycaster not grabbing all entities when raycaster.objects is not set. But you should always set it (#3840).
    • ๐Ÿ›  Fix WebVR polyfill buffer scale override (#3863).
    • ๐Ÿ›  Fix text when used with other geometry types (#3909).
    • ๐Ÿ›  Fix daydream-controls trigger not working with cursor by default (#3916).
    • ๐Ÿ›  Fix accessing Inspector in pointer lock mode (#3947).
    • ๐Ÿ›  Fix mouse cursor not emitting click when fuse is set (#4000).
    • ๐Ÿ›  Fix screenshots (#3998).
    • ๐Ÿ›  Fix camera offset getting applied when entering 2D fullscreen (#3902).

    โœจ Enhancements

    • โž• Add oculus-go-controls, thanks Oculus! (cbbe75)
    • โž• Add vive-focus-controls (#3876).
    • โž• Add loading-screen component (#3760).
    • โž• Add ?inspector={selector} and Entity.inspect() to automatically launch Inspector and focus on entity (#3894).
    • โž• Add renderer.highRefreshRate to enable 72hz mode on Oculus Browser (#3967).
    • โž• Add tracked-controls.autoHide property to configure whether controllers automatically hide when connected or disconnected (#3912).
    • Enable multiple raycasters on an entity (fc18cd).
    • ๐Ÿ‘Œ Support custom enter VR buttons through vr-mode-ui (#3606).
    • โž• Add material.blending property (#3543).
    • โž• Add light.shadowRadius property (21b38).
    • โž• Add ability to cap canvas size to pixel value (92b2f9).
    • โฌ‡๏ธ Reduce npm bundle (53f58f).
    • Allow double underscores in component IDs (e.g., animation __foo__ bar) (030023).
    • โž• Add renderer.logarithmicDepthBuffer option (d210a2).
    • โž• Add look-controls.reverseTouchDrag property (#3761).
    • Switch to jsdelivr with rawgit going away.
    • ๐Ÿ‘Œ Support preprocessing of sound in sound.playSound() (2b2819).
    • ๐Ÿ’… Consolidate fullscreen styles under single CSS class (html.a-fullscreen) (#3828).
    • Emit displayconnected event when headset connected (#3918).
    • 0๏ธโƒฃ Enable antialias by default on Oculus Go (#3942).
    • โšก๏ธ Update to webvr-polyfill v0.10.10 (#3993).

    ๐ŸŽ Performance

    • ๐Ÿ”จ Large refactor of core component update path, reducing memory allocation and using object pooling (#3772).
    • โšก๏ธ Skip buildData if updating component directly. 2x speed boost on .setAttribute (#3835).
    • โœ‚ Remove spamming navigator.getGamepad calls in tracked-controls (#3816).
    • โšก๏ธ Optimize coordinates / vector utilities (#3908).
    • โœ‚ Remove object allocation in .setAttribute(component, propertyName, value) (#3812).
    • Simplify text shader hacks and make text alpha look prettier (#3557).
    • โœ‚ Remove garbage and bubbling from tracked-controls (#3589).
    • โœ‚ Remove redundant matrix world update in raycaster (ae7eba).
    • Replace Oculus OBJ model with a glTF one (#3539).
    • โšก๏ธ Optimize coordinate parse (bf66ba).
    • Simply wasd-controls tick (#3763).
    • โšก๏ธ Optimize text component (#3768).
    • โœ‚ Remove memory allocations in material code (#3789).
    • โœ‚ Remove garbage in sound component (2b2819).
    • ๐Ÿ‘Œ Improve grabbing class cursor performance in 2D look-controls (#3790).
    • โœ‚ Remove unused and redundant mixin observers (#3831).
    • โž• Add warning to developers to specify raycaster.objects (#3839).
    • Cache asset property type regex (#3854).

    Inspector

    Kevin spent some time getting the Inspector into ship shape.

    Major Changes

    • โšก๏ธ Introducing the A-Frame Watcher to sync updates of entities with IDs from Inspector to HTML files.
    • โœ‚ Remove HTML exporter.
    • โœ‚ Remove old A-Frame Registry code.
    • โœ‚ Remove broken Uploadcare uploader.
    • โœ‚ Remove motion capture tools.

    โœจ Enhancements

    • Orthographic cameras.
    • ๐Ÿ‘Œ Improve raycasting to picking entities.
    • Syntax highlighting of entities.
    • Highlight and describe entities on viewport bar when hovering.
    • โž• Added ?inspector={selector} to automatically launch Inspector and focus on entity.
    • ๐Ÿ‘‰ Show bounding box of selected entities.
    • ๐Ÿ‘‰ Show with icon what entities contain text in scenegraph.
    • Sort component properties alphabetically.
    • Display class names on entity panel.
    • Only show camera and light helpers when respective entity is selected.
    • ๐Ÿ‘Œ Improve position when focusing on entity.
    • ๐Ÿ’… Polish components panel.
    • Center editor controls to the scene camera position.
    • ๐Ÿ‘Œ Support arrow keys for number widgets.
    • .glb export.
    • โž• Add o shortcut to toggle transform widget.
    • โž• Add esc shortcut to unselect entity.
    • ๐Ÿ”จ Refactor most everything (modularize, data flow, Stylus, Prettier).
    • ๐Ÿ‘‰ Tweak grid colors.
    • Bigger checkboxes.
    • ๐Ÿ›  Fix color picker in components panel.
    • ๐Ÿ›  Fix display of mixins.

    ๐ŸŽ Performance

    • Don't load 50 images when opening the Inspector.
    • โšก๏ธ Optimize and fix helpers for position, rotation, scale.
    • Speed up scene graph search.
    • โœ‚ Remove global mutation observer.