Patent Publication Number: US-11045732-B2

Title: Non-transitory computer readable storage medium storing image processing program, image processing method, and image processing device

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     The present application is based on and claims priority to Japanese Patent Application No. 2018-001355 filed on Jan. 9, 2018, the entire content of which is hereby incorporated herein by reference. 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present disclosure relates to a non-transitory computer readable storage medium storing an image processing program, an image processing method, and an image processing device. 
     2. Description of the Related Art 
     For a computer game or simulation, a technique has been known such that, using three-dimensional computer graphics, an object, such as a character operated by a user, is displayed, while the object is allowed to be moved in a virtual three-dimensional space. 
     In this technique, for example, a polygon surface is defined by position coordinates of a plurality of vertices and one normal vector. Using polygon data including data defining a plurality of polygon surfaces defined as described above, a landform is represented by the plurality of polygon surfaces finely partitioned. A method has been known in which a grounding position of an object is determined, so that a lowermost part of an object, such as a wheel or a leg, is placed on a polygon surface (see Patent Document 1 (Japanese Patent No. 4226663), for example). 
     A problem with the method described in Patent Document 1 is that use of a memory is required for reading polygon data, etc., for determining the grounding position, and that a processing cost of a processor increases. 
     There is need for a technique with which a lowermost position of an object in a surrounding environment can be relatively accurately determined in a virtual three-dimensional space, while reducing a processing load. 
     SUMMARY OF THE INVENTION 
     According to an aspect of the present disclosure, there is provided a non-transitory computer readable storage medium storing an image processing program, which when executed causing an image processing device to execute the following steps: receiving an operation for moving a position of a predetermined object in a virtual three-dimensional space; in response to determining that a height of a lowermost part of the predetermined object is less than a height of a surface of a predetermined three-dimensional object, configuring the predetermined object to be movable in a range with a height that is greater than or equal to a predetermined height corresponding to the position on a horizontal plane in the virtual three-dimensional space; and causing the predetermined object to be displayed on or above another object in the virtual three-dimensional space. 
     According to an embodiment, a technique can be provided with which a lowermost position of an object in a surrounding environment can be relatively accurately determined in a virtual three-dimensional space, while reducing a processing load. 
     Other objects, features and advantages of the present invention will become more apparent from the following detailed description when read in conjunction with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram illustrating an example of a hardware configuration of an image processing device according to an embodiment; 
         FIG. 2  is a diagram illustrating an example of functional blocks of the image processing device according to an embodiment; 
         FIG. 3  is a flowchart illustrating an example of a process of the image processing device; 
         FIG. 4A  is a diagram illustrating an example of a display screen of three-dimensional data in a game; 
         FIG. 4B  is a diagram illustrating an example of a display screen of three-dimensional data in a game; 
         FIG. 5A  is a diagram illustrating an example of collision determination data; 
         FIG. 5B  is a diagram illustrating an example of collision determination data; 
         FIG. 5C  is a diagram illustrating an example of collision determination data; 
         FIG. 6A  is a diagram illustrating an example of a height map; 
         FIG. 6B  is a diagram illustrating an example of a height map; 
         FIG. 7A  is a diagram illustrating an example of a display when a player character gets on an object, such as a building; and 
         FIG. 7B  is a diagram illustrating an example of a display when a player character gets on an object, such as a building. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     In the following, embodiments of the present disclosure are described based on the drawings. 
     &lt;Hardware Configuration&gt; 
       FIG. 1  is a diagram illustrating an example of a hardware configuration of an image processing device  10  according to an embodiment. The image processing device  10  illustrated in  FIG. 1  is provided with a drive device  100 ; an auxiliary storage device  102 ; a memory device  103 ; a central processing unit (CPU)  104 ; an interface device  105 ; a display device  106 ; an input device  107 , etc., which are mutually connected through a bus B. 
     A game program for implementing a process in the image processing device  10  is distributed by using a recording medium  101 . Upon detecting that the recording medium  101  storing a game program is attached to the drive device  100 , the image processing device  10  installs the game program into the auxiliary storage device  102  from the recording medium  101  through the drive device  100 . However, it is not required to perform installation of the game program using the recording medium  101 . For example, the game program may be downloaded from another computer through a network. The auxiliary storage device  102  stores the installed game program, and the auxiliary storage device  102  stores necessary files, data, etc. 
     In response to detecting a command for activating a program, the memory device  103  reads out the program from the auxiliary storage device  102 , and the memory device  103  stores the program in the memory device  103  itself. The CPU  104  implements a function of the image processing device  10  according to a program stored in the memory device  103 . The interface device  105  is used as an interface for connecting to a network. The display device  106  displays a graphical user interface (GUI), etc., of a program. The input device  107  is formed of a controller, a keyboard, a mouse, etc.; or a touch panel, a button, etc. The input device  107  is used for inputting various operation commands. 
     As examples of the recording medium  101 , there are portable recording media, such as a compact disk read-only memory (CD-ROM), a digital versatile disc (DVD), a Blue-ray disc, and a universal serial bus (USB) memory. As examples of the auxiliary storage device  102 , there are a hard disk drive (HDD), a solid state drive (SSD), a flash memory, etc. Each of the recording medium  101  and the auxiliary storage device  102  corresponds to a computer-readable recording medium. 
     &lt;Functional Configuration&gt; 
     Next, an example of a functional configuration of the image processing device  10  is described by referring to  FIG. 2 .  FIG. 2  is a functional block diagram of the image processing device  10  according to an embodiment. 
     The image processing device  10  includes a storage  11 . The storage  11  is implemented, for example, using the auxiliary storage device  102 , etc. The storage  11  stores three dimensional data  111 ; collision determination data  112 ; a height map  113 , etc. The three-dimensional data  111  is data of three-dimensional models of respective objects. The collision determination data  112  is data representing a surface of a three-dimensional object, which represents an approximate shape of an object in a virtual three-dimensional space. The height map  113  is data representing a height (a position in a vertical direction) corresponding to each position in a horizontal direction and a depth direction (horizontal plane) of an object provided with a top surface having a relatively complicated shape, among objects in the virtual three-dimensional space. Examples of the collision determination data  112  and the height map  113  are described below. 
     Additionally, the image processing device  10  is provided with a receiver  12 ; a determiner  13 ; a controller  14 ; and a display controller  15 . Each of these units is implemented by one or more programs installed in the image processing device  10  by causing the CPU  104  of the image processing device  10  to execute a process. 
     The receiver  12  receives, from a user, an operation for moving a player character in the virtual three-dimensional space, etc. 
     The determiner  13  determines whether a player character collides with collision determination data, which is described below, by an operation, etc., received by the receiver  12 . 
     Additionally, upon detecting that a player character collides with collision determination data and height data corresponding to a position of the player character on the horizontal plane is not defined in the height map  113 , the determiner  13  determines that a height of a lowermost part of the player character is a height of the collision detection data. Additionally, upon detecting that a player character collides with the collision determination data and height data corresponding to a position of the player character on the horizontal plane is defined in the height map  113 , the determiner  13  determines that a height of a lowermost part of the player character is the height defined in the height map  113 . 
     The controller  14  controls progression, etc., of a game. Additionally, in response to an operation, etc., received by the receiver  12 , the controller  14  configures a player character to be movable within a range with a height that is greater than or equal to the height determined by the determiner  13  in the virtual three-dimensional space. 
     The display controller  15  displays an image in a game on a screen in accordance with an indication from the controller  14 . 
     &lt;Process&gt; 
     Next, by referring to  FIG. 3  through  FIG. 7B , a process executed by the image processing device  10  is described.  FIG. 3  is a flowchart illustrating an example of a process executed by the image processing device  10 .  FIG. 4A  and  FIG. 4B  are diagrams illustrating examples of display screens of three-dimensional data in a game.  FIG. 5A ,  FIG. 5B , and  FIG. 5C  are diagrams illustrating examples of the collision determination data  112 .  FIG. 6A  and  FIG. 6B  are diagrams illustrating an example of the height map  113 .  FIG. 7A  and  FIG. 7B  are diagrams illustrating examples of displays when a player character gets on an object, such as a building. 
     In the following, an example of an open world game (sandbox, free roaming) is described. In an open world game, in response to movement of a player character operated by a user, the image processing device  10  reads three-dimensional data of a landform, a building, plants, etc., in a vicinity of the player character, and the image processing device  10  displays the three-dimensional data. As a result, a user can cause the player character to seamlessly move the player character in a relatively large world of a virtual three-dimensional space, without switching of a map, etc. 
     At step S 1 , in response to detecting that a game is activated by a user&#39;s operation, etc., the controller  14  reads data of the game into the memory device  103 . The data of the game includes, for example, a current position of a player character in a virtual three-dimensional space, three-dimensional data  111  of each object located within a predetermined range from the position, data for determining a collision that represents a surface of a predetermined three-dimensional object (the collision determination data  112 ), height map  113 , etc. Here, the objects include, for example, a landform, a building, plants, a character, etc. 
     Subsequently, the controller  14  causes the display controller  15  to display each object included in the read three-dimensional data to be displayed on a screen as three-dimensional computer graphics (step S 2 ). Here, an image, such as the image illustrated in  FIG. 4A  or the image illustrated in  FIG. 4B , is displayed by the display controller  15 . In the example of  FIG. 4A , a user character  401 A, an enemy character  402 A, a building  403 A, a watchtower  404 A, etc., are displayed. In the example of  FIG. 4B , a user character  401 B, an enemy character  402 B, a building  403 B, a tower  404 B, etc., are displayed. 
     Subsequently, the receiver  12  receives an operation for moving a player character from the user (step S 3 ). 
     Subsequently, in response to the user&#39;s operation, the controller  14  starts moving the player character in the virtual three-dimensional space (step S 4 ). Here, for example, in response to an operation, such as a jump operation by the user, the controller  14  causes the player character to jump and fall under virtual gravity in the virtual three-dimensional space, so that the player character gets on a step or a roof. Alternatively, in response to an operation, such as a walk operation by the user, the controller  14  causes the player character to walk, so that the player character moves to a step or a roof. 
     Here, in response to the movement of the position of the player character on the horizontal plane in the virtual three-dimensional space, the controller  14  reads, into the memory, data of an object located within a predetermined range from the position; data of the collision determination data  112  corresponding to the object; and data corresponding to positions within the predetermined range included in the height map  113 , which are included in the three-dimensional data  111 . For example, at a timing at which a current position of the player character on the horizontal plane is separated by a distance that is greater than or equal to a predetermined distance from a position on the horizontal plane represented by data that has been previously read, the controller  14  reads data that is not stored in the memory, among data items of a region within a predetermined range from the current position. As a result, the player character can seamlessly move around in the world of the virtual three-dimensional space, without switching of a map. 
     Subsequently, the determiner  13  determines whether the player character collides with collision determination data based on the collision determination data  112  (step S 5 ). The collision determination data  112  includes data of locations of vertexes of three-dimensional objects forming the collision determination data. For example, in the collision determination data  112 , data of three-dimensional objects including, at least, a part of each object located in the virtual three-dimensional space, such as a roof of a building, is configured in advance. Note that the collision determination data is data for determining a collision (mutual interference) between a player character and an object, which is used for determining whether the player character gets on an object, such as a building. Here, “collides with the collision determination data” implies that, for example, a lowermost position of an object, such as a foot of a player character, is located within a predetermined range with a height that is less than or equal to a height of the collision determination data. 
       FIG. 5A  depicts positional relation between a location of the foot of the player character  502 A and a location of collision determination data  501 A when the player character  502 A gets on a roof of the building  403 A of  FIG. 4A , and the location of the foot of the player character  502 A collides with the collision determination data  501 A that represents a position of a surface of a three-dimensional object, such as a cone, included in the collision determination data  112 . 
       FIG. 5B  depicts positional relation between a location of the foot of the player character  502 B and a location of collision determination data  501 B when the player character  502 B gets on a roof of the watchtower  404 A of  FIG. 4A , and the location of the foot of the player character  502 B collides with the collision determination data  501 B that represents a position of a surface of a three-dimensional object, such as a polyhedron (e.g., a square pole), included in the collision determination data  112 . 
       FIG. 5C  depicts positional relation between a location of the foot of the player character  502 C and a location of collision determination data  501 C when the player character  502 C gets on a roof of the tower  404 B of  FIG. 4B , and the location of the foot of the player character  502 C collides with the collision determination data  501 C that represents a position of a surface of a three-dimensional object, such as a polyhedron (e.g., a triangle pole), included in the collision determination data  112 . 
     If the player character does not collide with the collision determination data (NO at step S 5 ), the process proceeds to the process of step S 9 , which is described below. 
     If the player character collides with the collision determination data (YES at step S 5 ), the determiner  13  determines whether data of the height map  113  is configured for the current position of the player character in the virtual three-dimensional space (step S 6 ). 
     If data of the height map  113  is not configured for the current position of the player character in the virtual three-dimensional space (NO at step S 6 ), the determiner  13  sets the height of the lowermost position of the object (ground height, feet height) to the height of the lowermost position of the object. 
     If data of the height map  113  is configured for the current position of the player character in the virtual three-dimensional space (YES at step S 6 ), the determiner  13  sets the height of the lowermost position of the object to the height defined in the height map  113  for the current position of the player character in the virtual three-dimensional space (step S 8 ). Namely, for the current position of the player character in the virtual three-dimensional space, a lower limit value of a vertical range in which the player character (object) can be moved is set to the height defined in the height map  113 . 
       FIG. 6A  shows an example of the height map  113  of the roof of the building  403 A of  FIG. 4A .  FIG. 6B  shows an example of the height map  113  of the roof of a building  403 B of  FIG. 4B . In the example of  FIG. 6A  and the example of  FIG. 6B , a horizontal direction in the virtual three-dimensional space is indicated by an X-axis, and a depth direction in the virtual three-dimensional space is indicated by a Y-axis. As the value of the height, which is a position in a vertical direction in the virtual three-dimensional space, becomes greater, the display of the position becomes denser (i.e., the large height is indicated by denser dots in  FIG. 6A  and  FIG. 6B ). In the example of  FIG. 6A , the position  601 A is densely displayed because the height of the position  601 A of an ornament portion on the roof is relatively large. Similarly, in the example of  FIG. 6B , the position  601 B is densely displayed because the height of the position  601 B of an ornament portion of the roof is relatively large. 
     Subsequently, the controller  14  configures the player character to be movable in the virtual three-dimensional space within a range with a height that is greater than or equal to the height determined by the determiner  13 , and the controller  14  causes the display controller  15  to display the player character on the screen (step S 9 ). Here, when the player character is not moving, the controller  14  causes the display controller  15  to display the player character on the screen, so that the foot height of the player character matches the height determined by the determiner  13 . When the player character performs an action, such as jumping, the controller  14  causes the display controller  15  to display the player character on the screen, so that the player character jumps in accordance with the virtual gravity, while the foot height of the player character is within a vertical range that is greater than or equal to the height determined by the determiner  13 . 
       FIG. 7A  shows a position of the player character when the player character gets on the roof of the building  403 A of  FIG. 4A . In the example of  FIG. 7A , the player character is displayed, while the height of the roof of the building  403 A of  FIG. 4A , which has a slightly complicated shape, matches the foot height of the player character. 
       FIG. 7B  shows a position of the player character when the player character gets on the watchtower  404 A of  FIG. 4A . In the example of  FIG. 7B , the player character is displayed, while the height of the top surface of the watchtower  404 A of  FIG. 4A , which is a flat surface, matches the foot height of the player character. 
     Subsequently, the controller  14  determines whether to end the game based on a user&#39;s operation, etc. (step S 10 ). If it is determined not to end the game (NO at step S 10 ), the process proceeds to step S 3 . If it is determined to end the game (YES at step S 10 ), the process is terminated. 
     Effects 
     In an open world game in which a player character can freely move around a world in an extended virtual three-dimensional space, when the player character views a landscape of a neighborhood from a high position, large-scale video representation is possible. In this case, it is desirable to display, not only objects in a vicinity, such as buildings and trees, but also objects located far away as much as possible, from perspective of a realistic sensation. 
     Accordingly, for an open world game, a data amount of objects, etc., to be read into the memory is large, and a load on a process for displaying the objects, etc., is large, compared to a game, which is not an open world game, such that, after reaching an end of an individual space, the space is switched to another space. 
     There is an upper limit for a memory size and an upper limit for processing speed of the CPU, etc., which depend on the hardware performance of the game device. If the player character gets on an object, such as a building, and a determination of the foot height of the player character is made based on the calculation using a three-dimensional model of the object, such as that of related art, a processing load becomes relatively large. 
     Accordingly, in the related art, for example, for three-dimensional computer graphics with a relatively high processing load due to a large number of objects to be displayed, such as an open world game, it may be required to reduce the number of the objects to be displayed. 
     In contrast, according to the above-described embodiment, if a top surface of an object to be gotten on is a part of a surface of a polyhedron, a cone, or a column, by obtaining the height relatively easily using the collision determination data representing a surface of a three-dimensional object, the lowermost position of an object (e.g., a player character), i.e., a lower limit value of a vertical range in which the object can be moved, can be relatively accurately determined, while reducing a processing load on the memory and the processor. Additionally, if a top surface of an object to be gotten on has a complicated shape due to an ornament, such as roof tiles, that may not be represented by a surface of a polyhedron, by obtaining the height using a local height map corresponding to the position of the object, the lowermost position of an object, i.e., a lower limit value of a vertical range in which the object can be moved, can be relatively accurately determined, while reducing a processing load on the memory and the processor. 
     CONCLUSION 
     According to the above-described embodiments, if a height of a lowermost position of a predetermined object, such as a player character, is less than or equal to a height of a surface of a predetermined three-dimensional object, the predetermined object is configured to be movable in a range that is higher than or equal to a predetermined height defined in advance. As a result, the lowermost position of the object can be relatively accurately determined while reducing a processing load. 
     The embodiments of the present disclosure are described in detail above. However, the present invention is not limited to the specific embodiments, and various modifications and alterations may be made within the gist of the present invention described in the claims. 
     Each functional unit of the image processing device  10  may be implemented by cloud computing formed of, for example, at least one computer. Alternatively or additionally, the image processing device  10  may be a server for on-line games, which displays a game screen on a user&#39;s terminal. 
     In the above-described embodiments, the example of the open world game is described. However, examples to which the disclosed technique is applied is not limited to the open world game. For example, the disclosed technique can be applied to a case in which a predetermined object is placed on another object in a virtual three-dimensional space in three-dimensional computer graphics, such as a game other than the open world game, or a simulation.