How to adjust the camera view in video games

By dynamically adjusting the camera view, avoiding the occlusion of graphic objects, the problem of camera view discontinuity in electronic games is solved and the user experience is improved.

CN114269442BActive Publication Date: 2025-08-19ROBLOX CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980099078.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-06
Filing Date
2019-09-17
Publication Date
2025-08-19
Estimated Expiration
2039-09-17

AI Technical Summary

Technical Problem

In video games, camera views are susceptible to occlusion from graphic objects, resulting in discontinuity and destructive visual effects that affect the user experience.

Method used

By adjusting the position of the camera view, avoiding graphic objects occluding the avatar, dynamically adjusting the camera view according to the speed and direction of the avatar and the type of occlusion (hard or soft occlusion), such as moving the camera forward or backward to maintain visibility of the avatar.

Benefits of technology

It effectively reduces the occlusion phenomenon in the camera view, provides a smooth visual experience, and improves the user's gaming experience in the 3D world.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114269442B_ABST
    Figure CN114269442B_ABST
Patent Text Reader

Abstract

The camera view of an avatar traveling in a 3D world in a video game can be adjusted to prevent the avatar from being obscured by a graphical object in the camera view. The camera view can be moved forward toward the avatar to avoid the obstruction, and then the camera view can be moved backward away from the avatar after the avatar passes the graphical object. Graphical objects that do not significantly obscure the avatar in the camera view may not trigger an adjustment of the camera view.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates generally to computer-based games and, more particularly, but not exclusively, to methods, systems, and computer-readable media for presenting camera views in electronic games. Background Art

[0002] Some online gaming platforms allow users (e.g., players) to navigate their avatars in a three-dimensional (3D) world. Users can control their avatars to run, walk, climb, fly, etc. in buildings, fields, forests, parks, mountains, and other 3D environments using a mouse, keyboard, or other input mechanisms provided on a client device. Various elements such as trees, walls, pillars, clouds, and other structures / objects are rendered as visual graphics in the 3D world.

[0003] Typically, a 3D world is presented as a camera view, as if a live camera were following the avatar as it moved from one point in the 3D world to another. However, the camera view in many video games is often filled with unpleasant discontinuities and disruptive visual effects that annoy many users. Summary of the Invention

[0004] According to a first embodiment, a method for adjusting a camera view of a three-dimensional (3D) world presented in an electronic game includes: determining a speed and a direction of travel of a first graphical object presented in the 3D world; identifying a second graphical object arranged along the direction of travel; determining whether the second graphical object occludes the first graphical object in a current camera view by at least a threshold level during travel of the first graphical object along the direction of travel; in response to determining that occlusion of the first graphical object by the second graphical object exceeds the threshold level, adjusting the current camera view of the first graphical object by moving the camera view forward toward the first graphical object to avoid occlusion by the second graphical object; and in response to determining that occlusion by the second graphical object is less than the threshold level, maintaining the current camera view.

[0005] According to another embodiment, a non-transitory computer-readable medium having instructions stored thereon that, in response to execution by a processor, cause the processor to perform or control execution of operations. The operations include: determining a speed and a direction of travel of a first graphical object presented in the 3D world; identifying a second graphical object arranged along the direction of travel; determining whether the second graphical object occludes the first graphical object in a current camera view by at least a threshold level during travel of the first graphical object along the direction of travel; in response to determining that occlusion of the first graphical object by the second graphical object exceeds the threshold level, adjusting the current camera view of the first graphical object by moving the camera view forward toward the first graphical object to avoid occlusion by the second graphical object; and in response to determining that occlusion by the second graphical object is less than the threshold level, maintaining the current camera view.

[0006] According to another embodiment, a device includes: a user interface; and a processor coupled to the user interface and to a memory storing a gaming application, the gaming application, in response to being executed by the processor, causing the processor to present a camera view of a 3D world of an electronic game to the user interface, wherein the gaming application is further executed by the processor to cause the processor to perform or control execution of operations. The operations include: determining a speed and a direction of travel of a first graphical object presented in the 3D world; identifying a second graphical object arranged along the direction of travel; determining whether the second graphical object occludes the first graphical object in a current camera view by at least a threshold level during travel of the first graphical object along the direction of travel; in response to determining that occlusion of the first graphical object by the second graphical object exceeds the threshold level, adjusting the current camera view of the first graphical object by moving the camera view forward toward the first graphical object to avoid occlusion by the second graphical object; and in response to determining that occlusion by the second graphical object is less than the threshold level, maintaining the current camera view. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Figure 1A is an example of a camera view of an avatar traveling in a 3D world, where the camera view does not move forward.

[0008] Figure 1B is Figure 1A An overhead view of an avatar traveling in a 3D world is shown.

[0009] Figure 2A is another example of a camera view of an avatar traveling in a 3D world, where the camera view has moved forward and then backward.

[0010] Figure 2B is Figure 2A An overhead view of an avatar traveling in a 3D world is shown.

[0011] Figure 3 is a diagram of example parameters that may be used to determine whether to adjust a camera view in an electronic game, according to some implementations.

[0012] Figure 4 Is available Figure 1A 、 Figure 1B 、 Figure 2A and Figure 2B Schematic diagram of an example system architecture for online gaming, showing a camera view.

[0013] Figure 5 is a flowchart illustrating a method for adjusting a camera view in a video game, according to some embodiments.

[0014] Figure 6 is a block diagram of an example computing device in accordance with some implementations. DETAILED DESCRIPTION

[0015] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. Like symbols in the drawings generally identify similar components, unless the context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not intended to be limiting. Other embodiments may be used, and other adjustments may be made, without departing from the spirit or scope of the subject matter presented herein. The various aspects of the present disclosure, as generally described herein and illustrated in the accompanying drawings, may be arranged, replaced, combined, separated, and designed into a variety of different configurations, all of which are within the scope of the present disclosure.

[0016] References in the specification to "one embodiment," "an embodiment," "an example embodiment," etc., indicate that the described embodiment may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Furthermore, these phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in conjunction with an embodiment, such feature, structure, or characteristic can be implemented in conjunction with other embodiments, whether or not explicitly described.

[0017] The present disclosure addresses the aforementioned shortcomings in video games by selectively moving the camera view forward toward the avatar (to avoid occlusion of the avatar in the camera view) based on the degree of occlusion that will occur. Whether to keep the camera view stationary, move the camera view forward, or move the camera view backward may depend on several factors, such as the speed and direction the avatar is traveling in the 3D world of the video game, whether the occlusion is a hard occlusion, whether the occlusion is a soft occlusion, or other factors.

[0018] For example, a hard occlusion (such as a wall or other opaque graphical object) may cause the camera view to move forward, thereby removing the wall from the camera view and thus not obscuring the camera view of the avatar. A soft occlusion (such as a transparent window or other at least semi-transparent structure / object that only partially obscures the avatar) may cause the camera view to remain stationary (such as the camera view not moving forward), such that the avatar can be seen moving behind the soft occlusion.

