- If you used material
npot: truepreviously as a way to settexture.minFilter = THREE.LinearFilterfor better image quality, you need to replace it withminFilter: linear. That change was introduced in #5717 that removednpotproperty that was legacy of WebGL1, new material propertiesminFilterandmagFilterhave been exposed instead.
- Add
package-lock.jsonfor consistency when generating builds (#5693) (@vincentfretin) hand-tracking-controlscomponents emitscontrollermodelreadyfor consistency with other input controls components (#5685) (@coderofsalvation)- Fix inspector when post-processing is enabled (#5684) (@vincentfretin)
- Fix Next.js skipping A-Frame CSS styles (#5682) (@vincentfretin)
- Fix ar-hit-test component. Initialize on
enter-vrevent instead ofsessionstart(#5680) (@vincentfretin) - Docs and examples improvements (@jgbarah, @vincentfretin, @diarmidmackenzie, @dmarcos)
Post-processing, ES modules and importmap, WebGPU and TSL support, Logitech MX Ink integration and more.
- Update to THREE r173 (@dmarcos)
- Import maps support and replacement of CommonJS with ES Modules (@mrxz, @vincentfretin)
- Experimental post-processing support. It works both in regular and immersive modes (@enzofrancescaHM, @mrxz, @vincentfretin, @CodyJasonBennett)
- Support for Logitech MX Ink tracked pen (@dmarcos)
- Initial WebGPU support (@vincentfretin)
- Remove unused width and height properties from flat and standard shaders (#5647) (@mrxz)
- Relax the
clientWidthconstraint in the controls tests. Fix tests on Ubuntu (#5641) (@vincentfretin) - Check if
XRSessionexists before attachinginputsourcechangelistener (#5631) (@mrxz) - Don't apply anchor scale (only position and rotation) to an
anchoredentity (#5633) (@mrxz) - Wait until
referenceSpaceis available befor initializing compositor layers (#5626) (@vincentfretin) - Remove
raycaster-closest-entity-changedlistener when removing thecursorcomponent (#5625) (@vincentfretin) - Handle
cursorrayOriginupdates andrayOrigin: mousewhen component attached to an entity and nota-scene(fix #4759) (#4760) (@kylebakerio) - Fix light shadow frustum visualization via CameraHelper (fix #5098) (#5099) (@IanSweeneyAC, @dmarcos)
- Prevent loading cubemap for a probe light when
envMapis not set (fix #5610) (#5611) (@mrxz) - Prevent redundant
pinchstartedevents on a hand tracking pinch gesture (#5609) (@mrxz) - Improve
cursorcomponentxrselectlogic. HandlerayOriginproperty changes and account for camera rigs when calculating the raycaster direction (#5606) (@mrxz, @vincentfretin) - Fix Apple Vision Pro detection logic to prevent false positives on iPad and iPhone (fix #5605) (#5607) (@vincentfretin)
- Remove fullscreen CSS styles from the document element when
a-sceneis disconnected (#5602) (@gunhaxxor) - Adjust light intensity defaults and examples to account for
WebGLRenderer.useLegacyLightsdeprecation in THREE r165 (#8813d3d2) (@dmarcos) - Fix model visibility logic of tracked hands and controllers when there are input switches (e.g hands to controllers) (#fa0cc748) (@dmarcos)
- Prevent a-loader-title div (A-Frame created HTML element) to be serialized (#5574) (@vincentfretin)
- Disable magic window mode in Vision Pro that is only suitable for handheld mobile devices (#5560) (@dmarcos)
- Don't bubble
<a-asset-item>error event that was preventing some tests to execute (#5548) (@mrxz) - Don't stringify properties with undefined values to prevent flushToDOM to produce properties with the
undefinedstring (#5549) (@mrxz) - Fix serialization / stringification of asset type properties. When an HTML element they got exported incorrectly as e.g
[object HTMLImageElement](#5544) (@mrxz, @vincentfretin) - Refresh raycasted objects only when the
objectsraycaster component property changes. Prevent unnecessary costly updates (#5542) (@vincentfretin) - Fix issue when using
<a-cubemap>as texture component envMap (@Omegahed, @mrxz) - Fix incorrect texture reference counting, potentially leading to exceptions upon disposal of the texture (#5529) (@mrxz)
- Eliminate incorrect "unknown property" warnings from dynamic schema components (#5526) (@mrxz)
- Bump to THREE to r173 (@dmarcos)
- Post-processing experimental support (#5648) (@enzofrancescaHM, @CodyJasonBennett, @mrxz, @cabanier, @vincentfretin, @dmarcos)
- ES Modules and importmap support (#5632, #5640) (@mrxz, @vincentfretin)
- Support for WebGPURenderer and TSL (#5655) (@vincentfretin)
- Logitech MX Ink integration (@dmarcos)
- Update Draco decoder to 1.5.7 (#5523) (@vincentfretin)
- Remove process/browser polyfill in tests (#5643) (@vincentfretin)
- Improve build and test process (@vincentfretin)
ar-hit-testuses tracked controller if available instead of head orientation (fix #5315) (#5308) (@DougReeder)- Allows setting the distance within which the preview image of the link component is shown (#4425) (@DougReeder)
- Animate position, rotation and scale on the THREE.Object3D directly without calling
setAttribute(#4f711a4efab) (@dmarcos) - Update
shelljsversion (#5497) (@arpu) - Ability to enable/disable enterVR and exitVR shortcuts independently (#5512) (@mrxz)
- Improve Pico headsets controller support on third-party browsers such as Wolvic (#5534) (@Elettrotecnica)
- Consolidate
tracked-controls-webxrlogic intotracked-controls. Separation no longer needed since WebVR support deprecation (#627698d4) (@dmarcos) - Move WebXR controller detection to
inputsourceschangeevent from a polling logic (#fd904348) (@dmarcos) - Update Webpack and related build dependencies (#5480) (@vincentfretin)
- Add CodeQL scanning with one non-default query for scanning GitHub Actions (#5554) (@JarLob)
- Add
AgXandneutralto the list of tone mapping options in the renderer component (#5551) (@vincentfretin) - Docs improvements (@mrxz, @dmarcos, @Srile, @Control-C, @addy1997, @TomoyaKuroda, @vincentfretin, @jzhangdev, @Utopiah, @nikolas, @jadegamesuk, @diarmidmackenzie, @ogreenaway, @kewalkishang, @jinglechen2287)
- Remove
physicallyCorrectLightssinceuseLegacyLightsis no longer supported byTHREE.WebGLRenderersince THREE r165 (#0123f53749) (@dmarcos) - Rename
oculus-touch-controlstometa-touch-controlsto reflect current branding.oculus-touch-controlskept around for backwards compatibility (#d3be3d2f) (@dmarcos) - Remove the now obsolete WebVR support in favor of WebXR (#5451) (@mrxz)
- Deprecate
isGearVRandisOculusGofunctions (#5635) (@vincentfretin)
Tons of bug fixes. Memory management and performance improvements. API to control tick / tock execution order.
- Update wrist object position and rotation only when joint poses are available (#5438) (@mrxz)
- Fix issue when checking schema properties when a schema changes (#5426) (@mrxz)
- Set correct default value for
scene.backgroundwhen the background component is removed (#5417) (@mrxz) - Fix fog removal from scene (#5418) (@mrxz)
- Fix Chrome non-passive violation warnings for touchmove and touchstart event handlers (#5511) (@mrxz, @mitchallen)
- Fix bug when loading models on child entities of controllers (#5415) (@mrxz)
- Fix bug in handling
processSoundcallback when sound hadn't loaded yet (#5414) (@mrxz) - Fix misspelled variable names after using a spell checker (#5462) (@mrxz)
- Fix problem when a shader that declares itself as glsl3 has its version ignored (bbe74f52) (@dmarcos)
- Fix problem when checking for duplicate names of property types (#5475) (@mrxz)
- Fix problem when adding children entities to a
hand-tracking-controlsentity before the hand model has loaded (12d550c6) (@dmarcos) - Hide
hand-tracking-controlsentity when there's no hand tracking available (dbdb9dac) (@dmarcos) - Fix issues when applying mixins to primitives (#5483) (@mrxz)
- Fix issue when a component is not removed from the DOM via mixin removal / update (#5492) (@mrxz)
- Fix timing issue when initializing XR Layers (#5489) (@zjm-meta)
- Fix problem where scene doesn't wait / timeout on
a-asset-items(#5491) (@mrxz) - Fix bug when using
setAttributeona-sceneif a system has not yet initialized (#5482) (@mrxz) - Fix broken parser cache of
getComponentPropertyPath(#5467) (@mrxz) - Fix issue when shadowMaps are always enabled. Make sure it's only enabled when there's a shadow component present (#5399) (@mrxz)
- Fix issue when children of an entity with
hand-tracking-controlsdon't follow the hand (874fced2) (@dmarcos) - Fix ES modules support on node (#5522) (@vincentfretin)
- Make rotation axis order is consistent when using
setAttributeand modifying object3D directly (#5513) (@mrxz) - Fix issue when calculating the size of the bounding box of an
obb-collider(5da7166e) (@dmarcos) - Fix issue when the el.hasLoaded flag can be true but not all components have initialized (924dc00e) (@dmarcos)
- Fix issue when trying to remove a mesh before model was loaded in
obj-model component (#5499) (@Elettrotecnica) - Use
renderer.useLegacyLightsinstead of the deprecatedrenderer.physicallyCorrectLightsin THREE (#5389) (@vincentfretin) - Set correct default value for
glslVersionfor non-raw shaders (#5388) (@mrxz) - Remove "skinning: true" option when instanciating a THREE.MeshStandardMaterial object. Property deprecated in THREE (#5386) (@avdynut)
- Fix issue when tracking an unexisting AR Hitest anchor (@hi-liang, @dmarcos) (bcc4bc2cae2b3) (fix #5314)
- Fix issue when layers are not initialized in AR mode (bb1e7a4e) (@dmarcos)
- Fix issue when removing unexisting light probe after exiting vr mode (#5429) (fix #5384) (@Elettrotecnica)
- Fix issue when removing an obb-collider (957237d) (fix #5385)
- Fix typo when requesting layers on the WebXR requiredFeatures list (f7e56a8f) (@dmarcos)
- Fix issue when trying to animate a non existing button on the controller (da8dc146) (@dmarcos)
- Improve unit tests execution time (#5477) (@mrxz)
- Recycle nextData and
previousOldDataobjects when a component is destroyed preventing memory leaks (#5458) (@mrxz) - Improve pooling and recycling of internal component objects. Better memory management (#5459) (@mrxz)
- Reduce memory allocations on component update logic (#5474) (@mrxz)
- Improve throttleLeadingAndTrailing implementation to prevent unnecessary allocations (#5476) (@mrxz)
- Introduce before/after component API to control tick / tock execution order (#5478) (@mrxz)
- Bump to THREE r164 (@dmarcos)
- Remove maximum canvas size (#5440) (@mrxz)
- Cache THREE.Source instead of THREE.Textures (#5449) (@mrxz)
- Introduce a sceneOnly flag for components that only apply to the
a-sceneelement (#5465) (@mrxz) - Switch unit tests from WebVR to WebXR (#5452) (@mrxz)
- Move back debug dependency from fork to upstream (#5508) (@arpu)
- Introduce stencil property in the renderer system (#5509) (@mrxz)
- Improve iPad detection logic to include iPad Pro (#5502) (@Drkjr92)
- Remove unnecessary attribute properties and special handling of is: "attribute" in shader component (#5310) (@mrxz)
- Improve async loading of aframe library and interoperation with ES module (#5481) (@mrxz)
- Improve system warning messages when setting an unknown property (#5463) (@mrxz)
- Use native bind method instead of custom implementation. Performance benefits of custom one no longer exist (#5461) (@mrxz)
- Add Pico4 controllers support to
laser-controlscomponent (#5435) (@IamTonio) - Add hand model opacity to
hand-tracking-controls(#5431) (@ehammons11) - Postpone screenshot component offscreen canvas setup until a screenshot is taken (#5442) (@arpu)
- Update GitHub CI to use node 20.x (#5479) (@vincentfretin)
- Use window.isSecureContext instead of manually checking URL for http/localhost/127.0.0.1 (#5487) (@mrxz)
- Remove deprecated
getComputedAttributmethod (#5466) (@mrxz) - Remove unnecessary crossOrigin configuration for THREE loaders (#5416) (@mrxz)
- Add support for
navigator.xr.offerSessionWebXR spec (#5410) (@cabanier) - Add support for fog, toneMapping, colorSpace conversion and logarithmicDepthBuffer to the msdf shader used in the text component (#5409) (@mrxz)
- Remove minimum scale value. THREE handles zero scale gracefully (#5404) (@mrxz)
- Add
hide-on-enter-vrcomponent analog tohide-on-enter-ar(9e644def) (@dmarcos) - Remove iOS 10 specific HLS workaround (#5450) (@mrxz)
- Remove outdated polyfills that were needed just for IE11 (#5448) (@mrxz)
- Docs improvements (@diarmidmackenzie, @Samu01Tech, @thepelkus-too, @Omegahed, stefanhuber, @ctrlw, @vincentfretin, @jgbarah, @AndreaMonzini)
Multiview extension, Spatial computing UIs, Mixed Reality features, Hand manipulation interactions, Quest 3 support and much more!
- Use renderer.useLegacyLights instead of the deprecated renderer.physicallyCorrectLights in three r150, but keep the physicallyCorrectLights property name for the renderer system for backward compatibility (fix #5293) (@mrx)
- Fix
hand-controlsanimations (#5300) - Fix outdated link in error message (#5313) (fix #5275) (@kolson25)
- Fix visibility of controller in model-viewer example (#5317) (@DougReeder)
- Fix typo in phong shader properties (#5334) (@nightgryphon)
- Adapt shaders to new THREE API (#5328) (@nightgryphon)
- Traverse meshes instead of using a hardcoded index (#5340) (@diarmidmackenzie)
- Fix examples miscellaneous errors (#5343) (@mrxz)
- Fix back plane resizing when text component changes (#5357) (fix #2764) (@brycethomas)
- Fix switching back and forth from hands to controller input (fix #5373) (@floe, @dmarcos)
- Update to THREE r158 (@felixtrz, @dmarcos) (fix #5369)
- Add
hand-tracking-grab-controlscomponent to make any entity manipulable with hands (@dmarcos) - Add support for WebXR Mesh and Planes Module (real-world-meshing component) (@dmarcos)
- Add support for WebXR Anchors Module (anchored component) (@dmarcos)
- Add support OVR_multiview extension (@felixtrz)
- Add support for Quest 3 controllers (@dmarcos, @felixtrz)
- New
obb-colliderimplementing oriented bounding box colliders (@dmarcos) - Improve hand-trackin-controls pinch logic (@dmarcos)
- Add
anisotropyoption to material and renderer (#5309) (@mrxz) - Linter improvements (#5342) (@diarmidmackenzie)
- Add
loopStartandloopEndproperties to sound component to play loops (#5364) (@JonathannJacobs) - Improve sorting / rendering order (#5332) (@diarmidmackenzie, @mrxz)
- Redesign enter immersive mode UI (@vincentfretin, @msub2, @diarmidmackenzie, @thedart76, @dmarcos)
- Replace the use of
getJointPosewithfillPosesandfillJointRadiiin hand-tracking-controls to avoid memory allocations (#5298) (@mrs) - Handle conversion from sRGB to Linear-sRGB implicitly instead of calling
applyColorCorrection(#5210) (@mrxz, @vincentfretin) - Add Pico 4 headset controllers support (#5281) (@felixtrz)
- Update URL to basis encoder (#5329) (@vincentfretin)
- Add Spatial Computing UI example (#7ea40c13) (@dmarcos)
- Remove workaround for an old Chrome bug in the context of
a-assets(#5335) (@mrxz) - Unit tests improvements (@mrxz, @dmarcos)
- Consolidate references to the CDN URL in a global variable (#5333) (@diarmidmackenzie)
- Docs improvements (@luc122c, @donmccurdy, @turbotimon, @lainshiHenry, @Rhys-Alexander, @vincentfretin, @dmarcos)
vr-mode-uicomponent renamed toxr-mode-ui(@dmarcos)- GearVR and Daydream support (@vincentfretin, @dmarcos)
- Fix issue when Quest 2 touch buttons are pressed before model has loaded (#5212, #5220) (@vincentfretin @mikemainguy)
- Fix orientation of hand tracking models (fix #4848) (@DougReeder)
- Fix problem with where image load quickly before the onload listener is attached. Manifests in particular for browser cached images (fix #5251) (@tomfelder94)
- Fix loading order when A-Frame is used along defer and modules script tags (fix #5228) (@wmurphyrd)
- Fix raycaster visual appearance when origin is not 0,0,0 (fix aframevr#4882) (aframevr#4884) (@Clicky02)
- Fix problem when adding a single property component via mixin (#5273) (@kfarr @dmarcos)
- Fix exception when trying to reference this pointer inside callback. (aframevr#5221) (@diarmidmackenzie) Change vertexColors property name to vertexColorsEnabled and make it a boolean to match THREE API (aframevr#5250) (@diarmidmackenzie)
- Add WebXR unit tests (aframevr#5227) (@diarmidmackenzie) Expose low / high refresh rates options for WebXR devices (aframevr#5217) (@diarmidmackenzie)
- Docs improvements (@Srile @DougReeder @foobar404 @stefan-langenmaier @vincentfretin @diarmidmackenzie @dmarcos)
- Fix error when exiting immersive mode (fix aframevr#5137) (@vincentfretin)
- Fix issue reentering immersive mode when using compositor layers (fix #5197) (supermedium/three.js#9) (@vincentfretin)
A-Frame moved to custom elements V1, Oculus Quest Pro support, and tons of fixes and improvements in both A-Frame core and inspector 👏
28 A-Framers contributed to this one! You're awesome 🙇
Sponsor A-Frame to help us move the 3D Web forward.
You can also buy a cool t-shirt 👕
- Move A-Frame to Custom Elements V1 API from the now deprecated Custom Elements V0 (fix #4262) (#5136) (@dmarcos)
- Move build system from Browserify to Webpack adding support for ESM (#5116) (@vincentfretin)
- Update to THREE r147 (@dmarcos @AdaRoseCannon @vincentfretin)
- Cardboard mode is now disabled by default as a first step towards deprecation. Magic window is now the fallback on mobile when native WebXR API is not available (fix #4814) (@dmarcos)
- Add support for Meta Quest Touch Pro controllers (fix #5138) (#5139) (@felixtrz @cabanier @dmarcos)
- Replace
targetRaySpacewith `gripSpace to position WebXR tracked controllers (#88e8db12) (@felixtrz @dmarcos) - Add support for KTX2 texture compression in gltf-model component (#5101) (@jameskane05)
- Add a default for Draco decoder URL for the gltf model component (#5156) (@kfarr)
- Hide fullscreen button in desktop mode on iPad. Safari doesn't seem to support fullscreen mode. (fix #4841) (#5191)
- Detach inactive pool entities from THREE Scene avoiding unnecessary matrix updates and raycaster checks / hits (#5188) (@diarmidmackenzie)
- Add support for WebXR foveation level. Only WebVR API was previously supported (fix #5108) (#5110) (@mrxz)
- Events emitted on a cursor entity also pass original MouseEvent and TouchEvent events when applies.
- Update unit test stack and fix test suite (#5091) (@vincentfretin)
- Display fullscreen button when AR / VR mode are not available (#ce23027d) (@dmarcos)
- Add
xrselectoption to rayOrigin property in cursor component so it can be used in a WebXR AR context (#5065) (@AdaRoseCannon) tracked-controls-webxrreference space is now configurable (#5040) (@msub2)- New
lightcomponent property to enable directional lights to track objects and update shadows automatically (#5025) (@AdaRoseCannon) - New
toneMappedproperty on renderer system. Flat materials can now opt out of tone mapping to look like light emitting surfaces. (#5029) (@AdaRoseCannon) - Update hand tracking model (fix #5185) (@dmarcos @vincentfretin)
- Factor out and document
throttleLeadingAndTrailing(#5151) (@diarmidmackenzie) - Docs improvements (@nikolas @dirkk0 @JGrotex @Kershawj @juunini @andrejsmelnikovs @csxiaoyaojianxian @Kirshach @diarmidmackenzie @Chabloz @vincentfretin @karunstha @janarthnk @Utopiah @daniel-schroeder-dev @Descent098 @oroju1)
- Fix
triggerchangedevent not firing with Oculus Quest 2 controllers (#5149) (@msub2) - Fix issue of loading screen displayed indefinitely (#5033) (@diarmidmackenzie)
- Remove duplicated update shader logic (#6858ed66) (@dmarcos)
- Fix ray positioning for Oculus Quest 2 controllers (#5141) (@felixtrz)
- Fix reflection component removal (#5125) (@vincentfretin)
- Fix Quest 1 controller ray positioning (fix #5183) (#5190) (@vincentfretin)
- Set default dev port to 8080. Oculus OS / Browser now block port 9000 and it's no longer usable (#0f508ad2) (@dmarcos)
- Fix Oculus Quest 2 controller button animation and highlights (fix #5067) (#5103) (@kylebakerio)
- Stop render loop when
a-sceneis removed from the DOM (#5112) (@vincentfretin) - Fix Github CI (#5092) (@vincentfretin)
- Don't emit
grantedevents ifDeviceOrientationEventpermission is not granted (#5079) (@diarmidmackenzie) - Fix removal of components with the name pattern
component-name__sufix. Used on multiple instances of a single component (fix #5080) (#5081) (@diarmidmackenzie) - Exclude
a-mixinswhen camera system tries to retrieve camera entities (fix #5023) (@mattrossman) - Reset
wasd-controlsvelocity when axis properties change (#5050) (@vulture-boy) - Match screenshot component and scene encoding (#5157) (@diarmidmackenzie)
- Fix VR/AR buttons positioning in embedded mode (fix #5158) (@dmarcos)
- Remove examples warning messages (fix #5184) (@dmarcos @vincentfretin)
Huge pile of fixes!
Sponsor A-Frame to help us move the 3D Web forward.
You can also buy a cool t-shirt 👕
- Update to THREE r137 (@dmarcos)
- Don't try to use hit test in VR. API only available in AR mode (#5005) (@AdaRoseCannon)
- Fix canvas size calculation on embedded mode (fix #4911) (@s-light)
- Fix reference space for WebXR Layers (#4991)
- Fix problem when material map doesn't reflect the
offsetandrepeatproperties set viasetAttribute(#4985) (@diarmidmackenzie @arturitu) - More robust
componentchangedevent. We were skipping the last component state transition event during a component change burst if last modification happens within throttle interval. (fix #4972) (@diarmidmackenzie @dmarcos) - Emit
mouseenter,mouseleave,clickcursor events component when order of intersected entities changes (fix #4978) (@diarmidmackenzie @dmarcos) - Prevent render loop to start before the camera is ready (#4967) (@wtodd1)
- Fix mouse based cursor entity intersection when used with ortographic camera (#4935) (@kfarr)
- Fix wrapping on distortion maps (#4932) (@AdaRoseCannon)
- Remove checks to prompt the user to switch to mobile mode on mobile browsers disguised as desktop (e.g: iPad) Browsers now ship with DeviceOrientationEvent API enabled. (fix #4798) (@PlumCantaloupe @dmarcos)
- Adds support for glTF models compressed with EXT_meshopt_compression (#4910) (@donmccurdy)
- Add missing dependency to fix 360 image gallery example fade animation (#4896) (@vincentmi)
- Fix hand model to accommodate changes in the hand tracking API implementation (66e0c624) (@dmarcos)
- Fix hit-test logic on model-viewer example (db633024) (@dmarcos)
- Fix SDF text shader for WebGL1 devices (fix #4827) (@Dirk-27)
- Replace SphericalReflectionMapping (now deprecated in THREE) with EquirectangularReflectionMapping (fix #4818) ( @diarmidmackenzie)
- Automatic generation of environment map (#4797) (@AdaRoseCannon)
- Fix copy in device orientation permission dialog (#4794) (@antoninklopp)
- Add phong shader to material component (#5001) (@AdaRoseCannon)
- Allow newer npm version in package.json (#4870) (@cwadrupldijjit)
- Add support for AR hit-test for Augmented Reality headsets and handsets (#4892) (@AdaRoseCannon)
- Add some default styling to WebXR DOM-Overlay (#4901) (@AdaRoseCannon)
- Add some default styling to DOM-Overlay (#4901) (@AdaRoseCannon)
- Integrate WebXR background lighting estimation API and environment maps for AR scenes (#4890) (@AdaRoseCannon)
- Use THREE.Cache API with a-assets.js (#4864) (@takahirox)
- Add Reverb G2 Support (#4845) (@zach-capalbo)
- Remove workaround to match Vive profile id with the one returned by Chrome. Chrome is now reporting the id matching the official WebXR profile (fix #4846) (@juliusikkala, @dmarcos)
- Replace live-server by five-server (#4836) (@yandeu)
- Add sRGB encoding to perspective screenshot (#4822) (@kfarr)
- Add registerShader texture example (#4795) (@mordof)
- Docs improvements (@epic-developer @jacob-willden @barthy-koeln @vincentfretin @RobinMglsk @a0m0rajab @kfarr @technobotanist @cao-jacky @schmelto @jlecordier @oneWaveAdrian @danbuckland @diarmidmackenzie @dmarcos)
WebXR immersive session and hand tracking fixes.
Sponsor A-Frame to help us move the 3D Web forward!
You can also buy a cool t-shirt 👕
- Update to THREE r125 (THREE.Geometry deprecated) (@dmarcos)
- Fix hand tracking (https://github.com/aframevr/aframe/commit/97be8159d3769f4602e24ca870b754741f78777b) (@dmarcos)
- Fix immersive mode in Chrome for Android and Microsoft Edge. (THREE r125)
- Don't initialize text mesh until the font has loaded. This prevents the raycaster to intersect prematurely and emit spurious events (#4742) (@quantumalchemy @dmarcos)
- Fix raycaster overriding line default color (#4743) (@GMartigny @dmarcos)
- Make sure enter-vr / exit-vr events are emitted when entering fullscreen (#4740) (@stefanhuber @dmarcos)
- Fix problem with wasd-controls when opening a contextual menu with right click while pressing WASD simultaneously. Camera movement doesn't stop when releasing keys (#4766) (@djoksimo @dmarcos)
- Fix inspector toggle on US international keyboards (#4516) (@svenkonings @dmarcos)
- Make sure generic controls have the lowest precedence when vendor specific ones are also defined (#4784) (@fordacious @dmarcos)
- Fix tests (@dmarcos)
- THREE r125 deprecates
THREE.Geometry
- Docs improvements (@tete-github @luics @KovacsGG @dmarcos)
5 years of A-Frame! 🥳
40 amazing A-Framers participated in this release. Thank you 👏
AR, hand tracking, compositor layers, immersive navigation (Quest only), Quest 2 support and much more.
Buy an gorgeous t-shirt 👕 to support the project.
- Support for WebXR compositor layers API @rcabanier @Artyom17 @dmarcos
- Support for WebXR DOM Overlays support @klausw
- Support for the WebXR immersive navigation proposal @arpu @Artyom17 @dmarcos
- Support for the WebXR hand tracking API proposal (#4650) @machenmusik @dmarcos
- Support for Quest 2 controllers @dmarcos
- Update THREE to r123 @dmarcos
- Fix problem with Windows Mixed Reality controller falling to generic model @arpu
- Fix incorrect values returned by the
axismoveevent on Oculus Quest (#4472) @Sujoy-Ghosh - Fix
npm run distcommand when running in zsh @benallfree - Fix wasd-controls easing to prevent sudden position jumps (#4241) @ntamas
- Replace calls to
THREE: getWorld*methods that don't know work in immersive mode (#4521) @NNskelly @dmarcos - Fix undetected controllers when using WebXR API @cabanier @Artyom17
- Fix
selectstart/selectendnever detected by the cursor component @vincentfretin - Fix for duplicated cursor component events (#4494) @binzume
- Listen to
sessiongrantedevent only if WebXR is available @dmarcos - Bump
webvr-polyfillto fix magic window mode in iOS 13 (#4554) @jwjordan @dax72 @NomisGnos @dmarcos - Fix Gear VR controller detection @vincentfretin
- Fix spectator camera mode when entering VR mode (#4666) @broehl @dmarcos
- Fix duplicated cursor component event in VR mode (#4494) @binzume @dmarcos
- Background component can now be removed (#4676) @NVFedorov @dmarcos
- Fix screenshot component (#4685) @bknill @dmarcos
- Add user gesture to start video playback in examples @dmarcos
- Fix white stripe at the bottom of the screen when exiting VR mode in iOS (#4617) @jgutierro @dmarcos
- Fix msdf shader compatibility with WebGL 1 devices (Safari iOS) @dmarcos
- Fix for immersive navigation where the
sessiongrantedevent was not captured @dmarcos - Move
raycastercollision detection fromticktotockto prevent bogus collisions on first frame @dmarcos - Fix for camera pose not correctly restored when exiting VR mode @dmarcos
- Make sure exit immersive logic runs when exiting AR mode @dmarcos
- Add
vr-modestate to<a-scene>when entering immersive mode with WebXR @dmarcos - Fix Valve Index controller button mappings @dmarcos
- Pass high-performance to the WebGL context to prioritize rendering performance over power consumption @arpu
- Docs improvements @rotoglup @richardjbaker @klausw @dmarcos @kfarr @majecty @AdaRoseCannon @ngokevin @sonnynomnom @lordbron @da4throux @danbuckland @vikohone @pixelistik @vincentfretin @stefanhuber
- Code hygiene @Jamesgt @Shalwaban
- Use new
THREE.WebGLRendereroutputEncoding @arpu - Make msdf shader WebGL 2 compliant @arpu
- Valve Index controller support @zach-capalbo
- Cordova compatibility @benallfree
- Change look-controls
hmdEnabledproperty name tomagicWindowTrackingEnabled@dmarcos - Improve hand tracking pinch gesture accuracy @cesmoak (#4691)
- Improve error handling when entering immersive mode (#4660) @federico-camonapp @dmarcos
- Make text of device permission ui component dialogs configurable @dmarcos
- Add look controls
mouseEnabledproperty to enable / disable mouse input @dmarcos - Add model viewer example with AR / VR and 2D mode compatibility @dmarcos
- Add user interface example that works in VR, desktop and mobile @dmarcos
- Make raycaster component line color configurable @dmarcos
- Add info panel to examples @thedart76 @dmarcos to show instructions, controls and credit authors.
Bug fixes
- Reset
referenceSpaceand controllers list when entering / exiting VR (#4406) @AG-LucidWeb @Artyom17 @dmarcos - Fix WebXR buttons mapping for Oculus Go controller @dmarcos
- Properly remove
selectstart/selectendevent listeners when XR session ends @DougReeder - Apply handedness orientation directly to the hands model (#4388) @dbradleyfl @dala00 @dmarcos
- Set tracked-controls
armModeldefault to false (#4405) @dmarcos - Set camera entity
matrixAutoupdateto false only for the WebXR case (#4383) @liewol @dmarcos - Check if headset is connected when ignoring
mousedownevents (#4380) @AG-LucidWeb @dmarcos - Get rid of invalid character in TRHEE build (#4428) @kennardconsulting @dmarcos
- Add dithering property in materials component (#4433) @Firepal
- Add Magic Leap Controller Support @atarng-magicleap
- New high poly, low poly and toon styles for
hand-controls@arturitu - Listens to WebXR
selectstart/selectstartand reemits as mousedown / mouseup. Simple screen input for AR experiences (fix #4407) @dmarcos - Use full hash in dependencies to comply with pnpm @pleku
- Add color property to
hand-controls@arturitu - Docs improvements @d2s @ChicagoDev @dirkk0 @omgitsraven @dmarcos
- Add API to set WebXR far and near camera planes (#4387) @DougReeder
Bug fixes
- Add support for Gear VR controller over WebXR (@Artyom17, @dmarcos)
- Add support for Oculus Go controller over WebXR (@Artyom17, @arpu, @dmarcos)
- Fallback to a generic controller when a WebXR gamepad is not recognized (#4376) (@Artyom17, @dmarcos)
- Match physical and virtual position of Quest and Rift S controllers (fix #4374) (@Artyom17, @dmarcos)
- Consider initial device orientation for magic window tracking. Fix problem when experience loads in landscape orientation on Android devices (@dmarcos)
- Listen to DOMContentLoaded if scene is not defined before updating the enter VR UI (#4373) (@mkungla, @dmarcos)
Bug fixes
- Track DeviceMotionControls yaw delta instead of absolute value to honor initial camera orientation (fix #4368) (@dmarcos)
- Disable touchmove / mousemove tracking in VR mode. Pose is preserved when exiting VR (@dmarcos)
- Hide Device Motion permission dialog on desktop requests from mobile devices. Only the alert about requesting mobile page is shown (fix #4369) (@dmarcos)
- Reset camera rotation to 0 when entering VR to prevent collision between magic window and WebXR poses (fix #4371) (@karanganesan, @dmarcos)
- Check if headset is connected before disabling mouse controls (fix #4370) (@KrisMerckx, @dmarcos)
Post 1.0.0 release bug fixes.
- Reintroduce a-asset-item logic to assign response type to
glTFmodels automatically. It now ignores query parameters that made it fail before. (#4219) (@dmarcos) - Prevent zoom on enter
VR / AR buttonswhen double tapping on touch screens (@dmarcos) - Apply style to reset the enter
AR / VR buttonsbackground on mouseleave. CSS Hover is sticky on mobile devices (@dmarcos) - Fix
magic window modein Daydream / ARCore Android devices. Use DeviceOrientationControls for tracking. (#4355) (@mako-lw, @dmarcos) - Honor model property in
laser-controls(#4354) (@dala00, @dmarcos) - Reduce
video-sphere / photo-sphereradius to prevent far plane clipping in VR mode on Android devices (#4365) (@AntoineLucidWeb, @dmarcos)
- Improve visual design of
modal dialogs(#4359) (@thedart76, @dmarcos) - Reinstate
WebXRas the default code path for Oculus Browser. Oculus Browser 7.1 now ships the gamepad module (#4360) (@dmarcos) - Show
alert dialogif the site is served over HTTP (#4357) (@brendanciccone, @thedart76, @mkungla, @dmarcos) - Improve text of desktop mode in mobile device
dialog. Change Ok button text to Close (@dmarcos)
WebXR final spec support!
Subscribe to the newsletter for continuing updates.
WebXRspec support (@klausw, @Artyom17, @dmarcos)- Support
WebXR gamepadsmodule (#4322) (@dmarcos, @arpu)- HTC Vive (@dmarcos)
- Daydream (@arpu)
- Oculus Rift (@DigiTec, @dmarcos)
- Oculus Rift S (@DigiTec, @dmarcos)
- Oculus Go (@arpu)
- Oculus Quest (@dmarcos, @Knochi)
- Microsoft Mixed Reality (@arpu)
- Vive Focus (@IvoJager, @dmarcos)
- Support experimental
WebXR ARmode (#4281) (@klausw) - New enter VR and AR icons (#4326) (@klausw, @brendanciccone, @ngokevin, @thedart76 and all members of the community that provided feedback)
Questcontroller support (#4073) (@DigiTec, @dmarcos)- Set
72Hz modeby default on Oculus Browser for Quest (#4232) (@dmarcos) - Fallback to WebVR on Oculus Browser until WebXR gamepad module ships (#4342) (@dmarcos)
- Permission dialog to request access to
DeviceOrientationevents due to iOS 13 new policy (#4303) (@KevinEverywhere, @dmarcos) - Update to THREE r111
- Fix resolution drop on exiting VR mode (#4246) (@tomegz)
- Don't emit synthetic
vrdisplaypresentchangeevent unless there's native WebVR implementation (#4301) (@dmarcos) - Set
xrSessionto undefined after exiting VR mode (#4321) (@klausw, @dmarcos) - Emit cursor
mouseupifmousedownif it's only originated on scene (#4249) (@edsilv, @dmarcos) - Fix
IE 11fullscreen mode (#4243) (@AlexandraWins) - Bump
animejsfork to fix flattenArray (#4158) (@ngokevin) - Replace undefined check to prevent ReferenceError in
JavaScriptCore(#4318) (@nuel, @dmarcos) - Fix component.events singleton, events being overridden by components of the same type (#4250) (@ngokevin)
- Honor
embedded modeon loading screen (#4245) (@dmarcos) - Fix incorrect response type inference for glb/gltf files (#4219) (@Ely-S)
- Fix WebVR deep-linking / navigation (#4199) (@Artyom17)
- Restore render target to canvas to prevent freezes (@dmarcos)
- Adjust
three-bmfont-textto THREE r111 API changes (#4331) (@dmarcos) - Don't consider Firefox Reality and Oculus Browser mobile / phone browsers (#4338) (@dmarcos)
DracoLoaderPath set for THREE v108 (#4272) (@arpu)- Use glTF header to determine a-asset-item response type (#4228) (@Ely-S)
- Remove
setTimeoutcall in tick if not raycaster.showLine (#4192) (@ngokevin) - isMobileVR differentiates Samsung Internet for Gear VR from Samsung Internet for Android (#4188) (@DougReeder)
- Apply handedness to Oculus Go controller (#4162) (@dmarcos)
- Fix button mapping for Vive Focus (fix #4344) (@dmarcos, @IvoJager)
- Deprecate
checkHasPositionalTracking(#4255) (@dirkk0)
Follow-up fix to 0.9.1 for fixing vrdisplayactivate and link traversal flow.
- Move
vrdisplayactivatehandler back earlier to fix auto entering VR in many cases (#4155). - Fix
vrdisplayactivateand link traversal due to last build having outdated version our three.js fork. - Fix
Entity.destroynot catching if entity is not attached to scenegraph (#4140). - Fix exiting fullscreen on Chrome m71+ (#4136).
- Fix URL bar not hiding in iOS Safari in fullscreen (#4146).
- Fix wrong sized canvas in iOS VR by preventing multiple
requestPresentcalls 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
- Detaching entity from scene will preserve component data. Add
Entity.destroy()method to clear components and return their memory to the pool (#4121). - Use controller index to determine left / right controllers which may impact cases like Vive Trackers. Will look to make this more robust soon (#4013).
- Deprecate
utils.device.isOculusGoin favor ofutils.device.isMobileVR(#4032).
- Updated documentation guides for 0.9.0.
- Fix text antialiasing from distance (#4039).
- Improve
vrdisplayactivatepath for more robust navigation (#4093, 3c2f68e). - Clean up object requested from pool by component to prevent pollution of old keys from other schemas (#4016).
- Fix initial camera position, rotation, scale potentially not getting applied (#4020).
- Fix
utils.coordinates.stringifyfor zeroed vectors (#4017). - Handle if both WebVR and both WebXR APIs are available (#4022).
- Handle null device from WebXR (#4030).
- Catch
navigator.xr.requestDeviceerror (#4035). - Fix animation for custom vec3 properties (#4051).
- Fix sound
onEndednot settingisPlayingto false (#4061, #4097, #4101). - Fix new materials not getting applied to
obj-modelrecursively (#4062). - Fix boolean values in
.flushToDOM(#4069). - Hide navigation buttons on Android (#4090).
- Fix Chrome gamepads by checking
getGamepadson every tick for Chrome (#4116).
- Add
Component.eventsAPI to define event handlers that are automatically attached and detached depending on entity lifecycle (#4114). - Improve animation error message when passing invalid
animation.property(#4122). - Have
Entity.removedetach entity to match HTML element behavior (#4082). - Migrate
hand-controlsmodel to glTF (#3932). - Add
shadow.enabledproperty to shadow system (#4040). - Add
renderer.alphaproperty to renderer system (#4040). - Add
AFRAME.coreComponentsfor a list of the core components (#4064).
- Use a fork of anime.js that has memory improvements from Kevin (#4028).
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.
- 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-modelcomponent (#3866). - Add
renderer.colorManagementproperty (disabled by default) to accurately match colors against modeling tools, but may changes in scene colors when flipped on.renderer.gammaFactorwill be set to 2.2. Callscene.renderer.systems.applyColorCorrectiononTHREE.Colors andTHREE.Textures to normalize changes (#3757). - Have raycasters only intersect against objects defined via
.setObject3D.raycaster.objectsshould be specified (e.g.,objects: [data-raycastable] or objects: .raycastable) because raycasting is expensive.raycaster.recursiveproperty removed (#3980) but will default to be recursive only under objects defined via.setObject3D(#3652). - Add
renderercomponent (#3757). antialiasattribute moved torenderer.antialias.- Raycaster events such as
raycaster-intersectedno longer directly contain intersection data. Use.getIntersectionfunction supplied in event detail orel.components.raycaster.getIntersection(el)to retrieve intersection data. Done to reduce garbage (a87e3b). - Disable link portal appearance by default (
link.visualAspectEnabled), link component defaults to purely to listening to an event to trigger navigation (#3743).
- Frame-independent easing for
wasd-controlsto prevent judders during framedrops (#3830). - Enable matrix auto updates for
tracked-controlsto 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
matrixAutoUpdatefor 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.object3DMapversus arbitrary children (8809e7). - Fix canvas getting squished on orientation change on mobile (64ed3d).
- Update position, rotation, scale components when calling
.setAttributeon 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.objectsis 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-controlstrigger 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).
- Add
oculus-go-controls, thanks Oculus! (cbbe75) - Add
vive-focus-controls(#3876). - Add
loading-screencomponent (#3760). - Add
?inspector={selector}andEntity.inspect()to automatically launch Inspector and focus on entity (#3894). - Add
renderer.highRefreshRateto enable 72hz mode on Oculus Browser (#3967). - Add
tracked-controls.autoHideproperty 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.blendingproperty (#3543). - Add
light.shadowRadiusproperty (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.logarithmicDepthBufferoption (d210a2). - Add
look-controls.reverseTouchDragproperty (#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
displayconnectedevent when headset connected (#3918). - Enable antialias by default on Oculus Go (#3942).
- Update to webvr-polyfill v0.10.10 (#3993).
- Large refactor of core component update path, reducing memory allocation and using object pooling (#3772).
- Skip
buildDataif updating component directly. 2x speed boost on.setAttribute(#3835). - Remove spamming
navigator.getGamepadcalls 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).
Kevin spent some time getting the Inspector into ship shape.
- 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.
- 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
oshortcut to toggle transform widget. - Add
escshortcut 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.
- 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.
Bug fixes after 0.8.0 release.
- Place touch model to match real physical position of the controller. Apply correctly the pivot offset for Oculus Touch Controls. (#3537)
- Remove unused rotationOffset attribute in favor of orientationOffset. (#3537)
- Use both touchpad and trigger events in laser-controls to fire click events on GearVR. (#3530) (fix #3519) 4879f0601 Fix reverse mouse drag for look-controls. (#3482) (fix #3459)
- Use most recent intersection from raycaster when entity is intersected. (#3475) (fix #3467, #3485, #3445)
- Fix minification issues due to ES6 features. Use forEach instead of for...of (#3495) (fix #3449)
- Stop click event from propagation in vr-mode-ui. Prevent taps on the screen to propagate to the scene on Cardboard v2. (#3527)
- Init position/rotation/scale first if defined on the entity (#3517) (fix #3516)
- Change default value of vec4 component property type to match THREE.Vector4 default value.
- Deprecate antialias component in favor of renderer component. (#3424)
- Fix post processing. Use scene.onAfterRender() for tock. (#3468)
- Fix ignored controller events if several button preses happen on same tick. (#3472)
- Fix animations triggered by state change. (#3470) (fix #3436)
- Delay setting pose target for VRManager until camera is ready to prevent vrdisplayactivate trigger vr mode prematurely. (#3448)
- Fix video sphere not rendering due to missing back material flag. (fix #3444)
- Fixes pointerlock mode camera movement jank. (#3434)
- Remove default components to 4 component initializations per entity. (#3490)
- Save one array initialization per tick and raycaster. (#3438) (fix #3437)
- Use Object3D directly to save/restore pose in look-controls skipping radToDeg. (#3439)
- Add component to a-scene to configure renderer. (#3424) (fix #666)
- Add component reference to sound-loaded and sound-ended (#3514) (fix #3505)
- Improve testing coverage for controllers (#3474)
Performance improvements.
- Updated to three.js r90.
- Ability to update three.js Object3D position, rotation, scale, and visible directly while being in sync with A-Frame. (#3245)
- Bubble
object3dsetandobject3dremoveevents no longer bubble. (#3220) - Raycaster intersection and cleared events now emitted once per event, not on every frame. (#3126)
- Remove VREffect / VRControls for three.js WebGLRenderer API. VR camera pose is managed by three.js. (#3152, #3327)
- Removed geometry.mergeTo. (#3191)
- Removed state mixins. addState and removeState event detail modified to be the state name, not object. (#3171)
- Removed Scene.reload() (#2239)
- Entity.getOrCreateObject3D. (#3222)
- Clone object type properties into oldData to fix update method not called on referenced objects. (#3409)
- Fix matrix composition when updating pose for controllers. (#3407)
- Fix component update getting overridden by mixin due to not passing in the whole attrValue into buildData. (#3302)
- Remove a-canvas z-index. (#3391)
- Fix parameters passed to the onButtonEvent function for Windows MR. (#3372)
- Fix black texture issue with a-sky and a-videosphere components with three r89. (#3370)
- Fix material array handling in shadow component. (#3348)
- Postpone the resize operation in iOS to ensure that the window size matches the viewport on orientation changes. (fix #3282) (#3306)
- Fix utils.entity.getComponentPropertyPath if defaultLightsEnabled not defined
- Look-controls don't read HMD position if no headset connected. (#3286)
- Fix raycaster direction. (#3239)
- Fix raycaster line update that wasn't triggered anymore. (#3124)
- Fix data from dom not parsed if skipTypeChecking. (#3153)
- Clone default array property type. (#3095)
- Fix Gear VR buttons highlighting. (#3103)
- Do not resize the canvas while presenting on mobile (#3080)
- Flipped the sign on sampleUV.x in the portal shader used by the link component (#3079)
- Add spectator camera mode and spectator scene component. (#3280)
- Support Pointer Lock API. (#3341)
- Allow mixin composition. (#3305)
- Add a background component for better performant plain color backgrounds than
<a-sky>. (#2908) - Use MutationObserver and object3dset and object3dremove events to refresh raycaster list. (#3070)
- Allow specify container for pool component. (#3392)
- Expose raycaster.intersections array. (#3289)
- Remove cameraRig on setupDefaultCamera. (#3364)
- Add metalnessMap and roughnessMap. (#2722)
- Add spectator camera mode to the camera component and spectator scene component. (#3280)
- Add transparent flag to be able to define transparent backgrounds. (#3320)
- Improve function names in debugger call stacks. (#3310)
- Allow removal of mixed-in components. (#3275)
- Add xOffset option to allow text padding. (#3269)
- Allow disable shadow map auto update, fix shadow system init. (#3214)
- Use component event handlers insted of bound a-scene methods. (#3213)
- Support sources in video. (#3176)
- Make camera system aware of mixins. (#3196)
- Remove everGotGamepadEvent flag and gamepadconnected / gamepaddisconnected. (#3189)
- Register cursor event listeners on canvas, not window. (#3179)
- Do not update style.width and style.height on renderer resize to not override styles applied externally. (#3184)
- Factor out onButtonEvent method from controllers. (#3169)
- Add raycaster.enabled property to toggle tick handler. (#3148)
- Have camera call enter VR handler if scene already entered VR with display activate. (#3149)
- String-trim primitive attribute values. (#3145)
- Add customizeable colors to link portal and title. (#3106)
- Adapt cursor onMouseMove to also accept touchmove events. (#3143)
- Save array creations on each raycaster update. (#3317)
- Optimize event emit. (#3308)
- Throttle updateControllerList while keeping getGamepads call. (#3112)
- Get rid of some string split operations. (#3316)
- Default the raycaster interval/throttle to 0. (#3293)
- Have getAttribute(visible) return object3D.visible directly. (#3283)
- Optimize aframe.utils.diff. (#3271)
- Raycaster fixes and performance improvements. (#3250)
- Remove garbage for addBehavior/removeBehavior. (#3217)
- Reduce garbage in axismove in tracked-controls. (#3185)
- Prevent component leakage in updateComponents (#3212)
- Cache font image textures for text component (#3158)
- Remove two array allocations per deepEqual call (#3115)
- Reduce Object.keys usage in core/schema (#3117)
- Save object allocation on look-controls.calculateDeltaRotation (#3116)
This release contains the same functionality as 0.7.0. This is a version bump to fix the npm package that shipped by mistake with an outdated THREE r86 version. (#3177)
This release features:
- Support for Windows Mixed Reality Headsets and Microsoft Edge.
- Support for glTF 2.0.
- Performance improvements to reduce garbage collection cycles.
- Add support for Windows Mixed Reality motion controllers. (#3013)
- Add glTF 2.0 support through upgrading three.js. glTF 1.0 is no longer supported. (#2986)
- Bump THREE to r87. (#2994)
- Do not resize the canvas in VR which leads to resolution drop (#3031).
- Fix component build data when
previousDatais object and a property has anulldefault value. (#3021) - Fix calculating mouse position for embedded scenes. (#2942)
- Fix missing detail property in a-scene onVRPresentChange. (#2920)
- Fix updates for the line component. (#2906)
- Handle
vrdisplayconnectandvrdisplaydisconnectevents in VREffect and VRControls. (#3019) - Allow text component to take a number value. (6cbdac)
- Handle
vrdisplaypointerrestrictedevent ina-scene. (#3014) - Allow decoupling of touch events in look-contols. (#3012)
- Add support for VR headsets that do not provide
stageParameters. (#3000) - Moves canvas initialization logic from a component to the scene. (#2985)
- Listen to
vrdisplayconnectandvrdisplaydisconnectto enter and exit VR when headset is plugged or unplugged. (#2900) - Add title info to Enter VR button. (#2905)
- Cursor example improvements. (#2916)
- Add
vertexColorsproperty to base material component. (#2901) - Add
emissiveandemissiveIntensityproperties to base material component. (#2896)
- Optimize tracked controls tick, discovery, and utilities. (#2943)
- Do not clone
attrValueattributes into data anymore to reduce cloning. (#2939) - Optimize a-entity code. (#2959)
- Optimize wasd-controls with early returns and skipping of type checking. (#2945)
- Optimize vec3 parse utility. (#2947)
- Optimize component change/initialize events. (#2950)
- Optimize look-controls by reducing object allocations and skipping of type checking. (#2944)
- Optimize emit method by removing split/map/callback calls and allocations. (#2941)
- Save a couple of function callbacks and array creations on each frame. (#2937)
- Remove inline functions for critical code paths in tracked-controls/raycaster/component for garbage collection. (#2936)
- Do not update component when data not changed even if skipping type checking. (#2917)
Bug fixes, support for Firefox on Android, mouse-based cursor, enable motion capture developer tools in the Inspector.
- Add a mouse-based cursor / raycaster, apply to the link traversal example. (#2861)
- Replace BlendCharacter dependency with ObjectLoader for hand-controls component. (#2876)
- Fix component updates when reusing same object by storing oldData after building component data. Pass undefined as oldData on component initialization for single-prop components. (#2840, #2871)
- More reliable entity loading order by checking against list of registered elements. (#2873)
- Bump polyfill that fixes Firefox for Android tracking issue. (#2865)
- Use attribute for animation color as
fromiffromis not defined. (#2855) - Re-add controller events after unpausing scene. (#2879)
- Fix line component being applied in raycaster when disabled.
- 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
.getAttributeand.setAttribute.
- Bumped three.js to r84. (#2456)
- Updated WebVR polyfill to 0.9.35. (#2700, #2818)
- Removed auto-enter-vr component previously for Carmel debugging. (#2784)
- Renamed
AFRAME.utils.coordinates.isCoordinatetoAFRAME.utils.coordinates.isCoordinates. (af3f89) - Removed reset sensor keyboard shortcut due to being removed from WebVR API. (#2531)
- Added support for link traversal. (#1575)
- Added link component with default portal appearance. (#1575)
- Added link-controls component in the examples. (#1575)
- Daydream controller support with daydream-controls, 3DoF support to tracked-controls with head/arm model. (#2538)
- GearVR controller support with gearvr-controls. (#2545)
- laser-controls component for responsive controls across 6DoF and 3DoF. (#2678)
- Added support for cursor component to draw a visible ray or project a mesh onto the intersection point. (#2678)
- Added
originanddirectionproperties to configure raycaster component. (#2678) - Shadow support via shadow component and light properties. (#2350)
- Implement
thumbstickmovedandaxismovedfor oculus-touch-controls. (#2513) - Implement system
.updatehandler. (#2548, #2613) - Added
controllerconnectedandcontrollerdisconnectedevents. (#2505) - Handle
onvrdisplaypresentchangeevents to enter and exit VR. (#2751) - Exposed
material.alphaTestandmaterial.depthWriteproperties. (#2516) - Exposed glTF animations. (#2417)
- Implemented
Component.tockhandler called after scene render for future post-processing support. (#1564) - Added support for A-Frame being required in a Node environment. (#2476, #2477, #2484, #2492, #2498)
- Implemented
trackpadmovedevent for vive-controls component. (#2415) - Added
response-typeattribute to<a-asset-item>to support array buffer responses. (#2442) - Automatically set glTF response types to array buffer. (63d2f8)
- Apply
camera.userHeightto controller when no stage parameters (e.g., Daydream). (#2448) - Allow unsetting of mixin with
.setAttribute('mixin', '')and.removeAttribute('mixin'). (a173509) - Allow default lights to be disabled with
<a-scene light="defaultLightsEnabled: false">. (#2376) - Added panner properties to sound component. (#2374)
- Added non-positional audio support to sound component. (#2490)
- Refactored and unit test tracked-controls component. (#2396)
- Added triangle geometry. (#2573)
- Cleaned up cursor component when removed. (#2391)
- Normalized default component values to proper types rather than strings. (#2411)
- Removed unnecessary touching of
THREE.Cachefor asset responses. (#2435) - Throw error for developer if HTML is opened with
file://protocol. (#2540) - Set
System.elto the scene element. (#2566) - Use
isControllerPresentutility rather than checkingnavigator.getGamepadsin order to fake oculus-touch-controls for motion capture. (#2604) - Check WebVR API rather than using a dolly to check for positional tracking capabilities. (#2602)
- Made default cone geometry look like a cone. (#2506)
- Show error message when loading Inspector. (#2525)
- Added validation warnings for schema default values. (#2511)
- Removed timestamps from debug and console messages to reduce noise. (#2550)
- Use
getElementByIdvs.querySelectorfor asset property types to be more strict. (#2578) - Added developer warnings for primitive mapping names. (#2631)
- Anti-alias by default on 2D desktop. (#2455)
- Added support for iOS 10 HLS video streaming. (#2597)
- Skipped schema type checking when object is passed through
.setAttributemore than once to consider it a validated object. (#2679) - Made
.getAttributenot clone component data object. Now returns raw reference to component data (#2689) - Disposed of unused texture objects from memory when no longer used by material component. (#2686)
- Throttled emitting of
componentchangedevent on each update to every 200ms. We recommend polling if more critical updates are needed. (#2683) - Avoided
string.split()in.setAttribute()to reduce memory in array instantiations. (#2674) - Removed duplicate asset requests by passing down
<img>from<a-assets>and by usingcrossoriginfrom the start. (#2544) - Changed selector property types to support
getElementById. (#2820) - Reduced default
<a-cursor>segments. (#2821)
- Fixed hand-controls blend-character animations between hand poses. (#2568)
- Fixed infinite loop when component
.inithandler calls.setAttributeon itself. (#2454) - Fixed unreliable
requestAnimationFrametimestamps by usingTHREE.Clockin the render loop. (#2471) - Fixed error when entity detached while trying to load and then trying to initialize. (#2521)
- Fixed updating of
material.sidecomponent. (#2528) - Fixed components sharing default array reference. (#2615)
- Fixed non-recursive raycasters. (#2331)
- Fixed various issues with sound component. (#2490)
- Fixed
AFRAME.utils.device.checkHeadsetConnectedto checkVRDisplay.isConnected(for Windows Mixed Reality Headsets). (#2427) - Fixed video materials not respecting autoplay and controls attributes, set
playsinline. (#2610) - Fixed cursor component
mouseupevent not being emitted if entity no longer intersecting. (#2678) - Fixed resetting material texture to null. (#2388)
- Fixed sound not playing when changing sound source. (#2457)
- Fixed
AFRAME.utils.deepEqualrecursion when comparing object with itself. (#2406) - Fixed
AFRAME.utils.deepEqualwhen comparing non-Object objects like HTML elements (#2502) - Fixed loading of glTF files that did not include a default scene. (#2462)
- Fixed camera height when re-entering VR. (#2394)
- Fixed CSS cursor stuck to grabbing in Firefox. (#2684)
- Fixed tablets not being considered mobile devices in
AFRAME.utils.isMobile. (#2309) - Fixed
AFRAME.utils.coordinates.isCoordinatewith scientific notation. (#2475) - Fixed pool component initializing twice. (#2407)
- Fixed error when injecting Inspector. (#2380)
- Fixed plane geometry segments. (#2499)
- Fixed grab CSS being applied when look-controls disabled. (#2642)
- Fixed look-controls enabling and disabling. (#2467)
- Fixed light targets. (#2715)
- Fixed
setAttributewiping out DOM-defined data on init. (#2727) - Fixed primitives mapping to non-default components. (#2767)
- Fixed vive-controls component button colors. (#2772)
- Fixed error if removing component before initialized. (#2713)
- Fixed booleans when updating component. (#2796)
- Fixed cursor component not waiting for canvas to load. (#2813)
- Fixed text component not updating text while font is loading. (#2814)
- Fixed WebVR polyfill being applied and user height not applied to GearVR browsers. (#2819)
- Fixed single-property mixins not working with primitives. (#2810)
0.5.0 contains text, glTF support, patches to enable WebVR record-and-replay tools, WebVR polyfill updates, enhancements, and bug fixes.
- Bumped three.js to r83. (#2214)
- N/A.
- Added
textcomponent for SDF and MSDF text. (#2289) - Added
gltf-modelcomponent for loading glTF 3D models. (#2333) - Added new hand poses for Oculus Touch controls. (#2191)
- Attach
tracked-controlsevent listeners even if no physical controllers are present. (#2314) - Made
Entity.removeAttribute(component, property)reset a property value to its default. (#2353) - Added
AFRAME.utils.throttleTickandAFRAME.utils.throttleutils. (#2189) - Changed
hand-controlsto check for "not Oculus Touch" rather than "is Vive" to makehand-controlsbe compatible with community control components (e.g., GearVR). (#2192) - Don't cache geometry if merging. (#2255)
- Allow unsetting of mixins with
setAttribute(mixinId, ''). (#2291) - Allow access to the
screenshotcomponent canvas (#2316). - Made
statscomponent UI more readable. (#2313) - Added warning of registered components contain uppercase characters. (#2233)
- Added warning if entity is appended outside of a scene. (#2240)
- Added warning if geometry merge target is not an entity. (#2243)
- Removed unneeded object equality check getting called on component initialization. (#2322)
- Updated
VREffectto allow player scaling. (#2328) - Added guides to documentation for Using JavaScript and DOM APIs, Using with three.js, and Writing a Component (58555a, 982f66, 09a606).
- Fixed low iOS resolution and blur issues. (#2352)
- Fixed mobile resolution and canvas sizing issues by using WebVR polyfill with updated device database. (#2345)
- Fixed potential Vive controller issues across browsers by loosening the Gamepad ID check to only check for prefix. (#2370)
- Fixed
raycaster.intervalnot being applied. (#2363) - Fixed system initialization affecting component updates. (#2367)
- Fixed unstable version of Inspector being injected on shortcut. (#2364)
- Fixed
vive-controlsnot tracking. (#2194) - Fixed component updates getting called even if data did not change. (#2322)
- Fixed
envifycausing issues when installing from npm with a bundler. (c62690) - Fixed component updates with
setAttributeusingdatainstead ofattrValue. (#2184) - Fixed coordinate parser when passed
nulland when trying to override. (#2209) - Fixed error when
vr-mode-uiis disabled andembeddedis enabled. (4607e2) - Fixed array property type updates through
AFRAME.utils.deepEqual. (#2229) - Fixed
initandupdatehandlers being called when doingflushToDOMon non-loaded entity. (#2250). - Fixed disabling of
fog. (#2251) - Fixed texture offset and repeats. (#2253)
- Fixed fullscreen not exiting when exiting VR. (#2264)
- Fixed component
pauseandremovehandlers not getting called on scene detach. (#2302) - Fixed multiple
look-controlsinstances colliding. (#2335) - Fixed several component properties missing property types. (#2357)
0.4.0 contains Oculus Touch controller support, integration with the Registry by means of the Inspector, API polish, and bug fixes.
getAttributereturns full computed rather than just defined component data set. (#1925)setAttributewhen passed an object (i.e.,setAttribute('material', {color: 'red'})) no longer clobbers existing component data, it will instead extend existing component data. Pass atrueflag as the third argument to clobber existing data.- Asset property type will directly pass the video element to a component if the value is a selector. (#2129)
- Refactored primitives to fix component dependencies and initialization ordering. (#2106)
- Removed
transformsfeature from theregisterPrimitiveAPI. (#2045) - Removed deprecated
look-atcomponent. (#1913) - Removed deprecated Declarative Events API (
<a-event>). (#1914)
getComputedAttributedeprecated in favor ofgetAttribute.getDOMAttributedoes whatgetAttributeused to do. (#1925)srcschema property type deprecated in favor ofasset,audio,map,modelschema property types. (#2003)AFRAME.utils.isMobile,AFRAME.utils.isGearVR,AFRAME.utils.checkHeadsetConnected, andAFRAME.utils.isIOShave all moved to theAFRAME.utils.devicenamespace.
- Bumped three.js to r82. (#2081)
- Oculus Touch controller support and controller refactor. (#2132)
- Inspector is pulled from
unpkg.comCDN to be able to reference a fuzzy version. (e664fe6) - Added
reverseDragproperty tolook-controlscomponent to reverse mouse drag (ideal for static 360° content). (#2024) auto-enter-vrcomponent for Carmel browser support, may be replaced once link traversal lands. (ae69e1d)- Added standard material map properties for ambient occlusion, displacements, normals, and spherical environments. (#1826, #2078)
- Asset parser no longer strictly demands URLs be wrapped with
url(). (#2045) - Added ability to take equirectangular and projection screenshots with a keyboard shortcut. (#1984)
- Added
asset,map,model,audioschema property types. (#2054) - Added wireframe properties to the standard and flat materials. (#1971)
- Have
raycastercomponent refresh its list of intersection targets when entities are attached or detached from the scene. (#1887) - Added
poolcomponent for performant object pooling and reuse. (#1954) - Added support for
tracked-controlscomponent to change its origin position (e.g., for teleportation). (#2002) - Added pooling to the
soundcomponent. (#1924) - Added intersection data to
cursorcomponent events. (#1920) - Added events to entity
setObject3DandremoveObject3D. (#2075) - Added
pauseSound()method to thesoundcomponent. (#1996) - Added loading feedback while A-Frame Inspector is being injected over the network. (#2006)
- Added console warning message if A-Frame script tag is included in the
<body>. (#2000) - Added support for non-QWERTY keyboard layouts in
wasd-controlscomponent. (#1832) - Automatically set
playsinlineandwebkit-playsinlineon video elements in asset system. (#2076) - Used slightly faster function binding. (#1782)
- Made
statscomponent alert text more readable. (#1885) - Allowed
inspectorcomponent to be opened viapostMessage. (#1997) - Allowed
statscomponent to be disabled via querystring. (#1836) - Exposed component prototype. (#2062)
- Exposed
XHRLoaderin<a-assets>. (#2023) - Added local Markdown documentation server
npm run docs. (48ff50) - Added documentation test and lint script for checking links, fix links. (#2080)
- Fixed component dependencies where bugs manifested in the
obj-modelandraycastercomponents. (#2036) - Fixed
intproperty type with empty data being turned toNaN. (#2063) - Fixed GearVR VR mode height by only removing
camera.userHeightif positional tracking exists and the device is not a GearVR or smartphone. (#2044) - Fixed mixins not working with multiple-instanced components. (#1699)
- Fixed default components (i.e.,
position,rotation,scale,visible) not being flushed to DOM in debug mode. (#2064) - Fixed
cursormouseleaveevent not being reliable with multiple close objects. (#1882) - Fixed
cursorcomponent intersecting itself. (#1936) - Fixed entity not being able to re-attach after being detached. (#1928)
- Fixed typos for
requestFullscreencalls. (#1963) - Fixed
tracked-controlscomponent if a mesh was not applied. (#1875) - Fixed
raycastercomponent passing its actual intersection objects through events. (#1978) - Fixed
statscomponent for Safari. (#1865) - Normalized Git-tracked files to Unix-style line feeds. (#1825)
- Fixed stringifying default
nullvalues for object property types. (#2138) - Fixed material update referencing
sceneElwhen the scene has not yet loaded. (#2137) - Fixed default values of a schema property getting changed to weird values. (#2140)
- A regression in the October 29th version of Chromium passes microsecond-based
timestamp into
requestAnimationFrameinstead of milliseconds, breaking animations.
- WebVR 1.1 API support (#1931)
- Fixed requiring A-Frame with Browserify from npm. (#1824)
0.3.0 improves performance, adds support for the WebVR 1.0 API, and adds tracked controllers (using experimental Gamepad APIs).
- WebVR 1.0 API support. (#1423)
- Default camera is now positioned at
0, 1.6, 0rather than0, 1.8, -4. In VR mode, the1.6mheight offset as defined bycamera.userHeightis removed. (#1474, #1718) - Components no longer serialize stringified data to the DOM for performance. Introduced debug mode and flush-to-DOM methods. (#1323)
- No longer able to provide own
<canvas>element. (#1474) - Geometries default to be BufferGeometrys, saving memory at the cost of being more difficult to manually manipulate. Use
geometry="buffer: false"to disable. (#633) -- Geometry data is preserved ingeometry.metadata. (#1557). - Removed deprecated declarative events, loader component, and
<a-cube>. (29446e0) - Abstract raycasting-related properties out of the cursor component into the raycaster component. (#1196)
- Have shaders handle applying texture objects to material objects rather than material system. (2cee9eb)
- Removed geometry component's
translateproperty, added apivotcomponent inextras/. (#1339) - Renamed
defaultAttributestodefaultComponentsinregisterPrimitiveAPI. (#1460) - Default lighting setup tweaked. (#1478)
- Made
sound.srcuse thesrcproperty type. Sound URLs must now either be wrapped inurl()or a selector to an<audio>element. (#1629) - Added A-Frame Code of Conduct. (#954)
- Reduced webvr-polyfill
BUFFER_SCALEto1 / window.devicePixelRatioonly for iOS versions under 10 as a workaround to a Webkit bug. This will cause decrease resolutions on iPhone VR mode temporarily. It can be overridden inwindow.WebVRConfig.BUFFER_SCALE, but will cause canvas sizing issues upon entering stereo causing people to have to rotate their phones back and forth. (#1803)
- Declarative Events deprecated in favor of ngokevin/aframe-event-set-component. (#1634)
look-atcomponent deprecated and moved to ngokevin/aframe-look-at-component. (#1447)<a-model>primitive deprecated in favor of<a-collada-model>and<a-obj-model>. (#1525)
- Added
tracked-controls,vive-controls, andhand-controlscomponents. (#1584) - Added API for multiple components of the same type (e.g.,
sound__1,sound__2). (#1596) - Added schemas to systems. (#1589)
<a-asset-item>s now truly cached and only fetched once. (#1700)- Added better support for embedded scenes with
<a-scene embedded>. (#1474) - Can now enter fullscreen if headset is not connected. (#1474)
- Added
AFRAME.registerGeometryAPI such that each geometry type has its own distinct schema. (#1162) - Bumped
webvr-polyfillto 0.9.15. (#1618) - Dispose
THREE.GeometryandTHREE.Materialobjects when no longer in use to save memory. (#1287) - Moved texture caching to material system. (#1315)
- Reduced default
<a-sky>,<a-videosphere>segments. (#1319, #1532) - Added geometry caching system to save memory. (#1347)
- Improved GearVR support. (#1336)
- Removed unnecessary object diffing calls. (1c924b6)
- Added geometry merging API to reduce number of draw calls for geometries that share the same material. (bd0dbcb)
- Added support for animation of color property types. (#1302)
- Added icosahedron, dodecahedron, octahedron, tetrahedron geometries. (#1413, #1493)
- Better NPM v3 support. (#1430)
- Added more properties to the raycaster component. (#1196)
- Added more properties to the sphere component. (#1454)
- Added
light.intensity,light.targetproperties. (#1270, #1728) - Added
camera.zoomproperty. (#1453) - Added
<a-sound>,<a-torus-knot>primitives. (#1455, #1456) - Added
componentremovedevent for entities. (#1434) - Remove injected A-Frame favicon. (#1415)
- Added
endattribute for animations to stop on events. (#1481) - Added separate
delayattribute for animations. (#1508) - Added
material.flatShading,material.visibleproperties. (#1503, #1690) - Defaulted
geometry.primitivetobox. (#1523) - Versioned the A-Frame documentation.
- Custom materials lifecycle methods only require to set
this.materialrather than return. (#1549) - Added support for
<canvas>to be a source of texture for materials. (#1567) - Added utility functions for getting and setting properties of multi-prop components. (#1595)
selectorAllproperty type now convertsNodeListtoArray. (#1642)- Changed default stats UI background color to gray. (#1644)
- Exposed list of registered primitives. (#1643)
- Removed instances of hard-coded
<a-scene>, done to support an independent augmented reality (AR) initiative. (#1665) - Added cursor grabbing styles to look-controls component. (#1680)
- Added support for mixins being attached at runtime, done to support a third-party CSS syntax for components. (#1610)
- Added
<ctrl> + <alt> + ishortcut to inject the A-Frame Inspector tool. (#1599) - Removed a
Function.prototype.bindcall on each frame render (#1808)
- Fixed deep-seated prototype callback order invocation bug in
document.registerElementwrapper. (#1689) - Fixed look-controls component when dragging mouse off of canvas. (#1474)
- Fixed primitives not correctly merging properties with defined components. (#1324)
- Fixed being able to provide size to custom canvas. (#1322)
- Fixed merging of mapped properties and component properties for primitives. (#1332)
- Fixed not being able to disable video autoplay. (#1353)
- Fixed dynamically attached entities not playing. (#1415)
- Fixed primitives overriding defined attributes. (#1448)
- Fixed raycasting on loaded models. (#1497)
- Fixed having multiple COLLADA models in a scene. (#1511)
- Fixed components not being initialized before playing. (#1565)
- Fixed
material.repeatnot being able to be a float. (#1568) - Fixed single-property components with a default truthy value not obeying truthiness if defined in HTML without a value. (#1631)
- Fixed spotlight angles. (#1728)
0.2.0 improves extensibility:
- Component API has been greatly enhanced with more lifecycle methods, schema options, and property types.
- Components can be applied to primitives (e.g.,
<a-box>). - Custom GLSL shaders can be shared and registered to provide more visual effects.
aframe-coremerged withaframe.window.AFRAMEexposes whataframe-corewas exposing previously (e.g.,AFRAME.registerComponentvs.AFRAME.aframeCore.registerComponent). (#368)<a-assets>must be declared within<a-scene>. (#910)<a-entity>.object3Dis now aTHREE.Group. Use<a-entity>.setObject3DAPI to add new 3D objects from components. (#847)- Bumped three.js to r74 stable. (#1006)
- npm points to a prebuilt bundle of
dist/aframe.js. - Scene
<canvas>elements are now appended to the scene by default rather than to the document body. The scene can specify which<canvas>to render to. (c0aa360) - Primitives such as
<a-sphere>directly extend<a-entity>rather than template them. They can be registered withAFRAME.registerPrimitive. (#883) <a-template>and HTML Imports logic have been removed. Use https://github.com/ngokevin/aframe-template-component in the meantime. (#883)<a-camera>no longer creates a cursor on its own. Do<a-camera><a-cursor></a-cursor></a-camera>instead. (#883)- Default geometry
depth,height,widthproperty values changed from2to1. (#1245) - Default color of primitive elements such as
<a-box>changed to#FFFto not interfere with textures. (#1245)
loadercomponent deprecated in favor ofcollada-modelandobj-model. (#913)<a-model>deprecated in favor of<a-collada-model>and<a-obj-model>. (#883)<a-EVENTNAME>elements such as<a-mouseenter>deprecated in favor of<a-event name="EVENTNAME">(unstable). (#883)<a-cube>deprecated in favor of<a-box>. (#883)
- Introduced shaders to extend the material component and to register custom GLSL shaders. (#861)
- Component property types. Property types define how a component property is parsed and stringified. Custom property types can be registered or defined inline with the property in the schema. Built-in property types include
array,boolean,color,int,number,selector,selectorAll,string,vec2,vec3,vec4. (d35e56e) - Single-property components. A component can define itself as consisting of only one property by specifying a type and/or a default value in the schema. (d35e56e)
- Asset management system that blocks scene render.
- Play/pause methods on entities and play/pause handlers on components. (9238861)
- Tick method on components to register a function called on each scene tick. (#823)
- Support for loading
.OBJand.MTLassets. (#788) - Texture caching for better performance when reusing textures. (#1116)
- Components can be attached to primitives (e.g.,
<a-sphere>). (#883) - Introduce systems API (unstable) to provide global scope and services for components. They can be registered wtih
AFRAME.registerSystem. (#924) - Entities, including the scene, wait for their children to load before emitting the
loadedevent. (a8a4f06) - Entities emit
child-attachwhen children are attached. - Most
<a-scene>logic moved to configurable components and systems. (#776) - Support for multiple cameras in a scene and switching between them. (#745)
- Added more events for scene VR mode, material component, model components, and sound component.
- Default geometry
segments*property values increased for smoother meshes. (#1245) - Added more meta tags for mobile web-app capabilities, automatically set properties to video elements for inline video playback on iOS. (#316)
- Added three.js stats to the stats component. (#1223)
- Added
<a-torus>primitive. (#1184)
- Stop
<a-animation>when detached. (#727) - Fixed
<a-animation>beginattribute. (#885) - Keyboard shortcuts no longer trigger when used alongside modifier keys. (#1211)
- Fixed viewport issues in Twitter webview on IOS. (#1174)
- Raycaster and cursor components can now intersect with loaded models. (#1166)
- Improved positional tracking. (#1157)
- Fixed Android shader bugs for devices like Motorola and OnePlus. (ceb5fa)
- Initial public release