Repository navigation
chore(deps): update sceneview to v4.60.0 - #7696
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
4.56.0→4.60.04.56.0→4.60.04.56.0→4.60.0Release Notes
sceneview/sceneview (io.github.sceneview:sceneview)
v4.60.0Added
Fixed
cannot load content://…/My flat.spz, aFileNotFoundExceptionon/storage/emulated/0/Download/…— and the GitHub issue it pre-fills is public.content://andfile://locations, paths under your storage and the app's per-user data, document ids, e-mail addresses, URL credentials and query strings, and the name of a model you opened with SceneView now read<redacted>in the GitHub issue, the share text and the attached file, while tags, timestamps, stack traces and the file extension stay. A new "Preview the attached report" link in the sheet shows exactly what is sent.sceneview-bug-report.txtthrough the app's existing file provider, and the share text keeps a summary of at most 16,000 characters: the note, the device and app details, and the AR tracking block.?tab=medialinks still open the demo..svscan) now records the scope, so an object scan shared and opened again stays an object; files without it open as a room, as before. Without raw depth, an object scan now applies its arm's-length cutoff to ARCore's feature points and planes, so walls across the room no longer end up in the scan. This needs no new permission. A room survey that finishes after a new home scan has started is no longer added to the new home.v4.59.0Added
Changed
Fixed
render-goldens-swangle/predated changes merged since 2026-10-17. Those changes are the full-screen button (#4596), the PBR Neutral tone mapper (#4595), the studio finishes on Geometry Primitives (#4666) and the "Performance Test" title on the Debug Overlay demo (#4626). Each new reference was checked by eye before it replaced the old one.modelViewerDemo_default_statefailed on 99.7 % of its pixels. The reference underrender-goldens-swangle/is now the showroom render.v4.58.0Added
measureFloorArea), so one outline gives one figure in both demos (#4540).arsceneview: dig content into the real ground, and keep a placed object at real size (#4571).ARCameraStream.isOccluderMeshEnableddraws the camera feed first, so a mesh usingMaterialLoader.createOcclusionInstance(), ordered withARCameraStream.OCCLUDER_PRIORITY, keeps the real world on screen in front of content modelled below the ground or behind a wall.AutoPlacementState.allowsScaling = falsemakes the pinch,scaleToand the double-tap leave a placed object at its real size while drag and twist still move and turn it. Both default to the previous behaviour.searchevent once the field has been still for 1.5 s, or when a result is opened:search_term(lowercased, cut to 50 characters, emails, links, long numbers and phone numbers replaced by(redacted)on the device),surface(samplesormodels) andresult_bucket. The privacy policy, the Play Data safety form (In-app search history) and the iOS privacy manifest (Search History) declare it.CameraShot,CameraTransition,CameraPath,CameraAnimatorandCinematicCameraManipulatorinio.github.sceneview.camera(#4631). A shot is an orbit around a target, so a move between two shots goes around the subject, not through it.CameraPath.reveal(home)is the entrance of a scan or a model,CameraPath.tour(home)a slow lap that loops without a seam,animator.flyTo(home.copy(elevationDegrees = 84f))the dollhouse-to-floor-plan move, and a fly-to another room pulls back at mid-flight so it never cuts through a wall. Every move is a function of time, lands exactly, and a touch interrupts it and hands the gesture camera the speed it had. The design behind it, for the 3D Scan live coverage and result cinematics, is indocs/design/3d-scan-cinematics.md.Floor NN % coveredof that same floor. The capture's one coaching line now also says "Move slower" when the phone moves faster than depth keeps up, and where to point when a walk adds nothing for three seconds. The result screen opens on a cinematic reveal (high, wide and to the side, craning down onto the model over 2.8 s), its dock switches 3D and Plan with one continuous camera move, and a Tour pill flies the camera around the scan; every move is the newio.github.sceneview.cameraAPI, and a touch takes the camera over at the speed the move had.stage-grid-minor/stage-grid-majortokens, light and dark. When a model appears the camera flies onto the framing overmotion-entrance(700 ms, expressive ease) instead of cutting to it, a double-tap zoom eases on the same curve, and the first touch takes the camera over mid-move without a jump.rememberCameraManipulator(inertia = Inertia.None)andNode.editingInertia = Inertia.Noneopt out. AR objects stay on their plane while coasting and re-anchor where they come to rest.Changed
ARSceneViewnow draws every detected surface, not only the one in the centre of the screen (#4307). The default plane renderer used to be the textured grid inPlaneRendererMode.RENDER_CENTER. The dots renderer that replaces it always defaulted toRENDER_ALL, so an app that never picked a renderer now shows all the floors, walls and ceilings ARCore tracks.ARSceneViewhas no parameter to go back to the centre-only behaviour. APlaneRendererthat you build and drive yourself still acceptsplaneRendererMode = PlaneRenderer.PlaneRendererMode.RENDER_CENTER. To hide the surfaces entirely, passplaneRenderer = false.ARSceneView(and theARScenealias) now always draws detected surfaces with the dots renderer that used to be the opt-inPlaneRendererV2, and the mark says what the surface is: round white dots on floors and tables, upright blue dashes on staggered rows on walls, hollow warm rings on ceilings. The shape differs as well as the colour, so the difference holds in a dark room, in daylight and for a colour-blind user. Every mark sits in a soft dark halo, so it stays readable on a white wall or a sunlit floor. No public API is removed:planeRendererVersionis still accepted and ignored, and the old names keep compiling and linking (see below).ARSceneView(planeRendererVersion = …)andARScene(planeRendererVersion = …)are deprecated and ignored: both values draw withPlaneRenderer, so delete the argument.PlaneRendererV2andPlaneVisualizerV2are deprecated aliases that forward toPlaneRendererandPlaneVisualizer;PlaneRendererBaseand itsVersionenum are deprecated. OnPlaneRenderer,maxHitTestPerSecondis deprecated formaxUpdatesPerSecond,planeTextureis a deprecated 1 × 1 placeholder (no longer sampled),viewSizeis unused, andMATERIAL_TEXTURE/MATERIAL_COLORno longer name material parameters (useMATERIAL_GRID_TINT). The textured-grid drawing itself and the bundledtextures/plane_renderer.pngare gone: two renderers side by side meant every AR sample picked one and the two drifted apart.sceneview-composeon desktop now runs on JDK 21, down from JDK 22, with no JVM flag (#4423). filament-kmp 0.7+ calls Filament over JNI instead of Project Panama (FFM), so the desktop viewer no longer needs JDK 22 or--enable-native-access=ALL-UNNAMED. The new floor is JDK 21, not 17: thekotlin-mathlibrary thatsceneview-composeexposes ships JDK 21 bytecode, and on JDK 17 it fails withUnsupportedClassVersionError. The desktop demo and CI now use the repo's single JDK 21.sceneview-composeon desktop moves to filament-kmp 0.7.3 (#4518). The desktop viewer now runs on Filament 1.77.3 (was 1.77.1 through filament-kmp 0.6.0). Same material version, no API change; Android, iOS and web are untouched.arsceneview-depth-mlmoves to LiteRT 2.3.0 (#4519). LiteRT now ships as three AARs (litert,litert-api,litert-gpu); the module declareslitert-gpusoDepthAnythingV2Estimator(backend = Backend.Gpu)keeps its OpenCL/OpenGL accelerator, now on armeabi-v7a too. Native code per ABI: arm64-v8a ≈ 9.4 MB, x86_64 ≈ 12.2 MB, armeabi-v7a ≈ 6.3 MB. No API change./viewon the website and use the same lighting maps. The floor fades into the wall with no visible line, and the subject casts a soft contact shadow. The camera height depends on the subject: low for a car, higher for furniture, tabletop height for a phone or a sneaker. Catalogue cars and phones now face the camera when they open. "Showroom" is the first choice in the Lighting sheet, and Reset brings it back. As on the website, the floor shows a faint mirror reflection of the subject's lower part; it is turned off on low-memory phones. The orbit can no longer dip below the floor's horizon.codex-delegate.sh implementused to run Codexunder plain
workspace-write— no network, nothing writable outside the worktree — so it couldneither resolve Maven nor run
./gradlew. It now runs under a Codex permission profile: outboundnetwork, a dedicated Gradle home (
~/.gradle-codex) that shares the real dependency cacheread-only through
GRADLE_RO_DEP_CACHE, and writable Android, Kotlin/Native, Maven, Xcode andSwiftPM caches. Because network plus read-anywhere is an exfiltration path, the profile also
read-denies the secrets on the machine: other worktrees'
local.properties,~/.gradle/gradle.properties(never handed over — it holds the publishing and signing keys),~/.m2/settings.xml, gh/npm/ssh/gpg configuration and the Claude and Codex credentials.Measured on codex-cli 0.163.0:
:sceneview-core:androidTestran 929 tests green inside thedelegate, while reading the main checkout's
local.propertiesanswered "Operation not permitted".App Store name becomes "SceneView Demo: 3D & AR SDK". The Play short description names Jetpack
Compose and ARCore, the iOS subtitle names SwiftUI and RealityKit, and the iOS keywords add usdz,
gltf and augmented reality instead of repeating words the name already carries. "3MF" and
"radiance fields" leave the descriptions. The text reaches the stores with the next minor release.
sprintf-js(#4594). The advisory GHSA-hp3w-g68c-fv3c has no patched release, so a scoped npm override moves js-yaml's CLI-onlyargparsedependency to 2.0.1, which dropssprintf-jsfrom both the package and the demo dependency trees. No package version change.createViewnow tone-maps with PBR Neutral instead of Filmic, so base colours display asauthored. Filmic's shoulder bleached light and pastel colours and its toe crushed darks:
measured on the demo's brand ramp, a light blue (
#A4C1FF) kept 40–57 % of its chroma and alilac (
#D2A8FF) 45–65 %, the "washed-out" pink and blue of every 3D demo. Khronos PBR Neutralis the identity up to 0.76 and only compresses what is brighter: 90–99 % of the chroma survives.
createARViewkeeps Filmic (the camera-stream materials invert it), andSplatNodenow invertswhichever of the two its view uses. To get the old look back:
view.colorGrading = ColorGrading.Builder().toneMapper(ToneMapper.Filmic()).build(engine).The web viewer keeps Filmic — Filament's JavaScript bindings have no PBR Neutral tone mapper.
Crystal and Signal Glow handed sRGB bytes to a linear
baseColorand rendered as pastels; themeasured metals keep their linear reflectance. The home hero and Cosmos keep Filmic, the curve
their look was tuned on.
Depth Collider is now On your table, the AR mode of Rolling Balls: Drop, Drop 5 and Reset
throw balls in the tray's rubber colours that bounce off a real table through depth. Scene
Geometry is now a Colour buildings & terrain switch in the Streetscape mode of Geospatial
Anchors. AR Fog leaves for Lighting; the SDK's
ARFogNodeis unchanged. The old links(
ar-depth-collider,ar-scene-mesh,ar-fog) still open the screen that took their place.ML Kit Object Labels loses its card but keeps its screen and its link
ar-ml-object-label:it is Point & Ask's on-device fallback on phones without Google AICore, so Point & Ask is
never a dead end there.
lighting-lablink opens Lighting./viewand in the Android demos. (#4614).svscanfiles open as before.GenerateFilamat.bat/GenerateKtx.batscripts and six unused internalVector3mutators are gone;try-demo.shbuilds:samples:android-demoagain.Portrait focus: the sneaker stays sharp while the room behind it blurs, the focus
follows the sneaker as you walk, a tap on the room focuses there (with a focus ring), and an
Original | Portrait switch compares before and after. People Occlusion says what it
needs (Scene Semantics and Depth, a person in front of the model, best outdoors) and shows a
live status: off, starting, no person in view, or person detected. Image Stabilization
moves to SceneView Labs, with a card that says the difference is subtle.
Fixed
adb logcat -s PointAndAsk.needs-device).ar-plane-renderer-v2link still opens it.SceneView/ARSceneView: replacing the environment no longer reads a destroyed skybox (#4330).rememberEnvironment(key = …)destroys the previous environment as soon as its key changes, but the scene only received the new one a dispatch later, and Filament reads the skybox it replaces: a segfault inScene.setSkyboxon some swaps (a dark/light toggle that changes a colour skybox, an HDR picked from a list). The scene now lets go of an environment's skybox and indirect light before the environment is destroyed, and takes the next one in the same pass.DemoScaffold, so every sample gets it.sceneview.js, behind/view,/open, the playground and the web demo): ten site models that rendered black, empty or not at all now show. EmbeddedEXT_texture_webpimages are re-encoded to PNG before Filament.js reads the file (guitar, Canon EOS RP, DJI Mavic 3, JBL Tour One M3, motorcycle helmet, school backpack). Quantized positions (KHR_mesh_quantizationwith meshopt) get their real bounding box, so the Rolex and the Vibe sneaker are framed at their size instead of as a speck. A skin over 256 joints is split per mesh instead of failing to parse, and a skinned model at rest shows its bind pose instead of its raw mesh. WhenloadModel()is called again before the previous file is shown, the newest call wins and the older one rejects with anAbortError, whichever file finishes downloading first, and it stops transcoding textures as soon as it is replaced. On the home page, tapping a model chip while the first model is still loading now shows the tapped model instead of falling back to the still poster. The MCP 3D viewer widget no longer shows "was replaced by a later loadModel() call" when the host re-renders it mid-load (a theme change, new tool output), and a model that loads clears any earlier error. A model that stores several quantized meshes with the same raw box no longer logs a false "kept a wrong bounding box" warning (the home page's Night Circuit). The playground's Web multi-model snippet now creates one viewer per model, since a secondloadModel()on a viewer replaces the first. The playground offers three.js's Expressive Robot (CC0) instead of Kindred, whose source file is broken (hair and tail sit far above the body). The web demo shows the Switch OLED, opening on its screen, instead of a Sketchfab diorama with a blue backdrop. Both older files stay published (#4566).VideoNodeandViewNodeshow their source colours again under the PBR Neutral default.Their materials still pre-applied Filament's
inverseTonemapSRGB(), which only inverts Filmic,so after
createViewswitched to PBR Neutral a video or a 2D-in-3D card displayed darker thanits source (a mid grey came out darker).
video_texture,video_texture_chroma_key,view_texture_litandview_texture_unlitnow invert whichever tone mapper the node's viewuses: Filmic in a
createARViewview, PBR Neutral otherwise.highlights, so a colour like
#FF0000has no exact inverse, and the capped inverse turned itinto a pastel (255, 212, 212). The shared inverse is still exact for every colour the curve can
produce. For the others it now balances the peak against the curve's desaturation: red shows
(235, 13, 13), and no colour lands more than 20 steps (of 255) away.
ViewNode; lit, it took the scene light and its amber swatch read as ochre.The camera path is one blue, faint to strong, instead of a purple-to-blue ramp, and it ends on the frustum's colour: path and photos read as the camera's. The settings sheet is the legend — each layer row draws what it shows (the path's stroke, a frustum, a floor and a wall, a few points) over a line that says it. The camera's photos have their own switch, apart from the path, so a long recording's frusta can be hidden; the Anchors row, which a room scan never fills, is gone.
The Camera view draws the reconstructed points and planes over each recorded frame, seen from that frame's pose through the recording's lens.
The replay's room dimensions read in metres, the floor plan's units, instead of feet under a US locale. Back from a floor plan opened on the replay returns to the replay, not to the result.
no longer leaks from one model to the next. A catalogue entry with no bundled stand-in (AirPods,
IKEA KALLAX, every product shelf) showed only its card's still render until the user found and
tapped the HD pill — so pinch, drag and "Spin scene" visibly did nothing. Picking one now fetches
its own file on Wi-Fi straight away (never on mobile data, where the pill still offers "Download
now", size first). The pinch/slider distance is an absolute number of metres and was kept across
picks: a pinch-out on the earbuds left the next helmet a small speck. It now resets when a new
model reaches the stage; a
camera_distancedeep link still applies to the first model.lighting-lab,reflection-probes,post-processingandfoglinks open Lighting.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.