Skip to content

Releases: magicleap/MagicLeapUnitySDK

1.7.0

22 May 13:26
Compare
Choose a tag to compare

Features

  • Minimum ML API level updated to 26.

Bugfixes

  • Fixed compiler errors when the package com.unity.xr.openxr is also installed.
  • Fixed MLDepthCamera errors when closing the application.
  • Improved performance of MLWebRTC.MLCameraVideoSource by making it start the video capture asynchronously.
  • Fixed enforcement of MLCamera's near clip distance when "Fix problems on startup" is enabled
  • Fixed occasional crash when changing scenes while MLMediaPlayer is playing local video file
  • Addressed MLAnchors query timing to reduce likelihood of missing pose errors.
  • Fixed CV camera errors when resuming from sleep mode
  • Fixed CV camera errors when resuming from menu
  • Fixed MLWorldCamera Invalid Parameter error spams.
  • Renamed Tests assembly definition.
  • Fixed caching logic for CustomHapticsPatterns to avoid using incorrect cached patterns.
  • Fixed MLVoice.IntentEvent's EventSlotsUsed list within the OnVoiceEvent so it properly lists all Slots used in the voice command.
  • Optimized MLMeshing API and components to reduce memory usage.
  • Fixed spamming errors caused by not detecting eyes in the eye tracking example.

Deprecations & Removals

  • The MLMediaDRM API has been marked as Obsolete and will be removed in a future release.
  • MLWebView.GetScrollSize() and MLWebView.GetScrollOffset() have been marked as Obsolete and will be removed in a future release.
  • Removed the ability to turn off near clipping plane enforcement in MagicLeapCamera.

Known Issues

  • MLWebRTC: When disconnecting from a session, the camera does not shut down cleanly if the NativeSurface buffer format was used, causing the application to hang for as much as 30 seconds.

1.6.1

17 May 22:35
Compare
Choose a tag to compare

Known Issues

  • MLWebRTC: When disconnecting from a session, the camera does not shut down cleanly if the NativeSurface buffer format was used, causing the application to hang for as much as 30 seconds.
  • MLAnchors API returns the same anchor poses after a headpose reset

Deprecations & Removals

  • Removed the ability to turn off near clipping plane enforcement in MagicLeapCamera.

1.6.0

26 Apr 13:35
Compare
Choose a tag to compare

Features

  • Added MLNotifications API to suppress default notifications in medical SKUs.
  • Added support for handling and selecting multiple language tracks for subtitles.
  • MLWebView: added open and close callbacks for popup tabs.

