Skip to content

Releases: SceneView/sceneview-android

0.7.0 - Fixed rendering synchronization + Fixed and improved gestures + Improved materials + Added more samples to README.md

24 Jun 19:48
Compare
Choose a tag to compare

Temporary Changes ⚠️

  • The anchorPoseUpdateInterval property is set to null by default. This means that the node pose is never updated to the anchor actual pose. Set this property to one second, for example, to benefit from the anchor pose updates.
  • ARCore was rolled back to 1.30.0 since there were some performance issues encountered. You can still use the latest version of ARCore in your build.gradle file.

Features

  • Made the pan pan gesture configurable (it can be now disabled)
  • Replaced ArNode.onTrackingChanged with ArNode.onPoseChanged
  • Made the click duration in the CursorNode configurable
  • Added constructors for the ModelNode and ArModelNode that accept a path to a glTF model
  • Supported using multiple listeners for the Augmented Image updates
  • Improved node selection
  • Refactored materials to use the Filament MaterialInstance
  • Added a listener for the smooth transformation end
  • Added a listener for the model change in the ModelNode
  • Added an extension function to convert a Pose to a Transform (a transformation matrix)
  • Supported limiting the number of hit tests in the PlaneRenderer
  • Replaced ArModelNode.autoAnchor with ArModelNode.instantAnchor
  • Supported disabling the ArModelNode pose updates based on hit tests
  • Replaced TextureLoader.loadTexture with TextureLoader.loadImageTexture

Fixes

  • Fixed model picking (the touch coordinates are now correct)
  • Fixed synchronization of the 3D scene state and the camera frames
  • Fixed the default node position (while also fixing the selection visualizer position)
  • Fixed tap events and listeners for the SceneView and models (they are now using Filament picking)
  • Fixed destroying the PlaneVisualizer
  • Fixed setting the isShadowCaster and isShadowReceiver properties
  • Fixed canceling smooth transformations
  • Fixed the move gesture

Documentation

  • Added more documentation in the source code
  • Added more samples to README.md

0.6.0 - ARCore 1.31.0

11 May 20:05
Compare
Choose a tag to compare
  • ARCore Geospatial API
    The new ARCore Geospatial API utilizes data from Google Earth 3D models and Street View image data from Google Maps to enable your app for immersive, global-scale, location-based augmented
    reality experiences.

    • Earth provides localization ability in geospatial coordinates.
      Earth.createAnchor() creates a new Anchor at the specified latitude, longitude, altitude, and orientation.
    • Earth.Earthstate describes the current state of Earth, including its TrackingState.
    • GeospatialPose describes a specific latitude, longitude, altitude, and compass heading.
  • ARCore Depth API improvements
    The maximum range of Depth measurements has increased from 8191mm to 65535mm. The Depth API now uses all 16-bits to represent depth, where previously only 13 bits were used for depth values.

0.5.2 - New AR Camera Stream + Imporvements

06 May 21:34
Compare
Choose a tag to compare

