I'm trying to build a small Vision app similar to Zillow's immersive home tour. I'm using an UnlitMaterial and adding a static image texture as the material color. If a user changes the room I remove the old skybox entity in the RealityView update closure and replace it with a new one as I want them to remain in the full immersion but just change the texture. I tried adding animation / transition modifiers to the view but so far unsuccessful. In the update closure since that is what is triggered when the user makes a change I tried to retrieve the old entity and modify the texture to the image but also been unsuccessful. Is my architecture incorrect to achieve this?
Question:Is it possible to add a blur transition when adding or removing entities to the content within RealityView similar to the blur found in Zillow's immersive app as a user changes rooms?
struct ImmersiveView: View { @Binding var selectedRoom: String var body: some View { RealityView { content in guard let skybox = createSkybox() else { return } content.add(skybox) } update: { content in let _ = print(content.entities[0]) // remove previous entities content.entities.removeAll() // add a new skybox guard let skybox = createSkybox() else { return } content.add(skybox) } } private func createSkybox () -> Entity? { // create mesh let skyBoxMesh = MeshResource.generateSphere(radius: 1000) // image material guard let imageMaterial = createMaterial() else { return nil } // create entity let skyboxEntity = Entity() skyboxEntity.components.set( ModelComponent( mesh: skyBoxMesh, materials: [imageMaterial] ) ) // map texture to inner surface skyboxEntity.scale *= .init(x: -1, y: 1, z: 1) return skyboxEntity } private func createMaterial () -> UnlitMaterial? { var material = UnlitMaterial() do { let texture = try TextureResource.load(named: selectedRoom) material.color = .init(texture: .init(texture)) } catch { print("Error loading image \(error)") } return material }}