Game program, game processing method, information processing system, and information processing device

The game program employs stepwise voxel data updates and signed distance interpolation to dynamically deform voxel objects, addressing limitations in existing methods and enabling efficient, complex shape transformations in virtual spaces.

JP2025113134AInactive Publication Date: 2025-08-01NINTENDO CO LTD

Patent Information

Application Number
JP2024151332
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-09-03
Publication Date
2025-08-01
Estimated Expiration
Not applicable · inactive patent

AI Technical Summary

Technical Problem

Existing methods for deforming object meshes in virtual spaces using voxel data are limited and lack a novel approach for dynamic and efficient shape transformations.

Method used

A game program that updates voxel data stepwise over multiple frames, determines voxel update ranges using signed distances, and interpolates densities to deform voxel objects gradually, allowing for complex shape changes and restoration of destroyed parts.

Benefits of technology

Enables dynamic and efficient deformation of voxel objects, supporting complex shapes and seamless transitions, while maintaining computational efficiency and preserving object integrity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025113134000001_ABST
    Figure 2025113134000001_ABST
Patent Text Reader

Abstract

To deform a mesh of a voxel object using a new method.SOLUTION: An information processing system updates voxel data in which at least density is set on the basis of game processing. The information processing system updates a display mesh determined on the basis of the density included in the voxel data. The information processing system performs drawing of a virtual space including the display mesh on the basis of apex coordinates of the display mesh for each frame. The information processing system starts a gradual update for gradually updating the voxel data in a period of a plurality of frames on the basis of game processing. In the period of the gradual updating, the information processing system determines a voxel updating range in the frame by a determination method using a plurality of shapes for each frame, and performs the update for the density for each of the voxels corresponding to the voxel updating range of the frame in the virtual space of the voxel data.SELECTED DRAWING: Figure 44
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a game program, a game processing method, an information processing system, and an information processing apparatus for generating an object in a virtual space using voxel data.

Background Art

[0002] Conventionally, objects have been managed using voxel data, and object meshes have 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] To provide a novel method for deforming an object mesh by editing voxel data.

Means for Solving the Problems

[0005] To solve the above problems, the present invention employs the following configurations (1) to (13).

[0006] (1) An example of the present invention is a game program that causes a computer of an information processing apparatus to execute the following processing. ·Processing to update voxel data defined in a virtual space, where for each of a plurality of voxels, the density indicating the degree to which the space defined by the voxel is virtually occupied by content is at least set, based on game processing ·Processing to update a display mesh corresponding to the voxel data and drawn based on a virtual camera, where the vertex coordinates of the display mesh are determined based on at least the density included in the voxel data ·Processing to perform drawing of a virtual space including the display mesh for each frame, based on the vertex coordinates of the display mesh ·Processing to start stepwise updating to update the voxel data stepwise over a period of a plurality of frames based on game processing ·During the period of the stepwise update, for each frame, determining the voxel update range in the frame by a determination method using a plurality of shapes, and performing an update to the density for each of the voxels in the voxel data that correspond to the voxel update range in the virtual space

[0007] According to the configuration of (1) above, the mesh of the voxel object can be deformed by a novel method.

[0008] (2) In the configuration of (1) above, each of the plurality of shapes may be defined by representing an arbitrary position in the space as a signed distance from the boundary of the shape. The game program may cause the computer to interpolate a plurality of signed distances based on each of the plurality of shapes in the stepwise update, and use the range defined based on the interpolated signed distances as the voxel update range, and update the density of each voxel based on the interpolated signed distance with respect to the position of the voxel.

[0009] According to the configuration of (2) above, an intermediate shape for a plurality of shapes can be defined as a shape during deformation.

[0010] (3) In the above configuration (2), the game program may cause the computer to, in a gradual update, decrease the proportion of signed distances based on a first shape among the multiple shapes in the interpolation as frames progress, and increase the proportion of signed distances based on a second shape among the multiple shapes.

[0011] According to the above configuration (3), it is possible to gradually deform the voxel object from a shape representing the first shape to a shape representing the second shape.

[0012] (4) In the above configuration (1), the game program may cause the computer to execute the following process in the gradual update. A process of deforming a third shape of multiple shapes by expanding the part inside the fourth shape of multiple shapes and contracting the part outside the fourth shape, so that the third shape approaches the fourth shape over the course of frames. Processing that uses the third shape in the frame as the voxel update range in the frame

[0013] According to the above configuration (4), it is possible to gradually deform the voxel object from a shape representing the third shape to a shape representing the fourth shape.

[0014] (5) In the above configuration (1), the game program may cause the computer to execute the following process in the gradual update. - Processing to transform multiple shapes according to the frame progress - Processing of multiple shapes in the frame as the voxel update range for the frame

[0015] According to the above configuration (5), by setting a range that combines a plurality of shapes as the update range of the voxels, it is possible to make the voxel object have a complex shape.

[0016] (6) In any of the configurations (2) to (5) above, the range of the density value may include a first range and a second range with a value smaller than the first range. The game program may cause the computer to, in stepwise updates, set the density of each voxel included in the voxel data to a value within the second range, and further set the density of the voxels corresponding to the inside of the voxel update range of the frame to a value within the first range.

[0017] According to the configuration (6) above, even when a voxel that goes from within the update range to outside the update range occurs during stepwise deformation, the voxel object can be made into a shape corresponding to the update range.

[0018] (7) In any of the configurations (2) to (5) above, the range of the density value may include a first range and a second range with a value smaller than the first range. The game program may cause the computer to, in stepwise updates, set the density of the voxels corresponding to the inside of the voxel update range of the frame to a value within the first range, and set the density of the voxels corresponding to the outside to a value within the second range.

[0019] According to the configuration (7) above, even when a voxel that goes from within the update range to outside the update range occurs during stepwise deformation, the voxel object can be made into a shape corresponding to the update range.

[0020] (8) In the configuration (1) above, the game program may cause the computer to execute the following processing in stepwise updates. · Processing to move the fifth shape among a plurality of shapes according to the passage of the frame · Processing to set the overlapping range of the fifth shape and the sixth shape among a plurality of shapes as the voxel update range of the frame

[0021] According to the configuration of (8) above, using the fifth shape and the sixth shape, the voxel object can be deformed to represent a shape different from the fifth shape and the sixth shape.

[0022] (9) In the configuration of (8) above, the range of density values may include a first range and a second range with values smaller than the first range. The game program may cause the computer to set the density of the voxels corresponding to the inside of the voxel update range of the frame to a value within the first range in stepwise updates.

[0023] According to the configuration of (9) above, the voxel object can be deformed so that the overlapping range of the fifth shape and the sixth shape becomes an inner region of the voxel object.

[0024] (10) In the configuration of (9) above, the game program may cause the computer to execute the following processing. · A process of generating a destruction event that sets the density of the voxels corresponding to the inside of the voxel update range based on the seventh shape to a value within the second range for the voxel data with the sixth shape preset based on the game processing · A process of starting stepwise updates in response to the occurrence of the destruction event · In the stepwise update, moving the eighth shape so that the range where the eighth shape has moved in the entire stepwise update includes the entire seventh shape, and in each frame, setting the density of the voxels corresponding to the inside of the voxel update range to a value within the first range

[0025] According to the configuration of (10) above, it is possible to perform a deformation such that the part of the voxel object destroyed by the destruction event is restored.

[0026] (11) In the configuration of (1) above, the range of the density value may include a first range and a second range with a value smaller than the first range. The game program causes the computer to, based on step-by-step updates, at the final stage of the step-by-step updates, update the density of the voxels inside the voxel update range corresponding to any one of the plurality of shapes to a value in the first range and the density of the voxels outside to a value in the second range.

[0027] According to the configuration of (11) above, the shape of the voxel object at the final stage of deformation can be defined by one of the plurality of shapes.

[0028] (12) In the configuration of (1) above, the range of the density value may include a first range and a second range with a value smaller than the first range. The game program causes the computer to, during the period of step-by-step updates, at the timing when a predetermined frame has elapsed, set, as the voxel update range of the frame, the shape among the plurality of shapes that is associated with the frame and with which a larger shape is associated as the frame elapses, and decrease the density of the voxels corresponding to the inside of the voxel update range to a value within the second range or increase it to a value within the first range.

[0029] According to the configuration of (12) above, the voxel object can be deformed so as to become larger or smaller step by step.

[0030] (13) In any of the configurations of (6), (7), and (9) to (12) above, the game program causes the computer to determine the vertex coordinates of the display mesh based on the method of setting vertices at coordinates based on the positions and densities of a plurality of surrounding voxels for the portion where the voxels having a density within the first range and the voxels having a density within the second range are adjacent to each other, based on the voxel data.

[0031] According to the configuration of the above (13), by setting a mesh at a portion where a voxel having a density within a first range and a voxel having a density within a second range are adjacent, the voxel object can be deformed into a shape corresponding to the shape of the update range.

[0032] Another example of the present invention may be an information processing apparatus or an information processing system that executes the processing in the above (1) to (13). Further, another example of the present invention may be a game processing method for causing an information processing system to execute the processing in the above (1) to (13).

Effect of the Invention

[0033] According to the above game program, game processing method, information processing system, and information processing apparatus, the mesh of the voxel object can be deformed by a novel method.

Brief Description of the Drawings

[0034]

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

Figure 39

Figure 40

Figure 41

Figure 42

Figure 43

Figure 44

Modes for Carrying Out the Invention

[0035] [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 the 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 respectively attached to the main body device 2 and integrated. Also, the game system 1 can also be used with the main body device 2, the left controller 3, and the right controller 4 separated (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.

[0036] 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 processing) 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 an operation unit for the user to input.

[0037] 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 the "controller".

[0038] FIG. 3 is a six-sided 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.

[0039] Note that 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.

[0040] 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 device (LCD). However, the display 12 may be any type of display device.

[0041] 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).

[0042] 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.

[0043] 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.

[0044] 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 predetermined type of storage medium. The predetermined type of storage medium is, for example, a storage medium (e.g., a dedicated memory card) dedicated to the game system 1 and the same type of information processing device. The predetermined type of storage medium is used to store, for example, data (e.g., save data of an application, etc.) used in the main body device 2 and / or a program (e.g., a program of an application, etc.) executed by the main body device 2. Further, the main body device 2 includes a power button 28.

[0045] 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 the image generated and output by the main body device 2 on a stationary monitor. Further, in the present embodiment, the cradle has a function of charging the placed integrated device or the main body device 2 alone. The cradle also has a function of a hub device (specifically, a USB hub).

[0046] 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 that is long in the vertical direction (i.e., the y-axis direction shown in FIGS. 1 and 4). The left controller 3 can also be held in a vertically long orientation when removed from the main body device 2. 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. Further, the left controller 3 can also 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.

[0047] 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 corresponding to the tilting direction (and an input of a magnitude corresponding to the tilted angle) by tilting the analog stick 32. Note that the left controller 3 may be provided with a cross key, a slide stick capable of slide input, or the like as a direction input unit instead of the analog stick. Further, in the present embodiment, it is possible to input by pressing the analog stick 32.

[0048] 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 down direction button 34, an up 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.

[0049] Further, 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.

[0050] 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. Further, the right controller 4 can also 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.

[0051] Similar to the left controller 3, the right controller 4 includes an analog stick 52 as a direction input unit. In the present embodiment, the analog stick 52 has the same configuration as the analog stick 32 of the left controller 3. Further, 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, similar to the left controller 3, 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. Furthermore, 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, similar to the left controller 3, the right controller 4 includes a second L button 65 and a second R button 66.

[0052] In addition, the right controller 4 includes a terminal 64 for the right controller 4 to perform wired communication with the main body device 2.

[0053] 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.

[0054] 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 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).

[0055] 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.

[0056] 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.

[0057] The processor 81 appropriately reads and writes data between the flash memory 84, the DRAM 85, and each of the above storage media to execute the above information processes.

[0058] 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 wireless communication with other main body devices 2 arranged within a closed local network area, and realizes a function enabling so-called "local communication" in which data is transmitted and received by direct communication between a plurality of main body devices 2.

[0059] 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. However, 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.

[0060] 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. Also, 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. Further, 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. Also, 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 or audio data) to a stationary monitor or the like via the cradle.

[0061] 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 sets of the left controller 3 and the right controller 4, respectively. As an example, while the first user inputs to the main body device 2 using the first set of the left controller 3 and the right controller 4, it is possible for the second user to input to the main body device 2 using the second set of the left controller 3 and the right controller 4.

[0062] 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.

[0063] 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.

[0064] 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.

[0065] 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 charged to the battery 98.

[0066] 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, and thus are omitted in FIG. 7.

[0067] The left controller 3 is equipped with a communication control unit 101 that communicates with the main unit 2. As shown in FIG. 7 , the communication control unit 101 is connected to each component, including the terminal 42. In this embodiment, the communication control unit 101 can communicate with the main unit 2 both via wired communication via the terminal 42 and via wireless communication without using the terminal 42. The communication control unit 101 controls the method of communication between the left controller 3 and the main unit 2. That is, when the left controller 3 is attached to the main unit 2, the communication control unit 101 communicates with the main unit 2 via the terminal 42. When the left controller 3 is detached from the main unit 2, the communication control unit 101 communicates wirelessly with the main unit 2 (specifically, with the controller communication unit 83). Wireless communication between the controller communication unit 83 and the communication control unit 101 is performed in accordance with, for example, the Bluetooth (registered trademark) standard.

[0068] The left controller 3 also includes a memory 102, such as a flash memory. The communication control unit 101 is configured, for example, by a microcomputer (also called a microprocessor), and executes firmware stored in the memory 102 to perform various processes.

[0069] The left controller 3 includes buttons 103 (specifically, buttons 33 to 39, 43, 44, and 47). The left controller 3 also includes an analog stick (referred to as "stick" in FIG. 7) 32. Each button 103 and analog stick 32 repeatedly outputs information related to operations performed on the button 103 and analog stick 32 to the communication control unit 101 at appropriate timing.

[0070] The communication control unit 101 acquires information regarding input (specifically, information regarding 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 regarding input is transmitted to the main body device 2 may be the same or different for each input unit.

[0071] When the above operation data is transmitted to the main body device 2, the main body device 2 can obtain the input performed on the left controller 3. That is, the main body device 2 can determine operations on each button 103 and the analog stick 32 based on the operation data.

[0072] 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).

[0073] 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.

[0074] The right controller 4 includes the same input units as those of the left controller 3. Specifically, it includes each button 113 and the analog stick 52. These input units have the same functions as those of the left controller 3 and operate in the same manner.

[0075] 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.

[0076] [2. Overview of Processing in the Game System] Next, with reference to FIGS. 8 to 29, 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 a player) are arranged in a game space that is a three-dimensional virtual space, and causes the display device to display it. Note that, 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.

[0077] [2-1. Voxel] 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 cubic) 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.

[0078] 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 as thick lines, but these thick lines are added for the purpose of making the drawing easier to view, and in reality, the sides of the terrain object do not need to be shown thickly.