[0019] The direction and speed of the avatar as the avatar travels in the 3D world can be used to determine whether to adjust the camera view. For example, if it is determined by the game application that the speed of travel will cause the avatar to pass behind a hard occluder, the camera view is moved forward toward the avatar, in a direction perpendicular to the direction of travel (in order to provide a camera view of an unobstructed avatar). As another example, if it is determined, such as by the game application, that the direction and speed of travel will cause the avatar to pass behind a soft occluder, the game application can control the camera view to remain stationary (not move forward toward the avatar, in a direction perpendicular to the direction of travel), so that the camera view appears to be partially obscured when the avatar passes behind the soft occluder.

[0020] The speed at which the avatar is traveling and / or the amount of possible occlusion can be used as a factor / threshold to determine whether to adjust the camera view. As an example, a gaming application may determine that the avatar is about to pass quickly behind a hard occlusion (e.g., a wall). Thus, even though the wall may obscure the avatar with up to 100% occlusion, the avatar may be moving at a sufficient speed that the 100% occlusion may occur within a short time window (e.g., less than a few seconds). In this case, the duration of the total occlusion may be determined to be acceptable, such as to maintain a smooth view rather than moving the camera at high speed, so the gaming application may not move the camera view forward to avoid the occlusion. In another example, the avatar may pause / stop after a soft occlusion (e.g., a narrow pole) that only partially obscures the avatar (e.g., only 10% occlusion). In this case, the duration of the partial occlusion may occur for more than a few seconds, so the gaming application may move the camera view forward to provide a complete (unobstructed) view of the avatar.

[0021] Details of these and other aspects can be found in Figure 1A 、 Figure 1B 、 Figure 2A and Figure 2B .first, Figure 1A1 is an example camera view 100 of an avatar 102 navigating a 3D world in a video game. For example, camera view 100 may be a side view presented on a user interface of a client device to follow (e.g., pan) the movement of avatar 102 in the 3D world. The camera views shown and described herein may be provided by a "virtual camera" that can be positioned anywhere in the 3D world to generate a camera view and generate different views. The position of the virtual camera may also be updated / changed.

[0022] In some implementations, avatar 102 may be a graphical object representing a player / user operating a client device to play a video game. During the course of playing the video game, avatar 102 travels (e.g., walks or runs) from the right side in the 3D world, as illustrated by one or more arrows 104. As avatar 102 travels from the left side to the right side in view 100, the subsequent position of avatar 102 is Figure 1A (and in other figures) are represented by the multiple dashed lines of avatar 102.

[0023] Camera view 100 shows avatar 102 initially traveling from left to right along a substantially flat path 106. Flat path 106 may be located in a planar area in the 3D world (which may be represented by x and y coordinates). As avatar 102 continues to travel from left to right, avatar 102 may also change height to climb a slope 108 in the 3D world (which may be represented by x, y, and z coordinates).

[0024] In addition to avatar 102, multiple graphical objects may be presented in the 3D world. For example, the graphical objects may be trees 110, 112, and 114 located along path 106 and slope 108. Trees 110, 112, and 114 may have respective trunks 116, 118, and 120. Another graphical object may be wall 122 (e.g., the wall of a building) at the top of slope 108.

[0025] Trees 110, 112, and 114 may have respective trunks 116, 118, and 120 that have relatively thin profiles such that trunks 116, 118, and 120 do not completely obscure avatar 102 as the avatar passes behind each trunk 116, 118, and 120. Thus, each trunk 116, 118, and 120 may be considered a "soft" occlusion that allows at least a portion of avatar 102 to be visible. Thus, for example, in Figure 1A , portions of the avatar's 102 body (e.g., portions of the head, limbs, or torso) may remain visible in the camera view 100 while other portions of the avatar's 102 body are occluded by the tree trunks 116, 118, and 120. Figure 3As further described below, the amount and / or duration of the occlusion may determine whether the camera view 100 remains refined (e.g., Figure 1A 118, and 120 occludes a portion of the avatar 102 in the camera view 100), or a determination can be made as to whether to move the camera view 100 forward between the avatar 102 and the tree trunks 116, 118, and 120, thereby presenting an unobstructed view of the avatar 102 as the avatar 102 travels behind the tree trunks 116, 118, and 120.

[0026] Figure 1B It is the incarnation 102 march Figure 1A In one embodiment, Figure 1B The top view may be a camera view 150 presented in an electronic game, for example if a user selects a top view or a bird's eye view while playing the electronic game. Figure 1A The graphical object shown in the camera view 100, Figure 1B The camera view 150 of is shown with dashed lines showing the avatar 102 and its subsequent position, with arrow 104 depicting the direction of travel of the avatar 102 , trees 110 , 112 , and 114 , and wall 122 .

[0027] Figure 1B The tree 110 is shown with an overhanging branch 124, under which the avatar 102 passes. Figure 1A The camera view in 100, Figure 1B Camera view 150 in FIG. 1 remains stationary so that branch 124 is treated as a soft occlusion, which occludes portions of avatar 102 as avatar 102 passes under branch 124 while other portions of avatar 102 remain visible under branch 124. If there are graphical objects with a larger outline than branch 124 (e.g., thicker branches, clouds, highway overpasses, etc.) that would occlude more significant portions of avatar 102 (and / or occlude for a longer duration), camera view 150 may be adjusted to move the camera view between such graphical objects and avatar 102 so that avatar 102 is not obscured from the camera view.

[0028] like Figure 1A and Figure 1B As shown, avatar 102 is approaching wall 122. If camera view 100 remains unchanged as avatar 102 travels behind wall 122, avatar 102 will be completely obscured by wall 122. Therefore, in one embodiment, the camera view is adjusted so that wall 122 does not obscure avatar 102 when avatar 102 is positioned behind wall 122. Figure 2A and Figure 2B Provide more details on this.

[0029] Specifically, Figure 2A is a camera view 200 of the avatar 102 traveling behind the wall 122 (as depicted by the arrow 102 and the dashed line representation of the avatar 102), wherein the camera view 200 has been aligned relative to Figure 1A The camera view 100 moves forward. Therefore, in Figure 2A , the camera presenting camera view 200 moves forward (toward avatar 102 and in a direction perpendicular to arrow 104) to a position between wall 122 and avatar 102 (e.g., has moved closer to avatar 102). In this manner, wall 122 disappears (e.g., is removed) from camera view 200 and thus no longer obscures avatar 102. Figure 2A , the avatar 102 is also shown as being presented at an enlarged size, indicating that the camera view 200 has been zoomed in closer to the avatar 102.

[0030] like Figure 2B As shown in the top view of FIG. 1 , the wall 122 itself is still there and the avatar 102 is still passing behind the wall 122. Figure 1A As shown in comparison, camera view 200 now excludes wall 122 due to the forward movement past wall 122 , thereby preventing wall 122 from obscuring avatar 102 in camera view 200 .

