Patent Description:
Traditional virtual reality (VR) computing systems are designed to be used within a confined space. Due to the limited physical space for walking within the confined space, content designers (e.g., game designers) may not use the user's physical relocation as the mechanism for navigating a virtual environment. While it is possible to simulate walking in a virtual reality environment by the press of a button, doing so would likely cause motion sickness due to the contradiction between the visually perceived movement and the vestibular system's sense of bodily movement. Due to these limitations, traditional VR content designers make "teleportation" the mechanism for navigating a virtual environment. For example, the user may point at a location in a virtual environment, press a button, and teleport instantaneously to that location without being shown the transitional movement. While the teleportation mechanism provides a viable solution to the problem of VR navigation, it does not provide a realistic, immersive experience (e.g., as the journey to each destination is skipped).

<CIT> describes techniques for employing augmented reality or virtual reality information. An information management component (IMC) of an augmented reality device (ARD) can monitor and detect user activities and conditions in area in proximity to ARD. Based on user activities and conditions, IMC can determine augmented reality information that can enhance user experience, performance of user activities, or security and safety of user.

<CIT> describes a system and method for orienting the presentation of a virtual environment with respect to multiple users in a shared virtual space. The system detects physical constraints associated with a user's physical space, and determines a longest, unobstructed physical path in the physical space based on an orientation of the user in the physical space and the associated physical constraints. When a physical obstruction is detected in front of the user within a given threshold, the system causes the user to turn (or in some manner, physical re-orient) before proceeding forward. This may re-direct the user along a longer physical path. In some implementations, the system causes the user to turn, or re-orient, to a desired orientation based on how the virtual features in the virtual environment are presented to the user. For example, the system may position virtual features of the virtual environment with which the user is to engage behind the user, thereby causing the user to naturally turn around to engage the virtual features.

<CIT> describes a system and method of operating an audio visual system generating an immersive virtual experience that may detect when a user approaches a physical boundary of a real world space, and may generate an alert indicating the proximity of the physical boundary.

<CIT> describes a computer system provides directional guidance to a user wearing a head-mounted display (HMD). This is accomplished by obtaining a path through real-world space and presenting multiple virtual path indicators to the user on the head-mounted display. The virtual path indicators are overlaid on a view of a portion of the real-world space and direct the user to follow the path through real-world space.

This application discusses a solution to the virtual reality (VR) navigation problem by enabling VR content developers to procedurally generate navigation paths based on the physical room layout available to the user. In addition, a new user interface is inserted into certain junctions within the procedurally-generated path to cause the user to physically turn in the real world to avail the user with walking space, despite the limitations of the physical room layout. At such a junction, the user may be asked to perform a turning motion in order to continue. The degree of turn required by the turning motion would depend on the physical layout of the user's space. To address the potential mismatch between the degree of turn made by the user and the direction of travel down the procedurally-generated path in VR, the VR content may quickly rotate the VR environment so that the user would be facing the intended travel direction in the virtual environment. For example, when the user reaches the end of a physical corridor, the VR content may position a UI device that needs to be rotated in order for the user to continue. If the physical corridor is a dead end, the user may have to turn the UI device <NUM> degree about the user's axis in order to unlock the path. In the real world, after doing so, the user would be facing the direction from which he came. Visually in VR, the user will see the scene rotate quickly so that he would be facing the intended direction of travel.

According to a first aspect of the present invention, there is provided a computer-implemented method as set out in claim <NUM>.

Notifying the user that the physical rotation of the user is needed for the user to travel beyond the point in the particular virtual path may further include displaying a graphical user interface (GUI) element within the particular virtual path that indicates that the physical rotation of the user is needed.

Notifying the user that the physical rotation of the user is needed for the user to travel beyond the point in the particular virtual path may further include providing an audio notification that indicates that the physical rotation of the user is needed.

Rotating the virtual scene may include rotating the virtual scene approximately <NUM> degrees.

The virtual scene may be rotated in the directionef opposite to the rotation of the virtual scene that correlates with the physical rotation of the user for approximately <NUM> seconds. Other suitable times are envisaged.