[0079] Note that the terrain object shown in FIG. 8 is generated, for example, according to the rule that "if the parameter included in the voxel data set for a voxel is greater than a predetermined value, a cube is placed at the position of the voxel, and if 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 a voxel and a 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 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 object data.

[0080] Regarding the voxel object, by changing the voxel data of each voxel, the shape can be changed. 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.

[0081] 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 changes 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.

[0082] 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 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. Further, 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 in the game space. At this time, the game system 1 stores voxel data for each voxel space.

[0083] 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.

[0084] 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.

[0085] In this embodiment, the density can take an integer value in the range from a lower limit value (e.g., 0) to an upper limit value (e.g., 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. The surface shape of the voxel object is determined based on the density. Thus, 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 (i.e., the virtual content of the voxel object). For example, when the density is 0, the voxel is empty, when the density is 255, the entire voxel is the content of the voxel object, and when the density is a value between 0 and 255, the content of the voxel object can occupy the voxel 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 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.

[0086] In other embodiments, the density may indicate either a state where the volume occupied by the region within the voxel object occupies the entire region within the voxel or a state where 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 values of 0 or 1.

[0087] The first material ID and the second material ID are information indicating the material (in other words, the substance) of the voxel. In this embodiment, a material such as sand, rock, or soil is set to the voxel. Note that the game system 1 provides a plurality of types of materials that can be set to the voxel (see the material data shown in FIG. 12). In this embodiment, up to two materials from the plurality of types of materials provided can be set to one voxel. The first material ID is an ID indicating the first material set to the voxel, and the second material ID is an ID indicating the second material set to the voxel. As will be described in detail later, the material of a voxel object (i.e., the material set to the polygons of the voxel object) is determined based on the material set to the voxel.

[0088] As described above, in this embodiment, the voxel data includes an ID indicating the material, but in other embodiments, the voxel data may have a data structure that includes data that directly indicates the content of the material (i.e., the name, properties, and drawing setting information described below).

[0089] 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 ratio of the other. 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 means 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 types of materials can be set instead of up to two types, the ratio of the materials in the voxel is represented as a plurality of values respectively indicating the ratio of each material.

[0090] 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.

[0091] 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).

[0092] As described above, in the present embodiment, since the voxel data includes the material ID, the game system 1 stores the 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 the present embodiment, for each material, the material ID, the name, properties, and drawing setting information set for the material are associated with each other.

[0093] The name included in the material data is the name set for the material (for example, soil, sand, grass, etc.). Although details will be described later, during the game, the name of the material of the voxel object may be displayed (see FIG. 28). In order to perform such a display, the material data includes information on the name of the material.

[0094] 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 one 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 · The amount of the player character's physical strength recovered when the player character destroys or acquires the voxel object · The amount of in-game currency acquired by the player character 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.

[0095] In this embodiment, as information for specifying the properties of a material, the material data includes an ID indicating the property (see FIG. 12). Although not shown, for each property prepared, the game system 1 stores property information in which the content of the property (for example, a value indicating the weight or slipperiness described above) 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.

[0096] 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, for each texture prepared, the game system 1 stores texture information in which 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.

[0097] Also, the material data may include data other than the data shown in FIG. 13. 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 footsteps output when a player character walks on a voxel object based on the voxel.

[0098] Note that the material data may be data in any format that can identify the properties of the material and / or the drawing 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 drawing settings, instead of a data structure that includes a material ID and a texture ID.

[0099] [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).

[0100] 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 201 is expressed.

[0101] 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 the object related to the generated update event (e.g., the 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).

[0102] The game system 1 changes the density of 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 detection) is changed. Note that in other embodiments, in addition to changing the density of 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 of the voxels.

[0103] 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 value of the SDF becomes negative for the positions inside the shape represented by the SDF, and the value of the SDF 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 based on whether the value of the SDF is positive or negative. Also, by using the value of the signed distance, not only simple inside / outside determination but also processing such as correction and interpolation can be performed.

[0104] 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 (see FIG. 29 described later). 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.

[0105] [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 the present embodiment, the above vertices are simplified, and the simplified vertices become the vertices of the mesh of the voxel object.

[0106] FIG. 15 is a diagram showing an example of a vertex setting method. 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 the present 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 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 non-existence (that is, a density less than the reference value described later) are adjacent. The details of this method will be described below.

[0107] As described above, in this embodiment, the density set for each voxel is set within 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. And in this embodiment, voxels with a density equal to or higher than a reference value are virtually treated as being inside the object, and voxels with a density lower than the reference value are treated as being outside the object. It can also be said that voxels with a density equal to or higher than the reference value are virtually treated as voxels indicating existence, and voxels with a density lower than the reference value are treated as voxels indicating 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, assume that the density is 0 in voxel 211 and other outer voxels, the density of voxel 212 is 100 which is lower than the reference value, and the densities of voxels 213 and 214 are 150 and 210 which are equal to or higher than the reference value. In this embodiment, the game system 1 generates vertices between voxels with a density equal to or higher than the reference value and voxels with a density lower 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 that spans both voxels with a density equal to or higher than the reference value and voxels with a density lower 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 vertices 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 it is 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 lower 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 appear on the upper right and upper left sides of voxel 212 in Fig. 15.

[0108] By setting the vertices as described above, when generating a mesh that connects each set vertex (or each vertex after performing the simplification process described later on each set vertex), it is possible to generate a shape having a volume that reflects the density for each voxel to some 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 the object, or a voxel with a density of 255 includes a region outside the object. Also, in this embodiment, since voxels below the reference value are processed as outside the object, the volume is also 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.

[0109] [2-4. Determination of Vertex Material] The game system 1 determines the material for each vertex set as described above. The vertex material 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 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 vertex material do not necessarily have to be the same as the voxels used for determining the generation of the vertex and may be different.

[0110] 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, the coordinates indicating the position of vertex 219 are assumed to be (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 (the position of the white circle shown in FIG. 13) among the center positions of voxels 215 to 218 as (0, 0).

[0111] When determining the material of a vertex, the game system 1 calculates an evaluation value for each material in the surrounding voxels based on the density of the material and a 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 as to be 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

[0112] 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 values from 0 to 255 described above 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 the density of the voxel is 1, so 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 the density of the voxel is 204 / 255 = 0.8, so 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 the density of the voxel is 153 / 255 = 0.6, so 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.

[0113] Then, the game system 1 calculates the above evaluation value for each material based on the above weight value and the density of the 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.

[0114] 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. Further, 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.

[0115] 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.

[0116] As described above, in the present embodiment, for each vertex, with respect to the material IDs included in the voxel data of a plurality of surrounding voxels, a priority parameter (for example, an evaluation value) for each material ID is calculated based on the voxel data. 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.

[0117] 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 such that the priority of the material set in the voxel with a high 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 reflecting the magnitude of the density set in the voxel.

[0118] 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 such 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 reflecting the distance between the voxel and the vertex.

[0119] 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 such that the priority of the material with a high 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 reflecting the ratio of each material.

[0120] [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 one 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 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.

[0121] 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 FIG. 17(a) 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. Also, in FIG. 17, the vertex division region with the letter "v" shown inside indicates the vertex division region where vertices are set.

[0122] In this embodiment, the game system 1 determines whether or not vertices within a predetermined number (4 in FIG. 17, 8 in the actual three-dimensional space) of mutually adjacent vertex division regions can be simplified. When it is determined that simplification is possible, simplification is performed on the vertices within the predetermined number of vertex division regions.

[0123] (a) of FIG. 17 shows 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 predetermined number of vertex division regions determined to be simplifiable are replaced by one vertex (see FIG. 17(b)). As a result, the vertices within the predetermined number of vertex division regions are simplified to one vertex.

[0124] In this embodiment, the game system 1 performs simplification in multiple stages. The number of stages is arbitrary, but in FIG. 17, only the first two stages are illustrated and described. (b) of FIG. 17 shows the state after the first-stage simplification, and (c) of 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 region within the range surrounded by the dotted line in FIG. 17(b) can be simplified, the vertices of the vertex division region are simplified, resulting in the state shown in FIG. 17(c). 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.

[0125] Regarding the determination of whether simplification is possible, the specific method is arbitrary. In this embodiment, as 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.

[0126] 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 condition as the conventional method using SVO may be used.

[0127] In this embodiment, the material condition is a condition regarding the number of material types set for each vertex within the predetermined number of vertex segment regions to be simplified. FIG. 18 is a diagram illustrating an example of the material condition. FIG. 18(a) illustrates a case where the materials of vertices 221 to 224 are (grass), (grass), (grass and earth), and (grass and earth), respectively. FIG. 18(b) illustrates a case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and earth), and (grass and earth), respectively. In this embodiment, the material condition is that the total number of material types set for each vertex to be simplified is equal to or less than a predetermined number. For example, the material condition is that the total number of material types set for each vertex to be simplified is equal to or less than the number of materials that can be set for one vertex. In this embodiment, the predetermined number is 2. For example, in the case of FIG. 18(a), the total number of material types set for vertices 221 to 224 to be simplified is two, grass and earth, so the material condition is satisfied. At this time, provided that the above-mentioned conditions regarding the shape of the object are satisfied, each of the vertices 221 to 224 is determined to be simplifiable. On the other hand, in the case of Figure 18(b), the total number of material types set for each of the vertices 221 to 224 to be simplified is three: grass, earth, and sand, so the material conditions are not satisfied. At this time, regardless of whether the above-mentioned conditions regarding the shape of the object are satisfied, each of the vertices 221 to 224 is determined to be unsimplifiable.

[0128] Note that in the game system 1, multiple types of materials may be prepared that have the same set properties but different appearances, even if they are strictly classified as different types. Some of these multiple types of materials may be considered to be the same type when determining whether or not a material satisfies a condition related to the material. For example, with regard to soil materials, multiple types of soil materials may be prepared that have the same properties but similar appearances (e.g., texture color or pattern). In such a case, the game system 1 may consider these multiple types of soil materials to be the same type when determining whether or not a material satisfies a condition related to the material.

[0129] Here, in the present embodiment, with respect to vertices, similar to voxels, up to two types of materials can be set. On the other hand, in the present embodiment, when the total number of types of materials set for each vertex to be simplified is three or more, simplification is not performed. That is, when the total number of types of materials exceeds the number of materials that can be set for one vertex, simplification is not 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.

[0130] In the present embodiment, the material of the vertex after simplification 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 vertex before simplification as the first material and the second material for the vertex after simplification. Thereby, the material information 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 the present 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 vertex after simplification and the vertex 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 the material of the vertex] above can be used as the density of the material here), calculates an evaluation value for each material. Then, the ratio of the materials is calculated based on the calculated evaluation value of each material.

[0131] [2-6. Generation of Mesh] 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.

[0132] 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 the voxel object. The determination mesh is a mesh used for collision determination of the voxel object. Although details will be described later, the game system 1 can perform processing using meshes suitable for displaying and collision determination of the voxel object by using the above two types of meshes.

[0133] In this embodiment, the game system 1 generates the display mesh and the determination mesh based on the data of the above-described 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 processing efficiency can be improved. Note that 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.

[0134] 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 reduces the number of vertices of the determination mesh to be 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, the 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 allowable 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.

[0135] 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.

[0136] [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, the same number of materials may be set for the polygon.

[0137] 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.

[0138] 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.

[0139] 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 made 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) of FIG. 20). Therefore, for the above quadrilateral, the division condition is satisfied, so the game system 1 divides the quadrilateral into two triangles.

[0140] Note that since there are two ways to divide a quadrilateral into two triangles, when the division condition is satisfied for the triangles divided by at least one of the two ways, the game system 1 performs the above division by the method that satisfies the division condition. On the other hand, when the division condition is not satisfied for the triangles divided by either of the two ways, the division is performed by either method.

[0141] By performing the division as described above, the game system 1 can generate two triangles such that the materials set at each vertex are two or less, so as to minimize the loss 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 loss of information on the materials set at each vertex.

[0142] 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.

[0143] In this embodiment, for each polygon constituting the display mesh, when there are three or more types of materials set at 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 be set to 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 be set to 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 be set to 0.7:0.3.

[0144] When there are three or more types of materials set at 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 the ratios for each vertex at which 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) of FIG. 21).

[0145] The specific method for 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 times specified for each vertex may be selected as the material of the polygon.

[0146] In the present embodiment, the material of the polygon selected as described above is indicated by the materials set at the respective vertices of the polygon. That is, when the material of the polygon is selected, the game system 1 changes the materials set at the respective vertices 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) of 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) of FIG. 21). Note that 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 on the materials of the third and subsequent types set at each vertex of the polygon is deleted.

[0147] In addition, the game system 1 changes the ratio of the materials set for each vertex in response 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 the respective vertices of the polygon.

[0148] 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 rendering described later, it is possible to facilitate the execution of the rendering process using the textures.

[0149] Note that due to the above change, it is possible that the materials for a certain vertex are all 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 materials 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, when 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).

[0150] 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 rendering process while reflecting the material set for the vertices in the appearance of the polygon and suppressing the number of textures used.

[0151] 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, and when the material exceeds the predetermined number, based on the priority parameter of each vertex (specifically, based on the determination value calculated based on the above-described evaluation value), it selects a predetermined number of materials with high priority and determines them as the material of the polygon. Thus, even when more than a predetermined number of materials are set for each vertex in total, the material of the polygon can be set to a predetermined number or less of materials considering the priority.

[0152] 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 may be a discrepancy in the first and second materials set for the vertices shared by two adjacent polygons.

[0153] FIG. 22 is a diagram showing an example of materials set at the vertices of two adjacent polygons. FIG. 22 shows a state ((b) of FIG. 20) in which two polygons are formed by the vertices 231 to 234 shown in FIG. 20. In the example shown in FIG. 22, the materials of the first polygon formed by the vertices 231, 233, and 234 are determined to be grass and sand, and therefore the first and second materials of these vertices should be set to grass and sand, respectively. On the other hand, the materials of the second polygon formed by the vertices 231, 232, and 234 are determined to be grass and earth, and therefore the first and second materials of these vertices should be set to grass and earth, respectively. Therefore, in the example shown in FIG. 22, a discrepancy occurs in the materials to be set for the vertices 231 and 234 shared by the two polygons.

[0154] Therefore, in this embodiment, if a discrepancy occurs in the materials to be set for a vertex shared by two polygons, the game system 1 adds another vertex at the same position as the vertex. FIG. 22(b) is a diagram showing an example of a state in which a vertex 231' is added for the vertex 231 and a vertex 234' is added for the vertex 234. In the example of FIG. 22, the game system 1 sets the first and second materials for the vertices 231 and 234 to grass and sand in accordance with the material of the first polygon. Also, the game system 1 sets the first and second materials for the vertices 231' and 234' to grass and earth in accordance with the material of the second polygon. In this way, by formally setting two vertices as vertices shared by two polygons (i.e., generating two vertex data sets having the same position but different materials), it is possible to prevent discrepancies in the materials set for the vertices.

[0155] The game system 1 generates a display mesh made up of polygons whose vertices and materials have been determined as described above. The game system 1 also draws the voxel object by drawing the polygons based on the material information (i.e., the first material and the second material) set for each vertex.

