Posts under Spatial Computing topic

Post

Replies

Boosts

Views

Activity

Is GaussianSplatComponent different than other Components?
I have been analyzing Apple's Gaussian-Splats-on-visionOS demo project, and it appears that the GaussianSplatComponent is treated differently than other Components. In the function makeSplatEntity(), a GaussianSplatComponent is created and added to an Entity's components: let comp = try assembleSplatComponent(from: buffers, isLinear: isLinear) let entity = Entity() entity.components.set(comp) But when I check the entity's components collection before and after the add/set, nothing has changed. The entity still has the same children. Is the GaussianSplatComponent stored in a different location in the Entity? If so, is it a public property I can inspect? (Or is my interpretation of the components system wrong?) Here are the results of print statements before and after the set() BEFORE ADDING COMPONENT Entity number of components: 2 Component: Transform(scale: SIMD3<Float>(1.0, 1.0, 1.0), rotation: simd_quatf(real: 1.0, imag: SIMD3<Float>(0.0, 0.0, 0.0)), translation: SIMD3<Float>(0.0, 0.0, 0.0)) Component: RealityKit.SynchronizationComponent AFTER ADDING COMPONENT Entity number of components: 2 Component: Transform(scale: SIMD3<Float>(1.0, 1.0, 1.0), rotation: simd_quatf(real: 1.0, imag: SIMD3<Float>(0.0, 0.0, 0.0)), translation: SIMD3<Float>(0.0, 0.0, 0.0)) Component: RealityKit.SynchronizationComponent
1
0
664
Jul ’26
Viewing Gaussian splats while inside the model
I am trying to view immersive environments that are Gaussian Splats created by marble [dot] worldlabs [dot] ai. For example, here is one named "Steampunk City Night View": (Note: the low-res version is 500,000 splats, so I am just testing the first 200,000 splats). But when I try to view it at scale, nothing appears. I tried shrinking it down (scale factor of 0.00595458) and positioning it in front of me, and I could see the content, so the parsing of the PLY file is working. Example: But when I move into the model, it goes clear, also hiding virtual content behind it that is also in the splats' space (like the Mac virtual screen). Example: It is as if when I move inside the Gaussian Splats' bounding box, it sets an opacity material on the splats. This prevents me from using these Gaussian Splats as immersive environments. Is there any way to disable this behavior?
1
0
660
Jul ’26
Vision Pro operating limits and battery in 45°C heat
Hello everyone, ​I’m an R&D software engineer researching the Vision Pro for on-site CAD visualization and quality assurance. This requires using the headset outside in the open air in KSA, where ambient daytime temperatures easily hit 45°C (113°F). ​Before I try deploying this for field work, I have a few specific questions: ​Operating Limits: Will the headset function in 45°C ambient heat, or will it immediately trigger a thermal shutdown? ​Throttling: How aggressively does visionOS throttle performance or dim the displays when running demanding spatial apps in this heat? ​Battery: Will the external battery stop supplying power or refuse to charge under these conditions? ​Workarounds: Are there any known best practices or shading accessories for using the Vision Pro outdoors in extreme climates? ​I know the official operating limit is 30°C, so I'm looking for real-world insights from anyone who has pushed these environmental limits. ​Thank you!
1
0
527
Jul ’26
Reality Composer Pro 3 Beta 2: Unable to configure Assistant model provider
In Reality Composer Pro 3 Beta 2 so version 3.0 (75.0.21.500.2), I’m unable to connect any model provider or complete setup for the Assistant feature. I tried the following API endpoints: OpenAI: https://api.openai.com/v1 https://api.openai.com/v1/responses https://api.openai.com/v1/chat/completions Anthropic / Claude: https://api.anthropic.com/v1 https://api.anthropic.com/v1/messages None of these allow the Assistant setup to complete. It is unclear what endpoint format Reality Composer Pro expects, or whether provider setup is currently broken in Beta 2. Ticket with a video showing the issue can be found here: FB23493842
2
0
401
Jul ’26
Reality Composer Pro 3 is unable to properly import my .usdz file
Hi, I’m running into an issue when importing a .usdz asset into Reality Composer Pro 3. The exact same asset was working perfectly in Reality Composer Pro 2, and it also works correctly when previewed in Xcode 27.0 beta or loaded directly in RealityKit from code. However, in Reality Composer Pro 3, the asset does not import correctly: The material appears completely broken and looks different from the original asset. The animations are not working. The same .usdz works as expected in Reality Composer Pro 2, including materials and animations. The same .usdz also works as expected in Xcode / RealityKit. I also noticed that the Preview app does not seem to import the asset correctly either. In Preview, the asset has the wrong orientation and it looks like the skeleton and animations may not be recognized properly. Here are a few screenshots showing how the asset appears in each app: Reality Composer Pro 2: asset works correctly, including materials and animations. Xcode 27.0 beta preview: asset works correctly, including materials and animations. Reality Composer Pro 3: material is broken and animations are not working. Preview app: wrong orientation, possible skeleton / animation import issue. I filed a ticket FB23214120 that contains an example Xcode project and RCP2 & RCP3 projects. Is there anything specific that changed in the USDZ import pipeline in Composer Pro 3 that could explain this behavior? Thanks!
3
2
1.1k
Jun ’26
Can a RealityKit ShaderGraph read a custom-named USD primvar?
In Reality Composer Pro I try to read it with a Primvar Reader / Geometric Property node (type float), setting the name field to AttributeTest and also to primvars:AttributeTest. In both cases the node only returns its fallback value never the actual per-vertex data. No error or warning. If I instead author the data as a vertex Color Attribute so it exports as primvars:displayColor, the Geometry Color node reads it correctly. So the data pipeline works for the color slot, but not for a custom-named primvar. I actually verified in RCP 3 too i have the same issue, but at least you can see in RCP 3 that the attribute does actually live on the mesh when selecting it. Thanks.
1
0
638
Jun ’26
Access main camera on Apple Vision Pro
From visionOS 2.0 we can access Apple Vision Pro's main camera but only for Enterprise account as it is enterprise API only, I have a normal Developer account and I want to use main camera and want to have a video call feature in app by using main camera of AVP, is it possible to do it using developer account only. Currently using that account I am not able to create entitlement certificate as there is no option.
4
0
1.3k
Jun ’26
How do I dismiss a presented sheet?
I'm developing an app requiring data entry across several devices. My SwiftUI app runs on iOS and iPadOS but I also want to run it on visionOS. I'm using the visionOS simulator. When I enter data in one of my views I use a Form within a .sheet and this works perfectly well on iOS and iPadOS and I can dismiss the sheet by simply tapping the view behind the sheet. On visionOS I click my + button, the sheet appears, I enter the data as usual but after that there is no gesture in the app I can perform with keyboard or mouse that will make the sheet disappear! Do I have to add a "Close" button for visionOS or is there a way to enable the same interaction that works on iPadOS?
2
0
1.5k
Jun ’26
WorldAnchor instantly removed when SpatialTrackingSession and ARKitSession run together
Bug: When SpatialTrackingSession and ARKitSession + WorldTrackingProvider are running concurrently, any WorldAnchor added via WorldTrackingProvider.addAnchor() triggers .added followed immediately by .removed—without any user call to removeAnchor(). The anchor never persists in allAnchors. import SwiftUI import RealityKit import ARKit struct ImmersiveView: View { @State private var worldTracking: WorldTrackingProvider? @State private var arSession: ARKitSession? @State private var processWorldTrackingUpdatesTask: Task<Void, Never>? var body: some View { RealityView { content in let configuration = SpatialTrackingSession.Configuration(tracking: [.world]) if let unavailableCapabilities = await SpatialTrackingSession().run(configuration) { if unavailableCapabilities.anchor.contains(.world) { fatalError("World tracking is not available on this device.") } } let worldTracking = WorldTrackingProvider() let arSession = ARKitSession() self.arSession = arSession try! await arSession.run([worldTracking]) self.worldTracking = worldTracking processWorldTrackingUpdatesTask = Task { @MainActor [weak worldTracking] in guard let worldTracking else { return } for await update in worldTracking.anchorUpdates { let worldAnchor = update.anchor switch update.event { case .added: print("Anchor added: \(worldAnchor.id)") case .updated: print("Anchor updated: \(worldAnchor.id)") case .removed: fatalError("Anchor removed unexpectedly — this should not happen in this demo scenario.") } } } } .task { try? await Task.sleep(for: .seconds(3)) guard let worldTracking else { return } do { try await worldTracking.addAnchor(.init(originFromAnchorTransform: Transform.identity.matrix)) } catch { print("Error adding anchor: \(error)") } } } } Expected: Anchors persist until explicitly removed or out of range. Actual: SpatialTrackingSession interferes with WorldTrackingProvider's anchor lifecycle, causing immediate removal. This was originally reported in 2025 (https://developer.apple.com/forums/thread/773351) , but remains unfixed in visionOS 27.0 beta. I've re-filed as FB23420195.
4
1
790
Jun ’26
Gaussian Splat demo changed, supports USDZ?
Today, I picked up on my work on the Gaussian Splats demo from Apple I was working with last weekend, and it didn't work (I've updated everything to beta 2 this week). I tried downloading a fresh copy of the demo (in case I screwed mine up), and not only does it work, it can load Gaussian Splats data from a USDZ file. Am I mis-remembering what the demo was like last week vs. this week? This feels like major new functionality I haven't heard mentioned anywhere. Is there any documentation/guidance on how to package up Gaussian Splat data (e.g., originally from a PLY file) into a USDZ file?
1
0
676
Jun ’26
Allow External Apps to Remain Visible in an Immersive Space
Many apps utilize ImmersiveSpace simply to render large-scale, custom geometry (such as curved screens, wide-canvas media players, or specialized data visualizations) that cannot be achieved within a standard volumetric window limitations. However, users often still want to multitask—check Messages, reference Safari, access YouTube, etc. Forcing the user to exit the immersive space just to see their other apps breaks their workflow and creates a disjointed user experience. Proposed Solution: I propose adding a property to ImmersionStyle (or a similar API configuration) such as allowSharedSpaceVisibility. When enabled, this would: Allow the ImmersiveSpace to render its custom RealityKit content as usual and prevent the system from automatically hiding the user's existing Shared Space windows. Do me a solid here VisionOS team and please consider this feedback request. 🙏 FB: FB22973973 FB: FB21630340
1
0
672
Jun ’26
Backwards Compatibility
No technical justification is strong enough to erase months of developer work through incompatible project migrations without a reliable upgrade path. Reality Composer Pro has evolved quickly, but projects built around timelines, behaviors, transforms, spin, orbit, hide actions, and synchronized audio represent hundreds of hours of creative work. When those projects import with missing actions or stripped timelines, the cost isn’t just technical—it is developer time, money, and eduction that cannot be recovered. Please prioritize migration tools or compatibility layers that preserve existing timeline projects. Backward compatibility is not just about code; it is about respecting the investment developers make in your platform. Xcode 27 Beta 2 Reality Composer Pro 3 Import reports: Missing Transform To Missing Transform By Missing Spin Missing Orbit Missing Hide Missing timelines and behavior Audio synchronization no longer present 60 others. Basically any movement or action. For a new developer, this isn’t the loss of a feature. It’s the loss of two years of blindly learning, invested in a workflow that no longer exists. That work now survives only in memories of an app that never had the chance to be approved. Can i revert to the previous version? Thank you for any replies and the time taken.
2
0
425
Jun ’26
How do you get continuous eye-gaze coordinates on visionOS? (accessibility AAC app — all hover APIs return zero events)
Building Dasher (eye-gaze text-entry system for people with motor impairments — ALS, cerebral palsy, etc.) for visionOS. See https://github.com/dasher-project/Dasher-Apple The app needs continuous (x, y) gaze coordinates to steer a zooming alphabet interface. Vision Pro has incredible eye tracking hardware built in — this should be the perfect platform — but I can't get gaze coordinates through any API I've tried. What I've tested (all deliver zero events in a windowed app): UIHoverGestureRecognizer — Apple's docs say it "detects when the user is looking at a view" on visionOS. Added it to a UIView inside UIViewRepresentable. Looked at the view for 2+ minutes on real hardware. Console.app shows zero began/changed/ended callbacks. .onContinuousHover (SwiftUI) — zero .active phases delivered, whether attached to the canvas view or the ZStack root. UIPointerInteraction with a delegate — regionFor callback never fires. The system clearly is tracking gaze — I can see beginScrollingWithRegion events in Console.app with the correct window rect, and the visual hover highlight appears on buttons. But the coordinates are routed to scroll handling, not exposed as a usable pointer position. What does work: pinch-and-drag follows the hand position (where the pinch is in 3D space), not gaze. That's fine for general apps but doesn't help users who need eye-only control. What I'm wondering: Has anyone successfully received continuous gaze coordinates in a windowed (non-immersive) visionOS app? If so, which API? Is UIHoverGestureRecognizer supposed to work on UIView inside UIViewRepresentable, or does it require a pure UIKit view hierarchy? Is there an ARKit provider for eye tracking that I'm missing? I see HandTrackingProvider but no EyeTrackingProvider in the capability list. Could the issue be that my SwiftUI overlay (toolbar VStack) is intercepting hover events before they reach the canvas underneath? If so, how do you make a SwiftUI overlay pass-through for hover? Dasher is a well-established accessibility tool that lets people type using only their eyes. Its the fastest text entry method for eyegaze and head controlled systems. On every other platform (iOS with external trackers, Windows with Tobii, etc.) it reads continuous gaze coordinates and zooms toward wherever the user is looking. Vision Pro should be the best hardware for this — the tracking is already there, we just can't read it. If there's no public API for this, I'd love to know so I can scrap my feedback assistant entry!. If there IS a way and I've missed it, I'd be grateful for a pointer. Thanks!
2
0
498
Jun ’26
Reality Composer Pro should expose Assistant and project automation through MCP or a CLI
Reality Composer Pro 3 Assistant appears to have useful project-aware tool categories for working with scenes, assets, materials, animation, behavior trees, navigation, skeletons, audio, planning, documentation, and ShaderGraph material creation. It would be very helpful if a supported subset of these capabilities could be exposed to external developer tools through an Apple-provided MCP server, command-line tool, or similar local automation interface. Similar to what's possible with Xcode: https://developer.apple.com/documentation/Xcode/giving-external-agents-access-to-xcode Possible exposed capabilities could include: Querying and modifying scene hierarchy, entities, and components. Inspecting and managing project assets and structure. Working with materials and ShaderGraph/SSL material creation. Reading and editing animation libraries, timelines, skeletons, and rigs. Inspecting behavior trees and navigation data. Reading audio components and playback settings. Querying Reality Composer Pro documentation through the Assistant. Returning structured JSON responses for external tools. Letting external coding agents request project-aware plans or safe editor actions. Expected Result: Reality Composer Pro provides a documented, permission-aware MCP server, CLI, or similar interface that allows external developer tools to safely use supported Assistant/project capabilities. Actual Result: Reality Composer Pro Assistant is available only inside the app UI. External coding agents such as Codex or Claude Code cannot reliably inspect or automate Reality Composer Pro projects except through unsupported package/file manipulation. Why This Matters: Many developers now use coding agents alongside Xcode and Reality Composer Pro. A supported interface would make app development smoother by allowing those tools to coordinate Swift code, RealityKit assets, scene state, materials, animations, and Assistant workflows through an official integration point. Feedback ticket: FB23276072
0
2
477
Jun ’26
Reality Composer Pro Assistant should support current provider APIs and latest frontier models
Reality Composer Pro Assistant currently appears limited to a fixed OpenAI model list and the legacy /v1/chat/completions endpoint. On Reality Composer Pro 3.0 (75.0.14.500.1), the OpenAI provider exposes only a small set of models such as gpt-4.1, gpt-4o, gpt-4o-mini, o1, and o3-mini. Newer models available through OpenAI’s current APIs are not usable. It would be nice to add support for current provider APIs, including OpenAI’s /v1/responses endpoint, and allow dynamic model discovery or manual custom model IDs. Feedback ticket: FB23274502
0
0
398
Jun ’26
Reality Composer Pro exports to 'reality' file
I had planned on using the new version of Reality Composer Pro to export USDZ files for interactivity, but I noticed it can only export selected objects, and they export to a new '.reality' file type. I can't open these on MacOS26.6 or MacOS27. On the old version of Reality Composer Pro you could export the entire project as a USZ file, which was really cool since it was kind of universal and maintained many of the interactions. is this something that just hasn't been integrated yet?
4
0
714
Jun ’26
Spatial Audio: <<<< FigAudioSession(AV) >>>> signalled err=-19224 at <>:612
Ok trying to play Spatial Audio on my VisionPro. OS26.4, using Xcode 26.4.1. Every attempt gives me the following error. <<<< FigAudioSession(AV) >>>> signalled err=-19224 at <>:612 I have tried the sample code at https://developer.apple.com/documentation/visionos/playing-spatial-audio-in-visionos and it gives the same error.
Replies
5
Boosts
0
Views
1.5k
Activity
Jul ’26
Is GaussianSplatComponent different than other Components?
I have been analyzing Apple's Gaussian-Splats-on-visionOS demo project, and it appears that the GaussianSplatComponent is treated differently than other Components. In the function makeSplatEntity(), a GaussianSplatComponent is created and added to an Entity's components: let comp = try assembleSplatComponent(from: buffers, isLinear: isLinear) let entity = Entity() entity.components.set(comp) But when I check the entity's components collection before and after the add/set, nothing has changed. The entity still has the same children. Is the GaussianSplatComponent stored in a different location in the Entity? If so, is it a public property I can inspect? (Or is my interpretation of the components system wrong?) Here are the results of print statements before and after the set() BEFORE ADDING COMPONENT Entity number of components: 2 Component: Transform(scale: SIMD3<Float>(1.0, 1.0, 1.0), rotation: simd_quatf(real: 1.0, imag: SIMD3<Float>(0.0, 0.0, 0.0)), translation: SIMD3<Float>(0.0, 0.0, 0.0)) Component: RealityKit.SynchronizationComponent AFTER ADDING COMPONENT Entity number of components: 2 Component: Transform(scale: SIMD3<Float>(1.0, 1.0, 1.0), rotation: simd_quatf(real: 1.0, imag: SIMD3<Float>(0.0, 0.0, 0.0)), translation: SIMD3<Float>(0.0, 0.0, 0.0)) Component: RealityKit.SynchronizationComponent
Replies
1
Boosts
0
Views
664
Activity
Jul ’26
Viewing Gaussian splats while inside the model
I am trying to view immersive environments that are Gaussian Splats created by marble [dot] worldlabs [dot] ai. For example, here is one named "Steampunk City Night View": (Note: the low-res version is 500,000 splats, so I am just testing the first 200,000 splats). But when I try to view it at scale, nothing appears. I tried shrinking it down (scale factor of 0.00595458) and positioning it in front of me, and I could see the content, so the parsing of the PLY file is working. Example: But when I move into the model, it goes clear, also hiding virtual content behind it that is also in the splats' space (like the Mac virtual screen). Example: It is as if when I move inside the Gaussian Splats' bounding box, it sets an opacity material on the splats. This prevents me from using these Gaussian Splats as immersive environments. Is there any way to disable this behavior?
Replies
1
Boosts
0
Views
660
Activity
Jul ’26
Vision Pro operating limits and battery in 45°C heat
Hello everyone, ​I’m an R&D software engineer researching the Vision Pro for on-site CAD visualization and quality assurance. This requires using the headset outside in the open air in KSA, where ambient daytime temperatures easily hit 45°C (113°F). ​Before I try deploying this for field work, I have a few specific questions: ​Operating Limits: Will the headset function in 45°C ambient heat, or will it immediately trigger a thermal shutdown? ​Throttling: How aggressively does visionOS throttle performance or dim the displays when running demanding spatial apps in this heat? ​Battery: Will the external battery stop supplying power or refuse to charge under these conditions? ​Workarounds: Are there any known best practices or shading accessories for using the Vision Pro outdoors in extreme climates? ​I know the official operating limit is 30°C, so I'm looking for real-world insights from anyone who has pushed these environmental limits. ​Thank you!
Replies
1
Boosts
0
Views
527
Activity
Jul ’26
Work with Reality Composer Pro content in Xcode
May I ask if there is a complete source code project for this instructional video that needs to be learned. Work with Reality Composer Pro content in Xcode
Replies
5
Boosts
0
Views
953
Activity
Jul ’26
Reality Composer Pro 3 Beta 2: Unable to configure Assistant model provider
In Reality Composer Pro 3 Beta 2 so version 3.0 (75.0.21.500.2), I’m unable to connect any model provider or complete setup for the Assistant feature. I tried the following API endpoints: OpenAI: https://api.openai.com/v1 https://api.openai.com/v1/responses https://api.openai.com/v1/chat/completions Anthropic / Claude: https://api.anthropic.com/v1 https://api.anthropic.com/v1/messages None of these allow the Assistant setup to complete. It is unclear what endpoint format Reality Composer Pro expects, or whether provider setup is currently broken in Beta 2. Ticket with a video showing the issue can be found here: FB23493842
Replies
2
Boosts
0
Views
401
Activity
Jul ’26
Reality Composer Pro 3 is unable to properly import my .usdz file
Hi, I’m running into an issue when importing a .usdz asset into Reality Composer Pro 3. The exact same asset was working perfectly in Reality Composer Pro 2, and it also works correctly when previewed in Xcode 27.0 beta or loaded directly in RealityKit from code. However, in Reality Composer Pro 3, the asset does not import correctly: The material appears completely broken and looks different from the original asset. The animations are not working. The same .usdz works as expected in Reality Composer Pro 2, including materials and animations. The same .usdz also works as expected in Xcode / RealityKit. I also noticed that the Preview app does not seem to import the asset correctly either. In Preview, the asset has the wrong orientation and it looks like the skeleton and animations may not be recognized properly. Here are a few screenshots showing how the asset appears in each app: Reality Composer Pro 2: asset works correctly, including materials and animations. Xcode 27.0 beta preview: asset works correctly, including materials and animations. Reality Composer Pro 3: material is broken and animations are not working. Preview app: wrong orientation, possible skeleton / animation import issue. I filed a ticket FB23214120 that contains an example Xcode project and RCP2 & RCP3 projects. Is there anything specific that changed in the USDZ import pipeline in Composer Pro 3 that could explain this behavior? Thanks!
Replies
3
Boosts
2
Views
1.1k
Activity
Jun ’26
Can a RealityKit ShaderGraph read a custom-named USD primvar?
In Reality Composer Pro I try to read it with a Primvar Reader / Geometric Property node (type float), setting the name field to AttributeTest and also to primvars:AttributeTest. In both cases the node only returns its fallback value never the actual per-vertex data. No error or warning. If I instead author the data as a vertex Color Attribute so it exports as primvars:displayColor, the Geometry Color node reads it correctly. So the data pipeline works for the color slot, but not for a custom-named primvar. I actually verified in RCP 3 too i have the same issue, but at least you can see in RCP 3 that the attribute does actually live on the mesh when selecting it. Thanks.
Replies
1
Boosts
0
Views
638
Activity
Jun ’26
Access main camera on Apple Vision Pro
From visionOS 2.0 we can access Apple Vision Pro's main camera but only for Enterprise account as it is enterprise API only, I have a normal Developer account and I want to use main camera and want to have a video call feature in app by using main camera of AVP, is it possible to do it using developer account only. Currently using that account I am not able to create entitlement certificate as there is no option.
Replies
4
Boosts
0
Views
1.3k
Activity
Jun ’26
How do I dismiss a presented sheet?
I'm developing an app requiring data entry across several devices. My SwiftUI app runs on iOS and iPadOS but I also want to run it on visionOS. I'm using the visionOS simulator. When I enter data in one of my views I use a Form within a .sheet and this works perfectly well on iOS and iPadOS and I can dismiss the sheet by simply tapping the view behind the sheet. On visionOS I click my + button, the sheet appears, I enter the data as usual but after that there is no gesture in the app I can perform with keyboard or mouse that will make the sheet disappear! Do I have to add a "Close" button for visionOS or is there a way to enable the same interaction that works on iPadOS?
Replies
2
Boosts
0
Views
1.5k
Activity
Jun ’26
WorldAnchor instantly removed when SpatialTrackingSession and ARKitSession run together
Bug: When SpatialTrackingSession and ARKitSession + WorldTrackingProvider are running concurrently, any WorldAnchor added via WorldTrackingProvider.addAnchor() triggers .added followed immediately by .removed—without any user call to removeAnchor(). The anchor never persists in allAnchors. import SwiftUI import RealityKit import ARKit struct ImmersiveView: View { @State private var worldTracking: WorldTrackingProvider? @State private var arSession: ARKitSession? @State private var processWorldTrackingUpdatesTask: Task<Void, Never>? var body: some View { RealityView { content in let configuration = SpatialTrackingSession.Configuration(tracking: [.world]) if let unavailableCapabilities = await SpatialTrackingSession().run(configuration) { if unavailableCapabilities.anchor.contains(.world) { fatalError("World tracking is not available on this device.") } } let worldTracking = WorldTrackingProvider() let arSession = ARKitSession() self.arSession = arSession try! await arSession.run([worldTracking]) self.worldTracking = worldTracking processWorldTrackingUpdatesTask = Task { @MainActor [weak worldTracking] in guard let worldTracking else { return } for await update in worldTracking.anchorUpdates { let worldAnchor = update.anchor switch update.event { case .added: print("Anchor added: \(worldAnchor.id)") case .updated: print("Anchor updated: \(worldAnchor.id)") case .removed: fatalError("Anchor removed unexpectedly — this should not happen in this demo scenario.") } } } } .task { try? await Task.sleep(for: .seconds(3)) guard let worldTracking else { return } do { try await worldTracking.addAnchor(.init(originFromAnchorTransform: Transform.identity.matrix)) } catch { print("Error adding anchor: \(error)") } } } } Expected: Anchors persist until explicitly removed or out of range. Actual: SpatialTrackingSession interferes with WorldTrackingProvider's anchor lifecycle, causing immediate removal. This was originally reported in 2025 (https://developer.apple.com/forums/thread/773351) , but remains unfixed in visionOS 27.0 beta. I've re-filed as FB23420195.
Replies
4
Boosts
1
Views
790
Activity
Jun ’26
Gaussian Splat demo changed, supports USDZ?
Today, I picked up on my work on the Gaussian Splats demo from Apple I was working with last weekend, and it didn't work (I've updated everything to beta 2 this week). I tried downloading a fresh copy of the demo (in case I screwed mine up), and not only does it work, it can load Gaussian Splats data from a USDZ file. Am I mis-remembering what the demo was like last week vs. this week? This feels like major new functionality I haven't heard mentioned anywhere. Is there any documentation/guidance on how to package up Gaussian Splat data (e.g., originally from a PLY file) into a USDZ file?
Replies
1
Boosts
0
Views
676
Activity
Jun ’26
Allow External Apps to Remain Visible in an Immersive Space
Many apps utilize ImmersiveSpace simply to render large-scale, custom geometry (such as curved screens, wide-canvas media players, or specialized data visualizations) that cannot be achieved within a standard volumetric window limitations. However, users often still want to multitask—check Messages, reference Safari, access YouTube, etc. Forcing the user to exit the immersive space just to see their other apps breaks their workflow and creates a disjointed user experience. Proposed Solution: I propose adding a property to ImmersionStyle (or a similar API configuration) such as allowSharedSpaceVisibility. When enabled, this would: Allow the ImmersiveSpace to render its custom RealityKit content as usual and prevent the system from automatically hiding the user's existing Shared Space windows. Do me a solid here VisionOS team and please consider this feedback request. 🙏 FB: FB22973973 FB: FB21630340
Replies
1
Boosts
0
Views
672
Activity
Jun ’26
Backwards Compatibility
No technical justification is strong enough to erase months of developer work through incompatible project migrations without a reliable upgrade path. Reality Composer Pro has evolved quickly, but projects built around timelines, behaviors, transforms, spin, orbit, hide actions, and synchronized audio represent hundreds of hours of creative work. When those projects import with missing actions or stripped timelines, the cost isn’t just technical—it is developer time, money, and eduction that cannot be recovered. Please prioritize migration tools or compatibility layers that preserve existing timeline projects. Backward compatibility is not just about code; it is about respecting the investment developers make in your platform. Xcode 27 Beta 2 Reality Composer Pro 3 Import reports: Missing Transform To Missing Transform By Missing Spin Missing Orbit Missing Hide Missing timelines and behavior Audio synchronization no longer present 60 others. Basically any movement or action. For a new developer, this isn’t the loss of a feature. It’s the loss of two years of blindly learning, invested in a workflow that no longer exists. That work now survives only in memories of an app that never had the chance to be approved. Can i revert to the previous version? Thank you for any replies and the time taken.
Replies
2
Boosts
0
Views
425
Activity
Jun ’26
Will the Chaparral Village sample code be available for download?
Hi, several WWDC26 sessions this year feature the Chaparral Village project. However, I can't find a download for it anywhere. Will the Chaparral Village project be published as downloadable sample code? Thanks!
Replies
2
Boosts
0
Views
617
Activity
Jun ’26
How do you get continuous eye-gaze coordinates on visionOS? (accessibility AAC app — all hover APIs return zero events)
Building Dasher (eye-gaze text-entry system for people with motor impairments — ALS, cerebral palsy, etc.) for visionOS. See https://github.com/dasher-project/Dasher-Apple The app needs continuous (x, y) gaze coordinates to steer a zooming alphabet interface. Vision Pro has incredible eye tracking hardware built in — this should be the perfect platform — but I can't get gaze coordinates through any API I've tried. What I've tested (all deliver zero events in a windowed app): UIHoverGestureRecognizer — Apple's docs say it "detects when the user is looking at a view" on visionOS. Added it to a UIView inside UIViewRepresentable. Looked at the view for 2+ minutes on real hardware. Console.app shows zero began/changed/ended callbacks. .onContinuousHover (SwiftUI) — zero .active phases delivered, whether attached to the canvas view or the ZStack root. UIPointerInteraction with a delegate — regionFor callback never fires. The system clearly is tracking gaze — I can see beginScrollingWithRegion events in Console.app with the correct window rect, and the visual hover highlight appears on buttons. But the coordinates are routed to scroll handling, not exposed as a usable pointer position. What does work: pinch-and-drag follows the hand position (where the pinch is in 3D space), not gaze. That's fine for general apps but doesn't help users who need eye-only control. What I'm wondering: Has anyone successfully received continuous gaze coordinates in a windowed (non-immersive) visionOS app? If so, which API? Is UIHoverGestureRecognizer supposed to work on UIView inside UIViewRepresentable, or does it require a pure UIKit view hierarchy? Is there an ARKit provider for eye tracking that I'm missing? I see HandTrackingProvider but no EyeTrackingProvider in the capability list. Could the issue be that my SwiftUI overlay (toolbar VStack) is intercepting hover events before they reach the canvas underneath? If so, how do you make a SwiftUI overlay pass-through for hover? Dasher is a well-established accessibility tool that lets people type using only their eyes. Its the fastest text entry method for eyegaze and head controlled systems. On every other platform (iOS with external trackers, Windows with Tobii, etc.) it reads continuous gaze coordinates and zooms toward wherever the user is looking. Vision Pro should be the best hardware for this — the tracking is already there, we just can't read it. If there's no public API for this, I'd love to know so I can scrap my feedback assistant entry!. If there IS a way and I've missed it, I'd be grateful for a pointer. Thanks!
Replies
2
Boosts
0
Views
498
Activity
Jun ’26
Surface Snapping in visionOS Simulator
How do I snap a window to a surface in the visionOS Simulator?
Replies
2
Boosts
0
Views
605
Activity
Jun ’26
Reality Composer Pro should expose Assistant and project automation through MCP or a CLI
Reality Composer Pro 3 Assistant appears to have useful project-aware tool categories for working with scenes, assets, materials, animation, behavior trees, navigation, skeletons, audio, planning, documentation, and ShaderGraph material creation. It would be very helpful if a supported subset of these capabilities could be exposed to external developer tools through an Apple-provided MCP server, command-line tool, or similar local automation interface. Similar to what's possible with Xcode: https://developer.apple.com/documentation/Xcode/giving-external-agents-access-to-xcode Possible exposed capabilities could include: Querying and modifying scene hierarchy, entities, and components. Inspecting and managing project assets and structure. Working with materials and ShaderGraph/SSL material creation. Reading and editing animation libraries, timelines, skeletons, and rigs. Inspecting behavior trees and navigation data. Reading audio components and playback settings. Querying Reality Composer Pro documentation through the Assistant. Returning structured JSON responses for external tools. Letting external coding agents request project-aware plans or safe editor actions. Expected Result: Reality Composer Pro provides a documented, permission-aware MCP server, CLI, or similar interface that allows external developer tools to safely use supported Assistant/project capabilities. Actual Result: Reality Composer Pro Assistant is available only inside the app UI. External coding agents such as Codex or Claude Code cannot reliably inspect or automate Reality Composer Pro projects except through unsupported package/file manipulation. Why This Matters: Many developers now use coding agents alongside Xcode and Reality Composer Pro. A supported interface would make app development smoother by allowing those tools to coordinate Swift code, RealityKit assets, scene state, materials, animations, and Assistant workflows through an official integration point. Feedback ticket: FB23276072
Replies
0
Boosts
2
Views
477
Activity
Jun ’26
Reality Composer Pro Assistant should support current provider APIs and latest frontier models
Reality Composer Pro Assistant currently appears limited to a fixed OpenAI model list and the legacy /v1/chat/completions endpoint. On Reality Composer Pro 3.0 (75.0.14.500.1), the OpenAI provider exposes only a small set of models such as gpt-4.1, gpt-4o, gpt-4o-mini, o1, and o3-mini. Newer models available through OpenAI’s current APIs are not usable. It would be nice to add support for current provider APIs, including OpenAI’s /v1/responses endpoint, and allow dynamic model discovery or manual custom model IDs. Feedback ticket: FB23274502
Replies
0
Boosts
0
Views
398
Activity
Jun ’26
Reality Composer Pro exports to 'reality' file
I had planned on using the new version of Reality Composer Pro to export USDZ files for interactivity, but I noticed it can only export selected objects, and they export to a new '.reality' file type. I can't open these on MacOS26.6 or MacOS27. On the old version of Reality Composer Pro you could export the entire project as a USZ file, which was really cool since it was kind of universal and maintained many of the interactions. is this something that just hasn't been integrated yet?
Replies
4
Boosts
0
Views
714
Activity
Jun ’26