In an implementation not covered by the present invention, the computer-implemented method may further comprise: during detection of the physical rotation of the user, updating a graphical user interface (GUI) that displays the virtual environment such that movement of the GUI is frozen.

Determining that the forward direction of travel of the user is proximate to the boundary condition of a particular physical segment of the physical segments may further include determining that the user is within a threshold distance of a physical constraint of the particular physical segment.

Generating the virtual paths may include generating the particular virtual path based on a first and a second physical segment of the physical segments, where the first and the second physical segments share a common point.

According to a second aspect of the present invention, there is provided a computer-implemented method as set out in claim <NUM>.

The different virtual path may be opposite the particular virtual path.

According to a third aspect of the present invention, there is provided a system as set out in claim <NUM>.

The examples disclosed herein do not limit the scope of this disclosure. The scope of the present invention is defined in the attached claims directed to methods and a system.

<FIG> illustrates an environment <NUM> for generation of virtual paths in a virtual environment based on a physical environment. The environment <NUM> can include a physical space <NUM> that can include a user <NUM> interacting with a computing system <NUM>. In some examples, the computing system <NUM> can include a virtual reality computing system, an augmented reality computing system, or a mixed-reality computing system. The computing system <NUM> can include a virtual path computing module <NUM>.

The virtual path manager computing module <NUM> can receive physical space data <NUM> identifying a layout of the physical space <NUM> surrounding the user <NUM>. For example, the computing system <NUM> can include a wearable computing device (such as a headset wearable computing device). The user <NUM> can travel (walk) about the physical space <NUM> such that the computing system <NUM> can identify/recognize the physical space <NUM> (e.g., utilizing a camera sensing module) to generate the physical space data <NUM> (e.g., a topology of the physical space <NUM>).

The virtual path manager computing module <NUM> can segment the layout of the physical space <NUM> surrounding the user <NUM> into one or more physical segments <NUM>. Referring to <FIG>, an environment <NUM> is illustrated. For example, the environment <NUM> can include a multiple (physical) rooms 204a, 204b, 204c, 204d, 204e, 204f (collectively referred to as rooms <NUM>) and hallways 206a, 206b, 206c (collectively referred to as hallways <NUM>) connecting one or more of the rooms <NUM>. To that end, as the user <NUM> walks about the environment <NUM>, the virtual path manager computing module <NUM> can identify the layout of the physical space <NUM>, similar to the physical space <NUM>, included by the environment <NUM>. Referring to <FIG>, the virtual path manger computing module <NUM> can segment the layout of the physical space <NUM> into physical segments 210a, 210b, 210c (collectively referred to as physical segments <NUM>). In some examples, a portion of one or more of the segments <NUM> can overlap with another segment <NUM> (e.g., the segment 210b overlaps with the segment 210a).

Referring back to <FIG>, the virtual path manager computing module <NUM> can generate, based on the physical segments <NUM>, virtual paths <NUM> of a virtual environment <NUM> through which the user <NUM> can navigate by traveling the physical segments <NUM>. Specifically, the virtual path manager computing module <NUM> can generate the virtual environment <NUM> for display on a graphical user interface (GUI) <NUM>. Referring to <FIG>, virtual paths of a virtual environment <NUM> is shown. Specifically, based on the physical segments <NUM> of <FIG>, the virtual path manager computing module <NUM> can generate the virtual paths 402a, 402b, 402c, 402d, 402e, 402f, <NUM>, <NUM> (collectively referred to as virtual paths <NUM>). The virtual paths 402c, 402d, 402e, 402f can be based on the physical segment 210a; the virtual path 402a can be based on the physical segment 210b; and the virtual paths 402b, <NUM>, and <NUM> can be based on the physical segment 210c. In some examples, the virtual paths <NUM> can be based on two of the physical segments <NUM>, with the two physical segments <NUM> sharing a common point (or intersection).