[0156] FIG. 23 is a diagram showing an example of applying a texture to a polygon. FIG. 23 shows a triangular polygon formed by the vertices 241 to 243 shown in FIG. 21. Note that the materials set for the vertices 241 to 243 are those shown in FIG. 21(b).

[0157] Regarding the position of the vertices of the polygon, the texture of the first material and the texture of the second material set for the vertex are drawn by mapping that blends them at the ratio of the material 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 each material ID 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.

[0158] In addition, 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 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. As it approaches vertex 243, the blend ratio of the sand texture increases. At the position of vertex 242, the blend rate of grass and sand is 1:1, 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 (that is, 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.

[0159] [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.

[0160] In this embodiment, the game system 1 sets one type of material for each polygon that constitutes the determination mesh. Specifically, the game system 1 determines the material to be set for a polygon of the determination mesh based on information about the material set at the vertices of the polygon (i.e., information about the first and second materials and the ratio of the materials).

[0161] Fig. 24 is a diagram showing an example of a method for determining the material of polygons that make up a determination mesh. Fig. 24 shows an example of determining the material for a triangular polygon formed by each of the vertices 241 to 243 shown in Fig. 21. The materials set for each of the vertices 241 to 243 are those shown in Fig. 21(a).

[0162] When determining the material of a polygon, the game system 1 calculates a judgment value for each material set at each vertex of the polygon. In this embodiment, the method for calculating the judgment value is the same as the method for calculating the judgment value used to select the material set at the polygon of the display mesh. Note that the specific method for calculating the judgment value is arbitrary. In other embodiments, the judgment value may be calculated by any method based on the information set at the vertices of the polygon of the judgment mesh.

[0163] In the example shown in Fig. 24, the judgment values for each material are the same as in the case shown in Fig. 21, with the grass material judgment value being 1.3, the sand material judgment value being 1.2, and the earth material judgment value being 0.5. Therefore, the grass material is selected as the material for the polygon shown in Fig. 24.

[0164] As described above, in this 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 ID 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 prevent the processing according to the type of material, which is performed according to the result of the collision determination using the determination mesh, from becoming complicated. Note that the method of 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.

[0165] Also, in this embodiment, for the polygon of the display mesh, up to two types of materials are set, while for the polygon of the determination mesh, one type of material is set. According to this, for the polygon 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 prevent the processing performed according to the result of the collision determination using the determination mesh from becoming complicated. 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 polygon of the display mesh and the number of materials that can be set for the polygon of the determination mesh may both be plural, may be the same, or may be different.

[0166] In addition, 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, since two types of materials can be set for the vertices generated during the process of obtaining the display mesh from the voxel data, 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.

[0167] In another embodiment, the game system 1 may set materials differently for vertices used for generating a display mesh and vertices used for generating 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 for generating a display mesh as described above, and may set one type of material for vertices used for generating 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 vertices used for generating a determination mesh, the material for which the above-described determination value calculated for each material is the largest may be set as the material of the vertex. Also by the above, as in the present embodiment, 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.

[0168] 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.

[0169] 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.

[0170] In the above, when the voxel data is changed from the initial state, the method of generating each mesh (that is, the display mesh and the determination mesh) based on the changed voxel data 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.

[0171] [Processing Using a Mesh of 2 to 7] Next, a processing example using the mesh generated as described above for the voxel object will be described. In the following, it is assumed that terrain objects such as the ground and walls are voxel objects, and a player character performs an action, and as a result of collision detection, an in-game effect occurs. An example of this case will be described.

[0172] FIG. 25 is a diagram showing an example of a game image representing the movement of a player character on a terrain object. In the example shown in FIG. 25, the material for a part of the polygon in the determination mesh of the terrain object that is the ground is set to "lava". Note that the material for polygons other than region 251 in the determination mesh of the terrain object is set to "rock". In the example shown in FIG. 25, the game system 1 performs a collision determination between the terrain object and the player character 201 using the determination mesh. That is, a collision determination is made as to whether or not the determination mesh of the terrain object and a determination area set for the player character (for example, an area of a predetermined shape set based on the position of the player character) are in contact. When a collision is determined between the polygon whose material is lava and the player character 201, as a process for generating an in-game effect, a process of reducing the physical strength of the player character 201 is performed. Also, in the above case, a process of causing the player character 201 to perform a predetermined reaction is performed.

[0173] Note that in this embodiment, as the property information included in the above material data, for the lava material, a property of reducing the physical strength of the contacted player character (for example, the property that the temperature is equal to or higher than a predetermined value) is set. The game system 1 generates an in-game effect (in the above example, a reduction in the physical strength of the player character) based on the property information corresponding to the material set for the polygon in the determination mesh for which a collision has been determined by the collision determination.

[0174] In addition, when a collision between a polygon whose material is rock and the player character 201 is determined, the process of reducing the physical strength of the player character is not executed. Further, based on the collision, the player character 201 is controlled so as not to enter the inside of the polygon. Therefore, the player character can stand on or walk on the polygon. In this way, in the present embodiment, by setting the material for each polygon, the game system 1 can execute different processes according to which part of the voxel object another object contacts. Also, the content of the process to be executed can be made according to the type of material. In the present embodiment, since the player character can change the terrain object (for example, deform it or change the material), for example, a part of the terrain object that is lava can be erased or the lava can be changed to another material. Therefore, the player can avoid a decrease in the physical strength of the player character due to contact with lava by changing the terrain object.

[0175] Note that the content of the process executed when a collision between a voxel object and another object is determined is arbitrary. For example, when the other object is a moving object such as a player character or an enemy character, the process may be a process of outputting the footsteps of the object or displaying an effect (for example, an effect representing dust or water splashes) at the contact location. At this time, the game system 1 can vary the footsteps or the effects according to the type of material set for the polygon of the part of the voxel object that has come into contact.

[0176] FIG. 26 is a diagram showing an example of a game image representing a state in which a player character extracts a fragment object from a terrain object. As shown in FIG. 26, in the present embodiment, the player can cause the player character 201 to perform an action (referred to as a "pull-out action") of grasping the terrain object 202 by a predetermined operation input and pulling out a part thereof as the fragment object 252 and holding it. The game system 1, as an in-game effect caused by the pull-out action, erases a part of the terrain object 202 and generates the fragment object 252.

[0177] When the pull-out action is performed, the game system 1 specifically executes the following processing. That is, when an operation input for causing the player character to perform the pull-out action is performed by the player, the game system 1 causes the player character to perform an action of digging forward and grasping, and performs a collision determination. Then, when a collision between the player character performing the pull-out action and the terrain object is determined, an update range 253 is generated based on the position and orientation of the player character. For example, the update range 253 is generated in a predetermined direction (for example, the front) with respect to the player character. Note that the shape and size of the update range may be determined in advance according to the type of action of the player character. Further, the game system 1 decreases the density of the voxels corresponding to the update range 253. Then, by updating the mesh according to the decrease in the voxel density, the terrain object 202 is deformed so that the portion within the update range 253 is erased (see (b) in FIG. 26). In the present embodiment, the density of each voxel corresponding to the update range 253 is decreased, but the voxels to be decreased in density may be at least some of the voxels corresponding to the update range 253.

[0178] Also, in the above, it was assumed that the voxel object corresponding to the update range 253 is unconditionally deformed by the extraction action. However, in other embodiments, the deformation of the voxel object corresponding to the update range 253 may be performed on the condition of the amount of damage set for the voxel. For example, instead of unconditionally deforming the voxel object corresponding to the update range 253, the game system 1 may increase the amount of damage set for the voxel corresponding to the update range 253 and decrease the density in the voxel when the amount of damage exceeds a predetermined value. At this time, the increase amount of damage may be determined according to the action performed on the voxel object.

[0179] In addition, the game system 1 generates a fragment object 252 representing the portion of the terrain object 202 that has been erased. That is, the game system 1 generates the fragment object 252 in a state where the player character holds it based on the above extraction action. The fragment object 252 may be generated to have a shape corresponding to the portion of the terrain object 202 that has been erased, or may have a predetermined shape. The fragment object 252 may be a voxel object or may not be a voxel object. When the fragment object is a voxel object, a voxel space different from the voxel space of the voxels corresponding to the terrain object 202 or the like is defined for the fragment object 252.

[0180] The game system 1 determines the material of the fragment object 252. The material of the fragment object 252 is determined based on the material set for the polygon within the determination mesh that contacts the update range 253 among the determination meshes of the terrain object 202. The material of the fragment object 252 is determined to be the same as any one of the materials set for the polygons within the determination mesh that contacts the update range 253. According to this, the material of the fragment object 252 can be made the same as the material of the erased part of the terrain object. As is clear from the above description, the fragment object 252 is not actually a part of the terrain object. However, by being generated along with the erasure of a part of the terrain object and having the material of the erased part of the terrain object inherited by the fragment object 252, an impression can be given to the player as if the player character 201 has taken out a part of the terrain object 202 by a pulling action.

[0181] In this embodiment, a priority is set for each type of material to be prepared, and the game system 1 determines the material with the highest priority among the materials set for each polygon of the determination mesh within the update range 253 as the material of the fragment object 252. Here, for example, consider a case where the determination mesh within the update range 253 includes a polygon with a material of rock and a polygon with a material of lava. In such a case, if the material of the fragment object 252 is set to lava, there is a possibility that the player character's physical strength will decrease when the player character grips the fragment object 252 by the extraction action (it is assumed that, as described in FIG. 25, the material of lava is set to have the property of decreasing the player character's physical strength when contacted). Also, as described above, when the determination mesh within the update range 253 includes polygons with different types of materials set, it is also conceivable that it is difficult for the player to predict what the material of the fragment object 252 will be, and the above-mentioned inconvenience may occur contrary to the player's intention. On the other hand, in this embodiment, by setting a priority for the material set as the material of the fragment object, the possibility of the above-mentioned inconvenience occurring can be reduced.

[0182] FIG. 27 is a diagram showing an example of a game image representing a state in which fragment objects are generated when a player character destroys a terrain object. As shown in FIG. 27, in the present embodiment, the player can cause the player character 201 to perform a punch action by a predetermined operation input. Further, as an action in the game caused by the punch action, the game system 1 erases a part of the terrain object 202 and generates a fragment object 255, as in the case of the above punch action. Specifically, the terrain object 202 is deformed as if a part thereof is erased. Note that, when the punch action is performed, unlike the above-described extraction action, after the punch action, the fragment object 255 is not held by the player character 201 and is arranged around the position where the punch action is performed (see (b) of FIG. 27). Note that the fragments corresponding to the destruction of the terrain object 202 may not be generated in some cases.

[0183] When a punch action is performed, the game system 1 specifically executes the following processes. That is, when a player performs an operation input to cause a punch action on the player character, the game system 1 causes the player character to perform an action of punching forward and performs a collision determination. Then, when a collision between the player character performing the punch action and the terrain object is determined, an update range 254 is generated based on the position and orientation of the player character. For example, the update range 254 is generated in a predetermined direction (e.g., forward) with respect to the player character. Note that the position, shape, and size of the update range 254 due to the punch action may be the same as or different from those of the update range 253 due to the extraction action. Then, the game system 1 decreases the density of the voxels corresponding to the update range 254. As a result, similar to the extraction action, also due to the punch action, the terrain object 202 is deformed such that the portion within the update range 254 is erased (see (b) of FIG. 27). Note that, similar to the extraction action, for the punch action as well, instead of unconditionally deforming the voxel object corresponding to the update range 254, the game system 1 may increase the amount of damage set for the voxels within the update range 254 according to the punch action, and decrease the density of the voxels when the amount of damage exceeds a predetermined value. Also, the voxels whose density is to be decreased by the punch action may be at least some of the voxels corresponding to the update range 254.

[0184] In addition, the game system 1 generates a fragment object 255 corresponding to the portion of the terrain object 202 that has been erased. That is, the game system 1 generates the fragment object 255 without giving it to the player character based on the above punch action (for example, in a state where it is arranged around the position where the punch action was performed). The fragment object 255 may be generated so as to have a shape corresponding to the portion of the terrain object 202 that has been erased, or may have a predetermined shape. The fragment object 255 may be a voxel object or may not be a voxel object.

[0185] The game system 1 determines the material of the fragment object 255. The material of the fragment object 255 is determined based on the material set for the polygon in the determination mesh that contacts the update range 254 among the determination meshes of the terrain object 202. The material of the fragment object 255 is determined to be the same as any one of the materials set for the polygons in the determination mesh that contacts the update range 254. According to this, the material of the fragment object 255 can be made the same as the material of the erased portion of the terrain object. In addition, when the fragment object 255 is generated along with the partial erasure of the terrain object, and the material of the erased portion of the terrain object is inherited by the fragment object 255, it is possible to give the player an impression that a part of the terrain object destroyed by the punch action of the player character has occurred as a fragment object.

[0186] In this embodiment, the material of the fragment object 255 is determined to be the material with the largest degree of decrease in density in the voxel among the materials set for the polygons in the determination mesh that contacts the update range 254. According to this, it is possible to generate a fragment object that more accurately reflects the material composition of the portion of the terrain object erased by the punch action.

[0187] The method for determining the material of the fragment object generated by the above-described extraction action or punch action is arbitrary. For example, the method for determining the material of the fragment object may be the same for the extraction action and the punch action. Also, for example, among the materials set for each polygon of the determination mesh within the update range, the material set for the most polygons may be determined as the material of the fragment object. Also, for example, among each polygon of the determination mesh within the update range, the material set for a polygon that satisfies a predetermined condition (for example, a polygon at a position in contact with the hand of the player character that performs the extraction action or the punch action) may be determined as the material of the fragment object. Also, in other embodiments, a plurality of types of materials may be set for the fragment object.

[0188] In the present embodiment, the player can cause the player character to perform an action of throwing the fragment object 252 or 255 generated as described above (hereinafter referred to as "throwing action"). The player can cause the player character to perform an action of holding a fragment object that is generated in response to a punch action and arranged on the ground by a predetermined operation input. By the above-described extraction action or the action of holding the fragment object after the above-described punch action, the player character is in a state of holding the fragment object. In this state, the game system 1 causes the player character to perform an action of releasing the held fragment object in a predetermined direction as a throwing action according to an operation input by the player.

[0189] FIG. 28 is a diagram showing an example of a game image in a scene where a player character can perform a throwing action and determines the throwing direction in a state of assuming a throwing stance. As shown in FIG. 28, in a state where the player character 201 holds the fragment object 261, the player character 201 can perform a throwing action. In this state, as shown in FIG. 28, the game system 1, as a process for generating an action in the game, displays the aiming image 262 and the object information image 263 over the image showing the game space.

[0190] The aiming image 262 indicates the direction in which the fragment object is released by the throwing action (also referred to as the aiming direction). That is, in response to the player performing an operation input for performing a throwing action, the game system 1 moves the fragment object 261 from the position of the player character 201 toward the position in the virtual space indicated by the aiming image 262. Note that the aiming direction is controlled based on the operation input by the player. For example, the game system 1 may change the aiming direction in response to an operation input for changing the direction of the virtual camera. Specifically, the game system 1 controls the virtual camera in response to an operation input so as to rotate and move around the player character while maintaining the state where the player character is included in the field of view, and controls the aiming direction so as to be in the direction corresponding to the line-of-sight direction of the virtual camera. At this time, the aiming image 262 indicating the position where the straight line extending in the aiming direction from the position of the player character intersects the terrain object 253 is displayed. Specifically, the game system 1 performs a collision determination between the aiming direction (that is, the straight line extending in the aiming direction) and the determination mesh of the terrain object 253, and when a collision is determined, the aiming image 262 is displayed. The aiming image 262 is arranged so as to indicate the position of the polygon that intersects the straight line extending in the aiming direction among the determination meshes.

[0191] When the player character performs a throwing action according to the aiming image 262 described above, the position where the fragment object contacts the voxel object can be presented to the player. By doing so, the operation of the throwing action can be made easier for the player. Note that the specific control method of the aiming direction and the aiming image 262 is arbitrary, and a conventional method may be used. For example, in other embodiments, when the aiming image 262 is displayed, the aiming image 262 may be displayed in a first-person view game image where the player character is not displayed.

[0192] In a state where the player character is in a posture of throwing a fragment object, a throwing action of throwing the fragment object in the aiming direction is performed in response to a predetermined operation input by the player.

[0193] The object information image 263 shows information about the terrain object 253 at the position indicated by the aiming image 262. In the present embodiment, the object information image 263 shows the name of the material (rock in the example shown in FIG. 28) set for the polygon of the determination mesh at the position indicated by the aiming image 262. By doing so, the material of the voxel object that the fragment object released by the throwing action contacts can be presented to the player. Further, the object information image 263 shows information about the property of the material (here, hardness). By doing so, the property of the voxel object that the fragment object released by the throwing action contacts can be presented to the player. Note that the content shown by the object information image 263 is arbitrary. For example, in other embodiments, the object information image 263 may show any property related to the material set for the polygon at the position indicated by the aiming image 262, or may show the state of the polygon (for example, the amount of damage described above). In the present embodiment, since there is one type of material for the polygon of the determination mesh, the material corresponding to the aiming position is specified as one. Therefore, it is suitable for displaying information about the material.

[0194] In this embodiment, in response to the fragmented object released by a throwing action being determined to have contacted the voxel object as a result of a collision determination, the game system 1 makes a change to the voxel object as an in-game effect. FIG. 29 is a diagram showing an example of a game image after a change has been made to the terrain object 253 due to the fragmented object 261 contacting the terrain object 253 shown in FIG. 28. In the example shown in FIG. 29, the terrain object 253 is deformed so as to have a shape such that the fragmented object is attached to the contact position between the fragmented object and the terrain object 253. Specifically, the game system 1 generates an update range so as to include the contact position, and deforms the terrain object 253 to have the above shape by increasing the density of the voxels in the update range. For example, the update range may be set to a shape corresponding to the shape of the fragmented object, and the terrain object 253 may be deformed so that the inside of the update range is within the terrain object 253. As a result, in the example shown in FIG. 29, it has a shape in which the additional portion 265 is added to the terrain object before deformation. Note that in the example shown in FIG. 29, the fragmented object is erased in response to contacting the terrain object 253.

[0195] Also, the material of the polygon in the additional portion 265 is determined based on the material of the fragmented object that has contacted the terrain object 253. Specifically, the game system 1 sets the material of the voxels within the update range to be the material of the fragmented object. Then, the materials of the display mesh and the determination mesh are determined based on the material of the voxels. According to this, since the appearance of the attached additional portion 265 can be made the same as the appearance of the fragmented object, (although in reality, the terrain object 253 is deformed as described above), it becomes easier for the player to get the impression that the fragmented object is attached to the terrain object 253.

[0196] In the example shown in FIG. 29, the change applied to the voxel object in response to the fragment object contacting the voxel object was a deformation to add an additional part to the voxel object, but the change applied to the voxel object is not limited to this. The above change may change the density of the voxels or may change the material. For example, if the fragment object has the property of exploding, the fragment object may explode in response to contacting the voxel object, and at this time, the voxel object may be deformed as if a part of the voxel object has been erased. Specifically, the game system 1 sets an update range to include the contact position and decreases the density of the voxels within the update range. Also, for example, when the material of the voxel object is lava and the material of the fragment object is ice, the material of the voxel object may be changed in response to the fragment object contacting it. Specifically, the game system 1 sets an update range including the contact position, and among the materials of the voxels within the update range, the material that is lava may be changed to obsidian or rock. According to this, it is possible to represent a situation where a lava object is cooled by an ice object and becomes obsidian or rock.

[0197] The content of the above change may be determined based on the material of the voxel object, based on the material of the fragment object, or based on a combination of the material of the voxel object and the material of the fragment object. According to this, various changes can be caused to the voxel object.

[0198] Further, the game system 1 may determine whether to perform the above-described change based on the material of the voxel object, based on the material of the fragment object, or based on a combination of the material of the voxel object and the material of the fragment object. For example, when a fragment object with a material of rock contacts a voxel object with a material of rock, the game system 1 performs the change as shown in FIG. 29, while when a fragment object with a material of rock contacts a voxel object with a material of iron, the game system 1 may not perform the change as shown in FIG. 29.

[0199] In the present embodiment, as described above, one type of material is set for the polygon of the determination mesh and the fragment object. Here, if multiple types of materials are set for at least either the polygon of the determination mesh or the fragment object, it becomes difficult to determine the content of the change added to the voxel object according to the types of the materials of both when the determination mesh and the fragment object are in contact. On the other hand, in the present embodiment, since the materials of the determination mesh and the fragment object determined to be in contact by the collision determination are each one type, it becomes easy to determine the content of the change added to the voxel object.

[0200] [2-8. Deformation of Voxel Object] In the present embodiment, the game system 1 executes a process of deforming the voxel object during the game. In the present embodiment, the process of deforming the voxel object is performed using a plurality of shapes represented by the above-described SDF. Hereinafter, the process of deforming the voxel object will be described using Examples 1 to 8.

[0201] (Example 1) As a first example, an example of deforming a character object from one shape to another will be described. FIG. 30 is a diagram showing an example of how a character object deforms. The character object 271 shown in FIG. 30 has a body, eyes, and legs, and it is assumed that the body part is a voxel object, while the eyes and legs are not voxel objects. In the first example, the body part of the character object 271 is deformed by a deformation process. In the first example, it is assumed that the eyes and legs do not move or deform, but in other examples, the game system 1 may move and / or deform parts that are not voxel objects in accordance with the deformation of parts that are voxel objects. Also, the object to be deformed may be an object consisting only of voxel objects.

[0202] Note that the body part of the character object 271 is a voxel object defined in the above-described sub-voxel space set in a part of the game space. Note that in other examples, the voxel object to be deformed may be a voxel object defined in the sub-voxel space or a voxel object defined in the main voxel space.

[0203] As shown in FIG. 30, the character object 271 gradually deforms from the first shape to the second shape. In the first example, the deformation from one step to the next is performed every frame. In the example shown in FIG. 30, the shape before the deformation starts is defined as the first shape, and the shape after the deformation ends is defined as the second shape. However, the initial shape of the character object 271 is not limited to the first shape. Also, the character object 271 does not necessarily have to end the deformation when it becomes the second shape. For example, the game system 1 may repeatedly perform the deformation from the first shape to the second shape and the deformation from the second shape to the first shape, or may end the deformation in an arbitrary shape between the first shape and the second shape according to the situation.

[0204] Note that the deformation conditions for starting deformation in the first example are arbitrary. The deformation conditions may be, for example, that the character object 271 is placed in the game space, or that a predetermined action by another character is performed on the character object 271.

[0205] In the first example, the game system 1 stores in advance the SDF representing the first shape and the SDF representing the second shape, and executes a deformation process based on these two shapes. First, the game system 1 sets the density of each voxel in the voxel space related to the character object 271 based on the first shape. The density of each voxel is set so that the mesh of the character object 271 set based on the density becomes a shape representing the first shape. Note that the "shape representing the first shape" does not mean only a shape that exactly matches the first shape, but includes a shape approximated to the first shape. For example, among the above voxels, for the voxels located inside the first shape, the density is set to a value equal to or higher than the above reference value, and for the voxels located outside the first shape, the density is set to a value less than the reference value. Note that instead of calculating the density of voxels based on the first shape, which is the initial shape, the game system 1 may store in advance the density values of each voxel corresponding to the initial shape and use the pre-stored density.

[0206] In the frame before starting deformation, the game system 1 generates a mesh of the character object 271 based on the density of each voxel set based on the first shape. Note that in the first to eighth examples regarding the deformation of the voxel object, the method of generating a mesh of the voxel object (specifically, a display mesh and a determination mesh) based on the density of voxels is the same as the method described in the above [2-3. Calculation of vertices] to [2-6. Generation of mesh]. In the subsequent frame, the deformation of the character object 271 is started.

[0207] In the first example, the game system 1 sets an intermediate shape based on the first shape and the second shape. The intermediate shape is a shape at an intermediate stage between a plurality of shapes (in the first example, the first shape and the second shape) prepared in advance in the deformation that is performed step by step. In the example shown in FIG. 30, there are two intermediate shapes, and the time (which can also be said to be the number of frames) from the first shape to the second shape is three frames. However, the number of intermediate shapes in the deformation process is arbitrary, and the number of frames from the start of deformation to the end of deformation is also arbitrary.

[0208] In the first example, the intermediate shape is generated by interpolating between the first shape and the second shape. FIG. 31 is a diagram showing an example of a method for setting the SDF of the intermediate shape. In FIG. 31, in the upper column, the first shape of the body portion 272 of the character object 271 is shown on a grid indicating each position where the value of the signed distance (denoted as SD in FIG. 31) in the SDF is set, and in the lower column, the second shape of the body portion 272 is shown on the grid. In FIG. 31, the position of each intersection of the grid is the position where the value of the signed distance is set. The game system 1 calculates the value of the signed distance in the intermediate shape by interpolating the value of the signed distance in the first shape and the value of the signed distance in the second shape for each position where the signed distance is set. In the interpolation in the first example, the value of the signed distance in the intermediate shape is calculated by decreasing the ratio of the signed distance based on the first shape and increasing the ratio of the signed distance based on the second shape. For example, in the example shown in FIG. 31, regarding the position of the black circle, assume that the value of the signed distance in the first shape is 0.8 and the value of the signed distance in the second shape is -0.4. At this time, for example, when performing interpolation by linear interpolation, the value of the signed distance regarding the position of the black circle for the first intermediate shape is calculated as 0.4, and the value of the signed distance regarding the position of the black circle for the second intermediate shape is calculated as 0. The signed distance is calculated in the same way for each position other than the black circle, and thus the SDF representing each intermediate shape is generated. According to the above, the character object 271 can be gradually deformed from the shape representing the first shape to the shape representing the second shape. Also, in the present embodiment, by using the SDF, it is possible to easily set the intermediate shape by interpolation.

[0209] When deforming the character object 271, a mesh of the character object 271 is generated based on the SDF representing the intermediate shape generated as described above. Specifically, first, in the frame where the deformation from the first shape starts, the density of each voxel regarding the character object 271 is set based on the SDF representing the first intermediate shape. In the first example, when setting the density of each voxel, the game system 1 resets the density of each voxel and then sets the range within the above intermediate shape as the update range of the voxels, and updates the density of the voxels within the update range. Note that resetting the density means, for example, setting the value of the density to 0. Also, the density of the voxels within the update range is set to a value equal to or greater than the above reference value, for example. Here, for example, for the voxels that are inside the first shape and outside the intermediate shape, it is necessary to update the density, but by performing the above reset, the density of each voxel can be set to a value corresponding to the intermediate shape without identifying such voxels. Based on the density of each voxel set as described above, a mesh of the shape representing the first intermediate shape is generated.

[0210] Note that in this embodiment, it is assumed that the voxels for which the above reset is performed are each voxel in the voxel space regarding the voxel object to be deformed. However, the above reset does not need to be performed for all voxels in the voxel space. For example, in other embodiments, the game system 1 may perform a density reset for the voxels within the range including the update range in the previous frame and the update range in the current frame.

[0211] Note that the specific method for updating the density of the voxels is arbitrary and is not limited to the above. For example, in other embodiments, instead of performing the above reset, the game system 1 may update the density of the voxels located outside the above intermediate shape to a value less than the reference value.

[0212] Even in the frame in which the mesh corresponding to the intermediate shapes after the second one is generated, the mesh is generated in the same manner as in the first frame. Specifically, in the frame in which the mesh corresponding to the intermediate shapes after the second one is generated, the game system 1 first resets the density of each voxel, and then, based on the SDF representing the intermediate shape corresponding to the frame, sets the range within the intermediate shape as the update range and updates the density of the voxels within the update range. Then, based on the density of each updated voxel, the mesh representing the intermediate shape is generated. Also, in the frame in which the mesh corresponding to the second shape is generated, the game system 1 first resets the density of each voxel, and then, based on the SDF representing the second shape, sets the range within the second shape as the update range and updates the density of the voxels within the update range. Then, based on the density of each updated voxel, the mesh representing the second shape is generated.

[0213] As described above, by generating a mesh whose shape changes step by step over a plurality of frame periods, it is possible to display the state in which the character object 271 gradually deforms.

[0214] As described above, in the first example, in the process of gradually updating the voxel data over a plurality of frame periods to deform the character object 271, the density of the voxels is updated with the range corresponding to the intermediate shape obtained by interpolating the signed distance based on the first shape and the second shape as the voxel update range. According to this, it is possible to define an intermediate intermediate shape between the prepared first shape and the second shape. Therefore, the deformation of the voxel object can be performed in a finer step than the number of prepared shapes.

[0215] In addition, in the present embodiment, since the signed distance is used to represent the shape for determining the update range, when updating the density of voxels within or outside the update range, it is possible to adjust so that the density values are different between the voxels near the boundary of the update range and the voxels far from the boundary. For example, in the example of setting the density of the voxels within the update range to a value equal to or greater than the reference value, for the voxels near the boundary, the density can be set to a value that is equal to or greater than the reference value but lower, and for the voxels far from the boundary, the density can be set to a higher value. Such adjustment can be performed based on the signed distance.

[0216] (Second example) Next, as a second example, an example of deforming the scaffold object corresponding to the fragment object thrown by the player character will be described. In the first example above, the intermediate shape between the shape at the start of deformation and the shape at the end of deformation was set by interpolation. However, in the second example, the intermediate shape is set by performing expansion and / or contraction on the first shape at the start of deformation.

[0217] FIG. 32 is a diagram showing an example of how the scaffold object deforms. As described above, in the present embodiment, the player character 201 can hold and throw a fragment object (see FIGS. 26 to 28). Here, the deformation condition in the second example is that the fragment object 275 has contacted a predetermined region 276 in the game space. Note that an image showing the predetermined region 276 may or may not be displayed. The game system 1 generates a scaffold object 274, which is a voxel object representing the shape of the fragment object 275, in response to the deformation condition being satisfied. Then, the scaffold object 274 is deformed so as to have a predetermined shape (here, a rectangular parallelepiped) (see (b) and (c) of FIG. 32). According to the second example, an expression can be made as if the fragment thrown by the player character 201 has deformed into a scaffold.

[0218] In the second example, the deformation is performed based on the SDF of the first shape at the start of deformation and the SDF of the second shape at the end of deformation. FIG. 33 is a diagram showing an example of the first shape and the second shape used for deforming the scaffold object. The first shape 277 is set based on the shape of the fragment object 275 that has come into contact with the predetermined region 276. For example, the game system 1 sets the SDF of the first shape 277 to be a shape representing the shape of the fragment object 275. Further, the second shape 278 represents the shape of the scaffold object 274 at the end of deformation. In the second example, it is assumed that the second shape 278 is a rectangular parallelepiped, but the specific shape is arbitrary. In the second example, the second shape 278 is set to enclose the predetermined region 276. In the second example, the first shape is variably set according to the shape of the fragment object 275, while the second shape is a shape prepared in advance.

[0219] In the frame in which the scaffold object 274 is newly generated, that is, the frame at the start of deformation, the game system 1 sets the range within the first shape 277 set based on the shape of the fragment object 275 as the update range of the voxels, and updates the density of the voxels within the update range. For example, the density of the voxels within the update range is set to a value equal to or higher than the above-mentioned reference value. By generating the mesh of the scaffold object 274 based on the density of each set voxel, the scaffold object 274 representing the shape of the fragment object 275 is generated. When the scaffold object 274 is newly generated in the above frame, the fragment object 275 corresponding to the scaffold object 274 is deleted.

[0220] In each frame during the deformation after the frame in which the scaffold object 274 is generated, the game system 1 deforms the first shape 277 according to the passage of the frame. In the second example, the first shape 277 is deformed by expanding and / or contracting the first shape 277 with respect to the second shape 278. Specifically, the first shape 277 is deformed such that the portion inside the second shape 278 among the first shape 277 in the previous frame expands, and the portion outside the second shape 278 contracts. Such expansion and / or contraction can be performed, for example, by three-dimensional morphological transformation. By performing the above deformation for each frame, the shape of the first shape 277 gradually approaches the shape of the second shape 278 according to the passage of the frame.

[0221] In each frame during the deformation, the game system 1 sets the range within the first shape 277 after the above deformation as the update range of the voxels, and updates the density of the voxels within the update range. Then, a mesh of the scaffold object 274 is generated based on the updated density. Also in the second example, similar to the first example, the game system 1 may update the density of the voxels within the update range after resetting the density of each voxel regarding the scaffold object 274. Alternatively, the game system 1 may update the density of the voxels in the range within the first shape 277 after deformation to a value equal to or greater than the reference value, and update the density of the voxels in the range outside the first shape 277 after deformation to a value less than the reference value. As described above, each time the first shape 277 is deformed, the setting process of the update range of the voxels, the update process of the density of the voxels in the update range, and the generation process of the mesh based on the updated density are repeatedly executed, so that the scaffold object 274, which represented the shape of the fragment object 275, is gradually deformed into a shape close to the second shape 278.

[0222] In the second example, the deformation of the first shape 277 is performed until a predetermined number of frames have elapsed after the scaffold object 274 is generated. When a predetermined number of frames have elapsed after the scaffold object 274 is generated, the game system 1 updates the density of the voxels so that the scaffold object 274 has a shape representing the second shape 278. Specifically, the density of the voxels in the range within the second shape 278 becomes a value equal to or greater than the reference value, and the density of the voxels in the range outside the second shape 278 becomes a value less than the reference value, and the density of each voxel regarding the scaffold object 274 is updated. At this time, the above-described normal vector information used to calculate the vertex coordinates may be set for the voxels so that the mesh of the scaffold object 274 has a shape that more accurately reflects the shape of the second shape 278.

[0223] Note that, if only the update range is set based on the first shape deformed by the above-described expansion and contraction, there is a possibility that the scaffold object 274 approaches the second shape but does not become the same shape as the second shape during the period until the above-described predetermined number of frames elapse. On the other hand, according to the second example, the shape of the scaffold object 274 in the final stage of the deformation can be defined based on the second shape 278. As a result, it is possible to easily make the shape of the final scaffold object 274 into the intended shape (here, the shape represented by the second shape 278). Note that the above "final stage of the deformation" means the final stage of the deformation based on a plurality of shapes, and it means that some further deformation may be performed on the voxel object after the deformation based on the plurality of shapes.

[0224] Note that, also in the first example described above and the sixth to eighth examples described later, similar to the second example, in the final stage of the stepwise deformation, the update range is set by any one of the plurality of shapes used to determine the update range of the voxels. Therefore, also in these examples, similar to the second example, it becomes easy to make the shape of the final voxel object into the intended shape.

[0225] In the second example, the setting of the update range based on the second shape was performed on the condition that a predetermined number of frames had elapsed since the scaffold object 274 was generated. Here, the condition for setting the update range based on the second shape is not limited to the above. For example, in other embodiments, the game system 1 may calculate an index indicating the similarity between the first shape 277 and the second shape 278, and use the condition that the index is equal to or greater than a certain value.

[0226] (Third example) Next, as a third example, an example of deforming a rock object so as to rise from the ground will be described. In the third to fifth examples described below, the overlapping range of the two shapes is used as the update range of the voxels, and the overlapping range is changed according to the passage of frames by moving one shape with respect to the other shape, and the voxel object is deformed according to the change in the update range.

[0227] FIG. 34 is a diagram showing an example of how the rock object 283, which is a voxel object, deforms. As shown in FIG. 34, in the third example, the rock object 283 deforms from a state where it does not initially exist so as to rise upward from the ground in response to a predetermined deformation condition being satisfied in the game (for example, in response to a predetermined object colliding with the ground). In FIG. 34, the state before the rock object 283 deforms (FIG. 34(a)) and the states at two frames during the deformation of the rock object 283 (FIG. 34(b) and (c)) are shown. The deformation of the rock object 283 may be performed step by step over four or more frames.

[0228] In the third example, an SDF representing the first shape 281 and an SDF representing the second shape 282 are prepared in advance. The first shape 281 represents the shape of the rock object 283 at the end of deformation. The second shape 282 moves relative to the first shape 281 when performing stepwise deformation. In the third example, it is assumed that the first shape 281 and the second shape 282 have the same shape, but in other embodiments, they may not have the same shape. For example, even if a shape with a smaller thickness in the vertical direction than the first shape 281 is used as the second shape 282, the rock object 283 can be deformed in the same manner as in the third example.

[0229] Note that, for example, when the side surface does not need to be complex, etc., the game system 1 may determine the update range by moving a shape with a small thickness as described above at a predetermined speed so as to slide, and setting the shape for each frame as the update range. In that case, it can be said that there is one type of shape, but it can also be considered as control of the update range between the shape at the initial position and the shape at the arrival position.

[0230] As shown in Fig. 34(a), in the frame of the initial state before the deformation of the rock object 283, the first shape 281 and the second shape 282 are set so as not to overlap each other. In the third example, the second shape 282 is located below the first shape 281. In the third example, the game system 1 sets the overlapping range of the first shape 281 and the second shape 282 as the update range of the voxels in the voxel space related to the rock object 283, and updates the density of the voxels within the update range. In the frame of the above initial state, there is no overlapping range, and the density of any of the above voxels remains 0, so the mesh of the rock object 283 is not generated.

[0231] When starting to deform the rock object 283, the game system 1 updates the SDF of the second shape 282 so that the second shape 282 gradually translates upward (see the arrow shown in FIG. 34). In the third example, the second shape 282 is set to move to a position where the upper surface of the second shape 282 overlaps with the upper surface of the first shape 281 after a predetermined number of frames have elapsed from the initial state. Note that the moving speed of the second shape 282 is arbitrary, and the speed during movement may be constant or may change.

[0232] In the state shown in FIG. 34(b), a part of the upper side of the second shape 282 and a part of the lower side of the first shape 281 overlap. The game system 1 sets the overlapping range of the first shape 281 and the second shape 282 as the update range of the voxels. Note that the overlapping range can be specified as a range consisting of positions where both the signed distance in the SDF of the first shape 281 and the signed distance in the SDF of the second shape 282 are negative. The game system 1 updates the density of the voxels within the update range among the respective voxels in the voxel space related to the rock object 283. In the third example, the density of the voxels within the update range is updated to a value equal to or greater than the above-mentioned reference value. The game system 1 generates a mesh of the rock object 283 based on the updated voxel density. In the state shown in FIG. 34(b), since the overlapping range has a flat shape with a small thickness in the vertical direction, a rock object 283 having a shape that rises slightly from the ground will be generated.

[0233] In the state shown in Fig. 34(c) after a certain amount of time has passed from the state shown in Fig. 34(b), as the second shape 282 moves further upward, the overlapping range between the second shape 282 and the first shape 281 becomes larger. Specifically, in the state shown in Fig. 34(c), among the voxels related to the rock object 283, the voxels in the region located above the overlapping range in the state shown in Fig. 34(b) are also within the update range, so the density of the voxels in this region is also updated. The mesh of the rock object 283 is generated based on the updated density. As a result, in the state shown in Fig. 34(c), the mesh of the rock object 283 has a shape that bulges further upward compared to the state shown in Fig. 34(b).

[0234] Although not shown in the figure, in the state where the second shape 282 has moved to a position where the upper surface of the second shape 282 overlaps with the upper surface of the first shape 281, the entire range within the first shape 281 becomes the overlapping range and the update range of the voxels. At this time, the density of the voxels within the first shape 281 is updated, and as a result of generating the mesh of the rock object 283 based on the updated density, the mesh of the rock object 283 has a shape representing the first shape 281. As described above, in the third example, it is possible to represent the state in which the rock object 283 deforms so as to gradually bulge upward from the ground.

[0235] As described above, in the third example, the game system 1 moves the second shape 282 among the plurality of prepared shapes (in the third example, the first shape and the second shape) according to the passage of the frame, and updates the density of the voxels by setting the overlapping range between the first shape 281 and the second shape 282 as the update range of the voxels, thereby deforming the rock object 283. According to this, the voxel object can be deformed step by step using a plurality of shapes. For example, during the stepwise deformation, a voxel object with a shape different from the prepared shape can be generated.

[0236] In addition, when deforming the shape of the voxel object with the overlapping range of the plurality of prepared shapes as the update range of the voxels, the plurality of prepared shapes and the way of moving the shapes are arbitrary. By changing the plurality of prepared shapes and the way of moving them, the overlapping range can be made into various shapes, and the voxel object can be made into various shapes.

[0237] (Example 4) Next, as a fourth example, an example of deforming a tree object so that the trunk and branches grow will be described. FIG. 35 is a diagram showing an example of a shape prepared for the tree object. In the upper column of FIG. 35, four types of shapes 291 to 294 prepared for the tree object are shown, and in the lower column, the arrangement of each shape during the deformation of the tree object is shown. As shown in FIG. 35, in the fourth example, SDFs representing the first shape 291 to the fourth shape 294 are prepared.

[0238] The first shape 291 represents the shape of the trunk part of the tree object at the end of the deformation, that is, in the state where it has become the largest. Also, the second shape 292 moves relative to the first shape 291 when stepwise deformation is performed. In the fourth example, the second shape 292 represents the shape of the tree object before the start of the deformation, that is, in the smallest state. In the fourth example, the second shape 292 has the same shape as the lower part (the part of the one-dot chain line in FIG. 35) representing the root of the tree and the upper part (the part of the two-dot chain line in FIG. 35) representing the tip of the upper side of the tree as the lower part and the upper part of the first shape 291, respectively, and the intermediate part (the trunk part excluding the upper tip part) between the lower part and the upper part has a shorter shape than the intermediate part of the first shape 291.

[0239] The third shape 293 represents the shape of the branch portion of the tree object at the end of deformation. As shown in FIG. 35, the third shape 293 is set such that the root portion thereof is located at a predetermined position of the trunk portion of the first shape 291. In the example shown in FIG. 35, two third shapes 293 are set with respect to the first shape 291, but the position and number where the third shape 293 is set are arbitrary. The fourth shape 294 moves with respect to the third shape 293 when stepwise deformation is performed. In the fourth example, the fourth shape 294 is spherical.

[0240] In the initial state before the deformation of the tree object, the second shape 292 is set such that the lower portion thereof coincides with the lower portion of the first shape 291 (see the lower column of FIG. 35). In the initial state, it is assumed that the entire second shape 292 overlaps with the first shape 291. Here, also in the fourth example as in the third example, the game system 1 sets the overlapping range of the first shape 291 and the second shape 292 as the update range of the voxels in the voxel space related to the tree object, and updates the density of the voxels within the update range. The game system 1 generates a mesh of the tree object based on the density of the updated voxels.

[0241] Also, regarding the branch portion of the tree object, the game system 1 sets the overlapping range of the third shape 293 and the fourth shape 294 as the update range of the voxels in the voxel space related to the tree object, and updates the density of the voxels within the update range. Although not shown, in the initial state of the fourth example, the fourth shape 294 is either not set or is set at a position that does not overlap with the third shape 293. Therefore, in the initial state, since there is no overlapping range between the third shape 293 and the fourth shape 294, the mesh of the tree object has a shape without a branch portion. From the above, in the initial state, the mesh of the tree object is generated to be the shape representing the second shape 292 (the solid line portion in the lower column of FIG. 35).

[0242] When deforming the wooden object, the game system 1 updates the SDF of the second shape 292 so that the second shape 292 gradually moves upward in parallel (see the lower column of FIG. 35). In the fourth example, the second shape 292 is set to move step by step from the initial state to the final state where the upper part of the second shape 292 coincides with the upper part of the first shape 291. Note that in the fourth example, it is not necessary for the deformation of the wooden object to be continuously performed from the initial state to the final state, and the deformation may be temporarily stopped at an intermediate state from the initial state to the final state. For example, the deformation condition in the fourth example is that a predetermined item is given to the wooden object in the game, and the deformation of the wooden object progresses by an amount of deformation corresponding to the amount of the given predetermined item. Note that in other examples, the deformation of the wooden object may be continuously performed from the initial state to the final state. Also, the moving speed of the second shape 292 at this time is arbitrary, and the speed may be constant or may change.

[0243] In the fourth example, the game system 1 sets the overlapping range between the first shape 291 and the second shape 292 among the respective voxels related to the wooden object as the voxel update range, and updates the density of the voxels within the update range. In the fourth example, the density of the voxels within the update range is updated to a value equal to or higher than the above-mentioned reference value. In the lower column of FIG. 35, the second shape 292' moved upward from the initial state is shown by a broken line. As shown in FIG. 35, as the second shape 292 moves upward, the range above the second shape 292 before the movement becomes the overlapping range, and the density of the voxels within this range is updated.

[0244] In the fourth example, when updating the density of voxels within the update range, the process of resetting the density, which was performed in the first example, is not carried out. According to this, for voxels that were within the update range in a past frame during deformation and are outside the update range in the current frame, the density is maintained at a value equal to or higher than the reference value. That is, for voxels that were within the update range in at least any one of the frames up to the present during deformation, a density equal to or higher than the reference value is set. In the fourth example, a mesh of the tree object is generated based on the density of the voxels updated as described above. As a result, the shape of the mesh of the tree object during deformation can be set to a shape (the hatched area shown in FIG. 35) in which the trunk extends from the root portion of the second shape 292 in the initial state to the upper end of the second shape 292' in the current frame.

[0245] Note that, similar to the third example, in the fourth example, each time the game system 1 moves the second shape 292, it repeatedly executes the process of setting the update range of the voxels, the process of updating the density of the voxels within the update range, and the process of generating a mesh based on the updated density. As a result, the tree object can be deformed so that the trunk gradually extends.

[0246] Regarding the branch part, for example, when the overlapping range of the first shape 291 and the second shape 292 reaches the position of the third shape 293, the deformation of the third shape 293 is started. Specifically, in the above case, the game system 1 sets the fourth shape 294 so as to be located at the root of the third shape 293. Then, after a predetermined number of frames have passed, the game system 1 translates the fourth shape 294 in the tip direction of the third shape 293 so as to reach the position of the tip of the third shape 293 (see the lower column of FIG. 35). At this time, the overlapping range of the third shape 293 and the fourth shape 294 gradually moves from the root to the tip direction of the third shape 293 and finally reaches the tip of the third shape 293. Similar to the trunk part, for the branch part, the overlapping range of the third shape 293 and the fourth shape 294 is set as the update range of the voxels, and the density of the voxels within the update range is updated without performing the process of resetting the density. The game system 1 generates the mesh of the tree object based on the density of the updated voxels. By repeatedly executing the above process in the frames during deformation, the branch part of the tree object is deformed so as to gradually extend in the tip direction.

[0247] As described above, by using the four shapes 291 to 294, the game system 1 can deform the tree object step by step so that the trunk part and the branch part gradually extend. In the fourth example, the shape of the upper end of the trunk during deformation is the shape of the upper part of the second shape 292, and the shape of the tip of the branch during deformation is the shape of the fourth shape 294 (specifically, a spherical surface). In the method of setting the shape during deformation by moving some of the plurality of shapes as in the third example and the fourth example, by adjusting the shape to be moved during deformation, the tip shape of the extending part among the voxel objects during deformation can be adjusted.

[0248] (Fifth Example) Next, as a fifth example, an example will be described in which when the tree object in the fourth example is deformed as if it is destroyed, it is deformed so that the part disappeared by the destruction is restored.

[0249] FIG. 36 is a diagram showing an example of a state in which a part of a tree object is deformed so as to be restored after being destroyed. In the fifth example, the tree object 295, which is a voxel object, may be deformed such that a part of it is destroyed under certain conditions, as in the examples shown in FIGS. 26 and 27 described above. In the example of FIG. 36, the tree object 295 is deformed such that a part of it is destroyed by a punch action by the player character 201 (see (a) and (b) of FIG. 36). The deformation condition of the deformation (specifically, the deformation to be restored) in the fifth example is that the tree object is deformed such that it is destroyed. When the deformation condition is satisfied, the game system 1 further deforms the tree object 295 such that the destroyed part of the tree object 295 is restored (see (c) of FIG. 36).

[0250] FIG. 37 is a diagram showing an example of a shape prepared for deformation in the fifth example. In the fifth example, an SDF of a first shape 296 representing the overall shape of a tree object 295 and an SDF of a second shape 297 that is moved relative to the first shape during deformation are prepared. The overall shape of the tree object 295 is a shape that represents the entire tree object 295 at the current time. As described in the fourth example above, a deformation that destroys a portion of the tree object 295 may occur during the transformation from the initial state to an intermediate shape before reaching the final state. When the tree object 295 is in the final state, the first shape 296 in the fifth example is a shape defined by the first shape 291 and the third shape 293 in the fourth example. On the other hand, when the tree object 295 is in an intermediate state, the first shape 296 in the fifth example represents the overall shape of the tree object 295 in that intermediate state. In this case, for the trunk portion, for example, based on first shape 291 in the fourth example and current second shape 292, a shape can be set as the overall shape of the trunk portion such that the portion below a predetermined position on the trunk (for example, the thickest position of the trunk) has the shape of first shape 291, and the portion above the predetermined position has the shape of second shape 292. Furthermore, for the branch portion, for example, the shape of the portion of third shape 293 in the fourth example that is closer to the base than the predetermined position can be set as the overall shape of the branch portion.

[0251] Further, any shape can be used as second shape 297 in the fifth example. For example, as shown in Fig. 36(c), when the top surface of the restored portion is to be flat, a shape with a flat top surface (a rectangular parallelepiped in the example shown in Fig. 37) may be used as second shape 297. Furthermore, for example, when the shape of the top of the restored portion is to be the same as the shape of the top of tree object 295, second shape 297 in the fifth example may be the same shape as second shape 292 in the fourth example.

[0252] Also in the fifth example, similar to the fourth example, the game system 1 deforms the tree object 295 by moving the second shape 297 with respect to the first shape 296. Specifically, in the fifth example, the game system 1 moves the second shape 297 so as to pass through the entire first shape 296. Note that the direction in which the second shape 297 is moved is arbitrary, but in the example shown in FIG. 37, it is assumed that the second shape 297 is moved upward from below. Then, among the voxels related to the tree object 295, the game system 1 sets the overlapping range of the first shape 296 and the second shape 297 as the update range of the voxels, and updates the density of the voxels within the update range. As a result, among the voxels within the range where the tree object 295 seems to have disappeared due to destruction, the density of the voxels within the update range is updated to a value equal to or higher than the above-mentioned reference value. In the fifth example, based on the density of the voxels updated as described above, a mesh of the tree object is generated every time the density of the voxels is updated. As a result, it is possible to perform a deformation such that the portion that seems to have disappeared due to destruction of the tree object 295 is restored.

[0253] Note that the timing at which the deformation starts in the fifth example may be any timing corresponding to the destruction of the tree object 295. For example, it may be the timing immediately after the destruction, or the timing after a predetermined time has elapsed since the destruction.

[0254] As described above, in the fifth example, in the deformation started in response to the occurrence of the destruction event, the game system 1 moves the second shape 297 so that the range in which the second shape 297 has moved during the deformation includes the entire first shape 296. Then, by updating the density of the voxels within the update range with the overlapping range of the first shape 296 and the second shape 297 as the update range of the voxels, it is possible to perform a deformation such that the destroyed portion of the voxel object is restored.

[0255] (Sixth example) Next, as a sixth example, an example of deforming an object having a shape formed by combining a plurality of ring shapes will be described. The sixth and seventh examples described below are examples in which a range formed by combining a plurality of shapes is set as the update range of voxels.

[0256] FIG. 38 is a diagram showing an example of how an object composed of a plurality of rings deforms. In the sixth example, the voxel object 301 to be deformed is an object composed of a ring-shaped first object 302 and a second object 303. In the sixth example, the voxel object 301 undergoes a deformation in which the first object 302 expands while rotating and the second object 303 expands. Note that in the sixth example, the deformation condition is, for example, that the voxel object 301 is placed in the game space. At this time, the deformation is started in response to the voxel object 301 being newly placed in the game space.

[0257] In the sixth example, an SDF representing the first shape corresponding to the first object 302 and an SDF representing the second shape corresponding to the second object 303 are prepared. The game system 1 stores in advance the SDFs representing the first shape and the second shape in the initial state of the voxel object 301. Before the deformation is started, the mesh of the voxel object 301 is generated based on the first shape and the second shape in the initial state. Specifically, the game system 1 sets the ranges within the first shape and the second shape in the initial state as the update range of voxels, updates the density of the voxels within the update range to a value equal to or greater than the reference value, and generates the mesh of the voxel object 301 based on the updated density.

[0258] When deforming the voxel object 301, the game system 1 updates the SDFs of the first shape and the second shape so as to deform the first shape and the second shape. In the sixth example, the first shape is deformed such that the radius of the ring expands while the ring rotates. The second shape is deformed such that the radius of the ring expands. Note that the game system 1 may store in advance the SDFs representing the deformed first shape and second shape, or may obtain them by calculation.

[0259] In the frame after the deformation is started, an update range is set based on the deformed first shape and second shape. Note that in the sixth example, after the game system 1 resets the density of each voxel related to the voxel object 301 in the same manner as in the first example, the range within the deformed first shape and second shape is set as the update range of the voxels. Note that instead of performing the above reset, the game system 1 may update the density of the voxels outside the first shape and the second shape to be a value less than the reference value. The density of the voxels within the update range is updated, and a mesh of the voxel object 301 is generated based on the updated density. Thereby, the voxel object 301 can be deformed such that the first object 302 expands while rotating and the second object 303 expands.

[0260] In the sixth example, the game system 1 executes, for a period of a predetermined number of frames, a process of deforming the voxel object 301 by deforming the first shape and the second shape respectively. Thereby, the voxel object 301 is deformed so as to gradually expand as a whole. After the end of the above period, the voxel object 301 may be deleted, or may be maintained in a state where the deformation is stopped.

[0261] As described above, in the sixth example, when gradually deforming the voxel object 301, a plurality of shapes are deformed according to the frame progression, and the update range of the voxels is set based on the plurality of shapes in the current frame. According to this, the voxel object to be deformed can be made into a complex shape combining a plurality of shapes. In the sixth example, the shape of one voxel object 301 is defined using two shapes, but in other examples, three or more shapes may be used.

[0262] (Seventh Example) Next, as a seventh example, an example of performing deformation while maintaining the shape that has been destroyed during deformation will be described. FIG. 39 is a diagram showing an example of how the wall object 311 deforms. In the seventh example, the wall object 311, which is the voxel object to be deformed, has a shape composed of an annular wall. The deformation condition in the seventh example is, for example, that the wall object 311 is placed in the game space, and the deformation is started in response to the wall object 311 being newly placed in the game space. In the seventh example, by the deformation process, the wall object 311 deforms so that the radius of the annulus increases (see (a) of FIG. 39). Here, the wall object 311 deforms such that a part of it is destroyed in response to a predetermined destruction condition being satisfied during deformation (in the example shown in FIG. 39, in response to a punch action by the player character 201) (see (b) of FIG. 39). In the seventh example, when deformation such that a part is destroyed is performed, in the subsequent deformation in which the radius of the annulus increases, the wall object 311 deforms while maintaining the shape in which a part is destroyed (see (c) of FIG. 39).

[0263] FIG. 40 is a diagram showing an example of the shape prepared in the seventh example. As shown in FIG. 40, in the seventh example, an SDF representing an annular shape 312 composed of a plurality of partial shapes 312a to 312h is prepared. Note that, as the SDF, an SDF for each of the partial shapes 312a to 312h may be prepared, or an SDF representing the entire annular shape 312 may be prepared. For example, each of the partial shapes 312a to 312h is a shape representing a part of the entire annulus with a central angle of a predetermined angle. In FIG. 40, it is assumed that the overall shape is composed of eight partial shapes 312a to 312h, but the number and arrangement of the partial shapes are arbitrary. In the seventh example, in the deforming frame, each of the partial shapes 312a to 312h is enlarged so that the annulus composed of the partial shapes 312a to 312h gradually expands. Although details will be described later, thereby, the wall object 311 is deformed so that the annulus gradually expands.

[0264] In the seventh example, in the deforming frame, the game system 1 determines whether or not the above-described destruction condition is satisfied for each partial shape. Then, when there is a partial shape for which the destruction condition is satisfied, destruction information (for example, a flag) indicating that it has been destroyed is stored in association with the partial shape. The destruction information is held while the deformation of the wall object 311 is being performed.

[0265] In the deforming frame, the game system 1 sets the range within each of the partial shapes 312a to 312h as the update range of the voxels. In the seventh example, similar to the first and sixth examples, after resetting the density of each voxel regarding the wall object 311, the game system 1 sets the range within each of the partial shapes 312a to 312h corresponding to the current frame as the update range of the voxels. Then, a mesh of the wall object 311 is generated based on the updated density. Here, in the seventh example, for the update range within the partial shape associated with the above destruction information, the game system 1 sets the voxel density to less than the reference value (for example, 0), and for the update range within the partial shape not associated with the destruction information, the game system 1 sets the voxel density to a value equal to or greater than the reference value. Therefore, for the region corresponding to the partial shape where the destruction condition is satisfied in a certain frame during deformation, after that frame, the wall object 311 is generated as a shape in which the portion corresponding to the region is destroyed. That is, when the destruction condition is satisfied for some partial shapes during the deformation of the wall object 311, the wall object 311 deforms so as to expand while maintaining the shape in which the portion corresponding to the partial shape is destroyed. As described above, in the seventh example, by setting the destruction information for each partial shape, it is possible to perform deformation while maintaining the shape in which a part of the wall object 311 is destroyed during deformation.

[0266] (Eighth Example) Next, as the eighth example, an example in which the terrain object is deformed so that a part of it is erased will be described. In the above first to seventh examples, the density of the voxels within the update range was set to a value equal to or greater than the reference value (that is, the inside of the voxel object was set as the region within the update range), whereas in the eighth example, the density of the voxels within the update range is set to a value less than the reference value (that is, the outside of the voxel object is set as the region within the update range).

[0267] FIG. 41 is a diagram showing an example of how a terrain object deforms. In the eighth example, in response to the deformation condition being satisfied in the game, the deformation of the terrain object 321, which is a voxel object, is started. Note that the deformation condition in the eighth example is arbitrary. For example, it may be conditioned that a predetermined action is performed on the terrain object 321 by the player character, or it may be conditioned that the value of a predetermined game parameter reaches a predetermined value.

[0268] In the eighth example, the deformation of the terrain object 321 is performed in three stages. In the eighth example, the shapes for defining the update range are each prepared in advance for each stage. That is, in the eighth example, the SDFs representing the first shape 322, the second shape 323, and the third shape 324 corresponding to each stage of the deformation are each prepared. In the eighth example, each of the shapes 322 to 324 is set in the region inside the mesh of the terrain object 321 (see FIG. 41).

[0269] In the frame in which the first-stage deformation is performed, the game system 1 sets the update range of the voxels based on the first shape 322 and updates the density of the voxels within the update range. In the eighth example, the density of the voxels within the update range is set to a value less than the reference value (for example, 0). Therefore, in the eighth example, by generating the mesh of the terrain object 321 based on the updated density, the terrain object 321 is deformed as if the portion within the first shape 322 has been erased.

[0270] In the frame where deformation is performed from the second stage onward, similar to the first stage, setting of the update range, update of the density of voxels, and generation of a mesh are performed. In the eighth example, the second shape 323 is set to be larger than the first shape 322, and the third shape is set to be larger than the second shape (see Fig. 41). Specifically, the second shape 323 includes a region covering at least a part around the first shape 322, and the third shape 324 includes a region covering at least a part around the second shape 323. Therefore, due to the deformation in the second stage, the terrain object 321 is deformed such that the periphery of the part erased in the first stage is further erased. Also, due to the deformation in the third stage, the terrain object 321 is deformed such that the periphery of the part erased in the second stage is further erased. Due to the above-described deformations in the first to third stages, the terrain object 321 is deformed such that the hole gradually expands (see Fig. 41).

[0271] As described above, in the eighth example, a shape is associated with each frame in which deformation is performed, and a larger shape is associated with the passage of the frame. Then, the density of voxels within the update range based on the shape is updated to a value less than the reference value. Thereby, the voxel object can be deformed such that a part of it gradually disappears. Note that in other examples, the density of voxels within the update range may be updated to a value greater than or equal to the reference value. According to this, the voxel object can be deformed to gradually become larger.

[0272] Note that in the eighth example, the stepwise deformation does not necessarily need to be performed for each frame (the same applies to other examples). For example, the interval from the deformation in a certain stage to the deformation in the next stage may be a plurality of frames.

[0273] [3. Specific Examples of Processing in the Game System] Next, with reference to Figs. 42 to 44, specific examples of information processing in the game system 1 will be described.

[0274] FIG. 42 is a diagram showing an example of various data used for information processing in the game system 1. Each data shown in FIG. 42 is stored in a memory accessible by the main body device 2 (for example, flash memory 84, DRAM 85, and / or a memory card mounted on the slot 23, etc.). As shown in FIG. 42, the game system 1 stores a game program. The game program is for executing the game process in the present embodiment (specifically, the game process shown in FIG. 43). 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, shape data, mesh data, object data, etc. (see FIG. 42).

[0275] 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.

[0276] The shape data is data indicating the shape used for the process of deforming the voxel object. In the present embodiment, the shape data is data indicating the shape by the above-described SDF. The shape data is stored for each shape used for the deformation process. In the present embodiment, the shape data includes shape data indicating a shape prepared in advance in the game program and shape data indicating a shape generated in the deformation process (for example, the intermediate shape described above). Further, the shape data for the above-described partial shape includes data indicating whether or not destruction information is set for each partial shape.

[0277] Mesh data includes various data related to the mesh of the voxel object. As shown in FIG. 42, in this 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. In this embodiment, the SVO data includes, in addition to the 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).

