Releases: SceneView/sceneview-android
0.9.0 - RIP RenderableInstance for ModelNode + Fix AR positioning
Features
- RIP
RenderableInstance
forModelNode
directly access FilamentAsset - Added
RenderableNode
for all types of rendered nodes - Added hitTest functions at
ArSceneView
level - Get hitTest from
Position
atArFrame
level - Added
cameraFacingDirection
directly toArSceneView
- Added model animator extensions
- Changed
ModelNode
to useapplyAnimation
andupdateBoneMatrices
directly with frame time instead of using anObjectAnimator
Fixes
- Fixed wrongs AR placement
- Moved
placementMode
andonMove()
fromArNode
toArModelNode
for coming nextAugmentedFaceNode
andAugmentedImageNode
- Refactor
approximateDistanceMeters
toapproximateDistance
- Fix wrong model animations interpolations
Documentation
- Added more documentation in the source code
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)