Referring back to <FIG>, the virtual path manager computing module <NUM> can display a particular virtual path <NUM> based on a location of the user <NUM> in the virtual environment <NUM>. Specifically, the virtual path manager computing module <NUM> can provide for display on the GUI <NUM> a particular virtual path <NUM>. For example, the display device computing module <NUM> can provide for display on the GUI the virtual path 402c. The virtual path manager computing module <NUM> can determine that a forward direction of travel of the user <NUM> is proximate to a boundary condition of a particular physical segment <NUM> that corresponds to the particular virtual path <NUM>, i.e., based on received location data <NUM>. For example, the virtual path manager computing module <NUM> can determine that a forward direction of travel of the user <NUM> is proximate to a boundary condition of the physical segment 210a that corresponds to the particular virtual path 402c that user is currently located in. Specifically, the user <NUM> can be moving toward point <NUM> in the virtual path 402c that corresponds with moving towards point <NUM> of the corresponding physical segment 210a, as shown in <FIG>, based on the location data <NUM>. Point <NUM> of the physical segment 210a can correspond to a boundary condition of the physical segment 210a, e.g., a wall of the physical space <NUM>.

In some examples, determining that the forward direction of travel of the user <NUM> is proximate to the boundary condition of the particular physical segment <NUM> includes the virtual path manager computing module <NUM> determining that the user <NUM> is within a threshold distance of physical contact with the particular physical segment <NUM>. For example, the virtual path manager computing module <NUM> can determine that, when the user is at point <NUM> of the physical segment 210a that corresponds to the virtual path 402c, the user <NUM> is within a threshold distance of a physical constraint (e.g., a physical wall) of the physical segment 210a.

The virtual path manager computing module <NUM>, in response to determining that the forward direction of travel of the user <NUM> is proximate to the boundary condition of the particular physical segment <NUM>, notifies the user <NUM> that a physical rotation of the user <NUM> is needed in order for the user <NUM> to travel beyond a point in the particular virtual path <NUM>. For example, as the user <NUM> physically approaches point <NUM> within the physical segment 210a along the direction D1, the virtual path manager computing module <NUM> provides a notification <NUM> to the user <NUM> that a physical rotation of the user <NUM> is needed in order for the user <NUM> to travel beyond the point <NUM> in the virtual path 402c.

In some examples, in response to determining that the forward direction of travel of the user <NUM> is proximate to the boundary condition of the particular physical segment <NUM>, the virtual path manager computing module <NUM> can provide for display on the GUI <NUM> a GUI element within the particular virtual path <NUM> that indicates that the physical rotation is needed. In some examples, in response to determining that that the forward direction of travel of the user <NUM> is proximate to the boundary condition of the particular physical segment <NUM>, the virtual path manager computing module <NUM> can provide an audio notification that indicates that the physical rotation is needed. In some examples, the virtual path manager computing module <NUM> can generate the GUI element in response to determining that the forward direction of travel of the user <NUM> is proximate to the boundary condition of the particular physical segment <NUM>. In some examples, the virtual path manager computing module <NUM> can generate the GUI element prior to determining that the forward direction of travel of the user <NUM> is proximate to the boundary condition of the particular physical segment <NUM>. That is, the location within the virtual environment <NUM> of the GUI elements can be predetermined when initially generating the virtual environment <NUM>.

The virtual path manager computing module <NUM> can detect that physical rotation of the user <NUM> is complete. Specifically, the virtual path computing module <NUM> can receive rotation data <NUM> indicating a physical rotation status of the user <NUM>. For example, the rotational data <NUM> can indicate that the user <NUM> has rotated at point <NUM> of the physical segment 210a as shown in <FIG> such that the user <NUM> is facing towards the point <NUM> of the physical segment 210a (and away from the boundary condition at point <NUM>) along the direction D2. The virtual path manager computing module <NUM>, in response to detecting that physical rotation of the user <NUM> is complete, can update the GUI <NUM> to show the virtual path 402d and allow the user <NUM> to travel beyond the point <NUM>. That is, the user <NUM> is allowed to travel beyond the point <NUM> along the virtual path 402d that corresponds to physical segment 210a and towards point <NUM> of the physical segment 210a.

In some examples, the virtual path manager computing module <NUM>, in response to detecting that physical rotation of the user <NUM> is complete, can update the GUI <NUM> to show the virtual path 402c and allow the user <NUM> to travel beyond the point <NUM>, e.g., towards point <NUM>. That is, the user <NUM> is allowed to travel beyond the point <NUM> and towards point <NUM> along the virtual path 402c that corresponds to physical segment 210a and towards point <NUM> of the physical segment 210a.