[0278] Object data includes various data related to objects other than the voxel object (for example, player characters, fragment objects, etc.). The object data is stored for each object that appears in the game space. The object data includes, for example, data indicating the position, speed, and state of the object.

[0279] FIG. 43 is a flowchart showing an example of the flow of game processing executed by the game system 1. The execution of the game processing is started, for example, in response to the start of the game according to the player's instruction during the execution of the above game program. Note that the processing loop consisting of the series of processes in steps S1 to S15 is executed once per frame cycle.

[0280] In this embodiment, the processor 81 of the main body device 2 executes the processing of each step shown in FIG. 43 by executing the game program stored in the game system 1. However, in other embodiments, some of the processing of each step 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 can communicate with another information processing device (for example, a server), some of the processing of each step shown in FIG. 43 may be executed in the other information processing device. Further, the processing of each step shown in FIG. 43 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.

[0281] Further, the processor 81 executes the processing of each step shown in FIG. 43 using a memory (for example, DRAM 85). That is, the processor 81 stores the information (in other words, data) obtained by each processing step in the memory, and when using the information in subsequent processing steps, reads the information from the memory and uses it.

[0282] In step S1 shown in FIG. 43, the processor 81 acquires the operation data indicating the operation input by the player. That is, the processor 81 acquires the operation data received from each controller via the controller communication unit 83 and / or each of the terminals 17 and 21. The processing of step S2 is executed after step S1.

