Releases: SceneView/sceneview-android
0.7.0 - Fixed rendering synchronization + Fixed and improved gestures + Improved materials + Added more samples to README.md
Temporary Changes ⚠️
- The
anchorPoseUpdateInterval
property is set tonull
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
withArNode.onPoseChanged
- Made the click duration in the
CursorNode
configurable - Added constructors for the
ModelNode
andArModelNode
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 aTransform
(a transformation matrix) - Supported limiting the number of hit tests in the
PlaneRenderer
- Replaced
ArModelNode.autoAnchor
withArModelNode.instantAnchor
- Supported disabling the
ArModelNode
pose updates based on hit tests - Replaced
TextureLoader.loadTexture
withTextureLoader.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
andisShadowReceiver
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
-
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.
- Earth provides localization ability in geospatial coordinates.
-
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
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
Features
- RIP
CleanupRegistry
welcomeLifecycleObservers
: Filament 3D Entities (Model
s,Material
s,Texture
s,Light
s,...),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 theActivity
/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 theActivity
/Fragment
/SceneView
one.
e.g. You now have to give a
Lifecycle
parameter instead of theCoroutineScope
when loading a model
-
RIP
IEngine
,FilamentEngineWrapper
,EngineInstance
,... welcomeFilament
single retainable object that contains the engine instance and every linked Filament Loaders/Managers. The FilamentEngine
can now be shared between differentSceneView
s. The last releasing retainer will destroy the Engine and the Loaders/Managers. -
Allowed gesture detectors to be changed at runtime:
GestureDetector
s are vars and can be changed at any time
Fixes
- Fixed wrong
SceneView
MainLight
andEnvironment
initialisation because ofNullPointerException
when gettingArSceneView
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
Features
- Added a precision parameter for updating the
ArNode
pose from the anchor
Fixes
- Allow setting gesture listeners without inheriting the
SceneView
orArSceneView
- 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
Features
- Added an
ArNode
manipulator for moving, rotating and scaling nodes in theArSceneView
and aCamera
manipulator for panning and zooming the camera inSceneView
- 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
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
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
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 anHitResult
Pose
multiple rotations types- Added
RenderableInstance
object culling setter - Improved
CursorNode
- Added
NodeSelection
defaultSelectionVisualizer
- 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
andSceneView
lifecycle listeners - Fixed
CursorNode
default placement mode - Fixed
AugmentedImageInfoNode
alignment - Refactored
HDREnvironment
- Fixed
HDREnvironment
double cubemap - Fixed session config order
- Renamed
Node.onFrameUpdate
toonFrame
- 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
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
, andCursorNode
ModelNode
supports scaling and centering the attached model automatically and transforming it separately from the nodeArModelNode
can be placed using the ARCorePlane
,Point
,DepthPoint
andInstantPlacementPoint
- 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)