[0031] exist Figure 2A and Figure 2B In the example shown, avatar 102 continues to travel behind wall 122 and reaches a portion of wall 122 that includes windows 202 and 204 mounted on window frame 206. Windows 202, 204, and window frame 206 are understood to be soft occlusions that may allow a portion of avatar 102 to be visible as avatar 102 travels behind windows 202, 204, and window frame 206. For example, windows 202, 204 may be transparent or translucent, and window frame 206 may have a narrower outline relative to the outline of avatar 102.

[0032] Figure 2A The camera generating camera view 250 is further depicted as having moved backward (away from avatar 102 and in a direction perpendicular to the direction of travel) relative to camera view 200. That is, the camera generating camera view 250 has now moved back to its original position so as to be in front of windows 202 and 204 and window frame 206. Avatar 102 is now smaller in size (back to its original size) relative to its magnified size in camera view 200, and is partially visible or partially obscured as avatar 102 travels behind windows 202 and 204 and window frame 206.

[0033] Figure 3is a diagram of example parameters that may be used to determine whether to adjust a camera view in an electronic game, according to some implementations. Figure 3 The various graphical elements and other information shown are presented in a manner similar to Figure 1A 、 Figure 1B 、 Figure 2A and Figure 2B to further aid understanding and maintain consistency.

[0034] and Figure 1B and Figure 2B similar, Figure 3 As an example, the 3D world and the graphical elements contained therein can be arranged according to an xyz coordinate system 300, although other types of coordinate systems and techniques that can identify the relative positions and locations of graphical elements can be used in different embodiments. Figure 3 In the coordinate system 300, the xy coordinate axes lie on the image plane, while the z coordinate lies on an axis perpendicular to the image plane. For ease of explanation, the avatar 102 is shown and described below as moving only along the x-axis in the direction of arrow 104, rather than moving along the y and z coordinates off the x-axis. It should be understood that this single-dimensional movement of the avatar 102 in the 3D world is merely an example, and the player / user can navigate the avatar 102 in any direction within the coordinate system 300. The following description of the single-dimensional movement of the avatar 102 along the x-axis also applies to other movements of the avatar 102 along the y and z axes.

[0035] Avatar 102 travels along the x-axis at a particular speed v, which can be measured in pixels per second across a display screen or other units of measurement. At any given instant in time, the location of avatar 102 can be identified at points A, A1, A2, A3, A4, etc. in coordinate system 300. Points A, A1, A2, A3, A4, etc. can correspond to a central axis through avatar 102, an edge of the avatar (e.g., a fingertip), or other locations on the graphical representation of avatar 102 sufficient to identify the instantaneous location of avatar 102 in coordinate system 300. The locations of other graphical elements in the 3D world can also be represented by one or more points BH in coordinate system 300. For example, the location of trunk 120 of tree 114 can be defined along the central z-axis of trunk 120 at point C. Alternatively or additionally, the edge boundaries of trunk 120 can be identified at points B and D. Still alternatively or additionally, point C along the z-axis of trunk 120 may be used to identify the location of trunk 120, and other configuration information may be used to specify fixed or varying edges of trunk 120 (e.g., a radius in pixels, measured from point C and other points along the z-axis of trunk 120).

[0036] In a similar manner, the edge of wall 122 may be located at points E and F, the edge of window 202 may be located at points F and G, and the edge of window frame 206 may be located at points G and H. The specific coordinates and other size / position information corresponding to points AH may be stored as attribute / configuration information for each graphical element in the 3D world.

[0037] Figure 1A and Figure 2A The camera view 100, camera view 200 and camera view 250 are also indicated by dotted lines. Figure 3 Starting with respect to camera view 100, it has been determined that avatar 102 is traveling from point A toward point A1 and then toward point A2. In the area preceding (e.g., to the left of) the x-coordinates corresponding to points B and C, the gaming application determines that no graphical objects are obscuring avatar 102, and therefore camera view 100 remains unchanged.

[0038] When avatar 102 approaches the x-coordinate corresponding to point B or point C, the game application (or game engine) determines, for example, that a graphical object (e.g., tree 114) is near the path of avatar 102 and will obscure avatar 102. However, the game application also determines that when avatar 102 reaches point A1 (corresponding to the x-coordinate of point C where the maximum amount of occlusion is likely to occur), avatar 102 will not be completely obscured and / or will only be temporarily obscured. For example, the maximum amount of occlusion may be less than 50% of the outline of avatar 102, or less than some other threshold level. For example, the diameter of tree trunk 120 between points B and D may be significantly less than the length of the visible outline of avatar 102, and thus the maximum amount of occlusion may be less than 50% of the visible outline of avatar 102. The 50% threshold value is an example and may be configured as other threshold values or ranges for the electronic game. Other threshold values or combinations thereof may be used. For example, the threshold for determining whether to adjust the camera view can be based on duration (e.g., occlusion duration of 0.5 seconds or less), or a combination of time and amount of occlusion (e.g., 60% or more occlusion for more than 0.5 seconds, etc.). In this example, because the occlusion amount does not meet the threshold for adjusting the camera view, the gaming application maintains the camera view 100 unchanged (e.g., does not move the camera view forward).

[0039] In some embodiments, the duration of the occlusion can be used as an additional or alternative parameter to determine whether to adjust the camera view. For example, in some embodiments, the tree trunk 120 can be wide enough to obscure more than 50% of the outline of the avatar 102, or even up to 100% of the occlusion. However, if the speed v of the avatar 102 is high enough so that the occlusion will be less than 1 second or other threshold time level that the electronic game can set, the game application may not adjust the camera view 100 (e.g., the camera view 100 remains stationary and does not move forward). This is because the duration of the occlusion is short enough in time to compare to quickly moving the camera in the forward and backward directions, which causes a high level of motion in the camera view and is less pleasing to the user interface than a brief occlusion.

[0040] In another example, the amount of occlusion caused by tree trunk 120 (or other graphical object) may be 50% or less, unless the user has decided to pause or slow down the speed v of avatar 102 while the avatar is partially occluded. Thus, the duration of the occlusion may exceed 1 second or other threshold amount of time set in the electronic game. In this case, the game application may adjust the camera view so that the camera view moves forward toward avatar 102, thereby providing an unobstructed view of avatar 102 when avatar 102 is stopped or moving slowly.

[0041] Continue reading Figure 3 , avatar 102 continues traveling and arrives at point A2. Point A2 may be just before the x-coordinate of point E, just at the x-coordinate of point E, or just beyond the x-coordinate of point E. In this case, the game application determines the velocity v and the direction of travel of avatar 102 to place avatar 102 behind wall 122. The game application also knows from the configuration information that wall 122 provides a hard occlusion that will completely obscure avatar 102 between points E and F. Therefore, the game application adjusts the position of the camera and thereby adjusts the camera view from camera view 100 to camera view 200, thereby moving the camera view between wall 122 and avatar 102 when avatar 102 travels between the corresponding x-coordinates of points E and F (e.g., when avatar 102 is at point A3).