[0283] In step S2, the processor 81 designates, as a processing target, any one of the objects in the game space that require processing and for which the processing has not been completed, and executes a process of calculating the speed and a process of reflecting the result of contact between the objects in the previous frame for the designated object. 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 player (for example, a fragment object), the speed of the object is calculated based on rules predetermined in the game program. For example, the speed of the fragment object is set to 0 when it is placed on the terrain object and not moving, set to the same as the speed of the player character when it is held by the player character, and set to the speed of moving in the above-described aiming direction with the magnitude determined by the above rules when it is released by a throwing action by the player character. Specifically, the speed of the object is calculated based on virtual physical calculations including the interaction between the 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 the speed determination.

[0284] Also, the process of reflecting the result of contact between the objects in the previous frame includes a process of applying the influence of contact to the object when it is determined in the collision determination (step S12) 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 the lava terrain object in the previous frame, a process of reducing the physical strength of the player character · When it is determined that the player character has contacted the terrain object by a pulling action or a punching action in the previous frame, a process of generating a fragment object · When it is determined that the fragment object has contacted the rock terrain object in the previous frame, a process of disappearing the fragment object When 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. The process of step S3 is executed next to step S2.

[0285] In step S3, the processor 81 determines whether an update event for updating the voxel object has occurred due to the object specified in step S2. For example, the determination in step S3 is made based on the result of the collision determination (step S12) in the previous frame. For example, when it is determined that the player character has contacted the terrain object by a pulling action or a punching action in the previous frame, it is determined that an update event of erasing a part of the terrain object (see FIGS. 26 and 27) has occurred. Also, for example, when it is determined that the fragment object has contacted the rock terrain object in the previous frame, it is determined that an update event of increasing the volume of the terrain object (see FIG. 29) has occurred. If the determination result of step S3 is affirmative, the process of step S4 is executed. On the other hand, if the determination result of step S3 is negative, the process of step S6 is executed.