Bugfixes

  • Fixed the controller ray not following the totem right after starting Unity app.
  • Fixed broken link in README (#8)
  • Fixed issue with MLMediaPlayerBehavior where calling StopMLMediaPlayer() would make videos unplayable.
  • Fixed camera errors after the device enters sleep mode.
  • Fixed issue with MLMarkerTracker not working after device enters sleep mode
  • Fixed issue with creating spatial anchors with an expiration value of 0 causing errors.
  • Fixed issue where meshing system would render excess data when returning to the application if head tracking was reset in another application.

Known Issues

  • MLWebRTC: When disconnecting from a session, the camera does not shut down cleanly if the NativeSurface buffer format was used, causing the application to hang for as much as 30 seconds.

1.5.0

22 Mar 13:57
Compare
Choose a tag to compare

Features

  • Added support for XRHandSubsystem
  • Added slots to MLVoiceIntents
  • Update Magic Leap XR Plugin requirement to version 7.0.0
  • Added option to recenter the XROrigin component at Start() via the inspector inside the MagicLeapCamera component.

Bugfixes

  • Fixed enforcement of Main Camera's near clip distance to respect user setting.
  • Fixed a NullReferenceException being thrown when stopping and replaying video with MLMediaPlayer
  • Fixed invalid handle check with MLMeshing subsystem

Known Issues

  • MLWebRTC: When disconnecting from a session, the camera does not shut down cleanly if the NativeSurface buffer format was used, causing the application to hang for as much as 30 seconds.

1.4.0

22 Feb 17:37
Compare
Choose a tag to compare

Features

  • Added MLNativeBindings.MLUnitySdkGetMinApiLevel() method which reports the minimum Magic Leap API level supported by the package.
  • Added new MLCameraBase class to the MLCamera API which can be used to make camera API calls synchronously.
  • Added suite of automated API marshalling tests in Test Runner.
  • Added new public OnReceivedSamples callback to the MLAudioInput API.
  • Added new capability to MLSegmentedDimmer to enable using the camera's depth buffer to automatically apply segmented dimming to 3D meshes in a scene, instead of using URP. This feature will require an upcoming update to the com.unity.xr.magicleap package.
  • Added WinkLeft and WinkRight values to the MLGazeRecognition.Behavior enum.
  • Added Reset() method to the MLMediaPlayerBehavior script.
  • Added Controller.State struct to the Input subsystem get state info of the controller, such as handedness. Use InputSubsystem.Extensions.Controller.GetState() to query the current state.
  • Added MagicLeapCamera.recenterXROriginAtStart boolean to determine if the app should recenter the XROrigin object so that the Main Camera is at the scene's origin on start. This is set to true by default but can be toggled off within the inspector.

Bugfixes

  • Fixed bug where MLMarkerTracker would not shut down cleanly, causing a "PerceptionSystemNotStarted" error to fill the log output.
  • Fixed a low reproducible bug where the app would crash when consistently pausing and unpausing a scene by making the Pause/Resume methods synchronous in MLCamera

Known Issues

  • MLWebRTC: When disconnecting from a session, the camera does not shut down cleanly if the NativeSurface buffer format was used, causing the application to hang for as much as 30 seconds.

Deprecations & Removals

  • Several MLSegmentedDimmer properties which had previously been deprecated have now been removed.
  • MLSegmentedDimmer.SetEnabled() has been marked Obsolete and will be removed in a future release.

1.3.0

03 Jan 19:33
Compare
Choose a tag to compare

Features

  • Added MLDepthCamera and MLWorldCamera APIs

Bugfixes

  • Fixed null reference exception in Meshing subsystem which was causing applications to crash.

Known Issues

  • Quitting a scene while using MLMediaPlayer will cause a timeout error to be logged.

1.2.0

09 Dec 03:42
Compare
Choose a tag to compare

Features

  • Added GetData method to AudioInputBufferClip that does not automatically wrap the audio data and instead sends you exactly what is in the audio buffer.
  • Added MLCamera.FlipCameraVertically method to allow easily flipping camera frames instead of needing to invert Unity Renderer.
  • Added Pause and Resume capability to MLWebView
  • Added new result code MLResult.Code.IllegalState
  • Added new struct MLMarkerTracker.TrackerSettings that introduces tracker profiles to MLMarkerTracker as a more modular way to configure the marker tracker hints.
  • MLMarkerTracker.MarkerData objects now have their pose correctly rotated before being given to the developer.
  • Exposed a callback MeshingSubsystem.Extensions.MLMeshing.Config.OnMeshBlockRequests that provides the mesh block info to allow for setting LOD overrides on a per mesh block basis. The callback is set with MeshingSubsystem.Extensions.MLMeshing.Config.SetCustomMeshBlockRequests(...) or MeshingSubsystemComponent.SetCustomMeshBlockRequests(...)
  • Exposed system intents in MLVoiceIntentsConfiguration. This is curretly an experimental feature on the OS.
  • Exposed funcs in MLAudioOutput to allow bypassing device's master volume. These functions will only work on 60601 compliant devices.

Bugfixes

  • MagicLeapHandDevice is no longer derived from XRController
  • Fixed AccessRenderBufferTexture bug in MLWebRTCVideoSinkBehavior which occasionally prevented frame from rendering correctly.
  • Fixed UnspecifiedFailure in MLMarkerTracker API caused by change in MLMarkerTrackerSettings structure.
  • Fixed bug in MLMediaPlayer where Reset() was being incorrectly called in place of Stop().
  • Fixed MLMediaPlayer blocking main thread with Reset() and Destroy() methods. These now execute on a separate detatched thread.
  • Fixed a crash in MLMediaPlayer when switching scenes.
  • Fixed bug in MRCamera RGBA image format rendering.

Deprecations & Removals

  • MeshingSubsystemComponent.LevelOfDetail, MeshingSubsystemComponent.LevelOfDetailToDensity(), and MeshingSubsystemComponent.LevelOfDetailToDensity() have been marked Obsolete and will be removed in a future release in favor of MeshingSubsystem.Extensions.MLMeshing.LevelOfDetail, MeshingSubsystemComponent.FromDensityToLevelOfDetail(), and MeshingSubsystemComponent.FromLevelOfDetailToDensity()

Known Issues / Limitations

  • Hand Center and Interaction Point are not valid in the Gesture Classification API.

1.1.0

09 Nov 22:07
Compare
Choose a tag to compare

Features

  • Unity Magic Leap XR Plugin dependency updated to 7.0.0-pre.1
  • Using Segmented Dimmer now requires an explicit MLSegmentedDimmer.Activate() call in order to request the Graphics API provide AlphaBlend frames.
  • Per-frame intrinsics via for Mixed Reality Configured MLWebRTC/MLCamera are now available.
  • Controller 6dof state filtering is now available.
  • Unity XRI haptics now supported.
  • SettingsIntentsLauncher can be used to open certain Android Settings views directly from Unity.
  • Added new MLMediaPlayer OnVideoRendererInitialized callback for when video renderer is fully initialized
  • Added GetData function to AudioInputBufferClip that does not automatically wrap the audio data and instead sends you exactly what is in the audio buffer.

Bugfixes

  • Fixed bug in WebRTC where toggling local video off and then back on during a connected session did not work.
  • Fixed bug in WebRTC which prevented a session from persisting between scene changes.
  • Fixed bug in WebRTC where Mixed Reality capture showed a transparent vertical bar on the side of the image.
  • Fixed MLSegmentedDimmer behavior where disabling dimmers using the IsEnabled property did not work as expected. The property has been marked Obsolete and replaced with a SetEnabled() method which turns on and off the MeshRenderers for objects on your Segmented Dimmer layer.
  • Fixed issue with WebView's first tab loading before service is connected.
  • Fixed Meshing Subsystem using invalid handles if device headpose gets reset
  • Corrected some MLCamera event delegates being incorrectly defined.
  • Fixed issue in WebView where adding too many tabs caused them to begin rendering outside of UI bounds.
  • MagicLEapHandDevice is no longer derived from XRController

Deprecations & Removals

  • Numerous MLSegmentedDimmer API properties have been marked Obsolete as they are non-functional and will be removed in a future release.

1.0.0

15 Oct 04:04
Compare
Choose a tag to compare

Features

  • Added controller pose derivative values to Unity Input system.
  • Added ability to save Magic Leap diagnostic logs from within Unity.
  • Updated license agreements and copyright headers.
  • Added Anchors space origin transform.
  • Added MLAudioInput support for streaming audio clips.
  • Updated WebRTC API struct format and improved memory management.
  • Added new Auto Resize Native Renderer option to MLWebRTCVideoSinkBehavior which if enabled will allow the Native Renderer to automatically be adjusted in response to changes in WebRTC stream size.
  • Added ability for developers to override VkSamplerYcbcrConversionCreateInfo struct.

Bugfixes

  • Fixed resource leak in WebViewTabBehavior leaving web view tabs open after changing scenes.
  • Fixed cleanup of YcbcrRenderer when MediaPlayer is reset.
  • Fixed MLAudioInput capture delay.
  • Fixed use of TryGetBestFitStreamCapability.
  • Fixed multiple warnings due to unused variables.
  • Fixed errors with MLCamera asynchronous APIs by adding locking mechanisms.
  • Fixed performance issues with executing LabDriver to get relative paths for Magic Leap App Sim.
  • Fixed cleanup of callback handlers on video player teardown.
  • Fixed RenderTexture read-write settings and YcbcrRenderer output color space determination.
  • Fixed MLWebView link click precision issues.

Deprecations & Removals

  • Removed WorldScale support. This was causing issues with transforms coming from the Magic Leap SDK and was not uniformally applied. Recommended to use custom scaling of objects instead of camera parent scale.
  • Removed APIs for deprecated features (Hand Meshing, Raycast, Image Tracking)
  • Removed deprecated Planes setting Max Hole Size.

Known Issues / Limitations

  • Eye blinking state is not reported either by the eye tracking API or the gaze recognition API (awaiting platform support).
  • WebRTC LocalAppDefinedAudioSourceBehavior is restricted to 1 audio channel.
  • To use Geometry Shaders, Force Multipass must be set in Project Settings -> XR Plug-in Management -> Magic Leap Settings -> Force Multipass. Otherwise geometry shader passes cause vulkan exception in Unity player.
  • Keypoint mask values in ML App Sim are temporarily ignored and overridden to true.
  • XR Framework Meshing subsystem crashes when attempting to load mesh blocks for rendering.
  • Detecting simultaneous controller input buttons does not work in Unity Input System 1.2.
  • Marker tracker transforms are upside down requiring users to rotate them by 180 degrees about the forward vector.
  • Camera capture can freeze app after multiple captures.
  • MLCamera.CaptureVideoStop fails with UnspecifiedFailure when called by WebRTC CameraVideoSource using NativeBuffers. When using YUV CaptureVideoStop returns successfully.
  • Some configurations of camera capture can produce distorted images.
  • WebRTC video sink rendering fails when non-white material is assigned.
  • MLGestureClassification's GestureTransformRotation and GestureInteractionRotation are not implemented yet and data will not be guaranteed accurate. Currently only the Positions of the Hand Transform and Interaction Point will be recommended to use.
  • MLWebView first tab creation causes framerate drop.
  • If HandTracking is enabled, the Controller position/rotation actions fail to work properly when binding with the generic XRController and Right XRController input devices. The work around is to have your actions bind to the MagicLeapController input device instead. The MagicLeapInputs input asset already does this with it's action fallbacks.
  • MLAudio is not fully supported in the 2022.2.0b8 version of the Unity Engine, make sure you don't check the "MLAudio" check box in Magic Leap XR settings (to utilize the Java AudioTrack fallback). Also use the following audio settings: Sample rate to 48000, buffer size to Good Latency.
  • When changing audio settings Unity crashes often or starts making noises.
  • Unity applications currently experience aproximately 19 MB/hr - 190 MB/hr memeory leak (varies by app). This appears to be true for all Android based Unity applications.
  • WebRTC session can not be reconnected to if user navigates to another scene during an active session.

0.26.0

21 Jul 20:50
Compare
Choose a tag to compare

New Features

  • New "Magic Leap → Zero Iteration" menu that contains functionality that was previously contained in the Magic Leap XR Plugin.
    • Note that the "Magic Leap → ML Remote" menu from the Magic Leap XR Plugin will be deprecated in a future release
  • Exposed APIs to optionally set/get the Ids for WebRTC media tracks. Ids can be specified when creating the tracks and the MLWebRTC.MediaStream.Track.Id property is already set upon receiving a track from the remote peer.
  • Exposed callbacks in MLWebRTC.AudioSink to provide the app with the incoming audio buffers. Pass in the appropriate BufferNotifyMode to MLWebRTC.AudioSink.Create() to set whether the app will receive the audio buffers or not and whether the underlying WebRTC platform will play the audio or leave it to the app to do so.
  • Exposed functions in MLWebRTC.AudioSink to set various soundfield parameters (position, orientation, direct send levels, room send levels, distance & radiation properties and sound volume). These properties should only be set after MLWebRTC.AudioSink.CurrentServiceStatus is ServiceStatus.Started or MLWebRTC.AudioSink.OnAudioServiceStatusChanged delegate is fired with ServiceStatus.Started.
  • Updated MLWebRTCAudioSinkBehavior to playback the received audio via Unity if the "Sink Buffer Notify Mode" is set to "Notify Only" and an AudioSource component reference has been provided. This, combined with a spatialization plugin, can be used to achieve much more granular control over the spatialization than currently offered via the soundfield parameters in the MLWebRTC.AudioSink class.

Updates

  • Added extensions for MLPlanes.QueryFlags enum. You can now check which flags are set by calling convenience functions like IsCeiling(), IsFloor() etc to check which planes the flag represents.
  • Image capture now uses memory from a circular buffer to avoid over-allocations in case of multiple capture requests.
  • Added OnTrackAddedMultipleStreams & OnTrackRemovedMultipleStreams delegates to the MLWebRTC.PeerConnection class. These delegates are similar to the old OnTrackAdded & OnTrackRemoved delegates but report a full list of streams that added/removed track belongs to.
  • Upgraded Magic Leap XR Plugin support to 6.2.2.
  • Clarified the usage of MLEyes.Timestamp property that it won't automatically initialize the eye tracking api and returns 0 in that case.
  • Added ability to change MTU size in MLBluetoothLE.

Bug Fixes

  • Fixed a crash in MLWebRTC when the remote peer does not provide a stream ID for its media tracks. Use a default stream ID of "unknown_remote" in such cases.
  • Fixed the string returned from the scanned QR-code. The string had a null-terminator in the end.
  • Fixed MLWebRTCVideoSinkBehavior to scale the game object according to dyamic changes in video resolution.
  • Fixed errors thrown by pending MLPlanes queries when a new scene is loaded before they're completed.
  • Fixed an error in MLPlanes where polygons were always requested, regardless of the provided query flags.
  • Fixed the OnBluetoothGattRemoteCharacteristicChanged callback in MLBluetoothLE.
  • Fixed the OnBluetoothCharacteristicRead callback in MLBluetoothLE.

Deprecations & Removals

  • OnTrackAdded & OnTrackRemoved delegates in the MLWebRTC.PeerConnection class have been deprecated in favor of OnTrackAddedMultipleStreams & OnTrackRemovedMultipleStreams delegates.

Known Issues

  • When playing WebRTC audio via Unity, while the playback is expected to be smooth, the audio buffers play at a much larger latency than when played directly via the underlying WebRTC platform if the sample rate of the incoming audio stream does not match that of Unity (48000 Hz).