In some examples, the virtual path manager computing module <NUM>, in response to detecting that physical rotation of the user <NUM> is complete, can update the GUI <NUM> to show a different virtual path <NUM> that is opposite the particular virtual path <NUM>.

In some examples, the notification <NUM> can indicate to the user <NUM> to physically rotate <NUM> degrees. That is, after physical rotation of the user <NUM>, the rotational data <NUM> can indicate that the user <NUM> has rotated at point <NUM> of the physical segment 210a as shown in <FIG> such that the user <NUM> is facing along the direction D3. The virtual path computing module <NUM> can determine that a further physical rotation of the user <NUM> is needed in order for the user <NUM> to travel beyond a point in the particular virtual path <NUM>. The virtual path computing module <NUM> can provide a further notification to the user <NUM> that a further physical rotation of the user <NUM> is needed for the user <NUM> to travel beyond the point <NUM> in the virtual path. The virtual path manager computing module <NUM> can detect that further physical rotation of the user <NUM> is complete. For example, the rotational data <NUM> can indicate that the user <NUM> has rotated at point <NUM> of the physical segment 210a as shown in <FIG> such that the user <NUM> is facing towards the point <NUM> of the physical segment 210a along the direction D2. The virtual path manager computing module <NUM>, in response to detecting that physical rotation of the user <NUM> is complete, can update the GUI <NUM> to show the virtual path 402d and allow the user <NUM> to travel beyond the point <NUM>. That is, the user <NUM> is allowed to travel beyond the point <NUM> along virtual path 402d that corresponds to physical segment 210a and towards point <NUM> of physical segment 210a.

In some examples, the notification <NUM> can indicate to the user <NUM> to physically rotate <NUM> degrees. That is, the virtual path manager computing module <NUM> can detect that physical rotation of the user <NUM> is complete such that the rotational data <NUM> can indicate that the user <NUM> has rotated at point <NUM> of the physical segment 210a as shown in <FIG> such that the user <NUM> is facing towards the point <NUM> of the physical segment <NUM> (and away from the boundary condition at point <NUM>) along the direction D2.

During detection of the physical rotation of the user <NUM>, the virtual path manager computing module <NUM> updates the GUI <NUM> to display the virtual environment <NUM> such that the GUI <NUM> correlates with the physical rotation of the user <NUM>. Specifically, the virtual path manager computing module <NUM> updates the GUI <NUM> such that a virtual scene of the virtual environment <NUM> is rotated that correlates with the physical rotation of the user <NUM>. That is, the virtual environment <NUM> rotates correspondingly with the physical rotation of the user <NUM>. For example, the rotation of the virtual scene of the virtual environment <NUM> can include rotation of the virtual scene by <NUM> degrees. For example, the rotation of the virtual scene of the virtual environment <NUM> can include rotation of the virtual scene by <NUM> degrees.

In some examples not covered by the claims, during detection of the physical rotation of the user <NUM>, the virtual path manager computing module <NUM> updates the GUI <NUM> such that movement of the virtual environment <NUM> is frozen.

After the virtual path manager computing module <NUM> detects that physical rotation of the user <NUM> is compete, the virtual path manager computing module <NUM> rotates the virtual environment <NUM> in a direction opposite to the rotation of the virtual environment <NUM> that correlates with the physical rotation of the user <NUM>. That is, the virtual environment <NUM> rotates correspondingly with the physical rotation of the user <NUM>, and after the physical rotation of the user <NUM> is complete, the virtual environment <NUM> rotates in a direction opposite to the initial rotation (e.g., rotate backwards). In some examples, the virtual path manager computing module <NUM>, after the physical rotation of the user <NUM> is complete, rotates the virtual environment <NUM> in the direction opposite to the initial rotation such that the GUI <NUM> displays an orientation of the virtual environment <NUM> about the particular virtual path <NUM> similar to that prior to rotation of the virtual environment <NUM>. In some examples, the virtual path manager computing module <NUM>, after the physical rotation of the user <NUM> is complete, rotates the virtual environment <NUM> in the direction opposite to the initial rotation for approximately <NUM> seconds. In some examples, the virtual path manager computing module <NUM>, after the physical rotation of the user <NUM> is complete, rotates the virtual environment <NUM> in the direction opposite to the initial rotation for less than <NUM> seconds.