[0042] Subsequently, when avatar 102 approaches the x-coordinate of point F, is exactly at the x-coordinate of point F, or just passes through the x-coordinate of point F, the game application determines that its direction of travel and speed will cause avatar 102 to pass behind window 202 and window frame 206, which are soft occlusions. Accordingly, the game application can adjust the camera position from camera view 200 to camera view 250, thereby moving the camera view back to its original position. Avatar 102 will thus be fully visible behind window 202 between points F and G, and partially obscured between points G and H. The forward and backward movement of the camera, which provides camera view 100, camera view 150, camera view 250, etc., may be a "jump zoom" that avoids rendering occluding graphical objects during the transition, or may be a relatively smooth transition that allows the camera view to slide over occluding graphical objects. The type of transition may vary between different implementations, depending on settings configured by the developer and / or player.

[0043] The camera view 250 may be similar to the camera view 100 mentioned below, including possible adjustments to the camera view 250 based on the avatar 102 stopping or slowing down due to a soft occlusion caused by the window frame 206 between points G and H.

[0044] Although Figure 1A 、 Figure 1B 、 Figure 2A 、 Figure 2B and Figure 3 Movement along the x-direction is shown, but it should be understood that the avatar can move in any direction, such as along the xy direction, along the yz direction, or along the xyz direction, based on user input. For example, lateral movement (e.g., indicated by a single arrow key pressed on a keyboard, a gesture input in a single direction, etc.) can include movement in a single direction. In another example, combined movement (e.g., indicated by two perpendicular arrow keys, such as left and up, pressed simultaneously, by a "jump" gesture, etc.) can include movement in two or more directions. In various embodiments, the camera generating the camera view can be positioned perpendicular to the primary direction of movement. For example, when the avatar moves from left to right on the user interface, the camera can be positioned perpendicular to the screen displaying the avatar. In various embodiments, the movement of the avatar in the 3D world can be governed by rules specified by the game developer. In some embodiments, each graphical object in the game can be stored in a data store with corresponding properties, such as size, transparency level, color, texture, etc.

[0045] Figure 4 Is available Figure 1A 、 Figure 1B 、 Figure 2A and Figure 2BSchematic diagram of an example system architecture for online gaming, depicting a camera view of an online gaming platform. An online gaming platform (also referred to as a "user-generated content platform" or "user-generated content system") provides users with a variety of ways to interact, such as when playing a video game. For example, users of the online gaming platform can work together toward a common goal, share various virtual game items, send electronic messages to each other, and so on. Users of the online gaming platform can play games using characters, such as the aforementioned avatar 102, which the users can navigate within the 3D world presented in the video game.

[0046] The online gaming platform may also allow users of the platform to create and animate avatars, as well as create other graphical objects to place in the 3D world. For example, users of the online gaming platform may be allowed to create, design, and customize avatars 102, as well as create, design, and insert walls 122, windows 202, and other graphical objects in the 3D world.

[0047] See also Figure 4 , an example system architecture 400 (also referred to herein as a "system") includes an online gaming platform 402, a first client device 410 (generally referred to herein as "client device 410"), and at least one second client device 416. The online gaming platform 402 may include a game engine 404 and one or more electronic games 406. The system architecture 400 is provided to illustrate one possible implementation. In other implementations, the system architecture 400 may include a system that is configured to be compatible with the game. Figure 4 The same, fewer, more or different elements shown may be configured in the same or different manner.

[0048] The communication network 422 can be used for communication between the online gaming platform 402 and the client devices 410 / 416 and / or between other elements in the system architecture 400. The network 422 can include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or a wide area network (WAN)), a wired network (e.g., Ethernet), a wireless network (e.g., an 802.11 network, a Wi-Fi network, or a wireless LAN (WLAN)), a cellular network (e.g., a Long Term Evolution (LTE) network), routers, hubs, switches, server computers, or combinations thereof.

[0049] Client device 410 may include a gaming application 412 and one or more user interfaces 414 (e.g., audio / video input / output devices). Client device 416 may include a gaming application 420 and a user interface 418 (e.g., audio / video input / output devices). The audio / video input / output devices may include one or more of a microphone, a speaker, a headset, a display device, and the like.

[0050] The system architecture 400 may also include one or more storage devices 424. The storage device 404 may be, for example, a storage device located within the online gaming platform 402 or communicatively coupled to the online gaming platform 402 via the network 422 (e.g., Figure 4 4). Storage device 404 may store, for example, graphical objects rendered by game engine 404 or by game applications 412 / 420 in game 406, as well as configuration / property information of the graphical objects (e.g., the coordinate information, size dimensions, etc. mentioned above). In some embodiments, storage device 404 may be part of a separate content delivery network that provides graphical objects presented in game 406. For example, game application 412 may pull (or have pushed) graphical objects stored in storage device 424 for presentation during game play.

[0051] In one embodiment, storage device 424 can be non-transitory computer-readable memory (e.g., random access memory), a cache, a drive (e.g., a hard drive), a flash drive, a database system, or another component or device capable of storing data and other content. Storage device 424 can also include multiple storage components (e.g., multiple drives or multiple databases) that can span multiple computing devices (e.g., multiple server computers).

[0052] In some embodiments, the online gaming platform 402 may include a server having one or more computing devices (e.g., a cloud computing system, a rack-mounted server, a server computer, a physical server cluster, etc.). In some embodiments, the server may be included in the online gaming platform 402 as a standalone system or as part of another system or platform.

[0053] In some embodiments, the online gaming platform 402 may include one or more computing devices (e.g., rack-mounted servers, router computers, server computers, personal computers, mainframe computers, laptop computers, tablet computers, desktop computers, etc.), data storage (e.g., hard disks, memories, databases), networks, software components, and / or hardware components that may be used to perform operations on the online gaming platform 402 and provide users with access to the online gaming platform 402. The online gaming platform 402 may also include a website (e.g., a webpage) or application backend software that may be used to provide users with access to content provided by the online gaming platform 402. For example, a user may access the online gaming platform 402 using a gaming application 412 on a client device 410.

[0054] In some embodiments, the online gaming platform 402 may be a social network that provides connections between users, or a user-generated content system that allows users (e.g., end users or consumers) to communicate with other users on a network. The online gaming platform 402, wherein the communication may include voice chat (e.g., synchronous and / or asynchronous voice communication), video chat (e.g., synchronous and / or asynchronous video communication), or text chat (e.g., synchronous and / or asynchronous text-based communication). In some embodiments of the present disclosure, a "user" may be represented as a single individual. However, other embodiments of the present disclosure include that a "user" (e.g., a creating user) is an entity controlled by a group of users or an automated source. For example, a group of individual users united as a community or group in a user-generated content system may be considered a "user."

[0055] In some embodiments, the online gaming platform 402 may be a virtual gaming platform. For example, the gaming platform may provide single-player or multiplayer games to a community of users who can access or interact with the games using client devices 410 via a network 422. In some embodiments, the games (also referred to as "video games," "online games," or "virtual games," etc.) may be two-dimensional (2D) games, three-dimensional (3D) games (e.g., 3D user-generated games), virtual reality (VR) games, or augmented reality (AR) games. In some embodiments, users may participate in games with other users. In some embodiments, games may be played in real time with other users of the game.

