Lab 093 – Manipulation and Gestures fail with Portal Content

When working with Entities inside a portal, Manipulation and Gestures do not work.

Did something change in visionOS 26? I thought gestures were supported for entities in portals, but I can’t put my hands on an example. I put this lab together to test both Tap Gesture and Manipulation Component inside a portal. Both spheres have collision and input components. We add the component in code. Input fails for both entities.

struct Lab093: View {

    @State var rootEntity = Entity()
    @State var portalEntity = ModelEntity(
        mesh: .generatePlane(width: 1.0, height: 1.0, cornerRadius: 0.03),
        materials: [PortalMaterial()]
    )

    var body: some View {
        GeometryReader3D { geometry in
            RealityView { content in
                content.add(rootEntity)

                let portalContentRoot = Entity()
                portalContentRoot.components.set(WorldComponent())
                rootEntity.addChild(portalContentRoot)
                portalEntity.position.z = -0.175
                portalEntity.components.set(PortalComponent(target: portalContentRoot))
                rootEntity.addChild(portalEntity)

                guard let scene = try? await Entity(named: "TeleportLabs", in: realityKitContentBundle) else { return }
                portalContentRoot.addChild(scene)
                scene.position.y = -1.4

                // Adding Manipulation to the Green Sphere
                if let subject = scene.findEntity(named: "StepSphereGreen") {
                    subject.components.set(ManipulationComponent())
                }


            } update: { content in
                // Resize the portal plane with the window
                let size = content.convert(geometry.size, from: .local, to: .scene)
                portalEntity.model?.mesh = .generatePlane(
                    width: size.x, height: size.y, cornerRadius: 0.03)
            }
        }
    }
}

Let me know if you have any ideas for how to get input working in portals, or if you have seen any docs that indicate that is is unsupported.

Support our work so we can continue to bring you new examples and articles.

Questions or feedback?