Features

  • Completely renewed ARCameraStream by moving it to Kotlin and 100% Filament
    • Cleaned and resource consumption improved
    • Moved to multithreaded rendering pipeline to improve quality and move to Filament stream less texture creation
  • Improved gesture rotation
  • Improved LightEstimation consumption
  • Changed ArNode anchor update interval
  • Material synchronous loading
  • Added Node custom name
  • Added Renderable extensions
  • Access SceneView within the Lifecycle
  • KTXLoader synchronous loading
  • Allow gesture detectors to be changed at runtime (#69)

Fixes

  • Fixed some possible wrong session config applying

0.5.1 - New memory management system based on Lifecyle + Ensure everything is destroyed when the SceneView is detached

20 Apr 20:38
Compare
Choose a tag to compare

Features

  • RIP CleanupRegistry welcome LifecycleObservers: Filament 3D Entities (Models, Materials, Textures, Lights,...), Engine and Loaders/Managers creation and destroy are now completely made around Android Lifecycle observers. They were previously managed by the Garbage collector.
    We now insure that every single consuming resource is destroyed when the Activity/Fragment/SceneView is destroyed and when it is not needed anymore internally.
    The only counterpart is that you have to give a lifecycle parameter when building a Filament entity that can be any of the Activity/Fragment/SceneView one.

e.g. You now have to give a Lifecycle parameter instead of the CoroutineScope when loading a model

  • RIP IEngine, FilamentEngineWrapper, EngineInstance,... welcome Filament single retainable object that contains the engine instance and every linked Filament Loaders/Managers. The Filament Engine can now be shared between different SceneViews. The last releasing retainer will destroy the Engine and the Loaders/Managers.

  • Allowed gesture detectors to be changed at runtime: GestureDetectors are vars and can be changed at any time

Fixes

  • Fixed wrong SceneView MainLight and Environment initialisation because of NullPointerException when getting ArSceneView lifecycle
  • Fixed Camera Stream init
  • Fixed Filament Engine not destroyed
  • Fixed move gesture: Some conditions for the move gesture are inverted
  • Fixed some double Filament entity destroys causing exception when the SceneView was destroyed

0.4.1 - Improved AR environmental lighting performance

14 Apr 07:02
Compare
Choose a tag to compare

Features

  • Added a precision parameter for updating the ArNode pose from the anchor

Fixes

  • Allow setting gesture listeners without inheriting the SceneView or ArSceneView
  • Improved performance for estimation of AR environmental lighting

0.4.0 - ArNode and Camera manipulators + Improved AR environmental lighting and reflections + Simpler ARCore session configuration + Enabling auto focus without pausing and resuming ARCore session

11 Apr 19:08
Compare
Choose a tag to compare

Features

  • Added an ArNode manipulator for moving, rotating and scaling nodes in the ArSceneView and a Camera manipulator for panning and zooming the camera in SceneView
  • Improved AR environmental lighting and reflections by removing spectacular filtering
  • Added a precision parameter for estimation of AR environmental lighting to increase performance by skipping frames
  • Made the ARCore session configuration simpler

Fixes

  • Fixed the order of destroying the Filament resources to avoid an exception
  • Enabling the auto focus without pausing and resuming the ARCore session

0.3.0 - Cloud Anchors support + Setting world properties of Node

07 Apr 17:04
Compare
Choose a tag to compare

Features

  • Added Cloud Anchor support to the ArNode and a sample application
  • Supported setting the world position, quaternion, rotation and scale of the Node

0.2.1 - ARCore 1.30.0 + Fix sources sets + Use Gltf folders + Instant placement fallback

30 Mar 08:31
Compare
Choose a tag to compare

Features

  • ARCore 1.30.0
  • Fix Android SourceSets for sources.jar = You should now have access to SceneView sources from your project when using maven dependency
  • Add Gltf folder model source: You can use a .gltf and its folder as 3D model from Renderable call
  • Add instant placement fallback to PlacementMode: You can enable an instant plcament fallback when your current placement mode is not available yet or at all.
  • Added code style and contributing guidelines
  • Gradle 7.1.2

Fixes

  • Fix Instructions enable/disable

0.2.0 - Increased rendering performances and AR precision + Fixed too yellow rendering

17 Mar 10:38
Compare
Choose a tag to compare

Features

  • Improved rendering quality: Removed 3D rendering frames skipped based on FPS
  • Improved AR Precision: Removed and cleaned AR frame skipped
  • Reduced PlaneRender consumption when not visible
  • Reduced ArFrame consumption when no updated trackables (Plane, AugmentedImage, AugmentFace) are required
  • Refactored FrameTime to Kotlin
  • Retrieve current frame FPS
  • Added ModelNode.doOnModelLoaded to handle modifying the model when loaded
  • New cleaned Node smooth thresholds
  • No AR maxHitsPerSecond by default = Max precision
  • Added configurable session features
  • Added some colorOf functions with different parameters
  • Create an Anchor from an HitResult
  • Pose multiple rotations types
  • Added RenderableInstance object culling setter
  • Improved CursorNode
  • Added NodeSelection default SelectionVisualizer
  • Refactored session -> arSession and sessionConfig -> arSessionConfig
  • Change material parameter to Color
  • Retrieve Pose Euler Angles
  • Changed IblGenerator to handle hdr environment directory input instead of file
  • AR model viewer sample: Hide the plane renderer when the node is anchored
  • Public RenderableInstance.entity

Fixes

  • Fixed the too yellow model default reflection: Changed the default environment to a white studio
  • Fixed top most plane rendering and restored previous parameters (#46)
  • PlaneRenderMode.RENDER_ALL was set as the default mode but the doc states clearly that this mode is very expensive (#39)
  • Fixed ArSceneView and SceneView lifecycle listeners
  • Fixed CursorNode default placement mode
  • Fixed AugmentedImageInfoNode alignment
  • Refactored HDREnvironment
  • Fixed HDREnvironment double cubemap
  • Fixed session config order
  • Renamed Node.onFrameUpdate to onFrame
  • Changed ModelViewer sample background
  • Fixed model loading error not thrown

Documentation

  • Dokka Doc Markdown GFM (GitHub)
  • Dokka published to SceneView/sceneview.github.io
  • API reference link inside README.md
  • Issue and PR Autoclose
  • Added dictionary with spelling for renderable and renderables (#41)

0.1.0 - Production ready

28 Feb 14:38
Compare
Choose a tag to compare

We thank everyone who has participated in the SceneView development, used the early version and reported the issues! 🎉

This release is production ready and available on mavenCentral(). The API is now stable that means you won't encounter significant API changes from this version. Some parts of the API may be deprecated in future like in any other libraries but the core API won't change.

You can still use everything you could use in Sceneform. Some internal classes and specific ones (for example, AugmentedFaceNode, AugmentedImageNode, etc.) can still be used but haven't been converted to Kotlin yet. That means that they can change a little with time because of all the improvements available in SceneView compared with Sceneform (ARCore Depth, Instant placement, lifecycle-aware components, etc.).

Have a look at this list to see what features are supported only in SceneView. They are awesome!

Here is short summary of the new things in this release:

  • Improvements in the API, source code and documentation
  • Latest versions of ARCore and Filament (1.29.0 and 1.20.0)
  • kotlin-math for mathematical operations with vectors, transformation matrices and quaternions
  • Node system now includes LightNode, LoadingNode, ModelNode, ViewNode, ArNode, ArModelNode, and CursorNode
  • ModelNode supports scaling and centering the attached model automatically and transforming it separately from the node
  • ArModelNode can be placed using the ARCore Plane, Point, DepthPoint and InstantPlacementPoint
  • Even smoother model placement in AR
  • Automatic material and environment compilation using the Filament plugin that can be enabled by contributors
  • Better handling of requesting the camera permission and installing/updating the Google Play Services for AR
  • Callbacks for handling errors when the ARCore session can't be created or OpenGL isn't available
  • Avoiding using the previously bound texture if the view texture isn't ready (the problem when the camera texture is shown instead of the ViewRenderable)
  • Avoiding screen flickering by setting the display geometry for the ARCore session at the right time (the problem when the ArSceneView shows different colors instead of the camera texture)