<FIG> illustrates an example method <NUM> for generation of virtual paths in a virtual environment based on a physical environment. The method may begin at step <NUM>, wherein the virtual path manager computing module <NUM> segments a layout of the physical space <NUM> surrounding the user <NUM> into physical segments <NUM>. At step <NUM>, the virtual path manager computing module <NUM> generates, based on the physical segments <NUM>, virtual paths <NUM> through which the user <NUM> can navigate by traveling the physical segments <NUM>. At <NUM>, the virtual path manager computing module <NUM> displays a particular virtual path <NUM> based on a location of the user <NUM> in the virtual environment <NUM>. At step <NUM>, the virtual path manager computing module <NUM> determines that a forward direction of travel of the user <NUM> is proximate to a boundary condition of a particular physical segment <NUM> that corresponds to a particular virtual path <NUM>. At <NUM>, the virtual path manager computing module <NUM>, in response to the determining, provides a notification <NUM> to the user <NUM> that a physical rotation of the user <NUM> is needed in order for the user <NUM> to travel beyond a point in the particular virtual path <NUM>. At step <NUM>, the virtual path manager computing module <NUM> detects that the physical rotation of the user <NUM> is complete (via the rotation data <NUM>), and in response, updates the display (e.g., the GUI <NUM>) to show the particular virtual path <NUM> and allows the user <NUM> to travel beyond the point in the particular virtual path <NUM>.

<FIG> illustrates an example computer system <NUM>. In particular examples, one or more computer systems <NUM> perform one or more steps of one or more methods described or illustrated herein. In particular examples, one or more computer systems <NUM> provide functionality described or illustrated herein. In particular examples, software running on one or more computer systems <NUM> performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Particular examples include one or more portions of one or more computer systems <NUM>. Herein, reference to a computer system may encompass a computing device, and vice versa, where appropriate. Moreover, reference to a computer system may encompass one or more computer systems, where appropriate.

In particular examples, computer system <NUM> includes a processor <NUM>, memory <NUM>, storage <NUM>, an input/output (I/O) interface <NUM>, a communication interface <NUM>, and a bus <NUM>.