[0286] In step S4, the processor 81 sets an update range for updating the voxel object in the game space. For example, the specific content of the update range (i.e., 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 to be associated with the content related to the type of update event determined to occur in step S3. The processor 81 stores the data indicating the set update range in the memory as update range data. The process of step S5 is executed after step S4.

[0287] In step S5, the processor 81 makes changes to the voxels corresponding to the update range set in step S4 according to the update event. For example, when deforming the voxel object within the update range as if it were erased or deforming it as if a voxel object were added within the update range, the voxel data stored in the memory is updated so as to change the density of the voxels corresponding to the update range (see the above [2-2. Update of voxel data]). Also, for example, when changing the material of the voxel object within the update range, the voxel data stored in the memory is updated so as to update the first and second material IDs and the material mixing ratio of the voxels corresponding to the update range. The process of step S6 is executed after step S5.

[0288] In step S6, the processor 81 executes a deformation process for the object specified in step S2. In the deformation process, it is determined whether to deform the object, and if it is determined to deform the object, a gradual deformation is performed on the object over a period of multiple frames. Hereinafter, the details of the deformation process will be described with reference to FIG. 44.

[0289] FIG. 44 is a sub - flowchart showing an example of the detailed flow of the deformation process in step S6 shown in FIG. 43. In the deformation process, first, in step S21, the processor 81 determines whether or not the object specified in step S2 satisfies the deformation condition. If the determination result in step S21 is affirmative, the process of step S22 is executed. On the other hand, if the determination result in step S21 is negative, the process of step S25 is executed.

[0290] In step S22, the processor 81 sets the deformation flag indicating that the object specified in step S2 is in the process of deformation to on. The process of step S23 is executed after step S22.

[0291] In step S23, the processor 81 determines whether or not to arrange the voxel object at the start of deformation. For example, as in the second example or the third example, when the voxel object is not arranged at the time when the deformation condition is satisfied and it is necessary to newly arrange the voxel object at the start of deformation, the determination result in step S23 is affirmative. On the other hand, when it is not necessary to newly arrange the voxel object at the start of deformation, the determination result in step S23 is negative. If the determination result in step S23 is affirmative, the process of step S24 is executed. On the other hand, if the determination result in step S23 is negative, the process of step S25 is executed.

[0292] In step S24, the processor 81 sets the density of each voxel regarding the object specified in step S2 to be the density corresponding to the shape at the start of deformation. For example, for the voxels located within the shape at the start of deformation, the processor 81 updates the voxel data stored in the memory so that the density is a value equal to or greater than the reference value, and for the voxels located outside the shape at the start of deformation, the density is a value less than the reference value. Thereby, the voxel object to be deformed will be arranged by the process of step S10 described later. In the above second example, in step S24, the processor 81 sets the density of the voxel object corresponding to the fragment object that satisfies the deformation condition, and deletes the fragment object from the game space. After step S24, the processor 81 ends the deformation process.

[0293] In step S25, the processor 81 determines whether the object specified in step S2 is in the process of deformation. The determination in step S25 is made based on whether the deformation flag regarding the object is set to on. If the determination result in step S25 is affirmative, the process of step S26 is executed. On the other hand, if the determination result in step S25 is negative, the processor 81 ends the deformation process.

[0294] In step S26, the processor 81 sets the shape to be used for deformation in the current frame. For example, in the first example above, an intermediate shape or a second shape is set according to the number of frames since the start of deformation. Regarding the second example above, the first shape that has been inflated and / or shrunk from the first shape in the previous frame is set, and when a predetermined number of frames have elapsed since the start of deformation, the second shape is set. Regarding the third to fifth examples above, a fixedly arranged shape (for example, the first and third shapes in the fourth example) and a shape that moves according to the passage of frames (for example, the second and fourth shapes in the fourth example) are set. Regarding the sixth and seventh examples above, the shape in the current frame is set by performing a predetermined deformation on the shape in the previous frame. Regarding the eighth example above, the shape associated with the current frame among the plurality of prepared shapes is set. The processor 81 stores the shape data indicating the set shape in the memory. In addition, when the shape in the current frame is obtained by deforming the shape in the previous frame, the shape data indicating the shape stored in the memory is updated. The process of step S27 is executed after step S26.

[0295] In step S27, the processor 81 determines the update range of the voxels regarding the voxel object specified in step S2 based on the shape set in step S26. In the first, second, and sixth to eighth examples above, the range within the set shape is determined as the update range. In the third to fifth examples above, the overlapping range of the plurality of set shapes is determined as the update range. The processor 81 stores the data indicating the determined update range in the memory. The process of step S28 is executed after step S27.

[0296] In step S28, the processor 81 determines whether the shape set in step S26 is a partial shape and at least one partial shape has been destroyed. For example, in the seventh example, the processor 81 determines whether a punch action by the player character 201 has been performed on the portion of the wall object 311 corresponding to the partial shape. If the determination result in step S28 is affirmative, the process of step S29 is executed. On the other hand, if the determination result in step S28 is negative, the process of step S30 is executed.

[0297] In step S29, the processor 81 sets destruction information for the partial shape determined to have been destroyed in step S28. The processor 81 stores the destruction information in association with the shape data indicating the partial shape. The process of step S30 is executed after step S29.

[0298] In step S30, the processor 81 updates the density of the voxels within the update range determined in step S27 among the voxels regarding the voxel object specified in step S2. Specifically, the processor 81 updates the voxel data stored in the memory so as to change the density of the voxels within the update range. For the first, sixth, and seventh examples above, the processor 81 resets the density values of the respective voxels and then updates the density of the voxels within the update range. Also, for the first to seventh examples above, the density of the voxels within the update range is updated to a value equal to or greater than the reference value, and for the eighth example, the density of the voxels within the update range is updated to a value less than the reference value. The process of step S31 is executed after step S30.

[0299] In step S31, the processor 81 determines whether it is the timing to end the deformation of the voxel object specified in step S2. The determination in step S31 is made, for example, based on whether a predetermined number of frames have elapsed since the start of deformation or whether the shape set in step S26 has become a predetermined shape (i.e., the shape at the end of deformation). If the determination result in step S31 is affirmative, the process of step S32 is executed. On the other hand, if the determination result in step S31 is negative, the processor 81 ends the deformation process.

[0300] In step S32, the processor 81 sets the above deformation flag to off. After step S32, the processor 81 ends the deformation process.

[0301] Returning to the description of FIG. 43, in step S7 following step S6, the processor 81 determines whether the processes of steps S2 to S6 have been completed for all the objects that require processing. If the determination result in step S7 is affirmative, the process of step S8 is executed. On the other hand, if the determination result in step S7 is negative, the process of step S2 is executed again.

[0302] In step S8, the processor 81 updates the vertices of the voxel object in the game space. That is, when the voxel data is updated in the processes of steps S5 and S6 above, new vertices are calculated 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] above. Also, the materials of the new vertices are calculated according to the method described in [2-4. Determination of Vertex Materials] above. The process of step S9 is executed after step S8.

