Constraining user movement in virtual environments
An exemplary method for constraining a user's movement in a virtual environment includes determining a user's current location in the virtual environment, determining a permitted zone based on the current location, dividing areas outside the permitted zone into multiple zones, obtaining an input to move to a new location, calculating a point within the permitted zone proximate to the new location based on one or more of the multiple zones, and moving the user to the proximate point.
This application is a continuation-in-part application of pending U.S. patent application Ser. No. 10/021,648 filed on Oct. 30, 2001, which is hereby incorporated by reference in its entirety.
BACKGROUNDComputer systems are commonly used to display objects in a virtual environment. The objects may comprise text, still images, video, audio, graphic symbols, icons, any other type of computer-representable items, and/or combinations of any of the foregoing.
The virtual environment (and the objects therein) may be two-dimensional (e.g., a maze game) or three-dimensional (e.g., a simulation of a city having low-rise homes as well as towering skyscrapers). Depending on the background of the user, three-dimensional applications may be depicted in a series of two-dimensional views. For example, a computer-aided blueprinting application may depict top, side and end views of a three-dimensional building because draftsmen and architects are used to working with those kinds of two-dimensional views. However, for other applications or users, it is inconvenient to use a series of two-dimensional views, and it is preferable to have a three-dimensional view. For example, laymen are generally not accustomed to looking at two-dimensional blueprints, so an architect might prefer to present a design for a home for client approval using a perspective view, while retaining the two-dimensional views for construction purposes.
Whatever the application, and whether in two or three dimensions, users may have difficulty navigating through the virtual environment. For instance, difficulties may arise due to inexperience with digital navigation tools (e.g., joystick, keyboard, etc.), the user interface, the complexity of the environment, etc. For example, a user may navigate too close to a displayed image to view the entire image, and also thereby lose track of the context and how that particular image fits within the overall environment. Moreover, some or all of a virtual environment may not have been designed to be viewed at near distances (e.g., some parts of the environment may not properly render when viewed too closely).
In addition, many virtual environments have a number of boundaries that constrain the user's movement. For example, when traversing a maze, the user must navigate between—but cannot cross over—the lines defining the maze. Similarly, a user exploring a virtual house should not be permitted to bump into any of the walls, but should instead move from room to room through virtual doorways.
Thus, a market exists for a computer-implemented process that provides constraints on the user's movements in virtual environments, whether in two or three dimensions.
SUMMARYAn exemplary method for constraining a user's movement in a virtual environment includes determining a user's current location in the virtual environment, determining a permitted zone based on the current location, dividing an area outside the permitted zone into multiple zones, obtaining an input to move to a new location, calculating a point within the permitted zone proximate to the new location based on one or more of the multiple zones, and moving the user to the proximate point.
Other embodiments and implementations are also described below.
BRIEF DESCRIPTION OF THE FIGURES
I. Overview
Section II describes, in a general sense, exemplary processes for constraining a user's movement within a virtual environment.
Section III describes an exemplary partitioned area in which the user's movement may be constrained, and illustrates more specifically an application of the exemplary process of Section II to determine a permitted zone within the exemplary partitioned area.
Section IV describes exemplary processes for dividing zones outside of a permitted zone based on constraint lines surrounding the permitted zone.
Section V describes other exemplary implementations and aspects.
Section VI describes an exemplary system and operating environment.
II. An Exemplary Process for Constraining a User's Movement within a Virtual Environment
At step 110, a user's current location in a virtual environment is determined. In two dimensions, the user's current location may be indicated by L=(x, y) in the x- and y-coordinate system.
At step 120, a permitted zone is determined based on the user's current location. In an exemplary implementation, the partitioned area where the user is currently located can be referred to as the “active” area. Within the active area, the permitted zone can be specified by a spacing parameter, p, which is the minimum distance away from one or more walls in the active area. For example, in
The spacing parameter is not necessarily a constant but can vary as a function of the walls of an active area. For example, a different spacing parameter may be assigned with respect to each wall of an active area. Further, the spacing parameter may also be assigned to zero (which is equivalent to not having a spacing parameter at all). In this implementation, the user may be able to move right up to the edge of a wall or even pass through a wall depending on design choice. The term wall as used herein shall include any types of boundary (visible or transparent) partially or wholly separating one partitioned area from another partitioned area, or restricting the user to a portion of the active area. In general, p can be any predetermined value depending on design choice. In general, the permitted zone is a sub-area within the active area which may be specified by one or more spacing parameters greater than or equal to zero from the wall(s) of the active area.
At step 130, areas outside of the permitted zone are divided into multiple zones. To give a very simple form of example, if all the partitioned areas are rectangular, then the areas outside the permitted zone could be divided into eight zones surrounding the permitted zone, with each zone corresponding to one of the non-active partitioned areas. The other zones outside the permitted zone extend to infinity (if the virtual environment is unbounded), or to the respective edge(s) of the virtual environment (if it is bounded). For example, in
One skilled in the art will recognize that the partitioned areas can be of other shapes than rectangular. For example, the partitioned areas may be squares, circles, ellipses, ovals, and/or other polygons. In addition, partitioned areas in a virtual environment need not be of the same type of shapes or sizes. In general, the number (and shapes) of zones outside the permitted zone is dependent on the shape of a particular permitted zone. In general, the number of zones outside a permitted zone can be selected based on design choice.
In an exemplary implementation, the zones outside a polygonal permitted zone can be characterized by constraint lines surrounding the permitted zone. This exemplary implementation will be described in more detail in Section IV below.
At step 140, a user input to move to a new location in the virtual environment is received. In an exemplary implementation, the input may be a new coordinate value of the new location, relative vector values (e.g., an offset and a direction), and/or other types of input indicative of the new location.
At step 150, whether the new location is outside the permitted zone is determined.
At step 160, if the new location is outside the permitted zone, a point within the permitted zone that is proximate to the new location is calculated. Depending on a design choice, a proximate point may be a nearest point from the current location to a boundary, a nearest point from the new location to a boundary, a nearest point from the current location to a boundary while maintaining the direction indicated by the user, or any other point within a permitted zone between the current location and the new location.
In an exemplary implementation, a proximate point can be efficiently calculated by determining which zone (e.g., the permitted zone or any of the zones surrounding the permitted zone) the new location is located. Based on the determined zone, a reasonable approximation can be made to quickly calculate the edge of the permitted zone where the user should be sent. For example, if the new location is located in the upper left corner zone of a rectangular gridded virtual environment, then the proximate point can be approximated as the point at the lower right corner of the corner zone.
Alternatively, if the new location is within a side zone (rather than a corner zone), then a line connecting the current location (xcurrent, ycurrent) to the new location (xnew, ynew) can be described by the equation (y−ycurrent)=(ynew−ycurrent)/(xnew−xcurrent)*(x−xcurrent). If the boundary of the permitted zone is characterized as any function y=f(x), then the intersection of the line and the boundary can straightforwardly be calculated since there are two equations and two unknowns. The intersection point (xintersection, yintersection) will lie at the boundary of the permitted zone. In a vertical move, one can simply set xnew=xcurrent and ynew=yboundary (and in a horizontal move, set ynew=ycurrent and xnew=xboundary) to achieve a faster calculation. If the line between the current and new locations is perpendicular to the boundary, the intersection point will be the point on the boundary of the permitted zone that is actually nearest to the new location (as well as the current location). Otherwise, the actual nearest point can be found by simply moving along the boundary until a line between the instantaneous boundary position and the new point is perpendicular to the new location (or the current location). It is not necessary to compute the intersection point in this case.
If it is desired to maintain the same direction of movement as that originally expected by the user in specifying the new location, the intersection point on the boundary intersecting a line connecting the current location and the new location can be considered as the proximate point (i.e., to a sufficiently good approximation). If it is more important to minimize the distance to the new location, the boundary moving technique of the previous paragraph can be used to obtain the actual nearest point as the proximate point.
At step 170, the user is moved to the proximate point. In an exemplary implementation, the user can be moved in a straight line path from the current location to the proximate point. In another exemplary implementation, the user can be moved in a zig-zag path, for example, if an impassable obstacle (e.g., wall) is in the way of a straight-line path. The process returns to step 140 for a next input to move.
Referring back to step 150, if the new location is within the permitted zone, then at step 180, the user is moved to that location based on the input. The process returns to step 140 for a next input to move.
From time to time, a user's input at step 140 may indicate a new location located in another permitted zone.
If it is determined that the new location is located outside the permitted zone at step 150, then at step 210, it is determined whether the new location is located within another permitted zone.
If the new location is not located within another permitted zone, at step 220, a point within a permitted zone that is proximate to the new location is calculated. For example, the proximate point may be within the permitted zone where the user is currently located; or the proximate point may be within another permitted zone that is closer to the new location but not necessarily in the permitted zone where the user is currently located.
At step 230, the user is moved to the proximate point. The process returns to step 140 for a next input to move.
Referring back to step 210, if the new location is within another permitted zone, then at step 240, areas outside the new permitted zone are divided into multiple zones and, at step 180, the user is moved to that location based on the input. In general, steps 180 and 240 may be performed sequentially in any order or simultaneously. The process returns to step 140 for a next input to move.
The processes illustrated above are merely exemplary. Those skilled in the art will appreciate that other processes and/or steps may be used in accordance with the requirements of a particular implementation.
III. An Exemplary Partitioned Area within which a User's Movement may be Constrained
The exemplary processes described above in Section II can be more specifically illustrated in an exemplary two-dimensional virtual environment shown in
In a first example, the user inputs a move to P1 in zone 3. In this example, P1 is not located in a permitted zone. A possible proximate point to P1 is the point nearest to zone 5, P1′, which is approximated as the upper right hand corner point. The user is moved to P1′ instead of P1 in zone 3, which is not located in a permitted zone.
In a second example, the user's input of a new location P2 is located in additional permitted zone 350b in zone 4. The additional permitted zone 350b is a permitted zone, so the user is moved to P2 in the additional permitted zone 350b. In an exemplary implementation, areas outside the additional permitted zone 350b can also be divided into multiple zones to facilitate quicker determination of the proper location for the next move.
In a third example, the user's input of a new location P3 is located in zone 6, and not within a permitted zone. In this example, a proximate point can be within zone 5 or zone 6, depending on design choice. For example, in a first scenario, the user is moved to a proximate point (e.g., the nearest point) to P3 in zone 5 (where the user started). In a second scenario, the user is moved to a proximate point (e.g., the nearest point) to P3 in the additional permitted zone 330b in zone 6. In this scenario, the additional permitted zone 330b becomes the current permitted zone and all areas outside of the additional permitted zone 330b can be divided into multiple zones to facilitate quicker determination of the proper location for the next move.
By dividing the areas outside a permitted zone (where the user is currently located), one can efficiently and quickly determine a proximate point between a new location and the (or another) permitted zone and move the user accordingly.
IV. Exemplary Processes for Dividing Zones Based on Constraint Lines Surrounding a Permitted Zone
In an exemplary implementation, zones can be characterized based on constraint lines surrounding a polygonal permitted zone. This is particularly useful for representing the zones in a manner that can be readily stored and manipulated by a computer.
In an exemplary implementation, the table in
In
Thus, the zone in which a new location is located can be ascertained based on the constraint lines surrounding a permitted zone (e.g., evaluating the sign of aku+bkv+ck for each relevant constraint line k and determining the zone from
The foregoing describes a generalized process for characterizing polygonal zones in a virtual environment. A rectangular permitted zone (having rectangular surrounding zones) can alternatively be calculated by a simpler technique.
Referring back to
V. Other Exemplary Implementations and Aspects
1. Two or More Partitioned Areas Connected by Passageways
In a typical virtual environment, multiple partitioned areas are interconnected. For example, multiple partitioned areas may be interconnected by openings (e.g., doors) or passageways (e.g., hallways).
Depending on the size of a passageway, a spacing parameter p may be set to a non-zero value or to a zero value (i.e., equivalent to not having a spacing parameter). For example, if a passageway is narrow, it may not be practical to limit the user's movement within the passageway. However, if a passageway is being used to display images of objects, a spacing parameter (albeit a small one) may be implemented to prevent the user from getting too close to the images.
In
2. Creating a Path in a Partitioned Area
Permitted zones may also be linked together to create a path in a partitioned area.
In an exemplary implementation, each permitted zone can be implemented by selecting appropriate spacing parameter(s) for that zone. For example, permitted zone 1210 has the following spacing parameters for each of its four boundaries: upper boundary, p=0; lower boundary, p=8; right boundary, p=6.5; left boundary, p=4.
This implementation can be used, for example, to constrain a user to a guided tour through a partitioned area.
3. Application in a Three-Dimensional Virtual Environment
The various exemplary implementations described herein are generally described in the context of two-dimensional space. One skilled in the art will readily appreciate that the exemplary implementations can be adapted to be applied to constrain user movements in three-dimensional space in which each permitted zone is a three-dimensional volume.
For example, in the case of a rectangular permitted zone, instead of dividing the virtual environment into nine zones in two-dimensional space (8 outer zones surrounding a central permitted zone), one could divide the virtual environment into 27 zones in three-dimensional space (26 outer zones surrounding a central permitted zone). In an exemplary implementation, the zones can be characterized by constraint planes (a more generalized form of intersection by constraint lines) in the three-dimensional space. Based on these zones, one can efficiently determine where and how to move the user (e.g., by determining the nearest point to the new location within a permitted zone).
VI. An Exemplary System and Operating Environment
The embodiments described herein may be implemented in an operating environment, such as the system 100, comprising software installed on a computer, in hardware, or in a combination of software and hardware.
The software and/or hardware would typically include some type of computer-readable media which can store data and logic instructions (such as those which, when executed, authenticates a user having a biometric authentication datum using a pass code) that are accessible by the computer or the processing logic within the hardware. Such media might include, without limitation, hard disks, floppy disks, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like.
VII. Conclusion
The foregoing examples illustrate certain exemplary embodiments from which other embodiments, variations, and modifications will be apparent to those skilled in the art. The inventions should therefore not be limited to the particular embodiments discussed above, but rather are defined by the claims. Furthermore, some of the claims may include alphanumeric identifiers to distinguish the elements thereof. Such identifiers are merely provided for convenience in reading, and should not necessarily be construed as requiring or implying a particular order of steps, or a particular sequential relationship among the claim elements.
Claims
1. A method for constraining a user's movement in a virtual environment, comprising:
- determining a user's current location in a virtual environment;
- determining a permitted zone based on said current location;
- dividing an area outside said permitted zone into multiple zones;
- obtaining an input to move to a new location;
- calculating a point within said permitted zone proximate to said new location based on one or more of said multiple zones; and
- moving said user to said proximate point.
2. The method of claim 1, wherein said calculating said proximate point includes selecting a nearest corner of said one of said multiple zones.
3. The method of claim 1, wherein said calculating said proximate point is constrained by maintaining a similar direction, relative to said current location, as said new location.
4. The method of claim 1, wherein said calculating said proximate point is constrained by minimizing the distance between said new location and a boundary of said one of said multiple zones.
5. The method of claim 1, wherein said determining a permitted zone includes:
- determining a partitioned area within said virtual environment where said user is currently located; and
- determining said permitted zone within said partitioned area by subtracting a spacing parameter from one or more walls of said partitioned area.
6. The method of claim 1, wherein said calculating includes:
- determining a zone of said multiple zones where said new location is located; and
- determining a point in said permitted zone that is proximate to said new location based on said zone of said multiple zones.
7. The method of claim 1, wherein said moving said user includes:
- moving said user in a straight line path from said current location to said proximate point.
8. The method of claim 1, wherein said moving said user includes:
- moving said user in a zig-zag path from said current location to said proximate point.
9. The method of claim 1, wherein said dividing includes:
- characterizing said multiple zones based on constraint lines surrounding said permitted zone.
10. The method of claim 1, wherein said permitted zone enables said user access to an adjoining partitioned area.
11. The method of claim 1, wherein said permitted zone is a passageway connecting multiple partitioned areas.
12. The method of claim 1, further comprising:
- generating multiple permitted zones to guide said user in a path through a partitioned area.
13. An apparatus for constraining a user's movement in a virtual environment, comprising:
- a processor; and
- a memory, said memory comprising logic instructions that, when executed:
- determine a user's current location in a virtual environment;
- determine a permitted zone based on said current location;
- divide an area outside said permitted zone into multiple zones;
- obtain an input to move to a new location;
- calculate a point within said permitted zone proximate to said new location based on one or more of said multiple zones; and
- move said user to said proximate point.
14. The apparatus of claim 13, wherein said logic instructions to calculate said proximate point include logic instructions to select a nearest corner of said one of said multiple zones.
15. The apparatus of claim 13, wherein said logic instructions to calculate said proximate point are constrained to maintain a similar direction, relative to said current location, as said new location.
16. The apparatus of claim 13, wherein said logic instructions to calculate said proximate point are constrained to minimize the distance between said new location and a boundary of said one of said multiple zones.
17. The apparatus of claim 13, wherein said logic instructions to determine a permitted zone are constrained to determine said permitted zone based on one or more spacing parameters.
18. The appartus of claim 13, wherein said logic instructions to divide include logic instructions that characterize said multiple zones based on constraint lines surrounding said permitted zone.
19. A computer-readable medium for constraining a user's movement in a virtual environment, comprising:
- logic instructions that, when executed:
- determine a user's current location in a virtual environment;
- determine a permitted zone based on said current location;
- divide an area outside said permitted zone into multiple zones;
- obtain an input to move to a new location;
- calculate a point within said permitted zone proximate to said new location based on one or more of said multiple zones; and
- move said user to said proximate point.
20. The computer-readable medium of claim 19, wherein said logic instructions to calculate said proximate point include logic instructions to select a nearest corner of said one of said multiple zones.
21. The computer-readable medium of claim 19, wherein said logic instructions to calculate said proximate point are constrained to maintain a similar direction, relative to said current location, as said new location.
22. The computer-readable medium of claim 19, wherein said logic instructions to calculate said proximate point are constrained to minimize the distance between said new location and a boundary of said one of said multiple zones.
23. The computer-readable application of claim 19, wherein said logic instructions to determine a permitted zone include logic instructions that, when executed:
- determine a partitioned area within said virtual environment where said user is currently located; and
- determine said permitted zone within said partitioned area by subtracting one or more spacing parameters from one or more walls of said partitioned area.
24. The computer-readable application of claim 19, wherein said logic instructions to calculate include logic instructions that, when executed:
- determine a zone of said multiple zones where said new location is located; and
- determine a point on said permitted zone that is closest to said zone.
25. The computer-readable application of claim 19, wherein said logic instructions to determine a permitted zone are constrained to determine said permitted zone based on one or more spacing parameters.
26. The computer-readable application of claim 19, wherein said logic instructions to divide include logic instructions that, when executed:
- characterize said multiple zones based on constraint lines surrounding said permitted zone.
27. The computer-readable application of claim 19, wherein said permitted zone enables said user access to an adjoining partitioned area.
28. The computer-readable application of claim 19, wherein said permitted zone is a passageway connecting multiple partitioned areas.
29. The computer-readable application of claim 19, further comprising logic instructions that, when executed:
- generate multiple permitted zones to guide said user in a path through a partitioned area.
30. An apparatus for constraining a user's movement in a virtual environment, comprising:
- means for determining a user's current location in a virtual environment;
- means for determining a permitted zone based on said current location;
- means for dividing an area outside said permitted zone into multiple zones;
- means for obtaining an input to move to a new location;
- means for calculating a point within said permitted zone proximate to said new location based on at least one of said multiple zones; and
- means for moving said user to said proximate point.
31. The apparatus of claim 30, wherein said calculating said proximate point is constrained to maintain a similar direction, relative to said current location, as said new location.
32. The apparatus of claim 30, wherein said calculating said proximate point is constrained to minimize the distance between said new location and a boundary of said one of said multiple zones.
33. The apparatus of claim 30, further comprising:
- means for generating multiple permitted zones to guide said user in a path through a partitioned area.
Type: Application
Filed: Feb 7, 2005
Publication Date: Jun 30, 2005
Inventor: Nelson Chang (San Jose, CA)
Application Number: 11/052,150