[0056] In some embodiments, play may refer to the interaction of one or more players within a game (e.g., game 406) using a client device (e.g., client devices 410 and / or 416), or having the interactions presented on a display or other user interface (e.g., user interface 414 / 418) of client device 410 or 416.

[0057] In some embodiments, game 406 may include an electronic file that can be executed or loaded using software, firmware, or hardware configured to render game content (e.g., digital media items) to an entity. In some embodiments, game application 412 may be executed and rendered in conjunction with game engine 404. In some embodiments, games 406 may have a common set of rules or a common goal, and the environments of games 406 may share a common set of rules or a common goal. In some embodiments, different games may have different rules or goals than one another.

[0058] In some implementations, a game may have one or more environments (also referred to herein as "game environments" or "virtual environments"), where multiple environments may be linked. An example of an environment may be a 3D environment. The one or more environments of a game 406 may be collectively referred to herein as a "world" or "game world" or "virtual world" or "universe." An example of a world may be the 3D world of a game 406, such as in Figure 1A 、 Figure 1B 、 Figure 2A 、 Figure 2B and Figure 3 For example, a user can build a virtual environment that links to another virtual environment created by another user. A character in a virtual game can cross a virtual boundary into an adjacent virtual environment.

[0059] It may be noted that a 3D environment or 3D world utilizes graphics that can represent a three-dimensional representation of the geometric data of the game content (or at least render the game content to appear as 3D content, regardless of whether a 3D representation of the geometric data is used). A 2D environment or 2D world utilizes graphics that can represent a two-dimensional representation of the geometric data of the game content.

[0060] In some embodiments, the online gaming platform 402 can host one or more games 406 and can allow users to interact with the games 406 using a gaming application 412 of a client device 410. Users of the online gaming platform 402 can play, create, interact with, or build games 406, communicate with other users, and / or create and build objects (e.g., also referred to as "items" or "game objects" or "virtual game items" or "graphic objects") for the games 406. For example, when generating user-generated virtual items, users can create characters, animations of characters, decorations for characters, one or more virtual environments for interactive games, or construct structures for use in the games 406. In some embodiments, users can buy, sell, or trade virtual game objects, such as in-platform currency (e.g., virtual currency), with other users of the online gaming platform 402. In some embodiments, the online gaming platform 402 can transmit game content to gaming applications (e.g., gaming applications 412). In some embodiments, game content (also referred to herein as "content") can refer to any data or software instructions related to the online game platform 402 or game application (e.g., game objects, game play, user information, videos, images, commands, media items, etc.). In some embodiments, a game object (e.g., also referred to herein as an "item" or "object" or "virtual game item") can refer to an object that is used, created, shared, or otherwise described in the game 406 of the online game platform 402 or game application 412 or 420 on the client device 410 / 416. For example, a game object can include parts, models, characters or parts thereof (e.g., faces, arms, lips, etc.), tools, weapons, clothing, buildings, vehicles, currency, flora, fauna, parts of the above (e.g., windows of a building), etc.

[0061] It should be noted that the online gaming platform 402 hosting the game 406 is provided for illustrative purposes. In some embodiments, the online gaming platform 402 can host one or more media items, which can include communication messages from one user to one or more other users. Media items can include, but are not limited to, digital videos, digital movies, digital photos, digital music, audio content, melodies, website content, social media updates, e-books, e-magazines, digital newspapers, digital audiobooks, e-journals, web blogs, Really Simple Syndication (RSS) feeds, e-comic books, software applications, and the like. In some embodiments, a media item can be an electronic file that can be executed or loaded using software, firmware, or hardware configured to present the digital media item to an entity.

[0062] In some embodiments, a game 406 can be associated with a specific user or a specific group of users (e.g., a private game) or made generally available to users of the online gaming platform 402 (e.g., a public game). In some embodiments, the online gaming platform 402 associates one or more games 406 with a specific user or group of users. The online gaming platform 402 can associate a specific user with a game 402 using user account information (e.g., a user account identifier such as a username and password).

[0063] In some embodiments, the online gaming platform 402 or client devices 410 / 416 may include a game engine 404 or a game application 412 / 420. In some embodiments, the game engine 404 may be used for the development or execution of a game 406. For example, the game engine 406 may include a rendering engine ("renderer") for 2D, 3D, VR, or AR graphics, a physics engine, a collision detection engine (and collision response), a sound engine, scripting capabilities, an animation engine, an artificial intelligence engine, networking capabilities, streaming capabilities, memory management capabilities, threading capabilities, scene graph capabilities, or video support for cutscenes. Components of the game engine 404 may generate commands (e.g., rendering commands, collision commands, animation commands, physics commands, etc.) that help calculate and render the game. In some embodiments, the game applications 412 / 418 of the client devices 410 / 416, respectively, may work independently, in collaboration with the game engine 404 of the online gaming platform 402, or a combination of the two.

[0064] In some embodiments, both the online gaming platform 402 and the client devices 410 / 416 execute game engines or game applications (404, 412, 420, respectively). The online gaming platform 402, using the game engine 404, can perform some or all of the game engine functions (e.g., generating physics commands, animation commands, rendering commands, etc., including controlling adjustments to the camera view described above), or offload some or all of the game engine functions to the game application 412 on the client device 410. In some embodiments, each game 406 can have a different ratio between the game engine functions executed on the online gaming platform 402 and the game engine functions executed on the client devices 410 and 416.

[0065] For example, the game engine 404 of the online game platform 402 may be configured to generate physics commands when a collision occurs between at least two game objects, while additional game engine functions (e.g., generating rendering commands, including adjusting camera views) may be offloaded to the client device 410. In some embodiments, the ratio of game engine functions executed on the online game platform 402 and the client device 410 may be adjusted (e.g., dynamically) based on play conditions. For example, if the number of users participating in a play of a particular game 406 exceeds a threshold number, the online game platform 402 may execute one or more game engine functions previously executed by the client device 410 or 416.

[0066] For example, a user may be playing game 406 on client devices 410 and 416 and may send control instructions (e.g., user input such as right, left, up, down, user selections, or character position and velocity information) to online game platform 402. After receiving the control instructions from client devices 410 and 416, online game platform 402 may send game instructions (e.g., position and velocity information or commands, such as rendering commands, collision commands, etc., for characters participating in the group game) to client devices 410 and 416 based on the control instructions. For example, online game platform 402 may perform one or more logical operations on the control instructions (e.g., using game engine 404) to generate play instructions for client devices 410 and 416. In other cases, online game platform 402 may pass one or more control instructions from one client device 410 to other client devices participating in game 406 (e.g., client device 416). Client devices 410 and 416 may use the play instructions and cause the play to be presented on the displays of client devices 410 and 416, including the camera views mentioned above.