[0303] In step S9, the processor 81 simplifies the vertices. That is, for each vertex updated by the process in step S8, the processor 81 performs simplification according to the method described in the above [2-5. Vertex Simplification]. The SVO data stored in the memory is updated to indicate each vertex obtained by the processes in steps S8 and S9 above. Therefore, the SVO data is updated by the processes in steps S8 and S9. Note that the processes in steps S8 and S9 do not need to recalculate the vertices for the entire voxel data, and may be executed only for the part where the content of the voxel is changed in the process of step S6. The process of step S10 is executed after step S9.

[0304] In step S10, the processor 81 updates the display mesh of the voxel object based on the SVO data stored in the memory. Note that the position of each vertex of the display mesh and the material of each polygon of the display mesh (that is, the material set for each vertex of the polygon) are calculated according to the methods described in the above [2-6. Mesh Generation] and [2-6-1. Determination of the Material of the Display Mesh]. 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. The process of step S11 is executed after step S10. Note that the processor 81 may start the processes after step S11 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.

[0305] In step S11, the processor 81 updates the determination mesh of the voxel object based on the SVO data stored in the memory. Note that the position of each vertex of the determination mesh and the material of each polygon of the determination mesh (i.e., 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]. 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. The process of step S12 is executed after step S11.

[0306] Note that in the example shown in FIG. 43, the generation process of the determination mesh (step S11) is assumed to be 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 of step S12 is executed only in a frame that satisfies a predetermined condition, the processor 81 may execute the generation process of the determination mesh in the frame in which the collision determination of step S12 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 of step S12 is performed. For example, in a situation where there are no objects to be the target of collision determination other than the voxel object around the player character in the game space (i.e., 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.

[0307] In step S12, the processor 81 performs a collision determination for each object in the game space based on the determination mesh data and the object data stored in the memory. That is, the processor 81 uses the determination mesh for the voxel object and uses a determination region of a predetermined shape set for the object for an object that is not a voxel object to perform the 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 the collision determination using the position when moving at the above speed as the position of each object.

[0308] In the present embodiment, the presence or absence of the following contacts is determined by the collision determination in step S12, for example. · Contact between the player character performing a movement, punch action, or pull-out action and the terrain object · Contact between the character performing an action of lifting (a fragment object) and the fragment object · Contact between the straight line extending in the aiming direction from the position of the player character and the terrain object · Contact between the fragment object released by the throwing action by the player character and the terrain object If it is determined in the collision determination in step S12 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. The process of step S13 is executed after step S12.

[0309] In step S13, the processor 81 controls the operations of each object in the game space. 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. When a predetermined action occurs, a region for collision determination corresponding to the action is generated within the game space. Also, for example, the fragment object is controlled to move in the above-described aiming direction in response to being thrown by the player character. In one execution of the process of step S13, the processor 81 controls each object so as to advance the operation for one frame for operations (for example, actions by the player character) performed over a plurality of frames. By repeatedly executing the process of step S13 over a plurality of 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 blocked by the contacted other object, the position of the object is determined not to change. The object data stored in the memory is updated to indicate the object after the control in step S13. The process of step S14 is executed after step S13.

[0310] In step S14, the processor 81 generates a game image. That is, the processor 81 generates a game image by performing rendering on each polygon of the display mesh of the voxel object and each polygon of the object other than the voxel object based on the virtual camera. Note that each polygon of the display mesh is rendered using rendering 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]. Also, in the present embodiment, when the player character is in a state where a throwing action is possible, the processor 81 generates a game image including the above-described aiming image and object information image (see FIG. 28). The game image generated in step S14 is output to the display device and displayed at a cycle of once per frame. The process of step S15 is executed after step S14.