In particular examples, processor <NUM> includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor <NUM> may retrieve (or fetch) the instructions from an internal register, an internal cache, memory <NUM>, or storage <NUM>; decode and execute them; and then write one or more results to an internal register, an internal cache, memory <NUM>, or storage <NUM>. In particular examples, processor <NUM> may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor <NUM> including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor <NUM> may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory <NUM> or storage <NUM>, and the instruction caches may speed up retrieval of those instructions by processor <NUM>. Data in the data caches may be copies of data in memory <NUM> or storage <NUM> for instructions executing at processor <NUM> to operate on; the results of previous instructions executed at processor <NUM> for access by subsequent instructions executing at processor <NUM> or for writing to memory <NUM> or storage <NUM>; or other suitable data. The data caches may speed up read or write operations by processor <NUM>. The TLBs may speed up virtual-address translation for processor <NUM>. In particular examples, processor <NUM> may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor <NUM> including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor <NUM> may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors <NUM>. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In particular examples, memory <NUM> includes main memory for storing instructions for processor <NUM> to execute or data for processor <NUM> to operate on. As an example and not by way of limitation, computer system <NUM> may load instructions from storage <NUM> or another source (such as, for example, another computer system <NUM>) to memory <NUM>. Processor <NUM> may then load the instructions from memory <NUM> to an internal register or internal cache. To execute the instructions, processor <NUM> may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor <NUM> may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor <NUM> may then write one or more of those results to memory <NUM>. In particular examples, processor <NUM> executes only instructions in one or more internal registers or internal caches or in memory <NUM> (as opposed to storage <NUM> or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory <NUM> (as opposed to storage <NUM> or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor <NUM> to memory <NUM>. Bus <NUM> may include one or more memory buses, as described below. In particular examples, one or more memory management units (MMUs) reside between processor <NUM> and memory <NUM> and facilitate accesses to memory <NUM> requested by processor <NUM>. In particular examples, memory <NUM> includes random access memory (RAM). This RAM may be volatile memory, where appropriate. Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory <NUM> may include one or more memories <NUM>, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.

In particular examples, storage <NUM> includes mass storage for data or instructions. In particular examples, storage <NUM> is non-volatile, solid-state memory. In particular examples, storage <NUM> includes read-only memory (ROM).

In particular examples, I/O interface <NUM> includes hardware, software, or both, providing one or more interfaces for communication between computer system <NUM> and one or more I/O devices.

In particular examples, communication interface <NUM> includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer system <NUM> and one or more other computer systems <NUM> or one or more networks. As an example and not by way of limitation, communication interface <NUM> may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface <NUM> for it. As an example and not by way of limitation, computer system <NUM> may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system <NUM> may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these. Computer system <NUM> may include any suitable communication interface <NUM> for any of these networks, where appropriate. Communication interface <NUM> may include one or more communication interfaces <NUM>, where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.

In particular examples, bus <NUM> includes hardware, software, or both coupling components of computer system <NUM> to each other.

<FIG> illustrates an example artificial reality system 700A. In particular examples, the artificial reality system 700A may comprise a headset <NUM>, a controller <NUM>, and a computing system <NUM>, etc. A user <NUM> may wear the headset <NUM> that could display visual artificial reality content to the user <NUM>. The headset <NUM> may include an audio device that could provide audio artificial reality content to the user <NUM>. The headset <NUM> may include one or more cameras which can capture images and videos of environments. The headset <NUM> may include an eye tracking system to determine the vergence distance of the user <NUM>. The headset <NUM> may be referred as a head-mounted display (HDM). The controller <NUM> may comprise a trackpad and one or more buttons. The controller <NUM> may receive inputs from the user <NUM> and relay the inputs to the computing system <NUM>. The controller <NUM> may also provide haptic feedback to the user <NUM>. The computing system <NUM> may be connected to the headset <NUM> and the controller <NUM> through cables or wireless connections. The computing system <NUM> may control the headset <NUM> and the controller <NUM> to provide the artificial reality content to and receive inputs from the user <NUM>. The computing system <NUM> may be a standalone host computer system, an on-board computer system integrated with the headset <NUM>, a mobile device, or any other hardware platform capable of providing artificial reality content to and receiving inputs from the user <NUM>.

Claim 1:
A computer-implemented method (<NUM>), comprising:
segmenting (<NUM>) a layout of a physical space (<NUM>) surrounding a user (<NUM>, <NUM>) into physical segments (<NUM>, <NUM>);
generating (<NUM>), based on the physical segments (<NUM>, <NUM>), virtual paths (<NUM>, <NUM>) for a virtual environment (<NUM>) through which the user (<NUM>, <NUM>) can navigate by traveling the physical segments (<NUM>, <NUM>);
displaying (<NUM>) a particular virtual path of the virtual paths (<NUM>, <NUM>) based on a location of the user (<NUM>, <NUM>) in the virtual environment (<NUM>);
determining (<NUM>) that the user in a forward direction of travel of the user (<NUM>, <NUM>) is proximate to a boundary condition of a particular physical segment of the physical segments (<NUM>, <NUM>), the particular physical segment corresponding to the particular virtual path (<NUM>, <NUM>);
in response to the determining, determining an amount of physical rotation by the user (<NUM>, <NUM>) that is needed in order for the user to travel beyond a point in the particular virtual path (<NUM>, <NUM>), and providing (<NUM>) a notification to the user indicating the amount of physical rotation by the user;
during detection of the physical rotation by the user, updating a virtual scene of the virtual environment by rotating the virtual scene such that the rotation of the virtual scene correlates with the physical rotation of the user; and
detecting (<NUM>) that the physical rotation of the user (<NUM>, <NUM>) is complete when rotational data (<NUM>) indicates that the user has rotated by the indicated amount of physical rotation,
and in response, updating (<NUM>) the virtual scene by rotating the virtual scene in a direction opposite to the rotation that correlates with the physical rotation of the user to show the particular virtual path (<NUM>, <NUM>) and allowing the user to travel beyond the point in the particular virtual path (<NUM>, <NUM>).