How to show or hide our arms in immersive spaces
We can use the upperLimbVisibility scene modifier to ask the system to show or hide hands and arms while immersed. It works in full or progressive spaces.
.upperLimbVisibility(.automatic) //default
.upperLimbVisibility(.hidden)
.upperLimbVisibility(.visible)This modifier seems to have no impact on mixed (AR-like) immersive spaces, which makes sense in that context. This works as expected in full spaces, and it feels like magic in progressive spaces. See the video demo to see what I mean.
If we wanted to hide hands and arms, such as during a video or interactive presentation.
ImmersiveSpace(id: "GardenSceneFull") {
ImmersiveViewFull()
}
.immersionStyle(selection: .constant(.full), in: .full)
.upperLimbVisibility(.hidden)Or if we wanted to show hands and arms, for example if the user needs to operate virtual tools or controls.
ImmersiveSpace(id: "GardenSceneFull") {
ImmersiveViewFull()
}
.immersionStyle(selection: .constant(.full), in: .full)
.upperLimbVisibility(.visible)The default is .automatic. The documentation for upperLimbVisibility makes it clear that the value we specify is only a request. Ultimately, visionOS will determine what to show.
In the example I added this as a value to the app model, then stubbed in some buttons to change the value.
Video demo
Video demo showing and hiding arms using the scene modifier upperLimbVisibility
Sample code is available in Garden14 in the Step Into Example Projects repo.
Support our work so we can continue to bring you new examples and articles.

Follow Step Into Vision