[0311] In step S15, the processor 81 determines whether to end the game. For example, when a player performs a predetermined operation input for ending the game, the processor 81 determines to end the game. If the determination result in step S15 is negative, the process of step S1 is executed again. Thereafter, a series of processes from steps S1 to S15 are repeatedly executed until it is determined in step S15 to end the game. On the other hand, if the determination result in step S15 is positive, the processor 81 ends the game process shown in FIG. 43.

[0312] [4. Operational effects and modifications of the present embodiment] As described above, in the above embodiment, the voxel object can be deformed by a novel method based on the update range of voxels determined by the determination method using a plurality of shapes. According to this, for example, the voxel object can be deformed into various shapes, or the state in which the voxel object gradually deforms from one shape to another can be expressed in more detail.

[0313] Note that the process of deforming the voxel object described in the above [2-8. Deformation of Voxel Object] can be executed regardless of whether a material is set for the voxel. When a material is set for the voxel as in the above embodiment, the material of the mesh of the deformed voxel object may be determined by, for example, the method described in the above [2-4. Determination of Vertex Material] to [2-6. Mesh Generation].

[0314] Note that in the above embodiment, when a process is executed using data (in the sense including a program) in a certain information processing apparatus, a part of the data necessary for the process may be transmitted from another information processing apparatus different from the certain information processing apparatus. At this time, the certain information processing apparatus may execute the above process using the data received from another information processing apparatus and the data stored in itself.

[0315] Note that in other embodiments, the information processing system may not include a part of the configuration in the above embodiment, or may not execute a part of the processes executed in the above embodiment. For example, in order for the information processing system to exhibit a part of the specific effects in the above embodiment, it may include a configuration for exhibiting the effects and execute a process for exhibiting the effects, and may not include other configurations or may not execute other processes.

Industrial Applicability

[0316] The above embodiment can be used, for example, as a game system or a game program for the purpose of deforming the mesh of an object by editing voxel data, etc.

Explanation of Signs

[0317] 1 Game system 2 Main body device 81 Processor 201 Player character 202 Terrain object 203,253,254 Update Range Voxels 211 to 218 Aiming Image 262 Object Information Image 263 Character Object 271 Scaffold Object 274 Rock Object 283 Tree Object 295 Voxel Object 301 Wall Object 311 Terrain Object 321

Claims

1. In a computer of an information processing apparatus, voxel data defined in a virtual space, for each of a plurality of voxels, voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by contents is set is updated based on game processing, a display mesh corresponding to the voxel data and drawn based on a virtual camera, the display mesh in which vertex coordinates of the display mesh are determined based on at least the density included in the voxel data is updated, For each frame, based on the vertex coordinates of the display mesh, drawing of the virtual space including the display mesh is performed, Based on the game processing, stepwise update for stepwise updating the voxel data over a plurality of frames is started, During the period of the stepwise update, for each frame, a voxel update range in the frame is determined by a determination method using a plurality of shapes, A game program for updating the density of each of the voxels corresponding to the voxel update range of the frame in the virtual space among the voxel data.

2. Each of the plurality of shapes is defined by representing an arbitrary position in the space as a signed distance from the boundary of the shape, In the computer, In the stepwise update, a plurality of the signed distances based on each of the plurality of shapes are interpolated, and a range defined based on the interpolated signed distance is used as the voxel update range, and the density of the voxel is updated based on the interpolated signed distance with respect to the position of each voxel. The game program according to claim 1.

3. In the computer, In the stepwise update, in accordance with the passage of frames, the ratio of the signed distance based on the first shape among the plurality of shapes in the interpolation is decreased, and the ratio of the signed distance based on the second shape among the plurality of shapes in the interpolation is increased. The game program according to claim 2.

4. In the computer, In the stepwise update, For a third shape among the plurality of shapes, a part inside a fourth shape among the plurality of shapes is expanded and a part outside is contracted, so that a deformation approaching the fourth shape is performed in accordance with the passage of frames. The game program according to claim 1, wherein the third shape in the frame is set as the voxel update range in the frame.

5. The computer is caused to In the stepwise update, cause the plurality of shapes to be deformed according to the passage of the frame, The game program according to claim 1, wherein the plurality of shapes in the frame are set as the voxel update range in the frame.

6. The range of the value of the density includes a first range and a second range having a value smaller than the first range, The computer is caused to In the stepwise update, set the density of each voxel included in the voxel data to a value within the second range, and further set the density of the voxel corresponding to the inside of the voxel update range of the frame to a value within the first range. The game program according to any one of claims 2 to 5.

7. The range of the value of the density includes a first range and a second range having a value smaller than the first range, The computer is caused to In the stepwise update, set the density of the voxel corresponding to the inside of the voxel update range of the frame to a value within the first range, and set the density of the voxel corresponding to the outside to a value within the second range. The game program according to any one of claims 2 to 5.

8. The computer is caused to In the stepwise update, move a fifth shape among the plurality of shapes according to the passage of the frame, The game program according to claim 1, wherein an overlapping range between the fifth shape and a sixth shape among the plurality of shapes is set as the voxel update range of the frame.

9. The range of the value of the density includes a first range and a second range having a value smaller than the first range, The computer is caused to In the stepwise update, set the density of the voxel corresponding to the inside of the voxel update range of the frame to a value within the first range. The game program according to claim 8.

10. The computer is caused to Based on game processing, generate a destruction event that sets the density of the voxel corresponding to the inside of the voxel update range based on the seventh shape to a value within the second range for the voxel data in which the sixth shape is preset, Start the stepwise update in response to the occurrence of the destruction event, In the stepwise update, Move the eighth shape so that the range in which the eighth shape has moved throughout the stepwise update includes the entire seventh shape. The game program according to claim 9, wherein in each frame, the density of the voxels corresponding to the inside of the voxel update range is set to a value within the first range.

11. The range of the values of the density includes a first range and a second range having a value smaller than the first range. Cause the computer to Based on the stepwise update, at the final stage of the stepwise update, update so that the density of the voxels inside the voxel update range corresponding to any one of the plurality of shapes becomes a value within the first range, and the density of the outer voxels becomes a value within the second range. The game program according to claim 1.

12. The range of the values of the density includes a first range and a second range having a value smaller than the first range. Cause the computer to At the timing when a predetermined frame has elapsed during the stepwise update, among the plurality of shapes, the shape associated with the frame and with which a larger shape is associated as the frame elapses is set as the voxel update range of the frame, and the density of the voxels corresponding to the inside of the voxel update range is decreased to a value within the second range or increased to a value within the first range. The game program according to claim 1.

13. Cause the computer to Based on the voxel data, for the portion where the voxels having the density within the first range and the voxels having the density within the second range are adjacent, determine the vertex coordinates of the display mesh based on the method of setting vertices at coordinates based on the positions and the density of a plurality of surrounding voxels. The game program according to claim 6.

14. Cause the computer to Based on the voxel data, for the portion where the voxels having the density within the first range and the voxels having the density within the second range are adjacent, determine the vertex coordinates of the display mesh based on the method of setting vertices at coordinates based on the positions and the density of a plurality of surrounding voxels. The game program according to claim 7.

15. Cause the computer to Based on the voxel data, for a portion where a voxel having the density within the first range and a voxel having the density within the second range are adjacent, based on a method of setting vertices at coordinates based on the positions and the density of a plurality of surrounding voxels, the vertex coordinates of the display mesh are determined, according to the game program according to any one of claims 9, 11, and 12.

16. In an information processing system, voxel data defined in a virtual space, for each of a plurality of voxels, 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 is set is updated based on game processing, a display mesh corresponding to the voxel data and drawn based on a virtual camera, the display mesh in which vertex coordinates are determined based on at least the density included in the voxel data is updated, For each frame, based on the vertex coordinates of the display mesh, the virtual space including the display mesh is drawn, Based on the game processing, a stepwise update for stepwise updating the voxel data over a plurality of frames is started, During the period of the stepwise update, for each frame, the voxel update range in the frame is determined by a determination method using a plurality of shapes, For each of the voxels in the voxel data corresponding to the voxel update range of the frame in the virtual space, an update to the density is performed, a game processing method.

17. Each of the plurality of shapes is defined by representing an arbitrary position in the space as a signed distance from the boundary of the shape, In the information processing system, In the stepwise update, a plurality of the signed distances based on each of the plurality of shapes are interpolated, and a range defined based on the interpolated signed distance is used as the voxel update range, and the density of the voxel is updated based on the interpolated signed distance with respect to the position of each voxel, according to the game processing method according to claim 16.

18. In the information processing system, In the stepwise update, according to the passage of frames, reduce the ratio of the signed distance based on the first shape among the plurality of shapes in the interpolation, and increase the ratio of the signed distance based on the second shape among the plurality of shapes. The game processing method according to claim 17.

19. In the information processing system, In the stepwise update, For the third shape among the plurality of shapes, expand the portion inside the fourth shape among the plurality of shapes and contract the portion outside, thereby performing a deformation to approach the fourth shape according to the passage of frames, Make the third shape in the frame be the voxel update range in the frame. The game processing method according to claim 16.

20. In the information processing system, In the stepwise update, Perform deformation on the plurality of shapes according to the passage of frames, Make the plurality of shapes in the frame be the voxel update range in the frame. The game processing method according to claim 16.

21. The range of the value of the density includes a first range and a second range with a value smaller than the first range, In the information processing system, In the stepwise update, make the density of each voxel included in the voxel data be a value within the second range, and further make the density of the voxel corresponding to the inside of the voxel update range of the frame be a value within the first range. The game processing method according to any one of claims 17 to 20.

22. The range of the value of the density includes a first range and a second range with a value smaller than the first range, In the information processing system, In the stepwise update, make the density of the voxel corresponding to the inside of the voxel update range of the frame be a value within the first range, and make the density of the voxel corresponding to the outside be a value within the second range. The game processing method according to any one of claims 17 to 20.

23. In the information processing system, In the stepwise update, According to the passage of frames, move the fifth shape among the plurality of shapes, Make the overlapping range of the fifth shape and the sixth shape among the plurality of shapes be the voxel update range of the frame. The game processing method according to claim 16.

24. The range of the value of the density includes a first range and a second range having a value smaller than the first range. In the information processing system, In the stepwise update, the density of the voxels corresponding to the inside of the voxel update range of the frame is set to a value within the first range. The game processing method according to claim 23.

25. In the information processing system, Based on game processing, for the voxel data in which the sixth shape is preset, a destruction event is generated that sets the density of the voxels corresponding to the inside of the voxel update range based on the seventh shape to a value within the second range. In response to the occurrence of the destruction event, the stepwise update is started. In the stepwise update, The eighth shape is moved so that the range in which the eighth shape has moved in the entire stepwise update includes the entire seventh shape. In each frame, the density of the voxels corresponding to the inside of the voxel update range is set to a value within the first range. The game processing method according to claim 24.

26. The range of the value of the density includes a first range and a second range having a value smaller than the first range. In the information processing system, Based on the stepwise update, at the final stage of the stepwise update, an update is performed such that the density of the voxels inside the voxel update range corresponding to any one of the plurality of shapes becomes a value in the first range, and the density of the outer voxels becomes a value in the second range. The game processing method according to claim 16.

27. The range of the value of the density includes a first range and a second range having a value smaller than the first range. In the information processing system, At the timing when a predetermined frame has elapsed during the stepwise update, among the plurality of shapes, the shape associated with the frame and with which a larger shape is associated as the frame elapses is set as the voxel update range of the frame, and the density of the voxels corresponding to the inside of the voxel update range is decreased to a value within the second range or increased to a value within the first range. The game processing method according to claim 16.

28. In the information processing system, Based on the voxel data, for a portion where a voxel having the density within the first range and a voxel having the density within the second range are adjacent, based on a method of setting vertices at coordinates based on the positions and the density of a plurality of surrounding voxels, the vertex coordinates of the display mesh are determined, according to the game processing method of claim 21.

29. Voxel data defined in a virtual space, for each of a plurality of voxels, voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by content is set, is updated based on game processing, A display mesh corresponding to the voxel data and drawn based on a virtual camera, in which the vertex coordinates of the display mesh are determined based on at least the density included in the voxel data, is updated, For each frame, based on the vertex coordinates of the display mesh, drawing of the virtual space including the display mesh is performed, Based on the game processing, stepwise update for stepwise updating the voxel data over a period of a plurality of frames is started, During the period of the stepwise update, for each frame, A voxel update range in the frame is determined by a determination method using a plurality of shapes, An information processing system that updates the density for each of the voxels in the voxel data corresponding to the voxel update range of the frame in the virtual space.

30. Each of the plurality of shapes is defined by representing an arbitrary position in the space as a signed distance from the boundary of the shape, In the stepwise update, a plurality of the signed distances based on each of the plurality of shapes are interpolated, and a range defined based on the interpolated signed distance is set as the voxel update range, and the density of each voxel is updated based on the interpolated signed distance with respect to the position of each voxel, according to the information processing system of claim 29.

31. In the stepwise update, In response to the passage of frames, a fifth shape among the plurality of shapes is moved, An overlapping range of the fifth shape and a sixth shape among the plurality of shapes is set as the voxel update range of the frame, according to the information processing system of claim 29.

32. An information processing apparatus including a processor, The processor, Voxel data defined in a virtual space, wherein for each of a plurality of voxels, voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by content is set is updated based on game processing. A display mesh corresponding to the voxel data and drawn based on a virtual camera, wherein vertex coordinates of the display mesh are determined based on at least the density included in the voxel data, is updated. For each frame, based on the vertex coordinates of the display mesh, the virtual space including the display mesh is drawn. Based on the game processing, stepwise update for stepwise updating the voxel data over a period of a plurality of frames is started. During the period of the stepwise update, for each frame, A voxel update range in the frame is determined by a determination method using a plurality of shapes. An information processing apparatus that updates the density for each of the voxels in the voxel data corresponding to the voxel update range of the frame in the virtual space.

Citation Information

Patent Citations

  • Game system, image processing method for the same and recording medium

    JP2000334171A

  • Program, recording medium, game character drawing method and game machine

    JP2004062666A

  • Image processing program and image processor

    JP2009043118A

  • Image processing apparatus and image processing method

    JP2021027982A

  • Image processing apparatus, image processing method, and program

    JP2022082020A

Cited By

  • Object rendering method and device and storage medium

    CN121616734A