Game program, game system, game processing method, and game device
The game program and system efficiently manage material changes of objects in a voxel space by updating voxel data based on density and material type, addressing the limitations of existing technologies in managing both mesh and material updates during gameplay.
Patent Information
- Application Number
- JP2024177784
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-10-10
- Publication Date
- 2025-08-01
- Estimated Expiration
- 2044-10-10
AI Technical Summary
Existing game technologies struggle to effectively manage material changes and control of objects in a virtual space using voxel data, particularly in scenarios requiring both mesh and material updates during gameplay.
A game program and system that updates voxel data to determine and change materials based on density and material type, using conditions such as light source shadows and contact with determination shapes, and employs shadow buffers and ray checking to optimize processing load and accuracy.
Enables dynamic material changes of objects in a voxel space during gameplay, improving processing efficiency and accuracy through reduced load and enhanced determination methods.
Smart Images

Figure 2025113149000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a game program, a game system, a game processing method, and a game device for generating an object in a virtual space using voxel data.
Background Art
[0002] Conventionally, objects have been managed using voxel data, and a mesh of an object has been generated in a virtual space based on the voxel data (see, for example, Non-Patent Document 1).
Prior Art Documents
Non-Patent Documents
[0003]
Non-Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] In a game using a mesh generated based on voxel updates, not only mesh control but also material control may be required.
[0005] Therefore, an object of the present invention is to provide a game program, a game system, a game processing method, and a game device that can realize a game using material changes of voxels in a predetermined voxel space based on judgments during the game.
Means for Solving the Problems
[0006] In order to achieve the above object, the present invention may adopt the following configurations (1) to (11), for example.
[0007] (1) One configuration example of the game program of the present invention is to cause a computer of an information processing apparatus to update, based on game processing, voxel data defined for each of a plurality of voxel spaces in a virtual space, the voxel data having at least a density indicating the degree to which the space defined by each voxel in the voxel space is virtually occupied by its content and a material indicating the type of the content, to determine a first mesh corresponding to the voxel data based on at least the density included in the voxel data for the vertex coordinates of the mesh, to generate or update the material of the first mesh based on at least the material included in the voxel data, to perform drawing of the first mesh based on the drawing setting information included in the material data including at least the texture information set for the material for each type of material, based on the drawing setting information of the material of the first mesh, and to update the first material to a second material among the materials included in the voxel data of the voxel space determined to satisfy the first condition, based on a first determination as to whether or not a first determination shape set in the virtual space for at least one of the voxel spaces is located in a range satisfying a first condition based on game processing.
[0008] According to the configuration of (1) above, when the first determination shape set for the voxel space satisfies the first condition, the material included in the voxel data of the voxel space is changed, so that a game using the material change of the voxels in a predetermined voxel space based on the determination during the game can be realized.
[0009] (2) In the configuration of (1) above, the first condition may be that it is not in the shadow of the first light source.
[0010] According to the configuration of (2) above, since the first determination shape does not enter the shadow of the first light source, the material included in the voxel data of the voxel space can be changed.
[0011] (3) In the configuration of (1) or (2) above, the computer may be caused to make the first determination based on a shadow buffer based on the first light source.
[0012] According to the configuration of (3) above, by using the shadow buffer, the processing load required for the first determination can be reduced.
[0013] (4) In any one of the configurations of (1) to (3) above, the computer may be caused to make the first determination based on the contact between a plurality of rays based on the first light source and the first determination shape.
[0014] According to the configuration of (4) above, by using ray checking, the first determination can be made more accurately.
[0015] (5) In any one of the configurations of (2) to (4) above, the first light source may be ambient light.
[0016] According to the configuration of (5) above, depending on whether it is located within the range illuminated by the ambient light or in the shadow, the material included in the voxel data of the voxel space can be changed.
[0017] (6) In the configuration of (1) above, the first condition may be to contact or be included in a second determination shape defined within the virtual space.
[0018] According to the configuration of (6) above, when the first determination shape is in contact with or included in the second determination shape defined in the virtual space, the material included in the voxel data of the voxel space can be changed.
[0019] (7) In the configuration of the above (6), the second determination shape may be set at a position corresponding to the position of the second light source arranged based on the game process.
[0020] According to the configuration of the above (7), based on the second determination shape set at the position corresponding to the position of the second light source, the material included in the voxel data of the voxel space can be changed.
[0021] (8) In the configuration of the above (6) or (7), the second determination shape may be at least one spherical shape centered on the position of the second light source.
[0022] According to the configuration of the above (8), based on the spherical shape with the position of the second light source as the reference, the material included in the voxel data of the voxel space can be changed.
[0023] (9) In any one of the configurations of the above (1) to (8), the computer may further update the second material to the first material among the materials included in the voxel data of the voxel space determined not to satisfy the first condition in the voxel space where the first determination shape is set.
[0024] According to the configuration of the above (9), when the first determination shape set for the voxel space changes from a state where it satisfies the first condition to a state where it does not satisfy the first condition, a change can be made to restore the material included in the voxel data of the voxel space to its original state.
[0025] (10) In any one of the configurations of the above (1) to (9), the computer may be made to perform a first determination based on whether a predetermined number or more of the plurality of feature points set in the first determination shape satisfy the first condition.
[0026] According to the configuration of the above (10), by using a plurality of feature points, the first determination can be easily performed.
[0027] (11) In the configuration of the above (10), the first determination shape may be a rectangular parallelepiped shape. In this case, the feature points may at least include at least 8 points of the corners of the rectangular parallelepiped.
[0028] According to the configuration of the above (11), by using the feature points of 8 corner points, the first determination can be efficiently performed.
[0029] Further, the present invention may also be implemented in the form of a game system, a game processing method, and a game device.
Effects of the Invention
[0030] According to the present invention, a game using the material change of voxels in a predetermined voxel space based on the determination during the game can be realized.
Brief Description of the Drawings
[0031]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38
[0032] [1. Configuration of the game system] Hereinafter, a game system according to an example of the present embodiment will be described. An example of the game system 1 in the present embodiment includes a main body device (information processing device; functioning as a game device main body in the present embodiment) 2, a left controller 3, and a right controller 4. The left controller 3 and the right controller 4 are each detachable from the main body device 2. That is, the game system 1 can be used as a device in which the left controller 3 and the right controller 4 are each attached to the main body device 2 and integrated. Further, the game system 1 can also use the main body device 2, the left controller 3, and the right controller 4 separately (see FIG. 2). Hereinafter, the hardware configuration of the game system 1 of the present embodiment will be described, and then the control of the game system 1 of the present embodiment will be described.
[0033] FIG. 1 is a diagram showing an example of a state in which the left controller 3 and the right controller 4 are attached to the main body device 2. As shown in FIG. 1, the left controller 3 and the right controller 4 are each attached to the main body device 2 and integrated. The main body device 2 is a device that executes various processes (for example, game processes) in the game system 1. The main body device 2 includes a display 12. The left controller 3 and the right controller 4 are devices provided with operation units for the user to input.
[0034] FIG. 2 is a diagram showing an example of a state in which the left controller 3 and the right controller 4 are each removed from the main body device 2. As shown in FIGS. 1 and 2, the left controller 3 and the right controller 4 are detachable from the main body device 2. In the following, the left controller 3 and the right controller 4 may be collectively referred to as "controller".
[0035] FIG. 3 is an orthographic view showing an example of the main body device 2. As shown in FIG. 3, the main body device 2 includes a substantially plate-shaped housing 11. In the present embodiment, the main surface of the housing 11 (in other words, the front surface, that is, the surface on which the display 12 is provided) is generally rectangular in shape.
[0036] Incidentally, the shape and size of the housing 11 are arbitrary. As an example, the housing 11 may be of a portable size. Also, the main body device 2 alone or the integrated device with the left controller 3 and the right controller 4 attached to the main body device 2 may be a portable device. Further, the main body device 2 or the integrated device may be a hand-held device. Also, the main body device 2 or the integrated device may be a transportable device.
[0037] As shown in FIG. 3, the main body device 2 includes a display 12 provided on the main surface of the housing 11. The display 12 displays an image generated by the main body device 2. In the present embodiment, the display 12 is a liquid crystal display (LCD). However, the display 12 may be any type of display device.
[0038] Also, the main body device 2 includes a touch panel 13 on the screen of the display 12. In the present embodiment, the touch panel 13 is of a type capable of multi-touch input (for example, a capacitance type). However, the touch panel 13 may be of any type, for example, a type capable of single-touch input (for example, a resistive film type).
[0039] The main body device 2 includes a speaker (that is, the speaker 88 shown in FIG. 6) inside the housing 11. As shown in FIG. 3, speaker holes 11a and 11b are formed in the main surface of the housing 11. Then, the output sound of the speaker 88 is output from these speaker holes 11a and 11b, respectively.
[0040] Also, the main body device 2 includes a left terminal 17 which is a terminal for the main body device 2 to perform wired communication with the left controller 3, and a right terminal 21 for the main body device 2 to perform wired communication with the right controller 4.
[0041] As shown in FIG. 3, the main body device 2 includes a slot 23. The slot 23 is provided on the upper surface of the housing 11. The slot 23 has a shape capable of mounting a storage medium of a predetermined type. The storage medium of the predetermined type is, for example, a storage medium dedicated to the game system 1 and information processing devices of the same type (e.g., a dedicated memory card). The storage medium of the predetermined type is used, for example, to store data (e.g., save data of an application, etc.) used in the main body device 2 and / or programs (e.g., application programs, etc.) executed by the main body device 2. Also, the main body device 2 includes a power button 28.
[0042] The main body device 2 includes a lower terminal 27. The lower terminal 27 is a terminal for the main body device 2 to communicate with the cradle. In the present embodiment, the lower terminal 27 is a USB connector (more specifically, a female connector). When the integrated device or the main body device 2 alone is placed on the cradle, the game system 1 can display an image generated and output by the main body device 2 on a stationary monitor. Also, in the present embodiment, the cradle has a function of charging the placed integrated device or the main body device 2 alone. Further, the cradle has a function of a hub device (specifically, a USB hub).
[0043] FIG. 4 is a six-sided view showing an example of the left controller 3. As shown in FIG. 4, the left controller 3 includes a housing 31. In the present embodiment, the housing 31 has a vertically long shape, that is, a shape long in the vertical direction (i.e., the y-axis direction shown in FIGS. 1 and 4). When the left controller 3 is separated from the main body device 2, it can also be held in a vertically long orientation. The housing 31 has a shape and size that can be held with one hand, particularly the left hand, when held in a vertically long orientation. Also, the left controller 3 can be held in a horizontally long orientation. When the left controller 3 is held in a horizontally long orientation, it may be held with both hands.
[0044] The left controller 3 is provided with an analog stick 32. As shown in FIG. 4, the analog stick 32 is provided on the main surface of the housing 31. The analog stick 32 can be used as a direction input unit capable of inputting directions. The user can input a direction according to the tilting direction (and an input of a magnitude according to the tilted angle) by tilting the analog stick 32. Note that the left controller 3 may be provided with a cross key or a slide stick capable of slide input instead of the analog stick as a direction input unit. Further, in the present embodiment, it is possible to input by pressing the analog stick 32.
[0045] The left controller 3 is provided with various operation buttons. The left controller 3 is provided with four operation buttons 33 to 36 (specifically, a right direction button 33, a downward direction button 34, an upward direction button 35, and a left direction button 36) on the main surface of the housing 31. Further, the left controller 3 is provided with a recording button 37 and a -(minus) button 47. The left controller 3 is provided with a first L button 38 and a ZL button 39 at the upper left of the side surface of the housing 31. Also, the left controller 3 is provided with a second L button 43 and a second R button 44 on the side surface of the housing 31 on the side where it is attached when attached to the main body device 2. These operation buttons are used to give instructions according to various programs (for example, an OS program or an application program) executed by the main body device 2.
[0046] In addition, the left controller 3 is provided with a terminal 42 for the left controller 3 to perform wired communication with the main body device 2.
[0047] FIG. 5 is a six-sided view showing an example of the right controller 4. As shown in FIG. 5, the right controller 4 includes a housing 51. In the present embodiment, the housing 51 has a vertically long shape, that is, a shape that is long in the vertical direction. The right controller 4 can also be held in a vertically long orientation when removed from the main body device 2. The housing 51 has a shape and size that can be held with one hand, particularly the right hand, when held in a vertically long orientation. Also, the right controller 4 can be held in a horizontally long orientation. When the right controller 4 is held in a horizontally long orientation, it may be held with both hands.
[0048] The right controller 4 includes an analog stick 52 as a direction input unit, similar to the left controller 3. In the present embodiment, the analog stick 52 has the same configuration as the analog stick 32 of the left controller 3. Also, instead of the analog stick, the right controller 4 may be provided with a cross key or a slide stick capable of slide input. Also, the right controller 4 includes four operation buttons 53 to 56 (specifically, an A button 53, a B button 54, an X button 55, and a Y button 56) on the main surface of the housing 51, similar to the left controller 3. Further, the right controller 4 includes a + (plus) button 57 and a home button 58. Also, the right controller 4 includes a first R button 60 and a ZR button 61 on the upper right side of the side surface of the housing 51. Also, the right controller 4 includes a second L button 65 and a second R button 66, similar to the left controller 3.
[0049] Also, the right controller 4 includes a terminal 64 for the right controller 4 to perform wired communication with the main body device 2.
[0050] FIG. 6 is a block diagram showing an example of the internal configuration of the main body device 2. The main body device 2 includes each of the components 81 to 91, 97, and 98 shown in FIG. 6 in addition to the configuration shown in FIG. 3. Some of these components 81 to 91, 97, and 98 may be mounted on an electronic circuit board as electronic components and housed in the housing 11.
[0051] The main body device 2 includes a processor 81. The processor 81 is an information processing unit that executes various information processes executed in the main body device 2. For example, it may be composed of only a CPU (Central Processing Unit), or it may be composed of a SoC (System-on-a-chip) including a plurality of functions such as a CPU function and a GPU (Graphics Processing Unit) function. The processor 81 executes various information processes by executing an information processing program (for example, a game program) stored in a storage unit (specifically, an internal storage medium such as a flash memory 84 or an external storage medium mounted on the slot 23).
[0052] As an example of an internal storage medium built in the main body device 2, the main body device 2 includes a flash memory 84 and a DRAM (Dynamic Random Access Memory) 85. The flash memory 84 and the DRAM 85 are connected to the processor 81. The flash memory 84 is mainly a memory used to store various data (which may be a program) stored in the main body device 2. The DRAM 85 is a memory used to temporarily store various data used in information processing.
[0053] The main body device 2 includes a slot interface (hereinafter abbreviated as "I / F") 91. The slot I / F 91 is connected to the processor 81. The slot I / F 91 is connected to the slot 23 and reads and writes data to and from a predetermined type of storage medium (for example, a dedicated memory card) mounted on the slot 23 according to an instruction from the processor 81.
[0054] The processor 81 appropriately reads and writes data between the flash memory 84 and the DRAM 85 and the respective storage media to execute the above-described information processes.
[0055] The main body device 2 includes a network communication unit 82. The network communication unit 82 is connected to the processor 81. The network communication unit 82 communicates (specifically, wirelessly) with an external device via a network. In the present embodiment, the network communication unit 82 connects to a wireless LAN and communicates with an external device by a method compliant with the Wi-Fi (registered trademark) standard as a first communication mode. Further, the network communication unit 82 performs wireless communication with other main body devices 2 of the same type by a predetermined communication method (for example, communication by a proprietary protocol or infrared communication) as a second communication mode. Note that the wireless communication by the second communication mode enables so-called "local communication" in which wireless communication is possible with other main body devices 2 arranged within a closed local network area, and data is transmitted and received by direct communication between a plurality of main body devices 2.
[0056] The main body device 2 includes a controller communication unit 83. The controller communication unit 83 is connected to the processor 81. The controller communication unit 83 performs wireless communication with the left controller 3 and / or the right controller 4. The communication method between the main body device 2 and the left controller 3 and the right controller 4 is arbitrary, but in the present embodiment, the controller communication unit 83 communicates with the left controller 3 and the right controller 4 in accordance with the Bluetooth (registered trademark) standard.
[0057] The processor 81 is connected to the above-described left terminal 17, right terminal 21, and lower terminal 27. When the processor 81 performs wired communication with the left controller 3, it transmits data to the left controller 3 via the left terminal 17 and receives operation data from the left controller 3 via the left terminal 17. Further, when the processor 81 performs wired communication with the right controller 4, it transmits data to the right controller 4 via the right terminal 21 and receives operation data from the right controller 4 via the right terminal 21. Also, when the processor 81 communicates with the cradle, it transmits data to the cradle via the lower terminal 27. Thus, in the present embodiment, the main body device 2 can perform both wired communication and wireless communication with the left controller 3 and the right controller 4, respectively. Further, when the left controller 3 and the right controller 4 are attached to the main body device 2 as an integrated device or when the main body device 2 alone is attached to the cradle, the main body device 2 can output data (for example, image data and audio data) to a stationary monitor or the like via the cradle.
[0058] Here, the main body device 2 can communicate with a plurality of left controllers 3 simultaneously (in other words, in parallel). Also, the main body device 2 can communicate with a plurality of right controllers 4 simultaneously (in other words, in parallel). Therefore, a plurality of users can simultaneously input to the main body device 2 using respective sets of the left controller 3 and the right controller 4. As an example, while a first user inputs to the main body device 2 using a first set of the left controller 3 and the right controller 4, it is possible for a second user to input to the main body device 2 using a second set of the left controller 3 and the right controller 4.
[0059] Also, the display 12 is connected to the processor 81. The processor 81 displays an image generated (for example, by executing the above-described information processing) and / or an image acquired from the outside on the display 12.
[0060] The main body device 2 includes a codec circuit 87 and speakers (specifically, a left speaker and a right speaker) 88. The codec circuit 87 is connected to the speakers 88 and the audio input / output terminal 25, and is also connected to the processor 81. The codec circuit 87 is a circuit that controls the input / output of audio data to / from the speakers 88 and the audio input / output terminal 25.
[0061] The main body device 2 includes a power control unit 97 and a battery 98. The power control unit 97 is connected to the battery 98 and the processor 81. Also, although not shown, the power control unit 97 is connected to each part of the main body device 2 (specifically, each part that receives power supply from the battery 98, the left terminal 17, and the right terminal 21). The power control unit 97 controls the power supply from the battery 98 to each of the above parts based on a command from the processor 81.
[0062] Also, the battery 98 is connected to the lower terminal 27. When an external charging device (for example, a cradle) is connected to the lower terminal 27 and power is supplied to the main body device 2 via the lower terminal 27, the supplied power is used to charge the battery 98.
[0063] FIG. 7 is a block diagram showing an example of the internal configuration of the main body device 2, the left controller 3, and the right controller 4. Note that the details of the internal configuration regarding the main body device 2 are shown in FIG. 6, so they are omitted in FIG. 7.
[0064] The left controller 3 includes a communication control unit 101 that communicates with the main body device 2. As shown in FIG. 7, the communication control unit 101 is connected to each component including the terminal 42. In the present embodiment, the communication control unit 101 can communicate with the main body device 2 both by wired communication via the terminal 42 and by wireless communication without using the terminal 42. The communication control unit 101 controls the communication method that the left controller 3 performs with respect to the main body device 2. That is, when the left controller 3 is attached to the main body device 2, the communication control unit 101 communicates with the main body device 2 via the terminal 42. Also, when the left controller 3 is removed from the main body device 2, the communication control unit 101 performs wireless communication with the main body device 2 (specifically, the controller communication unit 83). The wireless communication between the controller communication unit 83 and the communication control unit 101 is performed according to, for example, the Bluetooth (registered trademark) standard.
[0065] Further, the left controller 3 includes a memory 102 such as a flash memory. The communication control unit 101 is configured by, for example, a microcomputer (also referred to as a microprocessor), and executes various processes by executing the firmware stored in the memory 102.
[0066] The left controller 3 includes each button 103 (specifically, buttons 33 to 39, 43, 44, and 47). Also, the left controller 3 includes an analog stick (described as "stick" in FIG. 7) 32. Each button 103 and the analog stick 32 output information regarding the operation performed on themselves to the communication control unit 101 repeatedly at an appropriate timing.
[0067] The communication control unit 101 acquires information related to inputs (specifically, information related to operations or detection results by sensors) from each input unit (specifically, each button 103 and the analog stick 32). The communication control unit 101 transmits operation data including the acquired information (or information obtained by performing predetermined processing on the acquired information) to the main body device 2. Note that the operation data is repeatedly transmitted at a rate of once every predetermined time. Note that the intervals at which the information related to the inputs is transmitted to the main body device 2 may be the same or different for each input unit.
[0068] When the above operation data is transmitted to the main body device 2, the main body device 2 can obtain the inputs made to the left controller 3. That is, the main body device 2 can determine the operations on each button 103 and the analog stick 32 based on the operation data.
[0069] The left controller 3 includes a power supply unit 108. In the present embodiment, the power supply unit 108 has a battery and a power control circuit. Although not shown, the power control circuit is connected to the battery and is also connected to each part of the left controller 3 (specifically, each part that receives power supply from the battery).
[0070] As shown in FIG. 7, the right controller 4 includes a communication control unit 111 that communicates with the main body device 2. The right controller 4 also includes a memory 112 connected to the communication control unit 111. The communication control unit 111 is connected to each component including the terminal 64. The communication control unit 111 and the memory 112 have the same functions as the communication control unit 101 and the memory 102 of the left controller 3. Therefore, the communication control unit 111 can communicate with the main body device 2 both by wired communication via the terminal 64 and by wireless communication without using the terminal 64 (specifically, communication according to the Bluetooth (registered trademark) standard), and controls the communication method that the right controller 4 performs with the main body device 2.
[0071] The right controller 4 includes the same input units as each input unit of the left controller 3. Specifically, it includes each button 113 and the analog stick 52. These input units have the same functions as the input units of the left controller 3 and operate in the same manner.
[0072] The right controller 4 includes a power supply unit 118. The power supply unit 118 has the same function as the power supply unit 108 of the left controller 3 and operates in the same manner.
[0073] [2. Overview of Processing in the Game System] Next, with reference to FIGS. 8 to 24, an overview of the processing executed in the game system 1 will be described. In the present embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, player characters operated by the user) are arranged in a game space, which is a three-dimensional virtual space, and causes the display device to display the game image. In the present embodiment, the display device on which the game image is displayed may be the above-described display 12 or a stationary monitor.
[0074] [2-1. Voxels] In the present embodiment, for some objects in the game space, the shape is defined by voxel data. Here, a voxel is a rectangular parallelepiped (more specifically, a cube)-shaped region arranged in a grid pattern in the game space, and voxel data is data indicating information regarding each voxel. Hereinafter, an object whose shape is defined by voxel data will be referred to as a "voxel object". In the present embodiment, the game system 1 stores voxel data as data for generating voxel objects in the game space for a plurality of voxels set in the game space.
[0075] FIG. 8 is a diagram showing an example of a terrain object that is a voxel object. As shown in FIG. 8, in the present embodiment, a terrain object representing a terrain such as the ground is defined in shape by voxel data (that is, it is a voxel object). Each cube shown in FIG. 8 represents a terrain object. In FIG. 8, the portions that are the sides of the terrain object are shown in thick lines, but this thick line is added for the purpose of making the drawing easier to view, and in reality, it is not necessary for the sides of the terrain object to be shown thickly.
[0076] The terrain object shown in FIG. 8 is generated, for example, according to the rule that "when the parameter included in the voxel data set in the voxel is greater than a predetermined value, a cube is placed at the position of the voxel, and when it is less than or equal to the predetermined value, nothing is placed at the position of the voxel". The terrain object shown in FIG. 8 is shown for the purpose of clearly exemplifying the relationship between the voxel and the voxel object. In the present embodiment, in reality, for example, like the terrain object shown in FIG. 13 described later, a voxel object is generated according to a rule that results in a complex shape (based on voxel data). Note that the rule for determining the shape of the voxel object based on the voxel data is arbitrary. In other embodiments, the game system 1 may generate a voxel object as shown in FIG. 8 or a voxel object as shown in FIG. 13 based on the object data.
[0077] Regarding the voxel object, the shape can be changed by changing the voxel data of each voxel. FIGS. 9 and 10 are diagrams showing an example of the state before and after a part of the terrain object shown in FIG. 8 is deleted. That is, when the hatched portion of the terrain object shown in FIG. 9 is destroyed, the terrain object changes to the shape shown in FIG. 10. At this time, the game system 1 can easily erase the terrain object by rewriting the voxel data described later so as to indicate that there is no terrain object for the voxels in the hatched portion. Note that when the game system 1 adds a terrain object, it can also easily change the shape of the terrain object by changing the voxel data of each voxel, in the same manner as when erasing the terrain object.
[0078] In this way, the game system 1 can freely change the shape of the voxel object by rewriting the voxel data. For example, when the shape of a terrain object is changed as a result of being destroyed for some reason (e.g., a player character strikes the terrain object) in the game, the game system 1 does not directly change the data indicating the outer shape of the terrain object (i.e., the mesh described later), but can freely change the shape of the terrain object by changing the voxel data used for generating the terrain object.
[0079] In this embodiment, it is assumed that voxels are defined throughout the game space (that is, the voxel space in which voxels are set corresponds to the entire game space). However, the voxel space does not necessarily have to be set throughout the game space and may be set in a partial region of the game space. When the voxel space is set in a partial region of the game space, the shape of the voxel object is defined by the voxel data regarding the voxels in the voxel space, and the position of the voxel object in the game space is defined by the position of the voxel space in the game space. Also, a plurality of voxel spaces may be set in the game space, and a main voxel space set throughout the game space and a sub-voxel space set in a partial region of the game space may be set. At this time, the game system 1 stores voxel data for each voxel space.
[0080] FIG. 11 is a diagram showing an example of voxel data. The voxel data includes density data, a first material ID, a second material ID, material mixing ratio data, and state data for each voxel defined in the game space. In the voxel data in this embodiment, these data are set for each voxel.
[0081] The density data indicates the density, which is an index used to define the shape of the voxel object based on the voxel (specifically, the shape defined by a mesh described later). Although details will be described later, the position and shape of the surface of the voxel object (that is, the mesh described later) are determined based on the above density.
[0082] In this embodiment, the density can take an integer value in the range from a lower limit value (for example, 0) to an upper limit value (for example, 255). In this embodiment, in the game system 1, when the value of the density set for a voxel is high, the ratio of the volume occupied by the region within the voxel object in the voxel tends to be large, and when the value of the density is low, the ratio tends to be small. Based on the density, the surface shape of the voxel object is determined. In this way, the density is an index that affects the ratio of the volume occupied by the region within the voxel object in the voxel. It can also be said that the density is an index indicating the degree to which the space of the voxel is virtually occupied by the content (that is, the virtual content of the voxel object). For example, when the density is 0, the inside of the voxel is empty, when the density is 255, all of the inside of the voxel is the content of the voxel object, and when the density is a value between 0 and 255, the inside of the voxel can be occupied by the content of the voxel object at a ratio corresponding to the value. Then, based on the above density, the shape of the mesh, that is, the surface shape of the voxel object can be determined. The mesh can be said to be the surface of the part where the content exists in the voxel, or can also be said to be the boundary between the part where the content exists and the part where it does not exist in the voxel. Note that the volume occupied by the region within the voxel object generated based on the above density does not necessarily have to be exactly the volume corresponding to the ratio indicated by the density. For example, in the method of generating a voxel object as shown in FIG. 8 and the method of generating a voxel object as shown in FIG. 13, even if based on the same density, the volume of the voxel object may be different.
[0083] In other embodiments, the density may indicate either a state in which the volume occupied by the region within the voxel object occupies the entire region within the voxel or a state in which the volume occupied by the region within the voxel object is not included in the region within the voxel. For example, the density data may be data that can only take 0 or 1.
[0084] The first material ID and the second material ID are information indicating the material (in other words, substance) of the voxel. Here, in the present embodiment, materials such as sand, rock, or soil are set for the voxel. Note that in the game system 1, a plurality of types of materials are prepared as materials that can be set for the voxel (refer to the material data shown in FIG. 12). In the present embodiment, up to two materials out of the plurality of types of prepared materials can be set for one voxel. The first material ID is an ID indicating the first material set for the voxel, and the second material ID is an ID indicating the second material set for the voxel. Although details will be described later, the material of the voxel object (that is, the material set for the polygon of the voxel object) is determined based on the material set for the voxel.
[0085] As described above, in the present embodiment, the voxel data includes an ID indicating the material. However, in other embodiments, the voxel data may be a data structure including data directly indicating the content of the material (that is, the name, properties, and drawing setting information described later).
[0086] The material mixing ratio data is an example of data indicating the ratio of each material in the voxel. In the present embodiment, since the number of material IDs set for one voxel is up to two, the material mixing ratio data indicating the ratio of one of the materials indicated by the first material ID and the material indicated by the second material ID can also represent the other ratio. In the present embodiment, the material mixing ratio is a value indicating the ratio of the second material to the whole composed of the first material and the second material by a value of 0 or more and 1 or less. For example, when the material mixing ratio set for a certain voxel is 0.4, it represents that in the voxel, the first material and the second material are composed in a ratio of 0.6:0.4. Although details will be described later, the appearance and properties of the voxel object are determined based on the material. The material mixing ratio is used to determine the appearance and properties of the voxel object. In other embodiments, the material mixing ratio may be a value indicating the ratio of the first material. Also, the ratio of the materials in the voxel may be represented by respective values indicating the ratio of each material. In particular, in other embodiments, when three or more materials can be set instead of up to two types of materials, the ratio of the materials in the voxel is represented as a plurality of values respectively indicating the ratio of each material.
[0087] Note that in the present embodiment, it is not always necessary to set two types of materials for the voxel, and one type of material may be set. For example, when one type of material is set for a certain voxel, the first material ID indicates the material, and the material mixing ratio is set to 0.
[0088] The state data indicates the state set for the voxel. The specific content and number of types of the state data are arbitrary. In the present embodiment, the state data includes data indicating the amount of damage set for the voxel. Note that in other embodiments, the state data may include, for example, data indicating whether the voxel is in a wet state (and the degree thereof).
[0089] As described above, in this embodiment, since the voxel data includes the material ID, the game system 1 stores material data that defines the content of the material indicated by the material ID. FIG. 12 is a diagram showing an example of the material data. As shown in FIG. 12, in the material data in this embodiment, for each material, a material ID, a name, properties, and drawing setting information set for the material are associated with each other.
[0090] The name included in the material data is the name set for the material (for example, soil, sand, grass, etc.). During the game, the name of the material of the voxel object may be displayed. In order to perform such display, the material data includes information on the name of the material.
[0091] The properties included in the material data are the properties set for the material. The properties of the material are the properties that the voxel object to which the material is set has in the game. Note that the specific content and number of types of the properties of the material are arbitrary. For example, at least any of the following information may be set as the properties of the material. · Hardness · Weight · Slipperiness · Damage setting when the player character comes into contact · Temperature · Whether another object can adhere to the voxel object · Amount of recovery of the player character's physical strength when the player character destroys or acquires the voxel object · Amount of in-game currency that the player character acquires when the player character destroys or acquires the voxel object In other embodiments, information different from the above may be set as the information indicating the properties of the material.
[0092] In this embodiment, as information specifying the properties of a material, the material data includes an ID indicating the property (see FIG. 12). Although not shown, the game system 1 stores property information in which, for each prepared property, the content of the property (for example, a value indicating the above-described weight or slipperiness) is associated with the property ID. By referring to the above property information, the game system 1 can specify the specific content of the property set for the material.
[0093] The rendering settings included in the material data are information indicating settings related to rendering, such as the texture used for rendering the voxel object to which the material is set. In this embodiment, as information on the rendering settings, the material data includes the ID of the texture used for rendering the voxel object to which the material is set (see FIG. 12). Although not shown, the game system 1 stores texture information in which, for each prepared texture, the texture ID and the texture indicated by the texture ID are associated. By referring to the above texture information, the game system 1 can specify the specific content of the texture set for the material. In other embodiments, as information on the rendering settings, in addition to the texture information, any information related to the shading settings may be set. For example, the reflectivity, information related to the normal, etc. may be set.
[0094] Also, the material data may include other data than the data shown in FIG. 12. For example, the material data may include data related to sound settings. For example, the data related to sound settings may be data that defines the footstep sound output when the player character walks on the voxel object based on the voxel.
[0095] Note that the material data may be data in any format that can identify the properties of the material and / or the rendering settings. For example, in other embodiments, the material data may have a data structure that includes data directly indicating the properties of the material and / or the rendering settings, instead of a data structure that includes a material ID and a texture ID.
[0096] [2-2. Update of Voxel Data] During the game, the voxel data described above is updated, causing the voxel object to deform. In this embodiment, when a game event (hereinafter referred to as an "update event") for updating the voxel object occurs, the game system 1 updates the voxel data. The specific content of the update event is arbitrary. The update event may be, for example, that a character appearing in the game performs an action to deform the voxel object (e.g., the player character punches the voxel object), or an event that deforms the voxel object occurs (e.g., an object thrown by a character contacts the voxel object, or a bomb explodes).
[0097] FIG. 13 is a diagram showing an example of the game space when an update event occurs. The situation shown in FIG. 13 is a situation where the player character 201 performs a punch action on the terrain object 202, which is a voxel object. Although details will be described later, in the example shown in FIG. 13, the voxel data is updated so that the terrain object 202 around the position hit by the punch action of the player character 202 is deleted. As a result, the state where the terrain object 202 is destroyed by the punch action of the player character 202 is expressed.
[0098] In this embodiment, when an update event occurs, the game system 1 sets an update range (update range 203 shown in FIG. 13) for updating the voxel object in the game space. The position, shape, and size of the update range are arbitrary. The position of the update range may be determined based on, for example, the position where an object related to the generated update event (e.g., a player character who performed a punch) contacts the voxel object. In the example shown in FIG. 13, the position of the update range 203 may be determined based on the position where the punch by the player character 201 hits, and for example, the hit position or the position a predetermined distance forward from the hit position may be the center position of the update range 203. The shape and size of the update range may be determined in advance to be a shape corresponding to the type of the update event. For example, when an update event due to the punch of the player character 201 occurs, the shape and size of the update range may be determined as a sphere with a predetermined size as shown in FIG. 13. Also, the size of the update range may be determined according to a value indicating the degree of influence of the generated update event (e.g., the strength of the punch or the size of the explosion).
[0099] The game system 1 changes the density for the voxels corresponding to the set update range. Note that the voxels corresponding to the update range are, for example, the voxels within the update range or the voxels overlapping with the update range. As a result of the change in density, the mesh of the voxel object is changed by the process described later, and thus the shape of the voxel object (the visible shape and the shape used for collision determination) is changed. Note that in other embodiments, in addition to changing the density for the voxels included in the update range, the game system 1 may change the material (i.e., the first material, the second material, and the material mixing ratio) in the voxels or change the state in the voxels.
[0100] In this embodiment, the game system 1 determines whether a voxel is included in the update range using an SDF (Signed Distance Field). The game system 1 sets an SDF indicating the update range set in the game space, and makes the above determination based on the value of the SDF. The SDF represents, with a sign, the distance from a defined shape for any position. FIG. 14 is a diagram showing an example of the update range. In the example shown in FIG. 14, a spherical update range is set in the game space. For example, in the example shown in FIG. 14, among the positions in the game space, the SDF value becomes negative for the positions inside the shape represented by the SDF, and the SDF value becomes positive for the positions outside the shape represented by the SDF. In this example, it is possible to determine whether it is included in the update range depending on whether the SDF value is positive or negative. Also, by using the value of the signed distance, not only simple inside / outside determination but also processes such as correction and interpolation can be performed.
[0101] In the above, an example in which a change is added to the voxel object such that the voxel object within the update range is deformed as if it were erased has been described, but the changes added to the voxel object using the update range are not limited to this. For example, a change in which a voxel object is newly added within the update range (that is, the volume occupied by the region within the voxel object increases by the amount of the update range) may be added to the voxel object. Also, a change may be added to the voxel object such that only the material of the voxels within the update range changes without changing the density of the voxels. Further, a change combining a change in the density of the voxels and a change in the material may be added.
[0102] [2-3. Calculation of Vertices] When the density of the voxels is updated as described above, the game system 1 sets vertices based on the updated voxel data. The above vertices can be the vertices of the mesh of the voxel object. Although details will be described later, in this embodiment, the above vertices are simplified, and the simplified vertices become the vertices of the mesh of the voxel object.
[0103] FIG. 15 is a diagram showing an example of a method for setting vertices. In FIGS. 15 to 24 described below, for the purpose of making the drawings easier to view and the explanations easier to understand, voxels, vertices, meshes, etc. are represented two-dimensionally, but in reality, vertices and meshes are set in a three-dimensional space based on voxels in the three-dimensional space. In this embodiment, the game system 1 uses a method of setting vertices at coordinates based on the positions and densities of a plurality of surrounding voxels for a portion where a voxel having a density of a setting indicating its existence (that is, a density equal to or higher than a reference value described later) and a voxel having a density of a setting indicating its non-existence (that is, a density less than the reference value described later) are adjacent. Details of this method will be described below.
[0104] As described above, in the present embodiment, the density set for each voxel is set in the range of 0 to 255. A voxel with a density of 0 is completely in the air, and a voxel with a density of 255 represents a state where the interior is completely filled. Densities between 0 and 255 are treated interpolatively and used for vertex determination. In the present embodiment, voxels with a density greater than or equal to a reference value are virtually treated as being inside the object, and voxels with a density less than the reference value are treated as being outside the object. It can also be said that voxels with a density greater than or equal to the reference value are virtually treated as voxels indicating their existence, and voxels with a density less than the reference value are virtually treated as voxels indicating their non-existence. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., set the reference value = 1), and the reference value can be, for example, 128. In the example shown in FIG. 15, the density is 0 in voxel 211 and other outer voxels, 100 in voxel 212 where the density is less than the reference value, and 150 and 210 in voxels 213 and 214 where the density is greater than or equal to the reference value. In the present embodiment, the game system 1 generates vertices between voxels with a density greater than or equal to the reference value and voxels with a density less than the reference value. Specifically, for each region spanning eight (four in the drawing) adjacent voxels (the region surrounded by the dotted line in the drawing), a determination is made as to whether to generate a vertex. That is, a vertex is generated in a region spanning both voxels with a density greater than or equal to the reference value and voxels with a density less than the reference value. The coordinates of the vertex are determined by comparing the densities of adjacent voxels for each of the X, Y, and Z axes and performing interpolation based on the density difference. By setting normal information that defines the position and orientation of the straight line connecting the vertices, the coordinates of the vertex can be further calculated based on the normal information. The normal information may be retained in advance for at least some of the voxels, or if not retained, the normal information may also be calculated based on the densities of adjacent voxels. In FIG. 15, since the density of voxel 212 is less than the reference value, voxel 212 is treated as being outside the object in the determination of the presence or absence of vertices, but the density value of voxel 212 itself is used for the calculation of the coordinates of the generated vertices.If the reference value is set to a value lower than the density of voxel 212, the result is that more vertices will be added to the upper right and upper left sides of voxel 212 in FIG. 15.
[0105] By setting the vertices as described above, when generating a mesh that connects each of the set vertices (or each vertex after performing the simplification process described later on each of the set vertices), it is possible to generate a shape having a volume that reflects the density of each voxel to a certain extent. However, depending on the relationship with adjacent voxels, it may be the case that a voxel with a density of 0 includes a region within a part of the object, or a voxel with a density of 255 includes a region outside a part of the object. Also, in this embodiment, since voxels with a value less than the reference value are processed as outside the object, the volume is smaller by the amount that the number of vertices is less compared to the case of processing as inside the object. Thus, it is not necessary to calculate the polygon mesh so as to have a volume that exactly corresponds to the density value.
[0106] [2-4. Determination of Vertex Material] The game system 1 determines the material for each of the vertices set as described above. The material of a vertex is determined based on the materials of the voxels around the vertex. The voxels around the vertex are, for example, the voxels used for determining whether or not to generate the vertex (that is, the voxels that overlap with the "region spanning voxels" described above). Note that in other embodiments, the voxels used for determining the material of the vertex do not have to be the same as the voxels used for determining the generation of the vertex, and they may be different.
[0107] FIG. 16 is a diagram showing an example of a method for determining the material of a vertex. In the example shown in FIG. 16, it is assumed that a vertex 219 is set for four voxels 215 to 218, and the four voxels 215 to 218 are the above-mentioned "voxels around the vertex". In the actual three-dimensional space, the number of voxels around the vertex is eight. Also, in the example shown in FIG. 16, for voxel 215, the density is set to 255, the first material is "sand", and the material mixing ratio is 0 (that is, the first material: the second material = 1:0, or the second material may not be set). For voxel 216, the density is set to 0 (the first and second materials may not be set). For voxel 217, the density is set to 204, the first material is "sand", the second material is "grass", and the material mixing ratio is 0.3 (that is, the first material: the second material = 0.7:0.3). For voxel 218, the density is set to 153, the first material is "soil", the second material is "grass", and the material mixing ratio is 0.4 (that is, the first material: the second material = 0.6:0.4). Also, it is assumed that the coordinates indicating the position of vertex 219 are (X, Y) = (0.8, 0.6). Note that the coordinate system of these coordinates has the left-right direction in FIG. 16 as the X coordinate, the up-down direction as the Y coordinate, and the center position of the lower-left voxel 217 among the center positions of voxels 215 to 218 (the position of the white circle shown in FIG. 13) as (0, 0).
[0108] When determining the material of the vertex, the game system 1 calculates an evaluation value for each material in the surrounding voxels based on the density of the material and the weight value based on the distance from the voxel to the vertex. First, the weight value is calculated for each voxel, and is calculated so that it becomes larger as the distance from the center position of the voxel to the vertex is closer. In the present embodiment, when the center position of the voxel is (x1, y1) and the coordinates of the vertex are (x2, y2), the weight value for a certain voxel is calculated according to the following formula (1). (Weight value) = |(1 - x1) - x2|·|(1 - y1) - y2|…(1) In the example shown in FIG. 16, the weight values of each of the voxels 215 to 218 calculated according to the above formula (1) are as follows. (Weight value of voxel 215)=|(1 - 0)-0.8|·|(1 - 1)-0.6| = 0.12 (Weight value of voxel 216)=|(1 - 1)-0.8|·|(1 - 1)-0.6| = 0.48 (Weight value of voxel 217)=|(1 - 0)-0.8|·|(1 - 0)-0.6| = 0.08 (Weight value of voxel 218)=|(1 - 1)-0.8|·|(1 - 0)-0.6| = 0.32
[0109] Also, the game system 1 calculates the density of the material for each voxel. Here, the density of the material is a value obtained by multiplying the ratio occupied by the material among the materials set in the voxel by the density of the voxel. In the present embodiment, as the density of the voxel, a value obtained by normalizing the above-described values from 0 to 255 to values from 0 to 1 is used. In the example shown in FIG. 16, for voxel 215, since the only material set is sand, the above ratio regarding the sand material is 1, and since the density of the voxel is 1, the density of the sand material is 1. For voxel 216, since the density is 0 and no material is set, the density of the material is not calculated. Or, if some material is set, the density of the material is 0. For voxel 217, the above ratios of the set sand material and grass material are 0.7 and 0.3, respectively, and since the density of the voxel is 204 / 255 = 0.8, the density of the sand material is 0.7·0.8 = 0.56, and the density of the grass material is 0.3·0.8 = 0.24. For voxel 218, the above ratios of the set soil material and grass material are 0.6 and 0.4, respectively, and since the density of the voxel is 153 / 255 = 0.6, the density of the soil material is 0.6·0.6 = 0.36, and the density of the soil material is 0.4·0.6 = 0.24.
[0110] Then, based on the above weight value and the density of the material, the game system 1 calculates the above evaluation value for each material. In the present embodiment, the evaluation value of the material is a value obtained by attaching a weight according to the weight value for each voxel to the density of the material calculated for each voxel and summing for each surrounding voxel. In the example shown in FIG. 16, for the evaluation value of the sand material, the density of the material for voxel 215 is 1 and the weight value is 0.12, and the density of the material for voxel 217 is 0.56 and the weight value is 0.08. Therefore, 1·0.12 + 0.56·0.08 = 0.1648. Also, for the evaluation value of the grass material, the density of the material for voxel 217 is 0.24 and the weight value is 0.08, and the density of the material for voxel 218 is 0.24 and the weight value is 0.32. Therefore, 0.24·0.08 + 0.24·0.32 = 0.096. Also, for the evaluation value of the soil material, the density of the material for voxel 218 is 0.36 and the weight value is 0.32. Therefore, 0.36·0.32 = 0.1152.
[0111] The game system 1 determines the vertex materials based on the evaluation values for each material. Specifically, a predetermined number of materials are determined as the vertex materials in descending order of the evaluation values. In this embodiment, two materials with large evaluation values are determined as the vertex materials. In the example shown in FIG. 16, since the evaluation values of the materials of sand, grass, and soil are 0.1648, 0.096, and 0.1152 respectively, the vertex materials are determined as the sand material and the soil material. Also, the game system 1 calculates the ratio of the two determined materials based on the above evaluation values. In this embodiment, the ratio of the two materials may be expressed as a second material ratio, which is the ratio of the second material to the whole, similar to the above material mixing ratio. In the example shown in FIG. 16, for example, when the first material is the soil material and the second material is set as the sand material, the above second material ratio is shown as 0.1648 / (0.1648 + 0.1152) ≈ 0.59. Note that in other embodiments, as the value representing the ratio of the two materials, a value indicating the ratio of the first material may be used. Also, respective values indicating the ratio of each material may be used.
[0112] In this embodiment, the game system 1 generates and stores vertex data indicating the position of the vertex, the material IDs of the first and second materials set for the vertex, and the ratio of the materials. However, the method of managing the materials set for the vertex is arbitrary. In other embodiments, the vertex data may be a data structure including data directly indicating the contents of the first and second materials.
[0113] As described above, in the present embodiment, for each vertex, the game system 1 calculates, based on the voxel data of a plurality of surrounding voxels, a priority parameter (for example, an evaluation value) for each material ID included in the voxel data of the surrounding voxels for each vertex. Then, based on the priority parameter, up to a predetermined number (here, two) of material IDs with high priority are selected and determined as the material ID of the vertex. Note that the specific parameter used as the priority parameter is not limited to the above evaluation value. For example, in other embodiments, an evaluation value calculated using the density of the material instead of the above weight value may be used as the priority parameter.
[0114] In the present embodiment, an evaluation value, which is an example of the priority parameter, is calculated based on the densities of a plurality of voxels around the vertex so that the priority of the material set in the voxel with a higher density becomes higher (that is, the evaluation value of the material becomes larger and the material is more likely to be selected). According to this, the material of the vertex can be determined by reflecting the magnitude of the density set in the voxel.
[0115] Also, in the present embodiment, an evaluation value, which is an example of the priority parameter, is calculated based on the distance from the reference position (specifically, the center position) of a plurality of voxels around the vertex to the vertex so that the priority of the material set in the voxel closer to the vertex becomes higher. According to this, the material of the vertex can be determined by reflecting the distance between the voxel and the vertex.
[0116] Also, in the present embodiment, it can be said that an evaluation value, which is an example of the priority parameter, is calculated based on the material mixing ratio of a plurality of voxels around the vertex so that the priority of the material with a higher material mixing ratio becomes higher. According to this, when a plurality of materials are set in one voxel, the material of the vertex can be determined by reflecting the ratio of each material.
[0117] [2-5. Simplification of Vertex] In this embodiment, the game system 1 simplifies each vertex calculated as described above. That is, the game system 1 reduces the number of vertices by grouping some of the vertices calculated as described above and replacing them with a single vertex. Although details will be described later, the coordinates (i.e., positions) and materials of the vertices to be replaced are set based on a plurality of vertices before replacement. By such simplification, the number of vertices and the number of polygons constituting the mesh of the voxel object can be reduced, and the amount of memory used for processing and the processing load can be reduced.
[0118] In this embodiment, the game system 1 simplifies by expressing each vertex using an SVO (Sparse Voxel Octree). FIG. 17 is a diagram showing an example of vertex simplification. In FIG. 17, one square indicated by a solid line shown in (a) shown in FIG. 17 represents one vertex division region. Here, the vertex division region is a square region having the center position of the voxel as a vertex (in the actual three-dimensional space, the vertex division region is a cube or a rectangular parallelepiped), and is a region having the dotted lines in FIGS. 15 and 16 described above as sides. Further, in FIG. 17, the vertex division region in which the character "v" is shown inside indicates the vertex division region in which vertices are set.
[0119] In this embodiment, the game system 1 determines whether simplification is possible for the vertices within a predetermined number (four in FIG. 17, eight in the actual three-dimensional space) of adjacent vertex division regions. When it is determined that simplification is possible, simplification is performed on the vertices within the predetermined number of vertex division regions.
[0120] (a) shown in FIG. 17 is the state before simplification. In the example shown in FIG. 17, it is assumed that the vertex division regions within the range surrounded by the dotted line can be simplified. At this time, the game system 1 performs simplification so that the vertices within each of the above-mentioned predetermined number of vertex division regions determined to be simplifiable are replaced by one vertex (see (b) shown in FIG. 17). As a result, the vertices within the above-mentioned predetermined number of vertex division regions are simplified to one vertex.
[0121] In this embodiment, the game system 1 performs simplification in multiple stages. The number of stages is arbitrary, but in FIG. 17, the first two stages are illustrated and described. (b) shown in FIG. 17 shows the state after the first-stage simplification, and (c) shown in FIG. 17 shows the state after the second-stage simplification. In the second-stage simplification, it is determined whether simplification is possible for the vertices generated by the first-stage simplification. In the example shown in FIG. 17, as a result of determining that the vertex division regions within the range surrounded by the dotted line in (b) shown in FIG. 17 can be simplified, the vertices of the vertex division regions are simplified, resulting in the state shown in (c) shown in FIG. 17. Note that the determination conditions for whether the first-stage simplification is possible and the determination conditions for whether the second-stage simplification is possible may be the same or different.
[0122] Regarding the determination of whether simplification is possible, the specific method is arbitrary. In this embodiment, as the conditions for the above determination, conditions related to the shape of the voxel object and conditions related to the material are used. In this embodiment, when both the conditions related to the shape of the voxel object and the conditions related to the material are satisfied, it is determined that simplification is possible, and when at least one of the conditions related to the shape of the voxel object and the conditions related to the material is not satisfied, it is determined that simplification is impossible.
[0123] The condition regarding the shape means, for example, that the shape formed by each vertex before simplification and the shape formed by each vertex after simplification are not significantly changed. For example, whether the shape formed by each vertex is not significantly changed before and after simplification can be determined by calculating an index indicating the error between the mesh before simplification and the mesh after simplification and checking whether the index is less than or equal to a predetermined allowable value. Also, for example, when the shape formed by each vertex before simplification is a hollow shape, while the shape formed by each vertex after simplification is not a hollow shape (that is, information indicating hollowness is lost due to simplification), it is also determined that the condition regarding the shape is not satisfied. Whether the above situation occurs can be determined, for example, based on the density of each voxel corresponding to the vertex division region to be determined. Also, for example, when the shape formed by each vertex before simplification is a shape that can be represented only by two or more vertices and cannot be represented by a single vertex, it is also determined that the condition regarding the shape is not satisfied. Note that, as the condition regarding the shape of the voxel object, the same conditions as those of the conventional method using SVO may be used.
[0124] Also, as a condition regarding the material, in the present embodiment, a condition regarding the number of types of materials set for each vertex within the above-mentioned predetermined number of vertex division regions to be simplified is used. FIG. 18 is a diagram showing an example of the condition regarding the material. (a) shown in FIG. 18 shows a case where the materials of vertices 221 to 224 are (grass), (grass), (grass and soil), and (grass and soil) respectively, and (b) shown in FIG. 18 shows a case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and soil), and (grass and soil) respectively. In the present embodiment, the condition regarding the material is that the total number of types of materials set for each of the above vertices to be simplified is equal to or less than a predetermined number. For example, the condition regarding the material is that it is equal to or less than the number of materials that can be set for one vertex. In the present embodiment, the above-mentioned predetermined number is 2. For example, in the case of (a) shown in FIG. 18, the total number of types of materials set for each of the vertices 221 to 224 to be simplified is two types, namely grass and soil, so the condition regarding the material is satisfied. At this time, on the condition that the above-mentioned condition regarding the shape of the object is satisfied, each of the vertices 221 to 224 is determined to be simplifiable. On the other hand, in the case of (b) shown in FIG. 18, the total number of types of materials set for each of the vertices 221 to 224 to be simplified is three types, namely grass, soil, and sand, so the condition regarding the material is not satisfied. At this time, regardless of whether the above-mentioned condition regarding the shape of the object is satisfied, each of the vertices 221 to 224 is determined to be non-simplifiable.
[0125] In the game system 1, even if materials are strictly classified into different types, multiple types of materials with the same set properties but different appearances may be prepared. For some of such multiple types of materials, in the determination of conditions related to the materials, they may be regarded as the same type for determination. For example, regarding soil materials, there may be cases where multiple types of soil materials with the same properties but similar appearances (e.g., texture color and pattern) are prepared. In such a case, the game system 1 may regard the multiple types of soil materials as the same type and perform the determination of conditions related to the materials.
[0126] Here, in this embodiment, regarding vertices, similar to voxels, up to two types of materials can be set. On the contrary, in this embodiment, when the total number of types of materials set for each vertex to be simplified is three or more, no simplification is performed. That is, when the total number of types of materials exceeds the number of materials that can be set for one vertex, no simplification is performed. Therefore, even if the number of vertices is reduced by simplification, the information on the materials set for the vertices will not be lost due to simplification, and the material information can be maintained.
[0127] In this embodiment, the material of the simplified vertex is determined based on the material of each vertex before simplification. Specifically, the game system 1 sets one or two types of materials set for the vertices before simplification as the first material and the second material for the vertices after simplification. Thereby, the information of the material can be maintained. Note that the ratio of the materials after simplification is determined based on the ratio of the materials of each vertex before simplification. In this embodiment, the ratio of the materials after simplification is calculated in the same manner as the method of calculating the ratio of the materials of each vertex using the above evaluation value. That is, the game system 1 calculates a weight value based on the distance between the vertices after simplification and the vertices before simplification, and based on the weight value and the density of the material at the vertex before simplification (note that the evaluation value of the material described in [2-4. Determination of Vertex Material] above can be used as the density of the material here), calculates the evaluation value for each material. Then, the ratio of the materials is calculated based on the calculated evaluation value of each material.
[0128] [2-6. Mesh Generation] In this embodiment, based on each vertex simplified as described above, a mesh of the voxel object is generated. FIG. 19 is a diagram showing an example of a mesh generated based on each vertex. Note that the square shown in FIG. 19 indicates the above-described vertex division region, or a vertex division region in which a plurality of vertex division regions are combined into one by simplification. As shown in FIG. 19, the game system 1 generates a mesh composed of polygons having straight lines connecting adjacent vertices of the vertex division region as sides. Each polygon constituting the mesh is a triangle or a quadrilateral.
[0129] In this embodiment, the game system 1 generates two types of meshes: a display mesh and a determination mesh. The display mesh is a mesh used for displaying voxel objects. The determination mesh is a mesh used for collision determination of voxel objects. Although details will be described later, by using the above two types of meshes, the game system 1 can perform processing using meshes suitable for each of the display and collision determination of voxel objects.
[0130] In this embodiment, the game system 1 generates the display mesh and the determination mesh based on the data of the above-mentioned SVO (that is, based on each simplified vertex). According to this, by sharing the vertex data used for generating the two types of meshes, the efficiency of processing can be improved. In other embodiments, the game system 1 may not perform vertex simplification and may generate the display mesh and / or the determination mesh based on non-simplified vertices.
[0131] In this embodiment, the game system 1 generates the determination mesh to have a simpler shape than the display mesh. Specifically, the game system 1 ensures that the number of vertices of the determination mesh is less than the number of vertices of the display mesh. Here, in this embodiment, the SVO data is data that holds the data of the vertices before simplification and the data of the simplified vertices in an octree structure, and also includes the data used for determining whether simplification is possible. This data includes, for example, the data of vertices calculated as candidates for the vertices after simplification (referred to as temporary vertices), and the data of the above-mentioned index indicating the error between the vertices before simplification and the temporary vertices. For example, the game system 1 may use, for the generation of the determination mesh, those vertices among the temporary vertices for which the above index is equal to or less than a predetermined threshold (this threshold is set to be larger than the above tolerance value). According to this, the number of vertices of the determination mesh can be made less than the number of vertices of the display mesh. By making the number of vertices of the determination mesh less than the number of vertices of the display mesh, the processing load due to collision determination can be reduced. Also, since the number of vertices of the display mesh is not excessively reduced, the appearance of the voxel object can be expressed in detail.
[0132] Note that in other embodiments, the display mesh and the determination mesh may be generated based on the same data or different data. Also, the display mesh and the determination mesh may have the same shape (however, even in this case, the materials set for both may be different). Also, the number of vertices of the determination mesh may be the same as the number of vertices of the display mesh, or may be more than the number of vertices of the display mesh.
[0133] [2-6-1. Determination of the Material of the Display Mesh] Next, an example of a method for determining the material and appearance of the display mesh will be described. In the present embodiment, the game system 1 determines the material for each polygon constituting the display mesh. Although details will be described later, in the present embodiment, the polygon corresponding to the above polygon is drawn using up to two textures corresponding to up to two materials. Therefore, the game system 1 ensures that for each polygon constituting the mesh, ultimately, the number of materials set for one polygon is two or less. In other embodiments, three or more materials may be set. For example, in embodiments where there are three or more materials for voxels and vertices respectively, the same number of materials may be set for the polygon.
[0134] In the present embodiment, a quadrilateral may be formed as the polygon constituting the display mesh (see FIG. 19). When determining the material of the display mesh, the game system 1 first divides the quadrilateral constituting the display mesh into two triangles under certain conditions. Hereinafter, with reference to FIG. 20, the process of dividing the quadrilateral into two triangles will be described.
[0135] FIG. 20 is a diagram showing an example in which a quadrilateral constituting a mesh is divided into two triangles. (a) shown in FIG. 20 shows the quadrilateral before division formed by vertices 231 to 234 which are part of the vertices of the mesh, and (b) shown in FIG. 20 shows the two triangles obtained by dividing the quadrilateral. In the example shown in FIG. 20, assume that the materials of each of the vertices 231 to 234 are grass, soil, sand, grass, and grass respectively.
[0136] In this embodiment, when there are three or more types of materials set at each vertex of a quadrilateral in total, the game system 1 determines whether the division condition is satisfied. In this embodiment, the division condition is that by dividing the quadrilateral into two triangles, the total number of types of materials set at each vertex of the triangles can be two or less. When the division condition is satisfied, the game system 1 divides the quadrilateral into two triangles such that the total number of types of materials set at each vertex is two or less. In the example shown in FIG. 20, the materials set at each vertex 231 to 234 forming the quadrilateral are three types: grass, soil, and sand. Also, when the above quadrilateral is divided into a triangle formed by vertices 231, 232, 234 and a triangle formed by vertices 231, 233, 234, the materials set at each vertex of the former triangle are two types: sand and grass, and the materials set at each vertex of the latter triangle are two types: grass and soil (see (b) shown in FIG. 20). Therefore, for the above quadrilateral, the division condition is satisfied, so the game system 1 divides the quadrilateral into two triangles.
[0137] Note that since there are two ways to divide a quadrilateral into two triangles, when the division condition is satisfied for at least one of the two ways of dividing the triangles, the game system 1 performs the above division in the way that satisfies the division condition. On the other hand, when the division condition is not satisfied for the triangles divided in either of the two ways, the division is performed in any one of the ways.
[0138] By performing the division as described above, the game system 1 can generate two triangles in which the materials set at each vertex are two or less so as to minimize the omission of information on three or more types of materials set at each vertex of the quadrilateral. Here, as described above, each polygon constituting the mesh is drawn using up to two types of textures. Therefore, by performing the above division, the game system 1 can draw the polygon using two types of textures so as to minimize the omission of information on the materials set at each vertex.
[0139] In this embodiment, the game system 1 sets a polygon corresponding to the polygon after the above division. That is, the vertices of the polygon after the above division become the vertices of the polygon of the display mesh.
[0140] In this embodiment, for each polygon constituting the display mesh, when there are three or more types of materials set for each vertex of one polygon in total, the game system 1 determines the material of the polygon by selecting two types of materials. FIG. 21 is a diagram showing an example of a method for determining the material of a polygon constituting the display mesh. In the example shown in FIG. 21, for vertex 241 of the triangular polygon constituting the display mesh, let the first material be "grass", the second material be "soil", and the material ratio of the first material: the second material = 0.8:0.2. Also, for vertex 242 of the above polygon, let the first material be "grass", the second material be "sand", and the material ratio of the first material: the second material = 0.5:0.5. Also, for vertex 243 of the above polygon, let the first material be "sand", the second material be "soil", and the material ratio of the first material: the second material = 0.7:0.3.
[0141] When there are three or more types of materials set for each vertex of the polygon in total, the game system 1 calculates a determination value for each material. The determination value is calculated as the value obtained by summing up the ratios for each vertex where the material is set. Then, the game system 1 selects two materials in order from the ones with larger determination values as the materials of the polygon. In the example shown in FIG. 21, the determination value of the grass material is 0.8 + 0.5 = 1.3, the determination value of the sand material is 0.5 + 0.7 = 1.2, and the determination value of the soil material is 0.2 + 0.3 = 0.5. Therefore, as the materials of the polygon shown in FIG. 21, the grass and sand materials are selected (see (a) shown in FIG. 21).
[0142] The specific method of selecting the material of the polygon of the display mesh is arbitrary. In other embodiments, the material of the polygon of the display mesh may be selected by any method based on the information set at the vertices of the polygon. For example, for the material of the polygon of the display mesh, the material with the largest ratio at one vertex is specified for each vertex, and the material with the largest number of specifications for each vertex may be selected as the material of the polygon.
[0143] In this embodiment, the material of the polygon selected as described above is indicated by the materials set at each vertex of the polygon. That is, when the material of the polygon is selected, the game system 1 changes the materials set at each vertex of the polygon (that is, the material IDs included in the vertex data) to the selected material. In the example shown in FIG. 21, for vertices 241 and 243, before the selection of the material of the polygon, the materials of grass and soil, and sand and soil are set respectively (see (a) shown in FIG. 21). When the materials of grass and sand are selected as the material of the polygon as described above, the materials set at each of vertices 241 and 243 are changed to grass and sand (see (b) shown in FIG. 21). For vertex 242, since the material set before the selection is the same as the selected material of the polygon, the material is not changed. As described above, when two types of materials are selected as the material of the polygon, the information of the materials of the third and subsequent types set at each vertex of the polygon will be deleted.
[0144] In addition, the game system 1 changes the ratio of the materials set for the vertices according to the change of the materials set for the vertices. For example, for vertex 241, the content changes from the first material being grass and the second material being soil to the first material being grass and the second material being sand. Here, since the proportion of the sand material is 0, the material ratio is the first material: the second material = 1:0. In this way, the above change formally changes the material of each vertex in order to represent the material of the polygon by the materials of each vertex of the polygon.
[0145] According to the above, since the materials set for each vertex of one polygon are only the materials corresponding to the textures used for the drawing described later, it is possible to facilitate the execution of the drawing process using the textures.
[0146] Note that due to the above change, it may be the case that all the materials for a certain vertex are changed (that is, none of the materials before the change match the materials after the change). Such a case is, for example, a case where the material set for the vertex before the change is soil and the materials selected as the material of the polygon are grass and sand. In such a case, the ratio of the materials at the vertex may be set based on the ratio of the materials at the other vertices of the polygon. For example, in the above example, if the first material set for one of the other vertices of the triangular polygon is grass and the material ratio is grass: sand = 1:0, and the material set for another vertex is sand and the material ratio is sand: grass = 1:0, the material ratio at the vertex may be set to grass: sand = 0.5:0.5. In addition, the game system 1 may determine the ratio of the materials at the vertex in consideration of the distance between the vertex and the other vertices (for example, based on a weight value that increases as the distance gets closer).
[0147] As described above, in this embodiment, for each polygon, the game system 1 selects up to a predetermined number (here, two) of the material IDs set for the vertices included in the polygon (that is, the material IDs set for the vertices of the polygon corresponding to the polygon), and determines them as the material ID of the polygon. According to this, the game system 1 can perform the drawing process while suppressing the number of textures used while reflecting the material set for the vertices in the appearance of the polygon.
[0148] In this embodiment, for all the materials of the vertices constituting the polygon, when the number of the materials is less than or equal to the predetermined number, the game system 1 determines the material as the material of the polygon. When the material exceeds the predetermined number, a predetermined number of materials with high priority are selected based on the priority parameter of each vertex (specifically, based on the above determination value calculated based on the above evaluation value), and determined as the material of the polygon. As a result, even when materials exceeding the predetermined number in total are set for each vertex, the material of the polygon can be set to a predetermined number or less of materials considering the priority.
[0149] As described above, in this embodiment, the first and second materials set for each vertex of one polygon are changed to be two types of materials set for the polygon. Here, when such a change is made, there is a possibility that a discrepancy may occur in the first and second materials set for the vertices shared by two adjacent polygons.
[0150] FIG. 22 is a diagram showing an example of materials set for each vertex of two adjacent polygons. FIG. 22 shows a state in which two polygons are formed by the respective vertices 231 to 234 shown in FIG. 20 (b shown in FIG. 20). In the example shown in FIG. 22, since the materials of the first polygon formed by vertices 231, 233, and 234 are determined to be grass and sand, the first and second materials of these vertices should be set to grass and sand, respectively. On the other hand, since the materials of the second polygon formed by vertices 231, 232, and 234 are determined to be grass and soil, the first and second materials of these vertices should be set to grass and soil, respectively. Therefore, in the example shown in FIG. 22, there is a conflict in the materials to be set for vertices 231 and 234 shared by the two polygons.
[0151] Therefore, in the present embodiment, when there is a conflict in the materials to be set for the vertices shared by the two polygons, the game system 1 adds another vertex at the same position with respect to the vertex. (b) shown in FIG. 22 is a diagram showing an example of a state in which vertex 231' is added for vertex 231 and vertex 234' is added for vertex 234. In the example of FIG. 22, the game system 1 sets the first and second materials to grass and sand according to the materials of the first polygon for vertices 231 and 234. Also, for vertices 231' and 234', the first and second materials are set to grass and soil according to the materials of the second polygon. In this way, by formally setting two vertices as the vertices shared by the two polygons (that is, generating two vertex data with the same position and different materials), it is possible to suppress the occurrence of conflicts in the materials set for the vertices.
[0152] The game system 1 generates a display mesh composed of polygons whose vertices and materials are determined as described above. Further, the game system 1 performs drawing of the voxel object by performing drawing of the polygon based on the material information (that is, the first material and the second material) set for each vertex.
[0153] FIG. 23 is a diagram showing an example of applying a texture to a polygon. FIG. 23 shows a triangular polygon formed by the respective vertices 241 to 243 shown in FIG. 21. Note that the materials set for the respective vertices 241 to 243 are those shown in (b) shown in FIG. 21.
[0154] Regarding the position of the vertex of the polygon, drawing is performed by mapping that blends the texture of the first material and the texture of the second material set for the vertex at the ratio of the materials set for the vertex (that is, using the ratio as the blend rate). Note that the textures of the first and second materials used for drawing are the textures indicated by the drawing setting information associated with the respective material IDs associated with the vertex data in the above-described material data (see FIG. 12). In the example shown in FIG. 23, regarding the position of vertex 241, since the material ratio is grass: sand = 1:0, drawing is performed using only the grass texture. Also, regarding the position of vertex 243, since the first material is sand and the material ratio is sand: grass = 1:0, drawing is performed using only the sand texture. Further, regarding the position of vertex 242, since the first material is grass, the second material is sand, and the material ratio is grass: sand = 0.5:0.5, drawing is performed by blending the grass texture and the sand texture at a blend rate of 0.5:0.5.
[0155] Also, for positions other than the vertices of the polygon, the game system 1 determines the blend rate by interpolating the blend rates at each vertex. Then, the textures of the two materials set for each vertex are drawn by a mapping that blends them based on the interpolated blend rate. Note that the specific method of interpolation is arbitrary. As an example, the blend rate between vertices is linearly interpolated. In FIG. 23, the positions where the ratio of applying the texture of the grass material is high are shown in white, and the positions where the ratio of applying the texture of the sand material is high are shown in black. In the example shown in FIG. 23, the grass texture is applied at vertex 241, the blend ratio of the sand texture increases as it approaches vertex 243, the blend rate of grass and sand becomes 1:1 at the position of vertex 242, and only the sand texture is applied at the position of vertex 243. In this way, by blending and drawing the two textures set for the polygon (i.e., set for each vertex of the polygon) at a blend rate according to the ratio of the materials, the appearance at the boundary between different materials in the display mesh can be made natural. As a result, the appearance of the display mesh with multiple types of materials set can be made natural.
[0156] [2-6-2. Determination of the Material of the Mesh for Judgment] Next, an example of a method for determining the material of the mesh for judgment will be described. Although details will be described later, in this embodiment, collision detection of the voxel object is performed using the mesh for judgment, and processing may be executed according to the material of the voxel object for which collision is detected. Therefore, in this embodiment, the material is also determined for the mesh for judgment.
[0157] In this embodiment, for each polygon constituting the determination mesh, the game system 1 makes it so that there is one type of material set for one polygon. Specifically, the game system 1 determines the material set for the polygon of the determination mesh based on the material information (that is, the information on the first and second materials and the ratio of the materials) set for the vertices of the polygon.
[0158] FIG. 24 is a diagram showing an example of a method for determining the material of a polygon constituting the determination mesh. FIG. 24 shows an example of determining the material for a triangular polygon formed by the respective vertices 241 to 243 shown in FIG. 21. Note that the materials set for the respective vertices 241 to 243 are those shown in (a) shown in FIG. 21.
[0159] When determining the material of the polygon, the game system 1 calculates a determination value for each material set for each vertex of the polygon. In this embodiment, the method for calculating the determination value is the same as the method for calculating the determination value used for selecting the material of the polygon of the display mesh. Note that the specific method for calculating the determination value is arbitrary. In other embodiments, the determination value may be calculated by any method based on the information set for the vertices of the polygon of the determination mesh.
[0160] In the example shown in FIG. 24, for each material, the determination value is as follows: for the grass material, the determination value is 1.3; for the sand material, the determination value is 1.2; and for the soil material, the determination value is 0.5, similar to the case shown in FIG. 21 described above. Therefore, the grass material is selected as the material of the polygon shown in FIG. 24.
[0161] As described above, in the present embodiment, for each polygon, the game system 1 selects up to a predetermined number (here, 1) of the material IDs set for the vertices included in the polygon (that is, the material IDs set for the vertices of the polygon corresponding to the polygon), and determines them as the material IDs of the polygon. According to this, the game system 1 can suppress the number of materials set for the determination mesh to a predetermined number or less. As a result, it is possible to suppress the complication of the processing according to the type of material that is performed according to the result of the collision determination using the determination mesh. Note that the method for determining the material of the polygon of the determination mesh is arbitrary and is not limited to the above. In other embodiments, the material of the polygon of the determination mesh may be determined by any method based on the information set for the vertices of the polygon.
[0162] Also, in the present embodiment, for the polygons of the display mesh, up to two types of materials are set, while for the polygons of the determination mesh, one type of material is set. According to this, for the polygons of the display mesh, two types of textures can be used to achieve a natural appearance, and for the determination mesh, it is possible to suppress the complication of the processing that is performed according to the result of the collision determination using the determination mesh. Note that in other embodiments, the number of types of materials that can be set for the polygons of the display mesh and the determination mesh is arbitrary. The number of materials that can be set for the polygons of the display mesh and the number of materials that can be set for the polygons of the determination mesh may both be plural, may be the same, or may be different.
[0163] In the present embodiment, the number of types of materials set for one voxel is up to two, and the number of types of materials set for one polygon in the display mesh is up to two. According to this, while suppressing the data amount of the voxel data, the information of the materials set in the voxel data can be reflected in the materials of the display mesh. Further, in the present embodiment, the number of types of materials set for the vertices set based on the voxel data is also up to two (see FIG. 16). According to this, for the vertices generated during the process of obtaining the display mesh from the voxel data, two types of materials can be set, so that the information of the materials set in the voxel data can be reflected in the display mesh without loss of material information during the process.
[0164] In another embodiment, the game system 1 may set materials differently for vertices used to generate a display mesh and vertices used to generate a determination mesh with respect to vertices set based on voxel data. For example, the game system 1 may set up to two types of materials for vertices used to generate a display mesh as described above, and may set one type of material for vertices used to generate a determination mesh. For the materials of the polygons of the display mesh, two types of materials may be set in the same manner as above, and as the material of the polygon of the determination mesh, one type of material may be set based on the one type of material set for each vertex of the polygon. When setting one type of material for the vertices used to generate the determination mesh, the material with the largest determination value calculated for each material may be set as the material of the vertex. Also, as described above, in the present embodiment as well, the number of types of materials set for one polygon in the display mesh can be up to two, and the number of types of materials set for one polygon in the determination mesh can be one. Therefore, it is possible to reflect the material information set in the voxel data in the display mesh, and it is possible to suppress the complication of the processing performed according to the result of the collision determination using the determination mesh.
[0165] As described above, in this embodiment, a display mesh and a determination mesh can be set for one voxel object. However, depending on the game situation, it is not necessary to set both the display mesh and the determination mesh for one voxel object at the same time (for example, it is not necessary to set both in the processing in one frame). For example, the determination mesh may be generated in the range in the game space where collision determination is performed, and may not be generated in the range where collision determination is not performed. As an example, the game system 1 may generate a determination mesh for voxel objects within a predetermined range centered on the player character, and may not generate a determination mesh for voxel objects outside the predetermined range, but only generate a display mesh.
[0166] Also, for the display mesh, the game system 1 may store the data related to the generated mesh in the memory, and in the frame after the mesh is generated, use the data without re-executing the process of generating the mesh except for the updated range. According to this, the processing load for generating the display mesh can be reduced. Also, for the determination mesh, the data related to the generated mesh may not be stored in the memory, and the mesh may be sequentially generated as needed (for example, every time collision determination needs to be performed). According to this, the memory area used for generating the mesh can be saved.
[0167] In the above, the method of generating each mesh (that is, the display mesh and the determination mesh) based on the changed voxel data when the voxel data is changed from the initial state has been described. Note that the above method can also be used when generating each mesh based on the voxel data in the initial state, for example, at the start of the game. However, each mesh based on the voxel data in the initial state does not necessarily need to be generated based on the voxel data in the initial state at the start of the game, and may be prepared in advance before the game starts.
[0168] [Processing for Changing Material] Next, with reference to FIGS. 25 to 35, an example of a process for changing the material of a voxel object will be described. In the present embodiment, by changing the material ID of the voxel data set in the voxel space, the material of the voxel object in the voxel space is changed. Hereinafter, the material change process will be described using the first example to the third example. In the following, it is assumed that terrain objects such as the ground and walls and virtual objects (for example, enemy objects) that appear in the game space are voxel objects, and the player character performs an action and a collision determination is made. An example in which an effect in the game occurs as a result will be described.
[0169] Note that the above "effect in the game" is an arbitrary change that occurs in the game, for example, a change that occurs by "processing for reflecting the result of contact between objects". The "effect in the game" may be based on a collision determination between a determination mesh and a determination shape corresponding to a determination target based on game processing (for example, a determination area set for an object such as a player character). The above effect may occur in an object corresponding to the determination mesh, or may occur in an object corresponding to the determination target. The content of the "effect in the game" may be associated with the material set in the polygon in which a collision is determined in the collision determination that is the cause of the occurrence of the effect (that is, the content of the effect may be determined by the material).
[0170] (First Example) As a first example, an example in which the material constituting the enemy object 251 is changed when the enemy object 251 is located in a range where light such as a directional light in the game space hits will be described. FIG. 25 is a diagram showing an example of a game image in which the player character 201 is attacking the enemy object 251a located in the shadow range in the game space.
[0171] The enemy object 251 is a voxel object, and a unique voxel space independent of the voxel space of voxels corresponding to terrain objects and the like is defined for the enemy object 251. In the above unique voxel space, unique voxel data corresponding to the enemy object 251 is defined, and a unique display mesh and a unique determination mesh based on the unique voxel data are set. Then, the above unique voxel space can move / rotate within the game space for each defined enemy object 251, and the position, direction (posture), etc. of the unique voxel space within the game space are controlled. Note that the voxels defined in the above unique voxel space may have a size different from the voxels constituting the terrain object, or the size of the voxels may be relatively small.
[0172] The material of the polygon in the enemy object 251 has the first material ID set to "Material A". Also, the material mixing ratio is set to 0 (that is, the material set in the voxel is one type of "Material A"). In the first example, the enemy object 251 composed of Material A is referred to as the enemy object 251a. And as the property information included in the above material data, for Material A, it is assumed that a property of having a strong attack resistance strength is set. Then, using the method for determining the material of the above display mesh and determination mesh, the materials of the unique display mesh and the unique determination mesh of the enemy object 251a based on the material of the voxel are determined.
[0173] In the example shown in FIG. 25, the game system 1 performs a collision determination between the enemy object 251 and the player character 201 using a determination mesh. That is, a collision determination is made as to whether or not the determination mesh of the enemy object 251 contacts a determination area set for the player character (for example, an area having a predetermined shape set based on the position of the player character). When a collision is determined between a polygon whose material is material A and the player character 201, as a process for generating an action in the game, a process is performed to destroy the enemy object 251 by attacking it, or to reduce the physical strength of the player character 201 by a counterattack of the enemy object 251. Also, in the above case, a process is performed to cause the player character 201 to perform a predetermined reaction. For example, in the example shown in FIG. 25, when an operation input for causing the player character 201 to perform the above punch action is performed by the user, an action of the player character 201 punching forward is performed, and a collision determination is made. Then, when a collision is determined between the player character 201 performing the punch action and the enemy object 251a, it is determined whether or not the attack by the punch action effectively acts on the enemy object 251a. Here, since the enemy object 251a is composed of material A having a property of strong attack resistance, it does not reach the point of being destroyed by the attack by the above punch action, and a process is performed to cause the player character 201 to perform a reaction as if the above attack is bounced back. At this time, the game system 1 may generate an in-game action (for example, a reduction in the physical strength of the player character due to the attack being bounced back) based on the property information corresponding to the material set for the polygon in the determination mesh in which the collision is determined by the collision determination.
[0174] In the first example, in response to the determination that the enemy object 251a is located in the range 281 where light hits in the game space, the game system 1 makes a change to the enemy object 251a, which is a voxel object, as an action within the game. In the first example, regarding whether the enemy object 251a is located in the range 281 where light hits, a determination using ray checking is performed, and the determination method will be described later. FIG. 26 is a diagram showing an example of a game image representing the state after the enemy object 251 is changed due to being located in the range 281 where light hits in the game space.
[0175] In the example shown in FIG. 26, the material of the entire enemy object 251 (that is, all the voxels of the specific voxel space defined for the enemy object 251) is changed as if the material has changed due to being hit by light in the game space. For example, the enemy object 251a composed of material A is changed to the enemy object 251b composed of material B by moving to the range 281 where light shines from the shadow in the game space. And, as the property information included in the above-described material data, it is assumed that the property of having a vulnerable attack resistance strength is set for material B. In the present embodiment, among the material IDs included in the voxel data of the specific voxel space defined for the enemy object 251, the material ID corresponding to material A is updated to the material ID corresponding to material B. Then, using the method for determining the material of the display mesh and the determination mesh described above, the materials of the specific display mesh and the specific determination mesh of the enemy object 251b based on the material of the updated voxel are determined. Specifically, in the voxels within the specific voxel space defined for the enemy object 251, for the voxels in which only the material ID corresponding to material A is set, the "material A" of the first material ID is changed to "material B", and the material mixing ratio continues to be set to 0 (that is, the material set in the voxel is one type of "material B"). Also, in the voxels within the specific voxel space defined for the enemy object 251, when material A and other materials are set, while changing the material ID corresponding to "material A" to the material ID corresponding to "material B", the material IDs corresponding to the other materials continue to maintain the other materials, and the material mixing ratio also continues to maintain the same value. Further, in the voxels within the specific voxel space defined for the enemy object 251, when the material ID corresponding to "material A" is not set, the values of the material ID and the material mixing ratio continue to be maintained as they are.According to this, the part that was the material of "Material A" in the enemy object 251a will appear to be changed to the material of "Material B", so it becomes easier to give the user the impression that it has been altered to "Material B" by shining light on the material of "Material A" of the enemy object 251a.
[0176] Note that the shapes of the enemy objects 251a and 251b may be the same or different. In the latter case, along with the above-described change in material, the shape of the enemy object 251 may be changed by increasing or decreasing the density of any voxel in the voxel space defined in the enemy objects 251a and 251b.
[0177] Also, the enemy object 251 may be generated by combining a non-voxel object part with a voxel object. For example, the detailed parts (eyebrows, eyes, teeth, etc.) attached to the surface of the enemy object 251 may be generated by a non-voxel object. Here, the non-voxel object is an object not based on the above-described voxel data, and is displayed in the game space by rendering the set polygon mesh. And for the non-voxel object as well, a material ID similar to that of the voxel object is set for the polygon mesh, and the non-voxel object is displayed by rendering the polygon mesh. In this case, when the material ID of the voxel object part is updated, the material ID may be updated in the same way for the non-voxel object part.
[0178] In the example shown in FIG. 27, when a user performs an operation input to cause the player character 201 to perform the above punch action, an action of punching towards the enemy object 251b in front of the player character 201 is performed, and a collision determination is made. Then, when a collision between the player character 201 performing the punch action and the enemy object 251a is determined, it is determined whether or not the attack by the punch action has effectively acted on the enemy object 251a. Here, since the enemy object 251b is composed of the material B with the property of having a vulnerable attack resistance strength, it is destroyed by the attack by the above punch action. Specifically, when a collision between the player character 201 performing the punch action and the enemy object 251b is determined, it is determined that the attack by the punch action has effectively acted on the enemy object 251b, and based on the position and orientation of the player character 201, the above-described update range is generated. Then, the game system 1 deforms (destroys) the enemy object 251b by reducing the density of the voxels of the enemy object 251b in the above update range.
[0179] The above update range indicates the destruction range of the enemy object 251b that is destroyed by the punch action of the player character 201. The above update range is generated based on the position, strength, ability of the player character 201 when attacking the enemy object 251b, and the strength (for example, the properties of Material B) of the enemy object 251b. For example, the above update range is generated in a shape corresponding to the action in a predetermined direction (for example, the front) with respect to the player character 201. For example, the above update range is formed in a bell shape with a hemispherical shape at the deepest part, centered on the collision position determined by the player character 201 performing a punch action. Note that the shape of the above update range may be other shapes, such as spherical, ellipsoidal, cube-shaped, cylindrical, wedge-shaped, shapes generated by 3D software, or shapes with some parts of these shapes missing. Also, the position of the above update range may be set centered on the position where the punch action by the player character 201 occurs in the game space (for example, the position reached by the fist with which the player character 201 punches), or may be set centered on a predetermined distance in front of that position as seen from the player character 201.
[0180] The game system 1 reduces the density of the voxels corresponding to the above update range. As a result, the enemy object 251b is deformed so that the part corresponding to the update range is erased. For example, in the present embodiment, based on the SDF of each voxel in the enemy object 251b, the density of each voxel is rewritten to control the erasure of each voxel. Note that instead of unconditionally deforming the voxel object corresponding to the above update range, the game system 1 may increase the amount of damage set for the voxels corresponding to the above update range according to the punch action, and reduce the density of the voxels when the amount of damage exceeds a predetermined value.
[0181] In addition, a fragment object corresponding to the erased part of the enemy object 251b may be generated, and an effect of the fragment object scattering may be performed in response to the deformation of the enemy object 251b. In this case, the fragment object may be generated to have a shape corresponding to the erased part of the enemy object 251b, or may have a predetermined shape. The fragment object may be a voxel object or may not be a voxel object.
[0182] Thus, in the first example, as the enemy object 251 changes from a state of being in the shadow of the light source in the game space to a state of not being in the shadow of the light source, the material constituting the enemy object 251 is changed from material A to material B. Therefore, a game using a material change based on the in-game determination in the voxels of the voxel space defined in the enemy object 251 can be realized.
[0183] In the first example, the light source that generates the illuminated range 281 is a directional light or the like set in the game space, for example, ambient light having only information on the direction of light (for example, a parallel light source emitting sunlight). As another example, it may be composed of a point light source. In determining whether the enemy object 251 is located in such an illuminated range 281, the determination shapes respectively set for the enemy objects 251a and 251b are used.
[0184] As shown in FIG. 28, the determination shape is a shape that encloses each of the enemy objects 251a and 251b within the game space. For example, a rectangular parallelepiped bounding box for each of the enemy objects 251a and 251b is used as the determination shape. The bounding box may be an axis-aligned bounding box (AABB) parallel to the coordinate axes of the game space, or an oriented bounding box for each of the enemy objects 251a and 251b. When a change in shape occurs between the enemy object 251a and the enemy object 251b, the size of the bounding box may be changed based on the shape. Further, the determination shape may be any shape that encloses at least a part of each of the enemy objects 251a and 251b. As an example, the determination shape may be a rectangular parallelepiped of the intrinsic voxel space itself defined for each of the enemy objects 251a and 251b. As another example, the determination shape may be any shape that encloses at least a part of each of the enemy objects 251a and 251b, and may be, for example, a spherical shape, an ellipsoidal shape, or other polyhedral shapes.
[0185] As shown in FIG. 28, a plurality of feature points FP are set in the determination shape. The feature points FP include at least eight points at the corners of the bounding boxes set for each of the enemy objects 251a and 251b. Note that the feature points FP may be nine points including the center of the bounding box and one point set at a predetermined part in each of the enemy objects 251a and 251b. Further, in other embodiments, the feature points FP may be only one point set at the center of the bounding box or at a predetermined part in each of the enemy objects 251a and 251b. When the feature point FP is one point, the determination shape does not have to be a shape that encloses at least a part of each of the enemy objects 251a and 251b, and the determination shape may be a point (that is, one feature point FP).
[0186] As shown in FIG. 29, in the first example, a ray check is used to determine whether or not the enemy object 251 is located within the range where light hits. In FIG. 29, for the purpose of making the drawing easier to view and the explanation easier to understand, the bounding box, feature points, obstacles, etc. are represented two-dimensionally. However, in reality, a three-dimensional bounding box and obstacles are set in a three-dimensional space, and eight feature points FP (four points in the drawing) are set. Also, in FIG. 29, a point light source is used for the purpose of making the direction of the light source easier to view. However, as described above, a parallel light source may be used.
[0187] In the first example, based on the determination based on the contact between a plurality of rays based on the light source and the above-mentioned bounding box, it is determined whether or not the enemy object 251 is located within the range where light hits. For example, a ray check is performed from each feature point FP in the direction of the light source. When no object (obstacle) hits between the feature point FP and the light source, it is determined that the feature point FP is not located in the shadow of the light source (that is, it is located within the range where the light from the light source hits) (for example, the state of the feature point FP1 in FIG. 29). On the other hand, when an object (obstacle) hits between the feature point FP and the light source in the ray check from the feature point FP in the direction of the light source, it is determined that the feature point FP is located in the shadow of the light source (for example, the states of the feature points FP2 to 4 in FIG. 29).
[0188] And when it is determined that a predetermined number or more of the plurality of feature points FP set in the bounding box are not located in the shadow of the light source, it is determined that the enemy object 251 in which the bounding box is set is not located in the shadow of the light source (that is, it is located in the range illuminated by the light from the light source). The predetermined number used as the threshold value in the above determination is arbitrary. As a first example, when it is determined that at least one of the plurality of feature points FP is not located in the shadow of the light source, it is determined that the enemy object 251 is not located in the shadow of the light source. In this case, it is determined that the enemy object 251 is not located in the shadow of the light source because a part of the enemy object 251 is located in the range illuminated by the light from the light source, and it is determined that the enemy object 251 is located in the shadow of the light source because the entire enemy object 251 is located in the shadow of the light source, and the material of the enemy object 251 is changed based on the determination result. As a second example, when it is determined that all of the plurality of feature points FP are not located in the shadow of the light source, it is determined that the enemy object 251 is not located in the shadow of the light source. In this case, it is determined that the enemy object 251 is not located in the shadow of the light source because the entire enemy object 251 is located in the range illuminated by the light from the light source, and it is determined that the enemy object 251 is located in the shadow of the light source because a part of the enemy object 251 is located in the shadow of the light source, and the material of the enemy object 251 is changed based on the determination result.
[0189] (Second example) As a second example, an example in which the material of the enemy object 251 is changed when the enemy object 251 is located in the range illuminated by the light from the placement light in the game space will be described. FIG. 30 is a diagram showing an example of a game image representing the state of the player character 201 holding the light object 202 and the enemy object 251a in the game space.
[0190] In FIG. 30, the light object 202 is an example of an arrangement light disposed in the game space, and is a point light disposed in the game space and emitting light radially from its surface. The light object 202 has a range 282 to which the light from the light object 202 reaches, and a determination shape is set based on the range 282. In the example shown in FIG. 30, a spherical range of a size based on the shape of the range 282 is set as the determination shape with the position of the light object 202 in the game space as the center. Note that the determination shape is a shape used to determine the range to which the light from the arrangement light hits, and may be set to any shape such as a spherical shape, an ellipsoidal shape, a conical shape, a cylindrical shape, etc. based on the type and nature of the light source. Further, the determination shape may be the same size and shape as the range that the light actually reaches from the light source, or may be a size and shape in which at least a part is smaller than the range that the light reaches, or may be a size and shape that deviates from a part of the range that the light reaches.
[0191] Note that the light object 202 may be an item object held by the player character 201, may be pre-disposed in the game space, or may be obtained from the terrain object based on an action in which the player character 201 extracts a part of the terrain object. When the light object 202 is obtained by the above action, the light object 202 may be generated so as to have a shape corresponding to the part erased by the action in the terrain object, or may be a predetermined shape. The light object 202 may be a voxel object or may not be a voxel object. When the light object 202 is a voxel object, a voxel space different from the voxel space of the voxels corresponding to the terrain object, the enemy object 251, etc. may be defined for the light object 202.
[0192] In the second example, the enemy object 251a arranged in the game space is the same voxel object as the enemy object 251a used in the first example. That is, since the enemy object 251a used in the second example is located in the shadow in the game space, it is composed of Material A.
[0193] Also in the second example, in response to the determination that the enemy object 251a is located within the range 282 where the light from the light object 202 reaches, the game system 1 changes the material of the enemy object 251a, which is a voxel object, as an in-game action. FIG. 31 is a diagram showing an example of a game image representing the state after the enemy object 251 is changed due to being located within the range 282 where the light from the light object 202 reaches.
[0194] In the example shown in FIG. 31, when at least a part of the enemy object 251 intrudes into the range 282 where the light from the light object 202 reaches due to the movement of the enemy object 251 and / or the movement of the light object 202 in the game space, the material of the entire enemy object 251 (that is, all the voxels of the specific voxel space defined for the enemy object 251) is changed. For example, the enemy object 251a composed of Material A is changed to the enemy object 251b composed of Material B by being located within the range 282 where the light from the light object 202 reaches from the range where the light does not reach. Also in the second example, the material is changed by updating the material ID corresponding to Material A to the material ID corresponding to Material B among the material IDs included in the voxel data of the specific voxel space defined for the enemy object 251. Since it is the same as the first example described above, the detailed description is omitted here.
[0195] In the second example, a determination using collision is made as to whether or not the enemy object 251a is located within the range 282 where the light from the light object 202 reaches. For example, in the second example, when the enemy object 251 contacts or is included in the determination shape set based on the range 282 where the light from the light object 202 reaches, it is determined that the enemy object 251 is located within the range 282 where the light reaches. Specifically, based on the collision determination between the determination mesh of the voxel object that is the enemy object 251 and the determination shape, it is determined whether or not the enemy object 251 is located within the range 282 where the light from the light object 202 reaches. As an example, when the determination mesh of the enemy object 251 contacts the determination shape, it may be determined that the enemy object 251 is located within the range 282. In this case, it is determined that a part of the enemy object 251 is not located in the shadow by the light from the light object 202 because it is located within the range 282 where the light from the light object 202 reaches, and it is determined that the entire enemy object 251 is located in the shadow by the light because a part of the enemy object 251 is located in the range where the light does not hit, and the material of the enemy object 251 is changed based on the determination result. As another example, when the determination mesh of the enemy object 251 is included inside the determination shape, it may be determined that the enemy object 251 is located within the range 282. In this case, it is determined that the entire enemy object 251 is not located in the shadow by the light from the light object 202 because it is located within the range 282 where the light from the light object 202 reaches, and it is determined that a part of the enemy object 251 is located in the shadow by the light because a part of the enemy object 251 is located in the range where the light does not hit, and the material of the enemy object 251 is changed based on the determination result.
[0196] In the above description, an example is used where when the enemy object contacts the determination shape or is included in the determination shape, it is determined that the enemy object is located within the range where light reaches. However, determination based on other determination conditions may also be performed. For example, when the enemy object overlaps with the determination shape by a predetermined ratio or more, or when a predetermined part or position of the enemy object is included in the determination shape, etc., and other conditions are satisfied, it may be determined that the enemy object is located within the range where light reaches.
[0197] In the descriptions of the above first example and the second example, an example is used where the material is changed when the enemy object 251 is located within the range where light shines from the shadow. However, in this embodiment, when the enemy object 251 enters the shadow from within the range where light shines, a material change opposite to the above-described change may be performed. For example, the enemy object 251b composed of material B may be changed to the enemy object 251a composed of material A when it enters the shadow of these lights from within the range 281 where light shines or the range 282 where light reaches in the game space. Specifically, when the enemy object 251 enters the shadow from within the range where light shines, among the material IDs included in the voxel data of the specific voxel space defined for the enemy object 251, the material ID corresponding to material B may be updated to the material ID corresponding to material A.
[0198] (Third Example) As a third example, an example of changing the material of the voxel object when a voxel block is located in the range that becomes a shadow due to light such as directional light in the game space (for example, sunlight) will be described. FIG. 32 is a diagram showing an example of a game image representing a state where the player character 201 is riding on a voxel block located in the shadow range of an obstacle in the game space. Note that the dashed line in FIG. 32 indicates the direction of light.
[0199] In the third example, the terrain such as the ground in the game space is formed by a plurality of voxel blocks arranged in a grid pattern. The voxel blocks are voxel objects, and one voxel block is formed by combining a plurality of voxels in a cuboid shape (more specifically, a cube shape). Each cube shown in FIG. 32 represents a voxel block that constitutes the ground in the game space. Each voxel block has a defined unique voxel space. That is, unique voxel data corresponding to one voxel block is defined in the unique voxel space, and a unique display mesh and a unique determination mesh based on the unique voxel data are set. And the unique voxel space can set a material for each defined voxel block. Note that the voxels constituting the voxel block defined in the unique voxel space may have a different size from the voxels constituting the terrain object, or the size of the voxels may be relatively small.
[0200] The material of the polygon in the voxel block that is not in the shadow by light in the game space has the first material ID set to "Material C". Also, the material mixing ratio is set to 0 (that is, the material set in the voxel is one type of "Material C"). And as the property information included in the above-described material data, it is assumed that the property of having a soft fluidity (for example, a non-solid substance) is set for Material C. Then, using the method for determining the material of the above-described display mesh and determination mesh, the material of the unique display mesh and the unique determination mesh of the voxel block based on the material of the voxel (for example, a material indicating a floating object such as a cloud) is determined.
[0201] On one hand, for the polygon material in the voxel block that is in the shadow caused by light in the game space, the first material ID is set to "Material D". Also, the material mixing ratio is set to 0 (that is, the material set for the voxel is only "Material D"). And as the property information included in the above-mentioned material data, for Material D, it is assumed that a property of having a strong strength (for example, a solid substance) is set. Then, using the method for determining the material of the display mesh and the determination mesh described above, the materials of the unique display mesh and the unique determination mesh of the voxel block based on the voxel material (for example, materials indicating structures such as metal materials and stone materials) are determined. In the third example, regarding whether the voxel block is in the shadow or not, a determination using a shadow buffer is performed, and the determination method will be described later.
[0202] As shown in FIG. 32, since Material D has the property of having a strong strength, when a collision between the determination mesh of the voxel block whose material is Material D and the player character 201 is determined, it is controlled so that it cannot enter the inside of the polygon block. Therefore, the player character 201 can stand on or walk on the polygon block composed of Material D. On the other hand, since Material C has the property of having a weak fluidity, when a collision between the determination mesh of the voxel block whose material is Material C and the player character 201 is determined, it is controlled to enter the inside of the polygon block. Therefore, the player character 201 cannot stand on or walk on the polygon block composed of Material C.
[0203] When the position of the shadow in the game space changes, based on the movement of the shadow, the material of the polygon block is also changed. For example, when the direction of the light ray changes from the direction shown in FIG. 32 to the direction shown in FIG. 33, the direction of the shadow caused by the obstacle also changes. When the direction of the shadow changes in this way, the material of the entire voxel block that has changed from a state of being in the shadow to a state of not being in the shadow (that is, all the voxels in the specific voxel space defined for the voxel block) is changed from material D to material C, and the material of the entire voxel block that has changed from a state of not being in the shadow to a state of being in the shadow is changed from material C to material D. Specifically, due to the change in the direction of the shadow, among the material IDs included in the voxel data of the specific voxel space defined for the voxel block located in the range where light hits from the shadow, the material ID corresponding to material D is updated to the material ID corresponding to material C. Also, due to the change in the direction of the shadow, among the material IDs included in the voxel data of the specific voxel space defined for the voxel block that has entered the shadow from the range where light hits, the material ID corresponding to material C is updated to the material ID corresponding to material D. Then, using the method for determining the materials of the display mesh and the determination mesh described above, the materials of the specific display mesh and the specific determination mesh of the voxel block based on the material of the updated voxel are determined.
[0204] As shown in FIG. 33, when the direction of the shadow changes, the voxel block on which the player character 201 rides is changed from Material D to Material C. Due to this material change, the material of the voxel block on which the player character 201 rides changes from Material D, which has the property of having a strong strength, to Material C, which has the property of having a weak fluidity. As a result, based on the determination that a collision occurs between the determination mesh of the voxel block that is Material C and the player character 201, the player character 201 sinks inside the polygon block, making it difficult for the player character 201 to move back and forth, left and right within the game space. Thus, in order for the player character 201 to continue moving within the game space, it is necessary to ride on the voxel block that is in the shadow caused by the light, and the position of the shadow becomes important in the progress of the game.
[0205] In the game space in the third example, light such as directional light, which is ambient light having information only on the direction of light (for example, a parallel light source that emits sunlight), is set. As another example, other light sources such as point light sources may be set. And in the determination of whether each voxel block is in the shadow caused by the light, a shadow buffer is used. For example, the calculation result of the shadow map is copied to the texture memory (linear texture) and stored as the shadow buffer, and it is determined whether it is inside the shadow by depth comparison.
[0206] The above shadow map shows the depth (in other words, the depth) of each position when viewed from the light ray direction. The above depth is calculated as the distance in the light ray direction from a predetermined reference position (that is, the position of the light source) to that position. Note that the reference position may be any position.
[0207] In the shadow map, for the position where an obstacle such as an object exists when viewed from the light ray direction, the depth is calculated as the distance in the light ray direction from a predetermined reference position to the position of the obstacle. Also, in the shadow map, for the position where no obstacle exists when viewed from the light ray direction, the depth is set to the maximum value.
[0208] FIG. 34 is a diagram showing an example of the positional relationship among a light source, an obstacle, and a surface on which the shadow of the obstacle is cast (for example, the ground in the game space and the upper surface of the display mesh in the voxel blocks arranged side by side in the grid pattern).
[0209] In FIG. 34, the length t is the depth at the position corresponding to the pixel (for example, position A shown in FIG. 34), and is the depth based on the light source (that is, the depth from the position of the light source to the position corresponding to the pixel). The length t is obtained by converting the depth d based on the virtual camera to the depth based on the light source. Note that the depth d based on the virtual camera is stored in the depth buffer. The value of the depth stored in the depth buffer may be calculated by a conventional method.
[0210] The length x is the depth at the position corresponding to the pixel stored in the shadow buffer. That is, the length x is the depth based on the light source, and when an obstacle exists between the position of the light source and the position corresponding to the pixel (for example, position A shown in FIG. 34), the length x is the distance from the position of the light source to the position of the obstacle (for example, position B shown in FIG. 34). Note that the shadow buffer may store the value obtained by applying a predetermined smoothing filter to the depth x, the average value of the depths of the pixels within a predetermined range including the pixel, and the like.
[0211] Here, when there is an obstacle on the straight line from the light source to the pixel, the length t becomes greater than the length x. In this case, the pixel becomes a pixel where the shadow of the obstacle is drawn. On the other hand, when there is no obstacle on the straight line from the light source to the pixel, the length t is the same as (or less than) the length x. In this case, the pixel becomes a pixel where the shadow of the obstacle is not drawn.
[0212] The game system 1 generates a game image with shadows by performing lighting processing on the game image drawn on the frame buffer using the shadow map of the entire drawing range.
[0213] In the third example, by applying the depth stored in the shadow buffer to each feature point of the bounding box of each voxel block, it is determined whether each voxel block is in the shadow. For example, referring to the shadow buffer, when the depth at that position (e.g., the length t shown in FIG. 34) when the coordinates of each feature point FP are converted to the coordinates in the shadow buffer is greater than the depth stored in the shadow buffer (e.g., the length x shown in FIG. 34), it is determined that the feature point FP is in the shadow (i.e., it is located in a range where the light from the light source does not hit). On the other hand, referring to the shadow buffer, when the depth at that position when the coordinates of each feature point FP are converted to the coordinates in the shadow buffer is less than the depth stored in the shadow buffer, it is determined that the feature point FP is not in the shadow (i.e., it is located in a range where the light from the light source hits).
[0214] And when it is determined that a predetermined number or more of the plurality of feature points FP set in the bounding box of each voxel block are not in the shadow, it is determined that the voxel block in which the bounding box is set is not in the shadow (that is, it is located in the range illuminated by light). The above-mentioned predetermined number used as a threshold value in the above determination is arbitrary. As a first example, when it is determined that at least one of the plurality of feature points FP is not in the shadow, it is determined that the voxel block in which the bounding box is set is in the shadow. In this case, since a part of the voxel block is located in the range illuminated by light, it is determined that the voxel block is not in the shadow, and since the entire upper surface of the voxel block exposed on the ground is in the shadow, it is determined that the voxel block is in the shadow, and based on the determination result, the material of the voxel block is changed. As a second example, when it is determined that all (for example, four) of the plurality of feature points FP exposed on the ground in the game space are not in the shadow, it is determined that the voxel block in which the bounding box is set is not in the shadow. In this case, since the entire upper surface of the voxel block exposed on the ground is located in the range illuminated by light, it is determined that the voxel block is not in the shadow, and since a part of the upper surface of the voxel block exposed on the ground is in the shadow, it is determined that the voxel block is in the shadow, and based on the determination result, the material of the voxel block is changed.
[0215] In this way, by also using the shadow buffer generated for drawing the shadow to determine whether the voxel object is within the shadow, an increase in the processing load can be suppressed. In particular, in the third example, since it is a game stage where a large number of voxel blocks are arranged on the entire surface constituting the ground of the game space, the shadow buffer is preferably used for light and shadow determination when the processing load increases by performing light and shadow determination by ray checking for all of these voxel blocks. On the other hand, in the first example above, since only the enemy object 251 is the target of light and shadow determination, the processing load when performing the light and shadow determination is relatively light, so more accurate light and shadow determination can be performed by using ray checking.
[0216] However, since the light and shadow determination using the shadow buffer targets the drawing range, for voxel objects in the game space where at least a part of the drawing range is out of range, light and shadow determination cannot be performed or an inaccurate light and shadow determination will occur. Therefore, when the above drawing range moves, it is conceivable that the light and shadow determination for voxel objects newly entering the drawing range will be delayed compared to the timing of displaying the voxel objects.
[0217] In the present embodiment, in order to prevent the delay in the light and shadow determination, the light and shadow determination of the entire game space may be performed by combining the light and shadow determination using the above-described shadow buffer and the light and shadow determination by the above-described ray check. FIG. 35 is a diagram showing an example of a range in which light and shadow determination is performed using a shadow buffer and a range in which light and shadow determination is performed by ray check in the game space.
[0218] In FIG. 35, the game space in which the game image illustrated in FIG. 33 is generated is shown. The game space is divided into an area within the drawing range displayed on the display 12 and an area outside the drawing range.
[0219] As described above, the voxel blocks BCa and BCb arranged in the game space within the above-described drawing range are subjected to light and shadow determination based on the shadow buffer. And, the voxel block BCa is determined to be in the shadow by the light and shadow determination based on the shadow buffer and is composed of the material D. Also, the voxel block BCb is determined not to be in the shadow by the light and shadow determination based on the shadow buffer and is composed of the material C.
[0220] On the other hand, the voxel blocks BCc and BCd arranged in the game space outside the above-described drawing range are subjected to light and shadow determination by ray checking. And, the voxel block BCc is determined to be located in the shadow by the light and shadow determination by ray checking and is composed of the material D. Also, the voxel block BCd is determined to be located in the range where light hits by the light and shadow determination by ray checking and is composed of the material C.
[0221] Note that, for the voxel blocks arranged between the inside and the outside of the above-described drawing range, as an example, all the feature points FP may be subjected to light and shadow determination by ray checking. As another example, for the above voxel blocks, the feature points FP within the above-described drawing range are determined by the light and shadow determination based on the shadow buffer, and the feature points FP outside the drawing range are determined by the light and shadow determination by ray checking, and the light and shadow determination of the voxel blocks may be performed by combining these determination results.
[0222] Also, in the above-described example, an example of using different methods for light and shadow determination depending on whether it is inside or outside the drawing range is used, but light and shadow determination by ray checking may be performed even within the drawing range. For example, regarding voxel blocks and feature points arranged in a range where virtual objects in the game space etc. become obstacles and are not visible from the virtual camera, light and shadow determination by ray checking may be performed even within the above-described drawing range.
[0223] In addition, for the voxel blocks arranged in the game space outside the drawing range, the range for performing light and shadow determination by ray checking may target voxel blocks within a predetermined number or within a predetermined distance from the drawing range. As an example, the range may target voxel blocks arranged between the inside and outside of the drawing range among the voxel blocks outside the drawing range, and voxel blocks adjacent to the voxel blocks.
[0224] In addition, in the above-described first to third examples, when a voxel object is located in the range where light hits, the material constituting the voxel object is changed from material A having a property of strong attack resistance or material D having a property of strong strength to material B having a property of weak attack resistance or material C having a property of weak fluidity. Thus, in the above-described first to third examples, an example is used in which, when a voxel object is located in the range where light hits, it becomes weaker than the state of being in the shadow. However, in other embodiments, it may be a mode in which the voxel object becomes weaker when it enters the shadow. That is, when the voxel object enters the shadow, the material constituting the voxel object may be changed from the above material A or the above material D to the above material B or the above material C. In this way, when a voxel object is located in the range where light hits, the material to be changed is arbitrary, and the original material and the destination material may each be a material having arbitrary properties.
[0225] [3. Specific Examples of Processing in the Game System] Next, with reference to FIGS. 36 to 38, a specific example of information processing in the game system 1 will be described.
[0226] FIG. 36 is a diagram showing an example of various data used for information processing in the game system 1. Each data shown in FIG. 36 is stored in a memory accessible by the main body device 2 (for example, a flash memory 84, a DRAM 85, and / or a memory card or the like mounted on the slot 23). As shown in FIG. 36, the game system 1 stores a game program. The game program is for executing game processing (for example, game processing shown in FIGS. 37 and 38) in the present embodiment. Note that the game program includes the above-described material data (see FIG. 12). Further, the above memory stores the above-described voxel data (see FIG. 11), update range data, mesh data, object data, determination shape data, ray check processing data, rendering processing data, and the like (see FIG. 36).
[0227] The update range data is data indicating the above-described update range. In the present embodiment, the update range is represented by the above-described SDF.
[0228] The mesh data includes various data related to the mesh of the voxel object. As shown in FIG. 32, in the present embodiment, the mesh data includes SVO data, display mesh data, and determination mesh data. The SVO data is data that holds each vertex calculated from the voxel data in the above-described SVO structure. Note that in the present embodiment, the SVO data includes, in addition to data indicating the position of each vertex, data indicating the material set for each vertex (for example, data indicating the ID of the material). The display mesh data includes various data related to the display mesh. Specifically, the display mesh data includes data indicating each vertex of the display mesh and data indicating the material set for each vertex (for example, data indicating the ID of the material). The determination mesh data includes various data related to the determination mesh. Specifically, the determination mesh data includes data indicating each vertex of the determination mesh and data indicating the material set for each vertex (for example, data indicating the ID of the material).
[0229] Object data includes various data related to objects other than voxel objects (e.g., player characters, virtual objects, etc.). Object data is stored for each object that appears in the game space. Object data includes, for example, data indicating the position, speed, and state of the object.
[0230] The determination shape data includes various data related to the determination shape set for the voxel object (e.g., the bounding box and its feature points), and various data related to the determination shape based on the range where the light of the placement light reaches.
[0231] The ray check process data includes various data related to the light and shadow determination by ray check described in [2-7. Process for changing materials] (e.g., data indicating whether an object hits between each feature point and the light source).
[0232] The rendering process data includes various data related to the light and shadow determination based on the shadow buffer described in [2-7. Process for changing materials] (e.g., frame buffer, depth buffer, shadow buffer, and light and shadow determination results for each feature point).
[0233] FIG. 37 is a flowchart showing an example of the flow of game processing executed by the game system 1. FIG. 38 is a subroutine showing an example of the material change process in step S7 in FIG. 37. The execution of the game processing is started, for example, in response to the start of the game according to the user's instruction during the execution of the above game program. Note that the processing loop consisting of a series of processes from steps S1 to S15 is executed once per frame cycle.
[0234] In the present embodiment, the processor 81 of the main body device 2 executes the above game program stored in the game system 1, and thus the processing of each step shown in FIGS. 37 and 38 will be described. However, in other embodiments, some of the processing of each of the above steps may be executed by a processor (for example, a dedicated circuit or the like) different from the processor 81. Further, when the game system 1 is communicable with another information processing device (for example, a server), a part of the processing of each step shown in FIGS. 37 and 38 may be executed in the other information processing device. Further, the processing of each step shown in FIGS. 37 and 38 is merely an example, and if the same result can be obtained, the processing order of each step may be changed, or another processing may be executed in addition to (or instead of) the processing of each step.
[0235] Further, the processor 81 executes the processing of each step shown in FIGS. 37 and 38 using a memory (for example, the DRAM 85). That is, the processor 81 stores information (in other words, data) obtained by each processing step in the memory, and when using the information in subsequent processing steps, reads out and uses the information from the memory.
[0236] In FIG. 37, the processor 81 acquires operation data indicating an operation input by the user (step S1), and proceeds to the next step. For example, the processor 81 acquires operation data output from each controller via the controller communication unit 83 and / or each of the terminals 17 and 21, and operation data output from the main body device 2 (for example, the touch panel 13).
[0237] Next, the processor 81 designates, as a processing target, any object among the objects in the game space that requires processing and for which processing has not been completed (including voxel objects defined by the proprietary voxel space), and executes, for the designated object, a process of calculating the speed and a process of reflecting the result of contact between objects in the previous frame (step S2), and proceeds to the next step. The speed of the object is used to calculate the position of the object in the current frame in the process of step S13 described later. For example, when the designated object is the player character, the speed of the player character is calculated based on the operation data acquired in step S1. Also, when the designated object is an object not operated by the user (for example, an enemy object), the speed of the object is calculated based on rules predetermined in the game program. For example, the speed of the enemy object is set to 0 when it is placed on a terrain object and not moving, is set to the same as the speed of the player character when held by the player character, and is set to a speed moving in the direction based on the direction of the player character with a magnitude determined by the above rules when released by an action of throwing by the player character. Specifically, the speed of the object is calculated based on virtual physical calculations including the interaction between objects. For example, interactions such as repulsion due to collision between objects, friction due to contact, falling due to virtual gravity, and deceleration due to virtual air resistance are reflected in speed determination.
[0238] Also, the process of reflecting the result of contact between objects in the previous frame includes a process of applying an influence due to contact to the object when it is determined in the collision determination (step S12 described later) in the previous frame that the objects have come into contact with each other. The above process is, for example, the following process. · When it is determined that the player character has come into contact with a lava terrain object in the previous frame, a process of reducing the physical strength of the player character · When it is determined in the previous frame that the player character has contacted a terrain object by a pulling action or a punching action or the like, a process of generating a fragment object (for example, a light object 202; see FIG. 30). · When the player character has ridden on a voxel block composed of a material having a firm strength property in the previous frame, a process of maintaining the player character in a state of riding on the voxel block (see FIG. 32). · When the player character has ridden on a voxel block composed of a material having a soft fluidity property in the previous frame, a process of sinking the player character inside the voxel block (see FIG. 33). If the state regarding the object is changed in the process of step S2 above, the processor 81 updates the object data stored in the memory regarding the object so as to indicate the content after the change.
[0239] Next, the processor 81 determines whether an update event for updating the voxel object has occurred by the object specified in step S2 above (step S3). For example, the determination in step S3 above is made based on the result of a collision determination (step S12 described later) in the previous frame. As an example, when it is determined in the previous frame that the player character has contacted a terrain object by a punching action or the like, it is determined that an update event of deleting a part of the terrain object has occurred. Then, when an update event has occurred, the processor 81 proceeds to the process in step S4. On the other hand, when no update event has occurred, the processor 81 proceeds to the process in step S6.
[0240] In step S4, the processor 81 sets an update range for updating the voxel object in the game space and proceeds with the process to the next step. For example, the specific content of the update range (e.g., position, shape, and size) is associated with each type of update event in the game program. The update range set in step S4 is set so as to be associated with the content related to the type of update event determined to occur in step S3. In step S4, the processor 81 stores data indicating the set update range in the memory as update range data.
[0241] Next, the processor 81 makes changes according to the update event to the voxels corresponding to the update range set in step S4 (step S5) and proceeds with the process to step S6. For example, when the processor 81 deletes or deforms the voxel object within the update range as if it were reduced, or deforms it as if a voxel object is added within the update range, the processor 81 updates the voxel data stored in the memory so as to change the density of the voxels corresponding to the update range (see the above [2-2. Update of voxel data]).
[0242] In step S6, the processor 81 determines whether the processing in steps S2 to S5 has been completed for all objects (including voxel objects defined by the specific voxel space) that require processing. Then, when the processing of all objects is completed, the processor 81 proceeds with the process to step S7. On the other hand, when the processing of any object is not completed, the processor 81 returns to step S2 and repeats the processing.
[0243] Next, the processor 81 performs a material change process (step S7) and proceeds with the process to step S8. Hereinafter, with reference to FIG. 38, the material change process in step S7 will be described.
[0244] In FIG. 38, the processor 81 determines whether or not the processes of steps S23 to S32, which will be described later, have been completed for all voxel spaces (including the unique voxel space) that require processing (step S21). Then, when the processing for all voxel spaces has been completed, the processor 81 ends the processing by this subroutine. On the other hand, when the processing for any game space has not been completed, the processor 81 proceeds to step S22 for processing.
[0245] In step S22, the processor 81 selects, as a processing target, any one of the voxel spaces that require processing and for which the processing has not been completed, and proceeds to the next step for processing.
[0246] Next, the processor 81 determines whether or not the voxel object defined by the voxel space selected in step S22 above is a target for which the material is to be changed by light and shadow determination (step S23). Then, when the voxel object above is a target for which the material is to be changed by light and shadow determination, the processor 81 proceeds to step S24 for processing. On the other hand, when the voxel object above is not a target for which the material is to be changed by light and shadow determination, the processor 81 returns to step S21 above to repeat the processing.
[0247] In step S24, the processor 81 determines whether a change has occurred such that the voxel object defined by the voxel space selected in step S22 enters the range where the light of the placement light hits, or exits the range where the light of the placement light hits. As an example, based on the collision determination result of the previous frame in step S12 described later, when the determination mesh of the voxel object comes into contact with the determination shape set based on the range where the light of the placement light reaches from a state where it does not contact, or when it changes from a state of contacting the determination shape to a state of not contacting (for example, when the enemy object 251a shown in FIG. 30 comes into contact with the range 282, or when the entire enemy object 251b exits from the range 282 shown in FIG. 31; refer to the second example in the above [2-7. Process for changing material]), a positive determination is made in step S24. As another example, based on the collision determination result of the previous frame in step S12 described later, when all of the determination mesh of the voxel object is included within the determination shape from a state where a part of the determination mesh of the voxel object extends outside the determination shape, or when a part of the determination mesh extends outside the determination shape from a state where all of the determination mesh is included within the determination shape, a positive determination is made in step S24. Then, when the above state change has occurred in the voxel object, the processor 81 proceeds to step S31. On the other hand, when the above change has not occurred in the voxel object, the processor 81 proceeds to step S25. Note that the processor 81 may perform the process of step S24 only when the voxel object defined by the voxel space selected in step S22 is an object whose material changes due to the light of the placement light. That is, when the voxel object is not an object whose material changes due to the light of the placement light, the processor 81 may cancel the process in step S24 and directly proceed to step S25.
[0248] In step S25, the processor 81 determines whether the processing of steps S26 to S30 described below has been completed for all the feature points (see FIGS. 28 and 29) that are set in the voxel object defined by the voxel space selected in step S22 and that require processing. Then, if the processing of any of the feature points is not completed, the processor 81 proceeds to step S26. On the other hand, if the processing of all the feature points is completed, the processor 81 proceeds to step S31.
[0249] In step S26, the processor 81 selects any one of the above-described feature points that require processing and that has not been processed as the processing target, and proceeds to the next step.
[0250] Next, the processor 81 determines whether to perform a light and shadow determination on the feature point selected in step S26 based on the shadow buffer (step S27). For example, if the rendering process using the shadow buffer is performed in the game image generation process (drawing process) of the previous frame in step S14 described below, and the above-described feature point is arranged within the drawing range in the game space, the processor 81 makes an affirmative determination in step S27. Then, if the processor 81 performs a light and shadow determination on the above-described feature point based on the shadow buffer, it proceeds to step S28. On the other hand, if the processor 81 does not perform a light and shadow determination on the above-described feature point based on the shadow buffer, it proceeds to step S30.
[0251] In step S28, the processor 81 performs a light and shadow determination of the feature point that is currently the processing target based on the shadow buffer, and proceeds to step S29. For example, the processor 81 uses the shadow buffer used in the game image generation process (rendering process) of the previous frame in step S14 described later, and according to the determination method based on the shadow buffer described in the third example in the above [2-7. Process for changing materials], determines whether the feature point to be processed is in the shadow or in the range where light hits, and updates the rendering process data stored in the memory based on the determination result.
[0252] In step S29, the processor 81 determines whether to perform a light and shadow determination of the feature point selected in step S26 using ray checking. For example, when the rendering process using the shadow buffer is not performed in the game image generation process (rendering process) of the previous frame in step S14 described later, when the above feature point is arranged outside the rendering range in the game space, when a negative determination is made in step S27, or when it is desired to perform both the light and shadow determination using the shadow buffer and the light and shadow determination using ray checking, an affirmative determination is made in step S29. Then, when the processor 81 performs a light and shadow determination of the above feature point using ray checking, it proceeds to step S30. On the other hand, when the processor 81 does not perform a light and shadow determination of the above feature point using ray checking, it returns to step S25 and repeats the process.
[0253] In step S30, the processor 81 performs a light and shadow determination of the feature point that is currently the processing target by ray checking, and returns to step S25 to repeat the process. For example, the processor 81 determines whether the feature point to be processed is in the shadow or in the range where light hits according to the determination method by ray checking described in the first example and the third example in the above [2-7. Process for changing materials], and updates the ray check process data stored in the memory based on the determination result.
[0254] On the one hand, in step S31, the processor 81 determines whether to change the material of the voxel in the voxel space selected in step S22 above. As a first example, when step S31 is executed by a positive determination in step S24 above, the determination in step S31 is made based on the light and shadow determination method described in the second example in [2-7. Process for changing material]. As a second example, when a positive determination is made in step S25 above and all feature points have been subjected to light and shadow determination by ray check, the determination in step S31 is made with reference to the ray check process data stored in the memory according to the light and shadow determination method described in the first example in [2-7. Process for changing material]. As a third example, when a positive determination is made in step S25 above and at least some of the feature points have been subjected to light and shadow determination based on the shadow buffer, the determination in step S31 is made with reference to the rendering process data (and ray check process data as required) stored in the memory according to the light and shadow determination method described in the third example in [2-7. Process for changing material]. Then, when the processor 81 changes the material, it proceeds to step S32 for processing. On the other hand, when the processor 81 does not change the material, it returns to step S21 above to repeat the processing.
[0255] In step S32, the processor 81 changes the material of the voxels in the voxel space selected in step S22, returns to step S21, and repeats the process. As a first example, when step S32 is executed because an affirmative determination is made in step S24, the material of all the voxels in the voxel space to be processed is changed according to the material change method described in the second example in [2-7. Process of changing material], and the voxel data stored in the memory is updated. As a second example, when an affirmative determination is made in step S25, the material of all the voxels in the voxel space to be processed is changed according to the material change method described in the first example or the third example in [2-7. Process of changing material], and the voxel data stored in the memory is updated.
[0256] Returning to FIG. 37, after the material change process in step S7, the processor 81 updates the vertices of the voxel object in the game space (step S8) and proceeds to the next step. For example, when the voxel data is updated in the process of step S5, the processor 81 calculates new vertices based on the updated voxel data. Note that the positions of the new vertices are calculated according to the method described in [2-3. Calculation of vertices]. Also, the materials of the new vertices are calculated according to the method described in [2-4. Determination of vertex materials].
[0257] Next, the processor 81 simplifies the vertices (step S9) and proceeds to the next step. For example, the processor 81 simplifies each vertex updated by the process of step S8 according to the method described in the above [2-5. Simplification of Vertices]. Then, the processor 81 updates the SVO data stored in the memory to indicate each vertex obtained by the processes of step S8 and step S9. Note that the processes of step S8 and step S9 do not need to recalculate the vertices for the entire voxel data, and may be executed only for the portion where the content of the voxel was changed in the process of step S5.
[0258] Next, the processor 81 updates the display mesh of the voxel object based on the SVO data stored in the memory (step S10) and proceeds to the next step. Note that the position of each vertex of the display mesh and the material of each polygon of the display mesh (for example, the material set for each vertex of the polygon) are calculated according to the methods described in the above [2-6. Generation of Mesh] and [2-6-1. Determination of Material of Display Mesh]. In step S10, the processor 81 updates the display mesh data stored in the memory to indicate the position and material of each vertex of the updated display mesh. Note that the processor 81 may start the processes after step S11 described later and execute them in parallel without waiting for the completion of step S10. In that case, step S10 needs to be completed before the start of step S14 described later.
[0259] Next, the processor 81 updates the determination mesh for the voxel object based on the SVO data stored in the memory (step S11), and proceeds to the next step. Note that the position of each vertex of the determination mesh and the material of each polygon of the determination mesh (for example, the material set for each vertex of the polygon) are calculated according to the methods described in the above [2-6. Generation of Mesh] and [2-6-2. Determination of the Material of the Determination Mesh]. In step S11 above, the processor 81 updates the determination mesh data stored in the memory so as to indicate the position and material of each vertex of the updated determination mesh.
[0260] Note that in the example shown in FIG. 37, the generation process of the determination mesh in step S11 above is executed every frame. However, the generation process of the determination mesh does not necessarily have to be executed every frame. For example, when the collision determination process in step S12 described later is executed only in frames that satisfy a predetermined condition, the processor 81 may execute the generation process of the determination mesh in the frame in which the collision determination is performed. Further, the processor 81 may execute the generation process of the determination mesh for the voxels within the area in the game space where the collision determination in step S12 above is performed. For example, in a situation where there are no objects to be collided with other than voxel objects around the player character in the game space (that is, a situation where only the collision determination between the player character and the surrounding voxel objects needs to be performed), the processor 81 may execute the generation process of the determination mesh for the voxels within a predetermined range based on the player character.
[0261] Next, the processor 81 performs collision determination for each object in the game space based on the determination mesh data and the object data stored in the memory (step S12), and proceeds to the next step. For example, for a voxel object, the processor 81 uses the determination mesh, and for an object that is not a voxel object, the processor 81 uses a determination area of a predetermined shape set for the object to perform collision determination. In the present embodiment, the collision determination in step S12 is performed in consideration of the speed calculated in step S2 above. That is, the processor 81 performs collision determination using the position when moving at the above speed as the position of each object.
[0262] In the present embodiment, the presence or absence of the following contacts, for example, is determined by the collision determination in step S12 above. · Contact between a player character performing an action such as movement or a punch action and a terrain object or an enemy object · Contact between a character performing an action of lifting (a light object) and the light object · Contact between an object to be subjected to light and shadow determination (for example, the enemy object 251 shown in FIGS. 30 and 31) and a determination shape based on the range where the light of the placement light reaches (for example, the range 282 shown in FIGS. 30 and 31) If it is determined in the collision determination in step S12 above that the objects are in contact with each other, then in the process of step S2 in the next frame, a process reflecting the result of the contact between the objects is executed, or in the process of step S3 in the next frame, it is determined that an update event has occurred, or in the processes of steps S26 and S32 in the same frame described later, light and shadow determination is executed.
[0263] Next, the processor 81 controls the operations of each object in the game space (step S13) and proceeds to the next step. For example, for the player character, the processor 81 performs control to cause the player character to move and perform various actions based on the operation data acquired in step S1 above. Then, when a predetermined action occurs, the processor 81 generates an area for collision determination corresponding to the action within the game space. In one execution of the above step S13, for operations that occur over multiple frames (for example, actions by the player character), each object is controlled so that the operation for one frame progresses. As a result, by repeatedly executing the process of step S13 over multiple frames, each object performs a series of operations related to movement and various actions. Also, the position of the object is basically determined to be the position after moving at the speed calculated in step S2 above. However, when it is determined by the collision determination in step S12 that the object contacts another object and the movement is obstructed by the contacted other object, the position of the object may be determined not to change. Then, in step S13 above, the processor 81 updates the object data stored in the memory to be the content indicating the object after the control in step S13 above.
[0264] Next, the processor 81 generates a game image (step S14) and proceeds to the next step. For example, the processor 81 generates a game image by performing drawing on each polygon of the display mesh of the voxel object and each polygon of the object other than the voxel object based on a virtual camera. Note that each polygon of the display mesh is drawn using drawing settings such as a texture corresponding to the material set for the polygon according to the method described in [2-6-1. Determination of the material of the display mesh]. Further, the processor 81 sets light sources such as a directional light and a placement light in the game space, performs lighting processing based on the light source, and executes rendering processing including processing for adding shadows to the game space. For example, when a light object (see FIGS. 30 and 31) is arranged in the game space, the processor 81 sets a point light that emits light radially from the surface of the light object as the placement light, and sets a range (for example, range 282 shown in FIGS. 30 and 31) to which the light of the placement light reaches. The game image generated in step S14 is output to the display device and displayed once per frame cycle.
[0265] Note that in step S14, when a game image with shadows applied using a shadow buffer is generated, the processor 81 performs processing to update the shadow buffer, and executes rendering processing including processing for generating shadows based on the shadow map stored in the shadow buffer and writing them to the frame buffer. For example, the processor 81 updates the shadow buffer according to the method of generating and storing the shadow map described in [2-7. Processing for changing the material], performs drawing processing using the shadow buffer, and updates the drawing processing data stored in the memory based on the drawing processing.
[0266] Returning to FIG. 37, in step S15, the processor 81 determines whether to end the game. For example, the processor 81 makes an affirmative determination in step S15 when a predetermined operation input for ending the game is performed by the user or when the condition for ending the game is satisfied. Then, when the processor 81 ends the game, it ends the processing according to this flowchart. On the other hand, when the processor 81 does not end the game, it returns to step S1 above and repeats the processing. Thereafter, the series of processes of steps S1 to S15 are repeatedly executed until it is determined in step S15 that the game is ended.
[0267] As described above, in this embodiment, depending on whether the voxel object is in the shadow or located within the range where the light hits, the material is changed for all the voxels in the voxel space defined by the voxel object. Thereby, a game using the material change of the voxels in a predetermined voxel space based on the determination during the game can be realized.
[0268] Note that the combination of the above-described determination target of the voxel object and the determination method for determining whether the determination target is located within the range irradiated with light does not have to be a fixed combination and may be performed in various variations. For example, the combination of the above-described determination target and the above-described determination method may be replaced with any example. As an example, the enemy object 251, which is the determination target used in the second example in the above [2-7. Process of changing material], may be determined as to whether the enemy object 251 is located within the range irradiated with light, with the bounding box enclosing the enemy object 251 as the determination shape. In this case, as a first example, based on the number of feature points (see FIG. 28) set based on the above-described bounding box and arranged within the determination shape set based on the range 282 reached by light, it may be determined whether the enemy object 251 is located within the range 282 irradiated with light. As a second example, using the light object 202 as a light source, for each feature point set based on the above-described bounding box, light and shadow determination may be performed using ray check or light and shadow determination may be performed using a shadow buffer, whereby it may be determined whether the enemy object 251 is located within the range 282 irradiated with light. Also, in this case, in the subroutine illustrated in FIG. 38, the enemy object 251, which is the determination target used in the second example, may be subjected to light and shadow determination by the processing in the above steps S25 to S30, and the processing in the above step S24 may be skipped.
[0269] Also, in the above description, a processing procedure in which both light and shadow determination using a shadow buffer and light and shadow determination using ray check are performed for one of the above-described feature points may be used, but a processing procedure in which either one of the light and shadow determinations is performed may also be used. In this case, in the subroutine illustrated in FIG. 38, after the processing in the above step S28 is performed, the processing in the above step S29 may not be performed, and the process may return to the above step S25 and be repeated.
[0270] In the above description, an example in which a voxel object is defined by generating a three-dimensional mesh based on voxel data set in voxels in a three-dimensional space has been used. However, a voxel object may be defined based on voxel data set in two-dimensional voxels.
[0271] Also, the game system 1 may be any device, such as a portable game device, any portable electronic device (such as a PDA (Personal Digital Assistant), mobile phone, smartphone, personal computer, camera, tablet, etc.). In this case, the input device for performing a user operation for operating a player character or the like does not have to be the left controller 3, the right controller 4, or the touch panel 13, etc., and may be another controller, mouse, touch pad, touch panel, trackball, keyboard, cross key, slide pad, etc.
[0272] Also, in the above description, an example in which the information processing is performed by the game system 1 respectively has been used. However, at least a part of the above processing steps may be performed by another device. For example, when the game system 1 is further configured to be communicable with another device (for example, another server, another information processing device, another game device, another mobile terminal, etc.), the above processing steps may be further executed by the cooperation of the other device. In this way, by performing at least a part of the above processing steps by another device, the same processing as the above-described processing becomes possible. Also, the above-described information processing can be executed by the cooperation between one processor or a plurality of processors included in an information processing system constituted by at least one information processing device. Also, in the above embodiment, the processor 81 of the game system 1 can perform information processing by executing a predetermined program. However, a part or all of the above processing may be performed by a dedicated circuit provided in the game system 1.
[0273] Here, according to the above-described modification example, it is also possible to implement the present invention in a so-called cloud computing system configuration, a distributed wide-area network, or a local network system configuration. For example, in the system configuration of a distributed local network, it is also possible to execute the above processing in cooperation between a stationary information processing device (stationary game device) and a portable information processing device (portable game device). Note that in these system configurations, there is no particular limitation on which device performs the above-described processing, and it goes without saying that the present invention can be implemented regardless of any processing distribution.
[0274] In addition, the processing order, setting values, conditions used for determination, etc. used in the above-described information processing are merely examples, and it goes without saying that the present embodiment can be implemented even with other orders, values, and conditions.
[0275] Further, the above program may be supplied to the game system 1 not only through an external storage medium such as an external memory but also through a wired or wireless communication line. Also, the above program may be pre-recorded in a non-volatile storage device inside the device. Note that as the information storage medium for storing the above program, in addition to a non-volatile memory, a CD-ROM, a DVD, or an optical disk-shaped storage medium similar thereto, a flexible disk, a hard disk, a magneto-optical disk, a magnetic tape, etc. may also be used. Also, as the information storage medium for storing the above program, a volatile memory for storing the above program may be used. Such a storage medium can be referred to as a computer-readable recording medium. For example, by causing a computer or the like to read and execute the program of these recording media, various functions described above can be provided.
[0276] As described above, the present invention has been described in detail. However, the foregoing description is merely an exemplification of the present invention in every respect and is not intended to limit its scope. Needless to say, various improvements and modifications can be made without departing from the scope of the present invention. Further, those skilled in the art will understand that they can implement an equivalent scope based on the description of the present invention and common general technical knowledge from the description of specific embodiments of the present invention. Also, it should be understood that the terms used in this specification are used in the meaning commonly used in the art unless otherwise specified. Therefore, unless otherwise defined, all technical and scientific terms used in this specification have the same meaning as commonly understood by those skilled in the art to which the present invention pertains. In case of contradiction, this specification (including the definitions) shall prevail.
Industrial Applicability
[0277] As described above, the present invention can be used as a game program, a game system, a game device, a game processing method, etc. that can realize a game using, for example, a material change of voxels in a predetermined voxel space based on a determination during the game.
Explanation of Signs
[0278] 1... Information processing system 2... Main body device 3... Left controller 4... Right controller 11... Housing 12... Display 13... Touch panel 32, 52... Analog stick 42, 64... Terminal 81... Processor 82... Network communication unit 83... Controller communication unit 85... DRAM
Claims
1. A computer of an information processing apparatus is caused to update, based on game processing, a plurality of voxel data defined for each of a plurality of voxel spaces in a virtual space, the voxel data including, for each of a plurality of voxels included in the voxel space, at least a density indicating the degree to which the space defined by the voxel is virtually occupied by its content and a material indicating the type of the content, generate or update a first mesh corresponding to the voxel data by determining vertex coordinates of the mesh based on at least the density included in the voxel data and determining a material of the first mesh based on at least the material included in the voxel data, perform rendering of the first mesh based on the rendering setting information of the material of the first mesh based on material data including at least the rendering setting information set for the material for each type of the material, update a first material to a second material among the materials included in the voxel data of the voxel space determined to satisfy a first condition based on a first determination as to whether a first determination shape set in the virtual space with respect to at least any one of the voxel spaces is located in a range that satisfies a first condition based on the game processing, the game program.
2. The game program according to claim 1, wherein the first condition is not being in the shadow of a first light source.
3. The game program according to claim 2, wherein the computer is caused to perform the first determination based on a shadow buffer based on the first light source.
4. The game program according to claim 2, wherein the computer is caused to perform the first determination based on contact between a plurality of rays based on the first light source and the first determination shape.
5. The game program according to any one of claims 2 to 4, wherein the first light source is ambient light.
6. The game program according to claim 1, wherein the first condition is contacting or being included in a second determination shape defined in the virtual space.
7. The game program according to claim 6, wherein the second determination shape is set at a position corresponding to a position of a second light source arranged based on the game processing.
8. The game program according to claim 7, wherein the second determination shape is at least one spherical shape centered on the position of the second light source.
9. The game program according to any one of claims 1 to 4 and 6 to 8, further causing the computer to update the second material to the first material among the materials included in the voxel data of the voxel space determined not to satisfy the first condition in the voxel space where the first determination shape is set.
10. The game program according to any one of claims 1 to 4 and 6 to 8, causing the computer to make the first determination based on whether or not a predetermined number or more of feature points among a plurality of feature points set in the first determination shape satisfy the first condition.
11. The first determination shape is a rectangular parallelepiped shape, The game program according to claim 10, wherein the feature points include at least eight points at the corners of the rectangular parallelepiped.
12. A plurality of voxel data defined for each of a plurality of voxel spaces in a virtual space, for each of a plurality of voxels included in the voxel space, updating the voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by the content and a material indicating the type of the content are set based on game processing, Determining a first mesh corresponding to the voxel data based on at least the density included in the voxel data for vertex coordinates of the mesh, and generating or updating the first mesh by determining the material of the first mesh based on at least the material included in the voxel data, Based on material data including at least drawing setting information including at least texture information set for the material for each type of the material, performing drawing of the first mesh based on the drawing setting information of the material of the first mesh, A game system that updates a first material to a second material among the materials included in the voxel data of the voxel space determined to satisfy the first condition based on a first determination as to whether or not a first determination shape set in the virtual space for at least any one of the voxel spaces is located in a range that satisfies a first condition based on the game processing.
13. The game system according to claim 12, wherein the first condition is that it is not within the shadow of the first light source.
14. The game system according to claim 13, wherein the first determination is made based on a shadow buffer based on the first light source.
15. The game system according to claim 13, wherein the first determination is made based on contact between a plurality of rays based on the first light source and the first determination shape.
16. The game system according to any one of claims 13 to 15, wherein the first light source is ambient light.
17. The game system according to claim 12, wherein the first condition is that it contacts or is included in a second determination shape defined in the virtual space.
18. The game system according to claim 17, wherein the second determination shape is set at a position corresponding to the position of a second light source arranged based on the game process.
19. The game system according to claim 18, wherein the second determination shape is at least one spherical shape centered on the position of the second light source.
20. Furthermore, in the voxel space where the first determination shape is set, among the materials included in the voxel data of the voxel space determined not to satisfy the first condition, the second material is updated to the first material. The game system according to any one of claims 12 to 15 and 17 to 19.
21. The first determination is made based on whether or not a predetermined number or more of feature points among a plurality of feature points set in the first determination shape satisfy the first condition. The game system according to claims 12 to 15 and 17 to 19.
22. The first determination shape is a rectangular parallelepiped shape, The game system according to claim 21, wherein the feature points at least include at least eight points at the corners of the rectangular parallelepiped.
23. In an information processing system, A plurality of voxel data defined for each of a plurality of voxel spaces in a virtual space, for each of the plurality of voxels included in the voxel space, at least a density indicating the degree to which the space defined by the voxel is virtually occupied by the content and a material indicating the type of the content are set, and the voxel data is updated based on a game process. Determine a first mesh corresponding to the voxel data based on at least the density included in the voxel data for the vertex coordinates of the mesh, and generate or update the first mesh by determining the material of the first mesh based on at least the material included in the voxel data. For each type of the material, perform the rendering of the first mesh based on the rendering setting information of the material of the first mesh based on material data including at least the rendering setting information including at least the texture information set for the material. A game processing method for updating a first material to a second material among the materials included in the voxel data of the voxel space determined to satisfy the first condition based on a first determination as to whether or not a first determination shape set in the virtual space with respect to at least any one of the voxel spaces is located in a range satisfying a first condition based on the game processing.
24. The game processing method according to claim 23, wherein the first condition is that it is not in the shadow of a first light source.
25. The game processing method according to claim 24, wherein the information processing system performs the first determination based on a shadow buffer based on the first light source.
26. The game processing method according to claim 24, wherein the information processing system performs the first determination based on the contact between a plurality of rays based on the first light source and the first determination shape.
27. The game processing method according to any one of claims 24 to 26, wherein the first light source is ambient light.
28. The game processing method according to claim 23, wherein the first condition is that it contacts or is included in a second determination shape defined in the virtual space.
29. The game processing method according to claim 28, wherein the second determination shape is set at a position corresponding to the position of a second light source arranged based on the game processing.
30. The game processing method according to claim 29, wherein the second determination shape is at least one spherical shape centered on the position of the second light source.
31. The game processing method according to any one of claims 23 to 26 and 28 to 30, wherein in the voxel space in which the first determination shape is set in the information processing system, among the materials included in the voxel data of the voxel space determined not to satisfy the first condition, the second material is updated to the first material.
32. The game processing method according to any one of claims 23 to 26 and 28 to 30, wherein the information processing system is caused to make the first determination based on whether or not a predetermined number or more of feature points among the plurality of feature points set in the first determination shape satisfy the first condition.
33. The first determination shape is a rectangular parallelepiped shape, The game processing method according to claim 32, wherein the feature points include at least eight points at the corners of the rectangular parallelepiped.
34. A game device including a processor, The processor is Updating, based on game processing, voxel data defined for each of a plurality of voxel spaces in a virtual space, the voxel data including at least a density indicating the degree to which the space defined by each voxel in the voxel space is virtually occupied by the content and a material indicating the type of the content, Causing the first mesh corresponding to the voxel data to be determined based on at least the density included in the voxel data for the vertex coordinates of the mesh, and generating or updating the material of the first mesh based on at least the material included in the voxel data, Based on material data including at least drawing setting information including at least texture information set for the material for each type of the material, performing drawing of the first mesh based on the drawing setting information of the material of the first mesh, A game device that updates a first material to a second material among the materials included in the voxel data of the voxel space determined to satisfy the first condition based on a first determination as to whether or not a first determination shape set in the virtual space for at least any one of the voxel spaces is located in a range that satisfies a first condition based on the game processing.
Citation Information
Patent Citations
Program and image generation system
JP2017099744A
Simulation system, simulation method, and simulation program
JP2022187433A
Method and system for generating polygon meshes approximating surfaces using root-finding and iteration for mesh vertex positions
JP2023178274A
Generating surface meshes from voxel models of 3D environments.
JP2024521128A