World Rotator
More actions
| World Rotator | |
|---|---|
| Information | |
| Type | Room-scale |
| Required Devices | None |
| Description | Moving to the edge of the play area causes time to freeze and locks the world to the player's rotation. A HUD appears and shows the amount of open space in front of the player. |
| Pros | Works without controllers, using only headset tracking |
| Cons | Rated high for energy required and low for accessibility in the Locomotion Vault database |
| Creator | /u/qwv4851 |
| Examples | Movement (2016 Unity demo) |
World Rotator is a Locomotion Method for room-scale VR in which walking to the edge of the physical play area temporarily locks the virtual world to the player's head rotation. The player can then turn around in the real room, without changing the direction they face in the virtual one, until they face open physical space. The technique uses no controller input: the published script reads only the tracked headset.[1]
World Rotator was one of several experiments in Movement, a Unity locomotion demo for SteamVR whose source code was first committed to GitHub on 23 May 2016.[2][3] It is one of the 109 techniques catalogued in Locomotion Vault, a database of virtual reality locomotion techniques presented at the CHI 2021 conference.[4][5]
How it works
This demo explores the idea of locomotion without controllers. Moving to the edge of the play area causes time to freeze and locks the world to the player's rotation. Additionally, a HUD appears which shows the amount of open space in front of the player and also recommends a direction to turn in order to mitigate cord tangling.
Boundary detection
In the published script, the headset's forward direction is projected onto the horizontal plane and a ray is cast from the player's head toward grid walls that mark the edges of the play area. The script expresses the distance to the wall ahead as a fraction of a 3-unit reference width. The rotation mode switches on when that fraction drops below 0.15, and switches off again once it rises above 0.18, subject to a further check on how fast the headset is turning and moving.[1]
Locking the world to the player's rotation
When the mode begins, the script records the position and rotation of the SteamVR camera rig and the orientation of the head. On every frame while the mode is active, it restores the rig to that recorded pose and then rotates it around the player's head, about the vertical axis, by the negative of the yaw angle the head has turned since the mode began. Turning in the physical room therefore does not change which way the player faces in the virtual scene. The script does not blank or fade the display; the scene keeps rendering while the rig is counter-rotated.[1]
The "time freeze" is implemented as a gradual slowdown. A comment in the code describes slowing down "time and music pitch when near a wall", and the script steps the engine's time scale and the pitch of an audio source on the headset downward while the mode is active and back up after it ends.[1]
HUD and turn direction
The HUD is a canvas positioned just in front of and slightly below the player's view, shown only while the mode is active. It contains a meter whose length scales with the measured distance to the boundary ahead; the meter is drawn in cyan and turns red when the mode is active and the distance fraction is below 0.5.[1]
To choose a turning direction, the script keeps a running sum of the player's head rotation. A code comment states that this sum is used "to determine whether or not they should turn left or right to avoid getting tangled", and when a left turn is recommended the HUD is flipped 180 degrees.[1]
Development
The Movement repository's initial commit, dated 23 May 2016, already contains the World Rotator scene and script, and the project was then set up for Unity 5.3.4f1.[3][6] Both commits in the repository are authored by Sean Reilly. The second, dated 29 June 2020, is titled "Upgrade to Unity 2019.3.0f5 and latest SteamVR" and made small changes to the World Rotator script.[3] The repository describes itself as a "VR Locomotion Demo" and does not declare a license.[2] The GitHub address github.com/qwv4851/Movement, which the original description of the technique linked to, now redirects to the sereilly/Movement repository.[2]
Besides the World Rotator scene, the project contains hub, hallway and mountain scenes and a skiing script in which moving the controllers while they are held below a set height pushes the player forward in the direction the head faces.[2][7] Locomotion Vault lists the skiing technique as a separate entry, Skier, credits it to qwv4851 and links it to the same repository.[5]
A demonstration clip of World Rotator was hosted on Gfycat. Snap discontinued Gfycat in 2023 and stated that all of its content would be deleted after 1 September 2023.[8]
Classification
Locomotion Vault was created by Massimiliano Di Luca, Hasti Seifi, Simon Egan and Mar Gonzalez-Franco. Its authors built the database by searching technical blog posts, popular VR games and app store titles, and academic papers, and describe each technique with implementation and user-experience attributes.[4][9] World Rotator appears in the distance matrices the paper uses to compare techniques.[4]
The database entry for World Rotator (record 82) records the following values:[5]
| Attribute | Locomotion Vault value |
|---|---|
| Category | roomscale |
| Hardware | none |
| Posture | walking |
| Direction | walking |
| Speed | low |
| Energy required | high |
| Accessibility | low |
| Ease of learning | medium |
| Spatial awareness | medium |
| Vection | high |
| Nausea | low |
| Magical | yes |
| Degrees of freedom | 2 |
The same category also holds Redirected walking, which the database describes as designing a game so that the player moves in circles in the play area and never reaches its physical walls, and WalkAbout, in which the virtual world blurs and a grid appears at the edge of the playable space before the world shifts to cover the open play area, making the player turn to face it.[5]
Related techniques
Academic research had examined turning users around at the edge of a tracked space while holding their virtual heading. In a 2007 paper, Betsy Williams and colleagues at Vanderbilt University described three ways of "resetting" users who reach the physical limits of a head-mounted display tracking system: Freeze-Backup, Freeze-Turn and 2:1-Turn.[10] In Freeze-Turn, the display is frozen, which freezes the participant's position and yaw angle in the virtual space, while the participant turns 180 degrees; the display is then unfrozen and the participant continues along the same route. In 2:1-Turn, the rotational gain is doubled so that a 180-degree physical turn produces a full 360-degree turn in the virtual environment.[10] When the twelve participants in that study were asked which method they preferred, seven chose Freeze-Backup, four chose 2:1-Turn and one chose Freeze-Turn.[10]
External links
- Movement source code on GitHub (the original qwv4851/Movement address redirects here)
- Original demonstration clip on Gfycat (no longer available)
References
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Sean Reilly. "Movement/Assets/Resources/Scripts/WorldRotator.cs". GitHub. https://github.com/sereilly/Movement/blob/master/Assets/Resources/Scripts/WorldRotator.cs. Retrieved 2026-09-27.
- ↑ 2.0 2.1 2.2 2.3 Sean Reilly. "sereilly/Movement: VR Locomotion Demo". GitHub. https://github.com/sereilly/Movement. Retrieved 2026-09-27.
- ↑ 3.0 3.1 3.2 "Commits, sereilly/Movement". GitHub. https://github.com/sereilly/Movement/commits/master. Retrieved 2026-09-27.
- ↑ 4.0 4.1 4.2 Massimiliano Di Luca, Hasti Seifi, Simon Egan, Mar Gonzalez-Franco (2021). "Locomotion Vault: the Extra Mile in Analyzing VR Locomotion Techniques". Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems (CHI '21), Association for Computing Machinery. https://doi.org/10.1145/3411764.3445319. Retrieved 2026-09-27.
- ↑ 5.0 5.1 5.2 5.3 "locomotionvault-dataset.json". Locomotion Vault (GitHub). https://github.com/locomotionvault/locomotionvault.github.io/blob/master/data/locomotionvault-dataset.json. Retrieved 2026-09-27.
- ↑ "Movement/ProjectSettings/ProjectVersion.txt (initial commit)". GitHub. https://github.com/sereilly/Movement/blob/aee25058aeab464274e46817edf4338f95fcabd3/ProjectSettings/ProjectVersion.txt. Retrieved 2026-09-27.
- ↑ Sean Reilly. "Movement/Assets/Resources/Scripts/Skier.cs". GitHub. https://github.com/sereilly/Movement/blob/master/Assets/Resources/Scripts/Skier.cs. Retrieved 2026-09-27.
- ↑ Igor Bonifacic (2023-07-02). "Gfycat is shutting down on September 1st". Engadget. https://www.engadget.com/gfycat-is-shutting-down-on-september-1st-180741599.html. Retrieved 2026-09-27.
- ↑ Ben Lang (2021-05-14). "Locomotion Vault Catalogs & Compares 100+ VR Movement Techniques". Road to VR. https://roadtovr.com/locomotion-vault-vr-movement-techniques-catalog-database/. Retrieved 2026-09-27.
- ↑ 10.0 10.1 10.2 Betsy Williams, Gayathri Narasimham, Bjoern Rump, Timothy P. McNamara, Thomas H. Carr, John Rieser, Bobby Bodenheimer (2007). "Exploring large virtual environments with an HMD when physical space is limited". Proceedings of the 4th Symposium on Applied Perception in Graphics and Visualization (APGV '07), pp. 41-48. https://doi.org/10.1145/1272582.1272590. Retrieved 2026-09-27.