[0067] In some embodiments, control instructions refer to instructions for in-game actions of a user character. For example, control instructions may include user input for controlling in-game actions, such as right, left, up, down, user selection, gyroscope position and direction data, force sensor data, etc. Control instructions may include character position and velocity information. In some embodiments, control instructions are sent directly to the online gaming platform 402. In other embodiments, control instructions may be sent from the client device 410 to another client device (e.g., client device 416), where the other client device generates play instructions using a local game engine application 420. Control instructions may include instructions to play a voice communication message or other sound from another user on an audio device (e.g., a speaker, headphones, etc.), such as a voice communication or other sound generated using audio spatialization technology as described herein.

[0068] In some implementations, play instructions may refer to instructions that allow the client device 110 to present gameplay of a game, such as a multiplayer game. The play instructions may include one or more of user input (e.g., control instructions), character position and velocity information, or commands (e.g., physics commands, animation commands, rendering commands, collision commands, etc.).

[0069] In some embodiments, client devices 410 or 416 may each include a computing device, such as a personal computer (PC), a mobile device (e.g., a laptop, mobile phone, smartphone, tablet computer, or netbook computer), a web-enabled television, a game console, or the like. In some embodiments, client devices 410 or 416 may also be referred to as "user devices." In some embodiments, one or more client devices 410 or 416 may be connected to online gaming platform 402 at any given moment. It should be noted that the number of client devices 410 or 416 mentioned is for illustration and not limitation. In some embodiments, any number of client devices 410 or 416 may be used.

[0070] In some embodiments, each client device 410 or 416 may include an instance of a gaming application 412 or 420, respectively. In one embodiment, the gaming application 412 or 420 may allow a user to use and interact with the online gaming platform 402, such as controlling an avatar in a virtual game hosted by the online gaming platform 402, or viewing or uploading content, such as the game 406, images, video projects, web pages, documents, etc. In one example, the gaming application may be a web application (e.g., an application operating in conjunction with a web browser) that can access, retrieve, present, or navigate content (e.g., avatars in a virtual environment, etc.) and is served by a web server. In another example, the gaming application may be a local application (e.g., a mobile application, an application, or a game program) that is installed and executed locally on the client device 410 or 416 and allows the user to interact with the online gaming platform 102. The gaming application may present, display, or render content (e.g., a web page, a media viewer) to the user. In one embodiment, the gaming application may also include an embedded media player (e.g., a Flash player) embedded in a web page.

[0071] According to various aspects of the present disclosure, the game application 412 / 420 can be an online game platform application for users to build, create, edit, upload content to the online game platform 402, and interact with the online game platform 402 (e.g., play a game 406 hosted by the online game platform 402). As such, the game application 412 / 420 can be provided by the online game platform 402 to the client device 410 or 416. In another example, the game application can be an application downloaded from a server.

[0072] In some implementations, a user can log into the online gaming platform 402 through a gaming application. The user can access a user account by providing user account information (e.g., a username and password), where the user account is associated with one or more characters that can be used to participate in one or more games 406 of the online gaming platform 402.

[0073] Generally speaking, functions described in one embodiment as being performed by the online gaming platform 402 may also be performed in other embodiments by the client device 410 or 416 or the server, as appropriate. Furthermore, functions attributed to a particular component may be performed by a different component or multiple components operating together. The online gaming platform 402 may also be accessed as a service provided to other systems or devices via an appropriate application programming interface (API) and is therefore not limited to use within a website.

[0074] Figure 5 is a flow chart of a method 500 for adjusting a camera view in an electronic game according to some embodiments. For simplicity, the various operations in the method 500 will be described in the context of operations performed by the gaming application 412. However, and as previously described with respect to Figure 4 As described, some operations may alternatively or additionally be performed in whole or in part by the game engine 404 at the game platform 402. The example method 500 may include one or more operations illustrated by one or more blocks, such as blocks 502 through 514. Various blocks of the method 500 and / or any other process described herein may be combined into fewer blocks, divided into additional blocks, supplemented with additional blocks, and / or eliminated based on the desired implementation.

[0075] Figure 5 The method 500 may be referred to herein as Figure 1A 、 Figure 1B 、 Figure 2A 、 Figure 2B and Figure 3 In one embodiment, the operations of method 500 may be performed in a pipelined sequential manner. In other embodiments, some operations may be performed out of order, in parallel, etc.

[0076] At block 502 ("Determine the direction and speed of travel of the avatar"), a user is playing a video game that includes moving a graphical object, such as the avatar 102, in a 3D world. The game application 412 identifies the speed (e.g., pixels per second) and direction (e.g., a particular direction along the coordinate system 300) of the avatar 102 in the 3D world. Block 502 may be followed by block 504.

[0077] At block 504 ("Identify Graphical Objects Along the Direction of Travel"), the game application 412 compares the direction of travel of the avatar 102 with the settings / property information of the electronic game to identify graphical objects arranged along the direction of travel. Figure 1A and Figure 3 The graphical object may be a tree trunk 120 or a wall 122 that has coordinates in the coordinate system 300 and is determined by the game application 412 to be arranged along the direction of travel of the avatar 102. Block 504 may be followed by block 506.

