Posts under Spatial Computing topic

Post

Replies

Boosts

Views

Activity

RealityKit portal crossing leaves a hard PBR lighting seam despite environmentLightingWeight being 0
I’m seeing a device-only lighting discontinuity on PBR entities that intersect a RealityKit portal plane in visionOS 27. A sharp brightness boundary appears exactly where the portal plane cuts through the entity. The portion outside the portal receives a different physical environment-probe contribution from the portion inside. The behavior is reproducible with two independent cases: A completely static blue sphere positioned across the portal plane. An orange sphere moved through the portal using ManipulationComponent and the standard visionOS pinch gesture. Both spheres use: var material = PhysicallyBasedMaterial() material.baseColor = .init(tint: .orange) material.metallic = 0 material.roughness = 1 Each sphere has the crossing and lighting components attached directly: sphere.components.set(PortalCrossingComponent()) sphere.components.set( ImageBasedLightReceiverComponent( imageBasedLight: portalImageBasedLight ) ) var lightingConfiguration = EnvironmentLightingConfigurationComponent() lightingConfiguration.environmentLightingWeight = 0 sphere.components.set(lightingConfiguration) The portal is created using the visionOS 27 factory API: let portal = PortalComponent.makePortal( surfaceStyle: .init(width: 1.2, height: 0.8), boundaryStyle: .infinitePlane(), boundaryMode: .clippingAndCrossing ) if var component = portal.portalEntity.components[PortalComponent.self] { component.lightingBlendDistance = 0.2 portal.portalEntity.components.set(component) } For the moving sphere, environmentLightingWeight stays at 0 for the entire interval in which any part of the sphere intersects the portal. The realtime environment-probe contribution only begins fading from 0 to 1 after the complete sphere has cleared the plane. However, a spatially sharp edge remains: In a bright physical environment, the outside portion is brighter. In a dark physical environment, the outside portion is darker. With UnlitMaterial, the edge disappears completely. With PBR—even metallic 0 and roughness 1—the edge returns. The static sphere reproduces the issue, so it does not appear to be caused by gesture or lighting-update timing. Changing lightingBlendDistance does not soften this remaining edge. The issue is visible on Apple Vision Pro but not in visionOS Simulator. I watched the portal-lighting section of WWDC24 session 10103 and implemented the recommended EnvironmentLightingConfigurationComponent solution. I have also reviewed the documentation for PortalComponent, PortalCrossingComponent, PortalComponent.makePortal, ImageBasedLightReceiverComponent, and environmentLightingWeight. Is there another component or entity-hierarchy requirement needed to fully suppress the physical environment probe on the host-side fragments of a crossing PBR entity? Or is this a RealityKit rendering issue on physical hardware? Environment: Apple Vision Pro (M5) visionOS 27.0 (24M5326g) Xcode 27.0 (27A5228h) visionOS SDK 27.0 (24M5326e) Here is a minimal standalone Xcode reproduction containing both the static and pinch-draggable spheres: https://drive.google.com/file/d/13qqOlDJVCCtlFcMaHCBpDkVJgRzmNjBK/view?usp=sharing
3
0
2k
Aug ’26
AIVU 180 video suddenly got too laggy
Why do I play an AIVU 180 degree video, which has always been able to play smoothly, and then suddenly played too laggy recently? The video is embedded locally, without network factors, and the video parameters and program code have not changed at all. I also tested playing videos around 400m in size, and the CPU displayed 400-500%, but it was very smooth. When playing a video of 1G or so, the clip is 20-30%, but it is too laggy. Except for the different video duration, other parameters are the same. May I ask what caused the lag.
1
0
1k
Aug ’26
Apple Cinema Environment
I’d be very interested in having Apple Cinema Environment deployed across all third party apps (I.e Disney+, HBO Max, etc). These already have their immersive environments as well as the option to use Apple’s immersive environments (i.e the Moon). However the Apple Cinema / Theater is the best implementation I’ve seen thus far however its currently limited to the AppleTV content. Are there any plans to deploy this across other apps?
1
0
1.1k
Aug ’26
GeometricPins not updating on entities loaded from reality files
I'm attempting to create GeometricPins on an entity so I can attach objects to game characters. If I load a character from the USD file I can query the joint names on the ModelEntity and create GeometricPins as attachment points. These pins will track the location of the associated joint and I can position my objects at the pin locations as expected. However, the pins do not update on characters loaded from a Reality File. In the below image, the Skeleton Mage character in the middle is loaded as a USDC file and I attach the hat with a GeometricPin so that it tracks the movement of the head as it animates. The animating Skeleton to the left is the same character (same .usdc file) but exported from RCP3 as a Reality File. Notice how the hat does not move with the character's head. The position and orientation of the GeometricPins attached to this character always return nil. I've also noticed that the jointNames array is empty for this entity as well. Should I be able to access the jointNames and create Geometric pins on entities loaded from Reality files? I'm adding the pin to the model entity with the following helper function. The helper function is called in the exact same way for the usd and reality entities. func pinToJoint(_ entity: Entity, to target: Entity, at jointName: String, offset: SIMD3<Float> = .zero, orientation: simd_quatf = .init(angle: 0, axis: [0,1,0])) { let pinName = "pin_at_\(jointName)" if let rig:ModelEntity = target.findModelEntity() { for jointName in rig.jointNames { log.info("\(target.name): \(jointName)") } rig.pins.set(named: pinName, skeletalJointName: jointName, position: offset, orientation: simd_quatf(angle: -.pi/2.0, axis: .init(1,0,0))) entity.components.set( PinnedEntityComponent( pinnedto: rig, pinName: pinName, ) ) } } The PinnedEntitySystem just assigns the location of the pin to the entity with the following guard let pinPosition = pin.position(relativeTo: nil) else { continue } guard let pinOrientation = pin.orientation(relativeTo: nil) else { continue } entity.setPosition( pinPosition , relativeTo: nil) entity.setOrientation( pinOrientation , relativeTo: nil)
4
1
1.3k
Aug ’26
VisionOS 27 Custom Spatial Accessories ASA Host Version remains 0.0
I am implementing a custom generic spatial accessory according to Section 20 of the Accessory Design Guidelines dated 2026-06-08. Apple Vision Pro discovers the accessory, completes BLE pairing and encryption, reads the Apple Spatial Accessory Version and Uniform Type Identifiers characteristics, and recognizes the device in the accessory tracking debug view. However, visionOS writes ASA protocol version 00.00 to the Apple Spatial Accessory Host Version characteristic instead of selecting version 01.01. Here is the log message when I connected my spatial accessory with apple vision pro with os27 beta 3. The error is the ASA part. BLE advertising: ZemScannerASA15; BLE ATT MTU tx=23,rx=23; BLE conn timing connected: interval=30000; us,latency=0,timeout=72; TimeSync anchor report enabled: h=0x011f; BLE connected TimeSync anchor #1 ce=0,int=30000,delay=0 TimeSync anchor #2 ce=3,int=30000,delay=0 TimeSync anchor #3 ce=4,int=30000,delay=0 BLE ATT MTU tx=293,rx=65 BLE security level 2 BLE pairing complete, bonded ASA version read #1 off=0 req=64 hex=02 01 01 01 01 ASA UTI read #2 off=0 req=64 total=49 ASA host wr #3 o=0 l=4 f=00 hex=00 00 01 31 ASA host raw: off=0,write=4,total=4,hex=00 00 01 31 ASA host version: >len=4,ver=0.0,features_len=1,features=0x31 ASA host selected no common protocol HID direct input report sent HID notif #4 report=3 enabled HID IMU stream started HID notif #5 report=2 enabled HID IMU report sent BLE conn params updated: interval=7500 us,latency=4,timeout=100
5
0
1.3k
Aug ’26
RoomPlan/LiDAR best practices for scanning ~3,000 sq ft: Single scan, segmented scans, or based on scanned area?
I have a few questions about the recommended approach: Should a large area like this be scanned in a single RoomCaptureSession, or is it recommended to split it into multiple sessions? If multiple sessions are preferred, should the decision be based on the device's available RAM/memory or the size of the scanned area (square footage)? Is there a recommended maximum square footage, number of rooms, or session duration for a single RoomCaptureSession? Are there any documented limitations or best practices for handling large-area scans with RoomPlan? I'm looking for the recommended approach from the RoomPlan/ARKit developer for managing large scans efficiently.
1
0
919
Aug ’26
VisionOS RCP The model fades in and incorrectly displays the model outline on the UI
There is a UI panel with Attachment added in my scene. There are other models in the scene, and when the model fades in using OpacityComponent, the UI panel incorrectly displays the outline of the model, as shown in the red box in the picture. The model fade in code is like this: public func FadeInEntity( entity:Entity, duration: TimeInterval = 1.0, completion: (() -> Void)? = nil ) { entity.stopAllAnimations() if entity.components[OpacityComponent.self] == nil { entity.components.set(OpacityComponent(opacity: 0)) } else{ entity.components[OpacityComponent.self]?.opacity = 0 } EnableEntity(entity: entity) let action = FromToByAction<Float>( from: 0, to: 1, timing: .easeInOut ) do { let anim = try AnimationResource.makeActionAnimation( for: action, duration: duration, bindTarget: .opacity ) entity.playAnimation(anim) DispatchQueue.main.asyncAfter(deadline: .now() + duration) { completion?() } } catch { completion?() } }
2
0
478
Aug ’26
VisionPro Enterprise.license file
I have read in the apple documentation and on forums that in order to access the camera and capture images on VisionPro, both an Entitlement and an Enterprise.license are required. I already have the Entitlement, but I don’t yet have the Enterprise.license. I would like to ask: is the Enterprise.license strictly required to gain camera access for capturing images? How can I obtain this file, and does it require an Enterprise account? Currently, my developer account is a regular Developer 99$, not an Enterprise account.
4
0
986
Aug ’26
How do I create Enterprise.license file?
Hello, I did get an email that I now have access to the Enterprise APIs and I should create the license file. However, I can't figure out a way to create the license file. I did go check out that button, it did have the buttons to "renew" the licenses I got a while ago (via email). but no way to create new ones. and I am enrolled in the "Apple Developer Program as an organization " Where can I create Enterprise.license file?
4
0
1.7k
Aug ’26
Null Truth error after deleting animation import
FB24108671 I have multiple animation files and characters that all share the same skeleton definition. This is required in order for the animations to be visible in the animation library. However, you can accidentally delete the import that contains the skeleton definition, this will break every animation that depends on that shared skeleton. This is silent until you attempt to play or inspect one of the remaining animations. To my knowledge, there is no indication as to which Import contains a skeleton definition nor is there a way to lock the file so that I cannot delete it. Repro Steps: Create a new RCP3 project and save the project. Import a USD file that contains a skeletal animation. Import one or more additional USD files that contains also contain skeletal animations. Note: The skeletons must match exactly between the imported USD files or they will not be available in RCP3. Verify that all imported animations have a valid target Skeleton. This is visible by clicking on an Import and expanding the Animation Settings section in the inspector. Select the skeletal animation and view the Target Skeleton field. Optional: Import a USD file that contains a character with a matching and valid skeleton. Create a new entity and reference the imported character. Add a new Animation Library and confirm that the skeletal animations appear in the list of available animations. Select one of the animations to auto play and hit the play button to simulate the animation. The animation should play. Open terminal and navigate to your saved RCP3 project. In the root of the project run the find command to locate the skeletal definition NullTruthDeletedAnimation.realitycomposerpro % find . -name '*.tm_skeleton_definition' ./animations/Running_B.import/skeletons/root_skeldef.tm_skeleton_definition Back in RCP3 delete the Import that contains the skeleton definition. In the above case, this would mean deleting RunningB.import. Save the RCP3 project. All animations that were assigned to the same Target Skeleton will now have an empty entry in the Animation Settings section of the inspector. If you created an entity earlier that referenced the animations then none of the animations that referenced the delete skeleton will play. In the console you will see an error reporting a missing timeline. ❌ GEN RESOURCE: tm_timeline_skeletal_clip object id: 00002dab0000024c - Resource generation failed. Error: Animation Timeline is missing a target skeleton If you assigned the deleted animation to this entity then it will still have an entry in the animation library but its value will be empty. After saving the project, close and reopen the RCP project. If you created an entity earlier, then open the created entity and simulate the scene. You may see the following errors. ❌ GEN RESOURCE: tm_timeline_skeletal_clip object id: 00002dab0000024c - Resource generation failed. Error: Animation Timeline is missing a target skeleton (2) ❌ error: Trying to lookup property of NULL truth object ❌ GEN RESOURCE: tm_timeline object id: 000023a700000248 - Resource generation failed. Error: Sampled USD anim - missing TM_TT_TYPE__ANIMATION dependency The GEN RESOURCE: tm_timeline_skeletal_clip object id error appears to be due to the broken animation library entry for the deleted animation. The error: Trying to lookup property of NULL truth object error appears to be the animation referencing the deleted skeleton. If you did not create an entity then you can see the errors by doing the following: Select one of the imported animations that referenced the now deleted skeleton. In the Inspector, expand the Animation Settings section. Select the skeletal animation, you will now see the following error repeating in the console. ❌ error: Trying to lookup property of NULL truth object ❌ (previous error repeated 59 times) ❌ error: Trying to lookup property of NULL truth object ❌ (previous error repeated 53 times) ❌ error: Trying to lookup property of NULL truth object ❌ (previous error repeated 59 times) You can fix this by importing a new animation with a valid and matching skeleton or reimporting the deleted animation. However, you MUST manually assign the Target Skeleton on each broken skeletal animation. You will also need to manually remove any animation library entries for deleted animations.
0
0
648
Aug ’26
Adding a ManipulationComponent detaches the whole RealityView content hierarchy on visionOS 27
On visionOS 27 (27.0 Seed 4, 24M5326g), adding a ManipulationComponent to a single entity makes RealityKit remove the RealityView's ENTIRE content hierarchy from the scene and re-add it about 30ms later. Not just the manipulated entity — everything. Same app binary on visionOS 26: never happens. FB24092291. Bisected on the same build and device: two entities, neither with manipulation -> no detach add one entity with a ManipulationComponent -> detach, every time same entity, manipulation swapped for my own drag/rotate/ scale gesture handling -> no detach Everything else is identical between the last two cases — same entity, same collision shape, same InputTargetComponent, same ViewAttachmentComponent, same scene, same view hierarchy. The only variable is whether the component is installed. Setup: an immersive space containing a SwiftUI RealityView. One root entity added to the RealityViewContent in the make closure; all app content built as its descendants. The detach is brief but not harmless: every entity in the hierarchy gets SceneEvents.WillRemoveEntity and then DidAddEntity, so anything keyed to those events runs a full teardown and re-add for content that was never meant to go anywhere. In my app that cascade is what makes the scene visibly empty and rebuild. Nothing in my code removes it. Stack captured from a WillRemoveEntity subscription on the root — frame 0 is my callback, everything above it is framework: SwiftUI (AttributeGraph StatefulRule.withObservation ...) -> RealityFoundation -> CoreRE -> entity removal Ruled out before landing on the component: make runs exactly once, the root re-enters a scene with the same ObjectIdentifier (not a re-host), the hosting controller is never deallocated, there is exactly one RealityViewContent.add(_:) in the whole app, and with Self._printChanges() in the view's body the detach happens in an update pass where the body is not re-evaluated at all. Also ruled out: transient overlay UI (suppressed entirely, still detached) and entity count. Workaround if this is biting you: skip ManipulationComponent on 27 and handle drag/rotate/scale yourself. That is what I am doing for now. If you are debugging something similar: SceneEvents.WillRemoveEntity also fires when an entity merely leaves a scene, so a teardown-looking log is not proof anything was destroyed. Check whether make ran twice and whether the scene identity changed before suspecting your own code.
1
2
1.6k
Aug ’26
Reality Composer Pro Assistant does not list GPT-5.6 models
First of all, great work on the new Reality Composer Pro! I'm really enjoying it. Reality Composer Pro 3.0 (build 80.0.1.500.1/beta 4) currently shows GPT-5.5 as the newest OpenAI model in the Assistant model selector. The bundled configuration appears to contain a static model catalogue and does not include: gpt-5.6-sol gpt-5.6-terra gpt-5.6-luna Could Apple update Reality Composer Pro to support the current GPT-5.6 model family, or document whether users can add supported OpenAI model identifiers through the Custom Model Provider interface? It would also be helpful to clarify whether the Assistant supports GPT-5.6's tool-calling and reasoning behavior through its current Chat Completions integration. Thanks!
2
0
1k
Jul ’26
Unable to share animations across compatible skeletons in RCP3.
I’m working with an asset pack that contains multiple characters with a common skeletal hierarchy. This asset pack also contains animations for these characters as separate files. i.e.: run pick up idle throw In RCP2, I was able to add these animations to an Animation Library component without issue. However, in RCP3, I cannot add the skeletal animations to compatible characters. The only animations available are the transform animations, which do not animate the character. So in the animation library, I will see i.e.: run_transform idle_transform throw_transform But not run idle throw Is there something that I need to do to make the skeletal animations visible? I’ve tried adding the animation library at various levels across the hierarchy and it doesn’t seem to make a difference. Only the _transform animation is visible. I can verify that the animations themselves are compatible by manually editing the tm_entity for a character and adding the animation clip. I have to do this while RCP3 is closed but it works. I did notice that each animation is referencing a skeleton uuid. Is the UI only exposing skeletal animations with a matching skeleton uuid? Lastly, I can import both the character and the animation files as USD in a RealityKit app and successfully assign animations.
2
0
1.3k
Jul ’26
Reality Composer Pro 3 "Preview On Device" Connection Issues
When trying to preview a new scene in Reality Composer Pro 3 on my Vision Pro, the mac app is launching the preview app in the headset but not actually establishing the connection. The headset app shows a red Disconnected icon and says "Connect to this device form Reality Composer Pro on Mac" and then the mac side says "Connecting" for a few seconds before saying "Connection Failed". Neither app provides any other details of the connection issue and I could not find any helpful details in Console messages. I got this to work somehow on two scenes in beta 3 but have had no luck in Beta 4. It seems that once a scene does connect to the device once, it will happily reconnect in the future. But establishing that first connection seems to be the key hurdle and I cannot get over it tonight. Anyone else run into similar issues?
2
1
1.2k
Jul ’26
ARKit tracking eyebrows with a unified motion instead of individually.
Hello, I'm a VTuber, or a content creator who uses a virtual avatar instead of my real life face for presentation. I've been trying to use the iOS implementation of ARKit to get face tracking working, but noticed a major issue, especially for my purposes. ARKit appears to move both eyebrows the same, regardless of whether or not I am physically moving my eyebrows the same. Every ARKit based application I've used simply mirrors eyebrow movement. Is there a fix to this, or is this just a bug currently in the software?
5
4
2.4k
Jul ’26
Technical specifications for a macOS immersive 180° video application (Apple Vision Pro)
Hello, I am not a developer, and I am programming a macOS application in Xcode with the help of Claude (Anthropic). Claude writes the code for me, but I need your help regarding the technical specifications. I am not trying to understand every technical detail, nor am I looking for someone to write the code for me. My goal is to obtain the most accurate technical information possible so that I can pass it directly to Claude, who will then generate the corresponding code in Xcode. This application is a personal project. It is not intended to be published on the App Store. Its sole purpose is to automatically process my own videos recorded with two DJI Action 6 cameras. It requires no user settings : the optimal parameters are defined by default within the application, and it directly outputs the final video file. My objective is to create an application that takes as input the two videos from the DJI Action 6 cameras mounted on a rig, and then produces a file that delivers a 180° immersive video with the highest possible quality. Claude has already conducted research in Apple's documentation as well as various online resources to determine the correct output format, encoding parameters, and necessary constraints. Despite this, the current result is not satisfactory. Currently, my application does not directly generate a file in the Apple Immersive format. Instead, it produces a stereoscopic video file containing both the left and right views side-by-side. I then use Moonlink on my Mac Studio and on my Apple Vision Pro, to play this video (the video is on the Mac and sent to the vision pro, wich works perfectly fine on some videos I have found on internet). The file is correctly recognized and can be opened, but the result presents two major issues: Playback is extremely choppy (about one second of playback followed by several seconds of freezing); The image is pinched at the top and bottom, which likely indicates an issue with the format, projection, or how the player interprets the file. I have no preference regarding the final format. If the best solution is to directly generate a file in the Apple Immersive format compatible with the Apple Vision Pro, that works for me. If, on the other hand, the best approach is to produce a high-quality stereoscopic video with the left and right views side-by-side, which can then be interpreted by a player application on the Apple Vision Pro or potentially other headsets, that works for me as well. My sole objective is to obtain: The best possible image quality (even though I am aware it will not match the quality produced by a Blackmagic URSA Cine Immersive camera); Perfectly smooth playback, without any stuttering or freezing; A correctly displayed 180° immersive video. Here are the specifications of my source videos: Two DJI Action 6 cameras. Interpupillary/Inter-axial distance (between optical centers): 6.5 cm. FOV Boost lens mounted on each camera (182° coverage). Video mode: 4K Custom 3840 \times 3840 at 60 fps. Color profile: D-Log M. Color conversion planned in the application via a DJI D-Log M to Rec.709 LUT in .cube format (.cube provided to the app). In FOV Boost mode, DJI enforces Electronic Image Stabilization (EIS) and removes gyroscope data from the MP4 files. Stereoscopic alignment is therefore performed via image analysis within the application (using ORB feature detection). With no FOV Boost I do not reach 180° with is the target. Fixed aperture. Both cameras are triggered simultaneously using the DJI GPS remote control. Fine synchronization is subsequently performed in the application via audio cross-correlation. My question is therefore the following : What exactly are the output specifications that my application should produce (format, codec, resolution, projection, metadata, encoding parameters, and any other technical constraints) in order to achieve the best possible result for a 180° immersive video on the Apple Vision Pro? I will pass all this information directly to Claude so that he can generate the corresponding code in Xcode. Therefore, I am not looking for a code example, but rather the technical specifications to follow. I would also welcome any advice or recommendations that a specialist in Vision Pro, immersive video, or Apple technologies might deem useful to improve the quality of the result or simplify my approach. Thank you in advance for your help. Best regards, Georges attached is a screen capture of the pinched image in the Vision Pro, this happens both at top and bottom, only displayed bottom.
2
0
1.3k
Jul ’26
RCP 3 and USDZ exports
It appears that Reality Composer Pro 3 does not export a full USDZ file with textures, animations, etc. The best I can tell is that it exports only the mesh (as suggested by the menu name). I have been using Reality Composer Pro 2 to create USDZ files to use as website environments. Will we no longer be able to create website environments with RCP 3? Will there be any way to download and use the old RCP 2 after upgrading to macOS 27 and Xcode 27?
2
0
1.5k
Jul ’26
RealityKit portal crossing leaves a hard PBR lighting seam despite environmentLightingWeight being 0
I’m seeing a device-only lighting discontinuity on PBR entities that intersect a RealityKit portal plane in visionOS 27. A sharp brightness boundary appears exactly where the portal plane cuts through the entity. The portion outside the portal receives a different physical environment-probe contribution from the portion inside. The behavior is reproducible with two independent cases: A completely static blue sphere positioned across the portal plane. An orange sphere moved through the portal using ManipulationComponent and the standard visionOS pinch gesture. Both spheres use: var material = PhysicallyBasedMaterial() material.baseColor = .init(tint: .orange) material.metallic = 0 material.roughness = 1 Each sphere has the crossing and lighting components attached directly: sphere.components.set(PortalCrossingComponent()) sphere.components.set( ImageBasedLightReceiverComponent( imageBasedLight: portalImageBasedLight ) ) var lightingConfiguration = EnvironmentLightingConfigurationComponent() lightingConfiguration.environmentLightingWeight = 0 sphere.components.set(lightingConfiguration) The portal is created using the visionOS 27 factory API: let portal = PortalComponent.makePortal( surfaceStyle: .init(width: 1.2, height: 0.8), boundaryStyle: .infinitePlane(), boundaryMode: .clippingAndCrossing ) if var component = portal.portalEntity.components[PortalComponent.self] { component.lightingBlendDistance = 0.2 portal.portalEntity.components.set(component) } For the moving sphere, environmentLightingWeight stays at 0 for the entire interval in which any part of the sphere intersects the portal. The realtime environment-probe contribution only begins fading from 0 to 1 after the complete sphere has cleared the plane. However, a spatially sharp edge remains: In a bright physical environment, the outside portion is brighter. In a dark physical environment, the outside portion is darker. With UnlitMaterial, the edge disappears completely. With PBR—even metallic 0 and roughness 1—the edge returns. The static sphere reproduces the issue, so it does not appear to be caused by gesture or lighting-update timing. Changing lightingBlendDistance does not soften this remaining edge. The issue is visible on Apple Vision Pro but not in visionOS Simulator. I watched the portal-lighting section of WWDC24 session 10103 and implemented the recommended EnvironmentLightingConfigurationComponent solution. I have also reviewed the documentation for PortalComponent, PortalCrossingComponent, PortalComponent.makePortal, ImageBasedLightReceiverComponent, and environmentLightingWeight. Is there another component or entity-hierarchy requirement needed to fully suppress the physical environment probe on the host-side fragments of a crossing PBR entity? Or is this a RealityKit rendering issue on physical hardware? Environment: Apple Vision Pro (M5) visionOS 27.0 (24M5326g) Xcode 27.0 (27A5228h) visionOS SDK 27.0 (24M5326e) Here is a minimal standalone Xcode reproduction containing both the static and pinch-draggable spheres: https://drive.google.com/file/d/13qqOlDJVCCtlFcMaHCBpDkVJgRzmNjBK/view?usp=sharing
Replies
3
Boosts
0
Views
2k
Activity
Aug ’26
AIVU 180 video suddenly got too laggy
Why do I play an AIVU 180 degree video, which has always been able to play smoothly, and then suddenly played too laggy recently? The video is embedded locally, without network factors, and the video parameters and program code have not changed at all. I also tested playing videos around 400m in size, and the CPU displayed 400-500%, but it was very smooth. When playing a video of 1G or so, the clip is 20-30%, but it is too laggy. Except for the different video duration, other parameters are the same. May I ask what caused the lag.
Replies
1
Boosts
0
Views
1k
Activity
Aug ’26
Apple Cinema Environment
I’d be very interested in having Apple Cinema Environment deployed across all third party apps (I.e Disney+, HBO Max, etc). These already have their immersive environments as well as the option to use Apple’s immersive environments (i.e the Moon). However the Apple Cinema / Theater is the best implementation I’ve seen thus far however its currently limited to the AppleTV content. Are there any plans to deploy this across other apps?
Replies
1
Boosts
0
Views
1.1k
Activity
Aug ’26
GeometricPins not updating on entities loaded from reality files
I'm attempting to create GeometricPins on an entity so I can attach objects to game characters. If I load a character from the USD file I can query the joint names on the ModelEntity and create GeometricPins as attachment points. These pins will track the location of the associated joint and I can position my objects at the pin locations as expected. However, the pins do not update on characters loaded from a Reality File. In the below image, the Skeleton Mage character in the middle is loaded as a USDC file and I attach the hat with a GeometricPin so that it tracks the movement of the head as it animates. The animating Skeleton to the left is the same character (same .usdc file) but exported from RCP3 as a Reality File. Notice how the hat does not move with the character's head. The position and orientation of the GeometricPins attached to this character always return nil. I've also noticed that the jointNames array is empty for this entity as well. Should I be able to access the jointNames and create Geometric pins on entities loaded from Reality files? I'm adding the pin to the model entity with the following helper function. The helper function is called in the exact same way for the usd and reality entities. func pinToJoint(_ entity: Entity, to target: Entity, at jointName: String, offset: SIMD3<Float> = .zero, orientation: simd_quatf = .init(angle: 0, axis: [0,1,0])) { let pinName = "pin_at_\(jointName)" if let rig:ModelEntity = target.findModelEntity() { for jointName in rig.jointNames { log.info("\(target.name): \(jointName)") } rig.pins.set(named: pinName, skeletalJointName: jointName, position: offset, orientation: simd_quatf(angle: -.pi/2.0, axis: .init(1,0,0))) entity.components.set( PinnedEntityComponent( pinnedto: rig, pinName: pinName, ) ) } } The PinnedEntitySystem just assigns the location of the pin to the entity with the following guard let pinPosition = pin.position(relativeTo: nil) else { continue } guard let pinOrientation = pin.orientation(relativeTo: nil) else { continue } entity.setPosition( pinPosition , relativeTo: nil) entity.setOrientation( pinOrientation , relativeTo: nil)
Replies
4
Boosts
1
Views
1.3k
Activity
Aug ’26
VisionOS 27 Custom Spatial Accessories ASA Host Version remains 0.0
I am implementing a custom generic spatial accessory according to Section 20 of the Accessory Design Guidelines dated 2026-06-08. Apple Vision Pro discovers the accessory, completes BLE pairing and encryption, reads the Apple Spatial Accessory Version and Uniform Type Identifiers characteristics, and recognizes the device in the accessory tracking debug view. However, visionOS writes ASA protocol version 00.00 to the Apple Spatial Accessory Host Version characteristic instead of selecting version 01.01. Here is the log message when I connected my spatial accessory with apple vision pro with os27 beta 3. The error is the ASA part. BLE advertising: ZemScannerASA15; BLE ATT MTU tx=23,rx=23; BLE conn timing connected: interval=30000; us,latency=0,timeout=72; TimeSync anchor report enabled: h=0x011f; BLE connected TimeSync anchor #1 ce=0,int=30000,delay=0 TimeSync anchor #2 ce=3,int=30000,delay=0 TimeSync anchor #3 ce=4,int=30000,delay=0 BLE ATT MTU tx=293,rx=65 BLE security level 2 BLE pairing complete, bonded ASA version read #1 off=0 req=64 hex=02 01 01 01 01 ASA UTI read #2 off=0 req=64 total=49 ASA host wr #3 o=0 l=4 f=00 hex=00 00 01 31 ASA host raw: off=0,write=4,total=4,hex=00 00 01 31 ASA host version: >len=4,ver=0.0,features_len=1,features=0x31 ASA host selected no common protocol HID direct input report sent HID notif #4 report=3 enabled HID IMU stream started HID notif #5 report=2 enabled HID IMU report sent BLE conn params updated: interval=7500 us,latency=4,timeout=100
Replies
5
Boosts
0
Views
1.3k
Activity
Aug ’26
RoomPlan/LiDAR best practices for scanning ~3,000 sq ft: Single scan, segmented scans, or based on scanned area?
I have a few questions about the recommended approach: Should a large area like this be scanned in a single RoomCaptureSession, or is it recommended to split it into multiple sessions? If multiple sessions are preferred, should the decision be based on the device's available RAM/memory or the size of the scanned area (square footage)? Is there a recommended maximum square footage, number of rooms, or session duration for a single RoomCaptureSession? Are there any documented limitations or best practices for handling large-area scans with RoomPlan? I'm looking for the recommended approach from the RoomPlan/ARKit developer for managing large scans efficiently.
Replies
1
Boosts
0
Views
919
Activity
Aug ’26
VisionOS RCP The model fades in and incorrectly displays the model outline on the UI
There is a UI panel with Attachment added in my scene. There are other models in the scene, and when the model fades in using OpacityComponent, the UI panel incorrectly displays the outline of the model, as shown in the red box in the picture. The model fade in code is like this: public func FadeInEntity( entity:Entity, duration: TimeInterval = 1.0, completion: (() -> Void)? = nil ) { entity.stopAllAnimations() if entity.components[OpacityComponent.self] == nil { entity.components.set(OpacityComponent(opacity: 0)) } else{ entity.components[OpacityComponent.self]?.opacity = 0 } EnableEntity(entity: entity) let action = FromToByAction<Float>( from: 0, to: 1, timing: .easeInOut ) do { let anim = try AnimationResource.makeActionAnimation( for: action, duration: duration, bindTarget: .opacity ) entity.playAnimation(anim) DispatchQueue.main.asyncAfter(deadline: .now() + duration) { completion?() } } catch { completion?() } }
Replies
2
Boosts
0
Views
478
Activity
Aug ’26
VisionPro Enterprise.license file
I have read in the apple documentation and on forums that in order to access the camera and capture images on VisionPro, both an Entitlement and an Enterprise.license are required. I already have the Entitlement, but I don’t yet have the Enterprise.license. I would like to ask: is the Enterprise.license strictly required to gain camera access for capturing images? How can I obtain this file, and does it require an Enterprise account? Currently, my developer account is a regular Developer 99$, not an Enterprise account.
Replies
4
Boosts
0
Views
986
Activity
Aug ’26
How do I create Enterprise.license file?
Hello, I did get an email that I now have access to the Enterprise APIs and I should create the license file. However, I can't figure out a way to create the license file. I did go check out that button, it did have the buttons to "renew" the licenses I got a while ago (via email). but no way to create new ones. and I am enrolled in the "Apple Developer Program as an organization " Where can I create Enterprise.license file?
Replies
4
Boosts
0
Views
1.7k
Activity
Aug ’26
Null Truth error after deleting animation import
FB24108671 I have multiple animation files and characters that all share the same skeleton definition. This is required in order for the animations to be visible in the animation library. However, you can accidentally delete the import that contains the skeleton definition, this will break every animation that depends on that shared skeleton. This is silent until you attempt to play or inspect one of the remaining animations. To my knowledge, there is no indication as to which Import contains a skeleton definition nor is there a way to lock the file so that I cannot delete it. Repro Steps: Create a new RCP3 project and save the project. Import a USD file that contains a skeletal animation. Import one or more additional USD files that contains also contain skeletal animations. Note: The skeletons must match exactly between the imported USD files or they will not be available in RCP3. Verify that all imported animations have a valid target Skeleton. This is visible by clicking on an Import and expanding the Animation Settings section in the inspector. Select the skeletal animation and view the Target Skeleton field. Optional: Import a USD file that contains a character with a matching and valid skeleton. Create a new entity and reference the imported character. Add a new Animation Library and confirm that the skeletal animations appear in the list of available animations. Select one of the animations to auto play and hit the play button to simulate the animation. The animation should play. Open terminal and navigate to your saved RCP3 project. In the root of the project run the find command to locate the skeletal definition NullTruthDeletedAnimation.realitycomposerpro % find . -name '*.tm_skeleton_definition' ./animations/Running_B.import/skeletons/root_skeldef.tm_skeleton_definition Back in RCP3 delete the Import that contains the skeleton definition. In the above case, this would mean deleting RunningB.import. Save the RCP3 project. All animations that were assigned to the same Target Skeleton will now have an empty entry in the Animation Settings section of the inspector. If you created an entity earlier that referenced the animations then none of the animations that referenced the delete skeleton will play. In the console you will see an error reporting a missing timeline. ❌ GEN RESOURCE: tm_timeline_skeletal_clip object id: 00002dab0000024c - Resource generation failed. Error: Animation Timeline is missing a target skeleton If you assigned the deleted animation to this entity then it will still have an entry in the animation library but its value will be empty. After saving the project, close and reopen the RCP project. If you created an entity earlier, then open the created entity and simulate the scene. You may see the following errors. ❌ GEN RESOURCE: tm_timeline_skeletal_clip object id: 00002dab0000024c - Resource generation failed. Error: Animation Timeline is missing a target skeleton (2) ❌ error: Trying to lookup property of NULL truth object ❌ GEN RESOURCE: tm_timeline object id: 000023a700000248 - Resource generation failed. Error: Sampled USD anim - missing TM_TT_TYPE__ANIMATION dependency The GEN RESOURCE: tm_timeline_skeletal_clip object id error appears to be due to the broken animation library entry for the deleted animation. The error: Trying to lookup property of NULL truth object error appears to be the animation referencing the deleted skeleton. If you did not create an entity then you can see the errors by doing the following: Select one of the imported animations that referenced the now deleted skeleton. In the Inspector, expand the Animation Settings section. Select the skeletal animation, you will now see the following error repeating in the console. ❌ error: Trying to lookup property of NULL truth object ❌ (previous error repeated 59 times) ❌ error: Trying to lookup property of NULL truth object ❌ (previous error repeated 53 times) ❌ error: Trying to lookup property of NULL truth object ❌ (previous error repeated 59 times) You can fix this by importing a new animation with a valid and matching skeleton or reimporting the deleted animation. However, you MUST manually assign the Target Skeleton on each broken skeletal animation. You will also need to manually remove any animation library entries for deleted animations.
Replies
0
Boosts
0
Views
648
Activity
Aug ’26
Adding a ManipulationComponent detaches the whole RealityView content hierarchy on visionOS 27
On visionOS 27 (27.0 Seed 4, 24M5326g), adding a ManipulationComponent to a single entity makes RealityKit remove the RealityView's ENTIRE content hierarchy from the scene and re-add it about 30ms later. Not just the manipulated entity — everything. Same app binary on visionOS 26: never happens. FB24092291. Bisected on the same build and device: two entities, neither with manipulation -> no detach add one entity with a ManipulationComponent -> detach, every time same entity, manipulation swapped for my own drag/rotate/ scale gesture handling -> no detach Everything else is identical between the last two cases — same entity, same collision shape, same InputTargetComponent, same ViewAttachmentComponent, same scene, same view hierarchy. The only variable is whether the component is installed. Setup: an immersive space containing a SwiftUI RealityView. One root entity added to the RealityViewContent in the make closure; all app content built as its descendants. The detach is brief but not harmless: every entity in the hierarchy gets SceneEvents.WillRemoveEntity and then DidAddEntity, so anything keyed to those events runs a full teardown and re-add for content that was never meant to go anywhere. In my app that cascade is what makes the scene visibly empty and rebuild. Nothing in my code removes it. Stack captured from a WillRemoveEntity subscription on the root — frame 0 is my callback, everything above it is framework: SwiftUI (AttributeGraph StatefulRule.withObservation ...) -> RealityFoundation -> CoreRE -> entity removal Ruled out before landing on the component: make runs exactly once, the root re-enters a scene with the same ObjectIdentifier (not a re-host), the hosting controller is never deallocated, there is exactly one RealityViewContent.add(_:) in the whole app, and with Self._printChanges() in the view's body the detach happens in an update pass where the body is not re-evaluated at all. Also ruled out: transient overlay UI (suppressed entirely, still detached) and entity count. Workaround if this is biting you: skip ManipulationComponent on 27 and handle drag/rotate/scale yourself. That is what I am doing for now. If you are debugging something similar: SceneEvents.WillRemoveEntity also fires when an entity merely leaves a scene, so a teardown-looking log is not proof anything was destroyed. Check whether make ran twice and whether the scene identity changed before suspecting your own code.
Replies
1
Boosts
2
Views
1.6k
Activity
Aug ’26
Reality Composer Pro Assistant does not list GPT-5.6 models
First of all, great work on the new Reality Composer Pro! I'm really enjoying it. Reality Composer Pro 3.0 (build 80.0.1.500.1/beta 4) currently shows GPT-5.5 as the newest OpenAI model in the Assistant model selector. The bundled configuration appears to contain a static model catalogue and does not include: gpt-5.6-sol gpt-5.6-terra gpt-5.6-luna Could Apple update Reality Composer Pro to support the current GPT-5.6 model family, or document whether users can add supported OpenAI model identifiers through the Custom Model Provider interface? It would also be helpful to clarify whether the Assistant supports GPT-5.6's tool-calling and reasoning behavior through its current Chat Completions integration. Thanks!
Replies
2
Boosts
0
Views
1k
Activity
Jul ’26
Unable to share animations across compatible skeletons in RCP3.
I’m working with an asset pack that contains multiple characters with a common skeletal hierarchy. This asset pack also contains animations for these characters as separate files. i.e.: run pick up idle throw In RCP2, I was able to add these animations to an Animation Library component without issue. However, in RCP3, I cannot add the skeletal animations to compatible characters. The only animations available are the transform animations, which do not animate the character. So in the animation library, I will see i.e.: run_transform idle_transform throw_transform But not run idle throw Is there something that I need to do to make the skeletal animations visible? I’ve tried adding the animation library at various levels across the hierarchy and it doesn’t seem to make a difference. Only the _transform animation is visible. I can verify that the animations themselves are compatible by manually editing the tm_entity for a character and adding the animation clip. I have to do this while RCP3 is closed but it works. I did notice that each animation is referencing a skeleton uuid. Is the UI only exposing skeletal animations with a matching skeleton uuid? Lastly, I can import both the character and the animation files as USD in a RealityKit app and successfully assign animations.
Replies
2
Boosts
0
Views
1.3k
Activity
Jul ’26
Reality Composer Pro 3 "Preview On Device" Connection Issues
When trying to preview a new scene in Reality Composer Pro 3 on my Vision Pro, the mac app is launching the preview app in the headset but not actually establishing the connection. The headset app shows a red Disconnected icon and says "Connect to this device form Reality Composer Pro on Mac" and then the mac side says "Connecting" for a few seconds before saying "Connection Failed". Neither app provides any other details of the connection issue and I could not find any helpful details in Console messages. I got this to work somehow on two scenes in beta 3 but have had no luck in Beta 4. It seems that once a scene does connect to the device once, it will happily reconnect in the future. But establishing that first connection seems to be the key hurdle and I cannot get over it tonight. Anyone else run into similar issues?
Replies
2
Boosts
1
Views
1.2k
Activity
Jul ’26
ARKit tracking eyebrows with a unified motion instead of individually.
Hello, I'm a VTuber, or a content creator who uses a virtual avatar instead of my real life face for presentation. I've been trying to use the iOS implementation of ARKit to get face tracking working, but noticed a major issue, especially for my purposes. ARKit appears to move both eyebrows the same, regardless of whether or not I am physically moving my eyebrows the same. Every ARKit based application I've used simply mirrors eyebrow movement. Is there a fix to this, or is this just a bug currently in the software?
Replies
5
Boosts
4
Views
2.4k
Activity
Jul ’26
Technical specifications for a macOS immersive 180° video application (Apple Vision Pro)
Hello, I am not a developer, and I am programming a macOS application in Xcode with the help of Claude (Anthropic). Claude writes the code for me, but I need your help regarding the technical specifications. I am not trying to understand every technical detail, nor am I looking for someone to write the code for me. My goal is to obtain the most accurate technical information possible so that I can pass it directly to Claude, who will then generate the corresponding code in Xcode. This application is a personal project. It is not intended to be published on the App Store. Its sole purpose is to automatically process my own videos recorded with two DJI Action 6 cameras. It requires no user settings : the optimal parameters are defined by default within the application, and it directly outputs the final video file. My objective is to create an application that takes as input the two videos from the DJI Action 6 cameras mounted on a rig, and then produces a file that delivers a 180° immersive video with the highest possible quality. Claude has already conducted research in Apple's documentation as well as various online resources to determine the correct output format, encoding parameters, and necessary constraints. Despite this, the current result is not satisfactory. Currently, my application does not directly generate a file in the Apple Immersive format. Instead, it produces a stereoscopic video file containing both the left and right views side-by-side. I then use Moonlink on my Mac Studio and on my Apple Vision Pro, to play this video (the video is on the Mac and sent to the vision pro, wich works perfectly fine on some videos I have found on internet). The file is correctly recognized and can be opened, but the result presents two major issues: Playback is extremely choppy (about one second of playback followed by several seconds of freezing); The image is pinched at the top and bottom, which likely indicates an issue with the format, projection, or how the player interprets the file. I have no preference regarding the final format. If the best solution is to directly generate a file in the Apple Immersive format compatible with the Apple Vision Pro, that works for me. If, on the other hand, the best approach is to produce a high-quality stereoscopic video with the left and right views side-by-side, which can then be interpreted by a player application on the Apple Vision Pro or potentially other headsets, that works for me as well. My sole objective is to obtain: The best possible image quality (even though I am aware it will not match the quality produced by a Blackmagic URSA Cine Immersive camera); Perfectly smooth playback, without any stuttering or freezing; A correctly displayed 180° immersive video. Here are the specifications of my source videos: Two DJI Action 6 cameras. Interpupillary/Inter-axial distance (between optical centers): 6.5 cm. FOV Boost lens mounted on each camera (182° coverage). Video mode: 4K Custom 3840 \times 3840 at 60 fps. Color profile: D-Log M. Color conversion planned in the application via a DJI D-Log M to Rec.709 LUT in .cube format (.cube provided to the app). In FOV Boost mode, DJI enforces Electronic Image Stabilization (EIS) and removes gyroscope data from the MP4 files. Stereoscopic alignment is therefore performed via image analysis within the application (using ORB feature detection). With no FOV Boost I do not reach 180° with is the target. Fixed aperture. Both cameras are triggered simultaneously using the DJI GPS remote control. Fine synchronization is subsequently performed in the application via audio cross-correlation. My question is therefore the following : What exactly are the output specifications that my application should produce (format, codec, resolution, projection, metadata, encoding parameters, and any other technical constraints) in order to achieve the best possible result for a 180° immersive video on the Apple Vision Pro? I will pass all this information directly to Claude so that he can generate the corresponding code in Xcode. Therefore, I am not looking for a code example, but rather the technical specifications to follow. I would also welcome any advice or recommendations that a specialist in Vision Pro, immersive video, or Apple technologies might deem useful to improve the quality of the result or simplify my approach. Thank you in advance for your help. Best regards, Georges attached is a screen capture of the pinched image in the Vision Pro, this happens both at top and bottom, only displayed bottom.
Replies
2
Boosts
0
Views
1.3k
Activity
Jul ’26
RCP 3 and USDZ exports
It appears that Reality Composer Pro 3 does not export a full USDZ file with textures, animations, etc. The best I can tell is that it exports only the mesh (as suggested by the menu name). I have been using Reality Composer Pro 2 to create USDZ files to use as website environments. Will we no longer be able to create website environments with RCP 3? Will there be any way to download and use the old RCP 2 after upgrading to macOS 27 and Xcode 27?
Replies
2
Boosts
0
Views
1.5k
Activity
Jul ’26