[0078] At block 506 ("Does the graphical object obscure the avatar by more than a threshold level?"), the gaming application 412 determines whether the graphical object obscures the avatar 102 in the current camera view, and if so, by how much. For example, the gaming application 412 may determine whether the avatar 102 will be obscured by the graphical object (e.g., Figure 1A and Figure 2A 102, so the graphical object will occlude the avatar 102 in the current camera view. If there is potential occlusion, the gaming application 412 determines the occlusion level by comparing the occlusion level to a threshold level.

[0079] For example, the threshold level can be a quantity threshold, such as in the example provided above where the threshold level is set to 50% occlusion (or some other threshold level). Occlusion less than 50% can be considered soft occlusion, while occlusion greater than 50% can be considered hard occlusion. The threshold that the game application 412 compares can also be a time threshold, such as whether the avatar's travel speed causes occlusion to occur only for a short duration or for a relatively long duration.

[0080] If, at block 506, the game application 412 determines that the threshold level will not be exceeded ("No" at block 506), the game application 412 does not adjust the camera view ("maintain the current camera view") at block 507. For example, the camera view does not move forward toward the avatar 102, thereby causing the graphical object to be removed from the camera view. Block 507 may be followed by block 502.

[0081] If, however, at block 506, the gaming application 412 determines that the threshold level will be exceeded ("yes" at block 506), the gaming application 412 adjusts the camera view at block 508 ("adjusting the camera view to avoid occlusion by moving the camera view forward toward the avatar"). For example, and Figure 2A As shown, the camera view is moved forward to a position between the wall 122 and the avatar 102 such that the wall 122 is removed from the camera view and the enlarged, non-obstructed avatar 102 is presented in the camera view. Block 508 may be followed by block 510.

[0082] At block 510 ("Still exceeds threshold level?"), the game application 412 determines whether the occlusion will still remain above the threshold if the camera view is moved back to the original position. For example, when the avatar 102 is still traveling behind the wall 122, the threshold will still be exceeded ("yes" at block 510) if the camera view is returned (moved back) to the previous camera view, and therefore the game application maintains the current camera view unchanged at block 512 ("maintain said current camera view"). In another example, the avatar 102 may pass by the wall 122 and immediately encounter another graphical object that may cause occlusion above the threshold (another "yes" at block 510). In this case, the game application 412 will continue to maintain the current camera view, thereby excluding the other graphical object from the camera view, rather than moving the camera view back away from the avatar 102. Block 512 may be followed by block 510.

[0083] If, however, at block 510, the threshold level for occlusion is no longer exceeded ("No" at block 510), the camera view can be adjusted again to move backward away from the avatar 102 at block 514 ("Return to the previous camera view by moving the camera view backward away from the avatar"). For example, the avatar 102 may now have passed the wall 122 and is traveling along a path that has no graphical objects or that has graphical objects but does not meet the threshold level of occlusion. In this case, the camera view can be returned to the previous position where the camera view did not move forward toward the avatar 102.

[0084] The method 500 then returns to block 502 to continue monitoring the direction and speed of travel of the avatar 102. The method 500 may repeat until the avatar 102 continues to move through the 3D world.

[0085] Figure 6 is a block diagram of an example computing device 600 that can be used to implement one or more features mentioned herein. Figure 4 The client devices 410 and 416 and / or the gaming platform 402 may be used Figure 6The computing device 600 is provided in the form of a computing device 600. In one example, the computing device 600 can be used to perform the methods described herein. The computing device 600 can be any suitable computer system, server, or other electronic or hardware device. For example, the computing device 600 can be a mainframe computer, a desktop computer, a workstation, a portable computer, or an electronic device (portable device, mobile device, mobile phone, smart phone, tablet computer, TV, TV set-top box, personal digital assistant (PDA), media player, gaming device, wearable device, etc.). In some embodiments, the device 600 includes a processor 602, a memory 606, an input / output (I / O) interface 606, and an audio / video input / output device 614.

[0086] Processor 602 can be one or more processors and / or processing circuits to execute program code and control the basic operations of computing device 600. A "processor" includes any suitable hardware and / or software system, mechanism, or component that processes data, signals, or other information. A processor can include a system having a general-purpose central processing unit (CPU), multiple processing units, dedicated circuits for implementing functions, or other systems. Processing does not have to be limited to a specific geographic location or have time constraints. For example, a processor can perform its functions in "real time," "offline," "batch mode," etc. Portions of a process can be performed by different (or the same) processing systems at different times and in different locations. A computer can be any processor in communication with a memory.

[0087] Memory 604 may be provided in computing device 600 for access by processor 602 and may be any suitable processor-readable storage medium, such as random access memory (RAM), read-only memory (ROM), electrically erasable read-only memory (EEPROM), flash memory, etc., suitable for storing instructions executed by the processor and separate from and / or integrated with processor 602. Memory 604 may store software executable by processor 602 on computing device 600, including an operating system 608, one or more applications 610, and their associated data 612. Application 610 may be used to embody gaming application 412 / 420 or gaming engine 404. In some implementations, application 610 may include instructions that, in response to being executed by processor 602, enable processor 602 to perform or control the execution of the operations described herein with respect to determining whether to adjust a camera view and then adjusting the camera view accordingly.

[0088] Any software in memory 604 may alternatively be stored in any other suitable storage location or computer-readable medium. In addition, memory 604 (and / or other connected storage devices) may store instructions and data used in the features described herein. Memory 604 and any other type of storage (disk, optical disk, tape, or other tangible medium) may be considered "storage" or "storage devices."

[0089] The I / O interface 606 can provide functionality that enables the computing device 600 to interface with other systems and devices. For example, network communication devices, storage devices, and input / output devices can communicate with the computing device 600 via the I / O interface 606. In some embodiments, the I / O interface 606 can be connected to input devices (keyboards, pointing devices, touch screens, microphones, cameras, scanners, etc.) and / or output devices (display devices, speaker devices, printers, motors, etc.), collectively referred to as at least one audio / video input / output device 614.

[0090] The audio / video input / output devices 614 may include an audio input device (e.g., a microphone, etc.) that can be used to receive audio messages as input, an audio output device (e.g., a speaker, headphones, etc.) and / or a display device that can be used to provide graphical and visual output such as the example camera views described above.

[0091] For ease of explanation, Figure 6 A block for each of processor 602, memory 604, I / O interface 606, application 610, etc. is shown. These blocks may represent one or more processors or processing circuits, operating systems, memories, I / O interfaces, application programs, and / or software modules. In other embodiments, device 600 may not have all of the components shown and / or may have other elements including other types of elements instead of or in addition to those shown herein.

[0092] The user device can also be implemented and / or used together with the features described herein. The example user device can be a computer device including some components similar to the computing device 600, such as a processor 602, a memory 604, and an I / O interface 606. An operating system, software, and application program applicable to the client device can be provided in the memory and used by the processor. The I / O interface of the client device can be connected to a network communication device, or to input and output devices, such as a microphone for capturing sound, a camera for capturing images or videos, an audio speaker device for outputting sound, a display device for outputting images or videos, or other output devices. For example, a display device in the audio / video input / output device 614 can be connected to (or included in) the device 600 to display pre-processed and post-processed images as described herein, wherein such a display device can include any suitable display device, such as an LCD, LED, or plasma display screen, a CRT, a television, a monitor, a touch screen, a 3D display screen, a projector, or other visual display devices. Some embodiments can provide an audio output device, such as a synthesized voice for voice output or reading text.

[0093] One or more methods described herein (e.g., method 500) can be implemented by computer program instructions or codes that can be executed on a computer. For example, the code can be implemented by one or more digital processors (e.g., microprocessors or other processing circuits) and can be stored on a computer program product comprising a non-transitory computer-readable medium (e.g., a storage medium), such as a magnetic, optical, electromagnetic, or semiconductor storage medium, including semiconductor or solid-state memory, tape, removable computer floppy disk, random access memory (RAM), read-only memory (ROM), flash memory, hard disk, optical disk, solid-state storage drive, etc. The program instructions can also be contained in an electronic signal and provided as an electronic signal, for example in the form of software as a service (SaaS) delivered from a server (e.g., a distributed system and / or cloud computing system). Alternatively, one or more methods can be implemented with hardware (logic gates, etc.) or a combination of hardware and software. Example hardware can be a programmable processor (e.g., a field programmable gate array (FPGA), a complex programmable logic device), a general-purpose processor, a graphics processor, an application-specific integrated circuit (ASIC), etc. One or more methods can be executed as part or component of an application running on a system, or as an application or software running with other applications and an operating system.

[0094] One or more of the methods described herein can be run in a standalone program that can run on any type of computing device, a program that runs on a web browser, or a mobile application ("app") that runs on a mobile computing device (e.g., a cell phone, smartphone, tablet, wearable device (watch, armband, jewelry, headwear, goggles, glasses, etc.), laptop, etc.). In one example, a client / server architecture can be used, for example, where a mobile computing device (as a client device) sends user input data to a server device and receives final output data from the server for output (e.g., for display). In another example, all computations can be performed within the mobile application (and / or other applications) on the mobile computing device. In another example, computations can be split between the mobile computing device and one or more server devices.

[0095] Although the description has been made with reference to specific embodiments thereof, these specific embodiments are merely illustrative and not restrictive. The concepts illustrated in the examples can be applied to other examples and implementations.

[0096] It should be noted that the functional blocks, operations, features, methods, devices, and systems described in this disclosure can be integrated or divided into different combinations of systems, devices, and functional blocks known to those skilled in the art. Any suitable programming language and programming technique can be used to implement the routines of specific implementations. Different programming techniques can be adopted, for example, process-oriented or object-oriented. The routines can be executed on a single processing device or multiple processors. Although steps, operations, or calculations can be presented in a specific order, the order can be adjusted in different specific embodiments. In some embodiments, multiple steps or operations shown as a sequence in this specification can be performed simultaneously.

Claims

1. A method for adjusting a camera view of a three-dimensional 3D world presented in a video game, characterized in that The method includes: determining a speed and a direction of travel of a first graphical object presented in the 3D world; identifying a second graphical object arranged along the direction of travel; determining whether the second graphical object occludes the first graphical object in a current camera view by at least a threshold level during travel of the first graphical object along the direction of travel; in response to determining that occlusion of the first graphical object from the second graphical object exceeds the threshold level, adjusting the current camera view of the first graphical object to avoid occlusion from the second graphical object by moving the camera view forward toward the first graphical object; and In response to determining that the occlusion from the second graphical object is less than the threshold level, maintaining the current camera view, wherein if the second graphical object is at least one semi-transparent graphical object and the first graphical object is visible in the current camera view through the at least one semi-transparent graphical object, then the occlusion from the second graphical object is determined to be less than the threshold level.

2. The method according to claim 1, characterized in that The first graphical object comprises an avatar associated with a player of the electronic game, wherein the speed and the direction of travel of the first graphical object are controlled by the player.

3. The method according to claim 1, characterized in that The threshold level is associated with an amount of the outline of the first graphical object that is occluded by the second graphical object.

4. The method according to claim 1, wherein The threshold level is associated with a duration associated with a speed of travel during which the outline of the first graphical object is occluded by the second graphical object.

5. The method according to claim 1, wherein Also includes: After moving the camera view forward toward the first graphical object to avoid occlusion from the second graphical object, moving the camera view backward away from the first graphical object in response to the first graphical object having passed the second graphical object along the direction of travel.

6. The method according to claim 1, characterized in that Also includes: Maintaining the camera view that has moved forward toward the first graphical object when the first graphical object is arranged behind the second graphical object or in response to identifying a third graphical object that is arranged immediately following the second graphical object along the direction of travel and that occludes the first graphical object by at least the threshold level.

7. A non-transitory computer-readable medium having instructions stored thereon, which, in response to execution by a processor, cause the processor to perform or control the execution of the following operations: determining a speed and a direction of travel of a first graphical object rendered in the 3D world; identifying a second graphical object arranged along the direction of travel; determining whether the second graphical object occludes the first graphical object in a current camera view by at least a threshold level during travel of the first graphical object along the direction of travel; in response to determining that occlusion of the first graphical object by the second graphical object exceeds the threshold level, adjusting the current camera view of the first graphical object to avoid occlusion from the second graphical object by moving the camera view forward toward the first graphical object; and In response to determining that the occlusion from the second graphical object is less than the threshold level, maintaining the current camera view, wherein if the second graphical object is at least one semi-transparent graphical object and the first graphical object is visible in the current camera view through the at least one semi-transparent graphical object, then the occlusion from the second graphical object is determined to be less than the threshold level.

8. The computer-readable storage medium according to claim 7, wherein: The first graphical object comprises an avatar associated with a player of an electronic game, wherein the speed and the direction of travel of the first graphical object are controlled by the player.

9. The computer-readable storage medium according to claim 7, wherein: The threshold level is associated with an amount of the outline of the first graphical object that is occluded by the second graphical object.

10. The computer-readable storage medium according to claim 7, wherein: The threshold level is associated with a duration associated with a speed of travel during which the outline of the first graphical object is occluded by the second graphical object.

11. The computer-readable storage medium according to claim 7, wherein: The operations further include: After moving the camera view forward toward the first graphical object to avoid occlusion from the second graphical object, moving the camera view backward away from the first graphical object in response to the first graphical object having passed the second graphical object along the direction of travel.

12. The computer-readable storage medium according to claim 7, wherein: The operations further include: Maintaining the camera view that has moved forward toward the first graphical object when the first graphical object is arranged behind the second graphical object or in response to identifying a third graphical object that is arranged immediately following the second graphical object along the direction of travel and that occludes the first graphical object by at least the threshold level.

13. A device, characterized in that: include: user interface; and a processor coupled to the user interface and to a memory storing a gaming application, the gaming application, in response to being executed by the processor, causing the processor to present a camera view of a 3D world of an electronic game to the user interface, wherein the gaming application is further executed by the processor to cause the processor to perform or control the execution of the following operations: determining a speed and a direction of travel of a first graphical object rendered in the 3D world; identifying a second graphical object arranged along the direction of travel; determining whether the second graphical object occludes the first graphical object in a current camera view by at least a threshold level during travel of the first graphical object along the direction of travel; in response to determining that occlusion of the first graphical object by the second graphical object exceeds the threshold level, adjusting the current camera view of the first graphical object to avoid occlusion from the second graphical object by moving the camera view forward toward the first graphical object; and In response to determining that the occlusion from the second graphical object is less than the threshold level, maintaining the current camera view, wherein if the second graphical object is at least one semi-transparent graphical object and the first graphical object is visible in the current camera view through the at least one semi-transparent graphical object, then the occlusion from the second graphical object is determined to be less than the threshold level.

14. The device according to claim 13, characterized in that The first graphical object comprises an avatar associated with a player of the electronic game, wherein the speed and the direction of travel of the first graphical object are controlled by the player.

15. The device according to claim 13, characterized in that The threshold level is associated with an amount of the outline of the first graphical object that is occluded by the second graphical object.

16. The device according to claim 13, characterized in that The threshold level is associated with a duration associated with a speed of travel during which the outline of the first graphical object is occluded by the second graphical object.

17. The device according to claim 13, characterized in that After moving the camera view forward toward the first graphical object to avoid occlusion from the second graphical object, the gaming application is further executed by the processor such that the processor performs or controls the execution of: The camera view is moved backwards away from the first graphical object in response to the first graphical object having passed the second graphical object along the direction of travel.

18. The device according to claim 13, characterized in that The gaming application is further executed by the processor so that the processor executes or controls the execution of: Maintaining the camera view that has moved forward toward the first graphical object when the first graphical object is arranged behind the second graphical object or in response to identifying a third graphical object that is arranged immediately following the second graphical object along the direction of travel and that occludes the first graphical object by at least the threshold level.

Citation Information

Patent Citations

  • Method and system for rendering an object in virtual view

    CN109964254A

  • Method and system for automated camera collision and composition preservation

    US20180276874A1