Game program, information processing system, information processing device, and game processing method
The game program uses voxel data and intersection information to manage vertex coordinates, reducing processing load and ensuring accurate shape restoration of voxel meshes in virtual spaces.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- NINTENDO CO LTD
- Filing Date
- 2026-02-13
- Publication Date
- 2026-05-21
AI Technical Summary
The existing methods for generating a mesh of an object in a virtual space result in an increased processing load, particularly when dealing with voxel data and intersection information.
A game program that generates and updates a voxel mesh based on voxel data, where density and intersection information are used to determine vertex coordinates, allowing for reduced processing load and accurate shape restoration.
The solution effectively suppresses the increase in processing load and allows for detailed shape definition and accurate restoration of voxel meshes, even after deformation.
Smart Images

Figure 2026084696000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a game program, an information processing system, an information processing apparatus, and a game processing method for generating an object in a virtual space.
Background Art
[0002] Conventionally, when generating a mesh of an object, by defining information on the normal direction at a certain position, the vertices of each polygon are determined so that the plane of the polygon is perpendicular to the normal direction at that position (for example, see 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] It is desirable to suppress an increase in processing load in a process of generating a mesh of an object using the above information.
Means for Solving the Problems
[0005] To solve the above problems, the present invention employs the following configurations (1) to (9).
[0006] (1) An example of the present invention is a game program that causes a computer to execute the following process. A process to generate and update a voxel mesh based on voxel data, where voxel data is defined in a voxel space within a virtual space, and for each of multiple voxels, a density is set that indicates the degree to which the space defined by the voxel is virtually occupied by its contents, and for at least some of the voxels, intersection information regarding the intersection points between lines connecting the voxels and the mesh is set, and the vertex coordinates of the mesh are determined based at least on the density and intersection information. - A process that controls the player character in a virtual space based on the input, and causes the player character to perform a first action in response to a first instruction based on the input. - A process to reduce the density of voxels in the voxel data that fall within the first voxel update range set based on the location where the first action was performed, and to delete intersection information if it is set in the voxels of the voxel data that fall within the first intersection information update range set based on the location where the first action was performed. • Process to render a virtual space including a voxel mesh.
[0007] According to the configuration described in (1) above, the increase in processing load in the process of generating a voxel mesh using intersection information can be suppressed.
[0008] (2) In the configuration described in (1) above, the intersection information may include, for each voxel, data indicating the coordinates of the intersection point and data indicating the normal direction for the intersection point between the boundary with an adjacent voxel in a predetermined direction and the mesh. The game program may cause the computer to perform the following processing. The process involves generating and updating voxel meshes based on a method in which, for voxels where the density is within a first range and voxels where the density is within a second range, vertices of the voxel mesh are set between them, and intersection information is set, and based on this intersection information, the coordinates of the vertices of the voxel mesh are determined so that the faces of the voxel mesh are aligned in the direction of the normal at the intersection coordinates, or so that the error from this alignment is minimized. For voxels where intersection information is not set, the coordinates of the vertices of the voxel mesh are determined based on intersections set based on density.
[0009] According to the configuration described in (2) above, the shape of the voxel mesh can be defined in more detail by the intersection information.
[0010] (3) In the configuration described in (2) above, the game program may cause the computer to generate and update a voxel mesh based on a method in which the coordinates of the vertices of the voxel mesh are determined at the position where the distance from multiple faces facing the normal direction at the coordinates of the intersection is minimized, based on each of the multiple pieces of intersection information.
[0011] According to the configuration described in (3) above, the vertices of the voxel mesh can be determined on or near the surface defined by the intersection information.
[0012] (4) In any of the configurations described in (1) to (3) above, the game program may cause the computer to perform the following processes: - A process that causes the player character to perform a second action in response to a second instruction based on the input. • For voxels in the voxel data that fall within the second voxel update range set in response to the second action, the density is reduced without deleting intersection information.
[0013] According to the configuration described in (4) above, when the reduced density is restored, the shape of the voxel mesh can be generated using intersection information, thus allowing the shape of the voxel mesh to be restored to its original shape more accurately.
[0014] (5) In the configuration of (4) above, the voxel data may include at least first voxel data defined in a first voxel space and second voxel data defined in a second voxel space. The first action is an action on the first voxel data, and the first voxel update range may be an update range for the first voxel data. The second action is an action on the second voxel data, and the second voxel update range may be an update range for the second voxel data.
[0015] According to the configuration described in (5) above, with respect to the deformation of the voxel object in response to the first action, the increase in processing load in the process of generating a voxel mesh using intersection information can be suppressed, and with respect to the deformation of the voxel object in response to the second action, the shape of the voxel mesh can be more accurately restored to its original shape.
[0016] (6) In the configuration of (5) above, the voxel data may further include third voxel data defined in a third voxel space, in which a correspondence relationship is set for each of multiple voxels with respect to each voxel in the second voxel data. The game program may further increase the density of the voxels to be increased, which are voxels in the third voxel data that have a correspondence relationship set with the voxels to be decreased, when the computer decreases the density of voxels in the second voxel data.
[0017] According to the configuration described in (6) above, it is possible to create a representation in which the volume of one voxel object appears to increase in response to a decrease in the volume of the other voxel object.
[0018] (7) In any of the configurations (1) to (3) above, the voxel data may further include first voxel data defined in a first voxel space, second voxel data defined in a second voxel space, and third voxel data defined in a third voxel space, where a correspondence relationship with each voxel of the second voxel data is set for each of the plurality of voxels. The game program may further cause the computer to, based on a first action, increase the density of an increase target voxel that is a voxel of the third voxel data for which a correspondence relationship with a decrease target voxel that is a voxel whose density has decreased when the density of the voxels of the second voxel data is decreased, and when intersection information is set in the decrease target voxel, cause the same intersection information as the intersection information deleted from the decrease target voxel to be set in the increase target voxel.
[0019] According to the configuration of (7) above, an increase in the processing load related to the generation of a mesh based on the second voxel data can be suppressed. Also, regarding the generation of a mesh based on the third voxel data, it can be generated so as to more accurately reproduce the same shape as the voxel object related to the second voxel data.
[0020] [[ID=I0]] (8) In any of the configurations (1) to (7) above, the game program may further cause the computer to execute the following processing. · Processing to cause a player character to perform a third action in response to a third instruction based on an operation input · Processing to update the density of voxels corresponding to a third voxel update range set according to the third action and to set intersection information for at least some of the voxels
[0021] According to the configuration of (8) above, even when no intersection information is set for the voxel object before deformation, it is possible to easily make the shape of the mesh of the voxel object after deformation as intended.
[0022] (9) In any of the configurations from (1) to (8) above, the voxel data may at least include fourth voxel data defined in a fourth voxel space and having intersection information set in a predetermined voxel. When the density of the fourth voxel data decreases based on the first action, the game program may further cause the computer to increase the density of the voxels of the fourth voxel data corresponding to the fourth voxel update range and restore the intersection information deleted based on the first action.
[0023] According to the configuration of (9) above, the shape of the voxel object can be restored to a more accurate shape before deformation.
[0024] Note that another example of the present invention may be an information processing apparatus or an information processing system that executes the processing in (1) to (9) above. Further, another example of the present invention may be a game processing method that causes an information processing system to execute the processing in (1) to (9) above.
Advantages of the Invention
[0025] According to the game program, information processing system, information processing apparatus, or game processing method described above, an increase in the processing load in the process of generating the mesh of the object can be suppressed.
Brief Description of the Drawings
[0026] [Figure 1] A diagram showing an example of a state where a left controller and a right controller are attached to the main body device [Figure 2] A diagram showing an example of a state where the left controller and the right controller are each removed from the main body device [Figure 3] A six-sided view showing an example of the main body device [Figure 4] A six-sided view showing an example of the left controller [Figure 5] A six-sided view showing an example of the right controller [Figure 6] Block diagram showing an example of the internal configuration of the main unit. [Figure 7] Block diagram showing an example of the internal configuration of the main unit, left controller, and right controller. [Figure 8] This diagram shows an example of a terrain object that is a voxel object. [Figure 9] Figure 8 shows an example of what the terrain object looks like before and after a portion of it is deleted. [Figure 10] Figure 8 shows an example of what the terrain object looks like before and after a portion of it is deleted. [Figure 11] A diagram showing an example of voxel data. [Figure 12] A diagram showing an example of material data. [Figure 13] A diagram showing an example of the game space when an update event occurs. [Figure 14] A diagram showing an example of the update scope. [Figure 15] A diagram showing an example of how to set vertices. [Figure 16] This diagram shows an example of how to determine vertices when intersection information is provided. [Figure 17] This figure shows an example of a method for determining vertices when different intersection information is set than that shown in Figure 16. [Figure 18] A diagram showing an example of intersection information data. [Figure 19] A diagram showing an example of vertex simplification. [Figure 20] A diagram showing an example of material-related conditions. [Figure 21] This diagram shows an example of a mesh generated based on vertices. [Figure 22] This is an example of a game image showing a player character moving over terrain objects. [Figure 23] This diagram shows an example of a game image illustrating a player character pulling a fragment object from a terrain object. [Figure 24]This is an example of a game image showing how fragment objects are generated when a player character destroys terrain objects. [Figure 25] This diagram shows an example of a game image where the player character is capable of performing a throwing action. [Figure 26] Figure 25 shows an example of a game image after a terrain object has been altered due to contact with a fragment object. [Figure 27] This diagram shows an example of a game image where intersection information is set for terrain objects. [Figure 28] Figure 27 shows an example of game images before and after deformation is applied to terrain object 271 in the situation shown. [Figure 29] This diagram shows an example of the update and deletion ranges set for terrain objects. [Figure 30] This diagram shows an example of a game image representing the game space where the first corresponding object is placed. [Figure 31] Figure 30 shows an example of a game image illustrating the situation after a punch action has been performed, based on the situation shown in Figure 30. [Figure 32] Figure 31 shows an example of a game image illustrating a situation where a punch action has been performed on each of the first corresponding objects. [Figure 33] Figure 32 shows an example of a game image illustrating a situation where a punch action is performed on the second corresponding object. [Figure 34] This figure shows an example of the density values set for each voxel of the first corresponding object and the second corresponding object. [Figure 35] A diagram showing an example of intersection information set for corresponding objects. [Figure 36] This diagram shows an example of a game image where part of a terrain object deforms to rise upwards. [Figure 37] This diagram shows an example of how a character object is restored after deformation. [Figure 38]This diagram shows an example of various types of data used in information processing within a game system. [Figure 39] A flowchart illustrating an example of the game processing flow executed by the game system. [Figure 40] Figure 39 shows a subflowchart illustrating an example of the detailed flow of the voxel update process in step S4. [Figure 41] Figure 40 shows a subflowchart illustrating an example of the detailed flow of the intersection information control process in step S24. [Figure 42] Figure 39 shows a subflowchart illustrating an example of the detailed flow of the corresponding object update process in step S5. [Figure 43] Figure 39 shows a subflowchart illustrating an example of the detailed flow of the corresponding object update process in step S13. [Modes for carrying out the invention]
[0027] [1. Game System Configuration] The following describes a game system according to an example of this embodiment. An example of the game system 1 in this embodiment includes a main unit (information processing device; functioning as the game device main unit in this embodiment) 2, a left controller 3, and a right controller 4. The left controller 3 and the right controller 4 are detachable from the main unit 2. In other words, the game system 1 can be used as an integrated device by attaching the left controller 3 and the right controller 4 to the main unit 2. Alternatively, the game system 1 can be used with the main unit 2 and the left controller 3 and right controller 4 as separate components (see Figure 2). The hardware configuration of the game system 1 in this embodiment will be described below, followed by a description of the control of the game system 1 in this embodiment.
[0028] Figure 1 shows an example of the main unit 2 with the left controller 3 and right controller 4 attached. As shown in Figure 1, the left controller 3 and right controller 4 are attached to the main unit 2 and integrated together. The main unit 2 is a device that performs various processes (e.g., game processing) in the game system 1. The main unit 2 is equipped with a display 12. The left controller 3 and right controller 4 are devices equipped with operation parts for user input.
[0029] Figure 2 shows an example of the left controller 3 and right controller 4 being removed from the main unit 2. As shown in Figures 1 and 2, the left controller 3 and right controller 4 are detachable from the main unit 2. In the following, the left controller 3 and right controller 4 will be collectively referred to as "controllers".
[0030] Figure 3 is a six-view drawing showing an example of the main unit 2. As shown in Figure 3, the main unit 2 includes a roughly plate-shaped housing 11. In this embodiment, the main surface of the housing 11 (in other words, the front surface, i.e., the surface on which the display 12 is provided) is roughly rectangular in shape.
[0031] The shape and size of the housing 11 are arbitrary. For example, the housing 11 may be portable. The main unit 2 alone, or the integrated unit in which the left controller 3 and right controller 4 are attached to the main unit 2, may be a portable device. The main unit 2 or the integrated unit may be a handheld device. The main unit 2 or the integrated unit may also be a portable device.
[0032] As shown in Figure 3, the main unit 2 includes a display 12 provided on the main surface of the housing 11. The display 12 displays images generated by the main unit 2. In this embodiment, the display 12 is a liquid crystal display (LCD). However, the display 12 may be any type of display device.
[0033] Furthermore, the main unit 2 is equipped with a touch panel 13 on the screen of the display 12. In this embodiment, the touch panel 13 is of a type that allows multi-touch input (for example, a capacitive touch panel). However, the touch panel 13 may be of any type, for example, a type that allows single-touch input (for example, a resistive touch panel).
[0034] The main unit 2 is equipped with a speaker (i.e., speaker 88 shown in Figure 6) inside the housing 11. As shown in Figure 3, speaker holes 11a and 11b are formed on the main surface of the housing 11. The sound output from speaker 88 is emitted from these speaker holes 11a and 11b, respectively.
[0035] Furthermore, the main unit 2 is equipped with a left terminal 17, which is a terminal for the main unit 2 to communicate with the left controller 3 via wired connection, and a right terminal 21, which is for the main unit 2 to communicate with the right controller 4 via wired connection.
[0036] As shown in Figure 3, the main unit 2 is equipped with a slot 23. The slot 23 is located on the upper side of the housing 11. The slot 23 has a shape that allows a predetermined type of storage medium to be inserted. The predetermined type of storage medium is, for example, a storage medium (e.g., a dedicated memory card) specifically for the game system 1 and similar information processing devices. The predetermined type of storage medium is used, for example, to store data used by the main unit 2 (e.g., application save data, etc.) and / or programs executed by the main unit 2 (e.g., application programs, etc.). The main unit 2 is also equipped with a power button 28.
[0037] The main unit 2 is equipped with a lower terminal 27. The lower terminal 27 is a terminal for the main unit 2 to communicate with the cradle. In this embodiment, the lower terminal 27 is a USB connector (more specifically, a female connector). When the integrated device or the main unit 2 alone is placed on the cradle, the game system 1 can display the images generated and output by the main unit 2 on a stationary monitor. In this embodiment, the cradle also has the function of charging the integrated device or the main unit 2 alone that is placed on it. The cradle also has the function of a hub device (specifically, a USB hub).
[0038] Figure 4 is a six-view drawing showing an example of the left controller 3. As shown in Figure 4, the left controller 3 includes a housing 31. In this embodiment, the housing 31 has a vertically elongated shape, that is, it is long in the vertical direction (i.e., in the y-axis direction as shown in Figures 1 and 4). The left controller 3 can also be held in a vertically elongated orientation when detached from the main device 2. The housing 31 is shaped and sized to be held with one hand, especially the left hand, when held in a vertically elongated orientation. The left controller 3 can also be held in a horizontally elongated orientation. When the left controller 3 is held in a horizontally elongated orientation, it may be held with both hands.
[0039] The left controller 3 is equipped with an analog stick 32. As shown in Figure 4, the analog stick 32 is provided on the main surface of the housing 31. The analog stick 32 can be used as a directional input unit that can input direction. The user can input direction (and magnitude according to the angle of tilt) by tilting the analog stick 32. In addition, the left controller 3 may be equipped with a directional pad or a slide stick that allows slide input instead of the analog stick as the directional input unit. Furthermore, in this embodiment, input by pressing the analog stick 32 is also possible.
[0040] The left controller 3 is equipped with various operation buttons. The left controller 3 has four operation buttons 33-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. In addition, the left controller 3 is equipped with a record button 37 and a minus button 47. The left controller 3 has a first L button 38 and a ZL button 39 on the upper left side of the side of the housing 31. Furthermore, the left controller 3 has a second L button 43 and a second R button 44 on the side of the housing 31 that is attached when mounted to the main unit 2. These operation buttons are used to give instructions according to various programs (e.g., OS programs and application programs) executed on the main unit 2.
[0041] Furthermore, the left controller 3 is equipped with a terminal 42 for wired communication between the left controller 3 and the main unit 2.
[0042] Figure 5 is a six-view drawing showing an example of the right controller 4. As shown in Figure 5, the right controller 4 includes a housing 51. In this embodiment, the housing 51 has a vertically elongated shape, that is, a shape that is long in the vertical direction. When the right controller 4 is detached from the main unit 2, it can also be held in a vertically elongated orientation. The housing 51 is shaped and sized to be held with one hand, especially the right hand, when held in a vertically elongated orientation. The right controller 4 can also be held in a horizontally elongated orientation. When the right controller 4 is held in a horizontally elongated orientation, it may be held with both hands.
[0043] The right controller 4, like the left controller 3, is equipped with an analog stick 52 as a directional input unit. In this embodiment, the analog stick 52 has the same configuration as the analog stick 32 of the left controller 3. Alternatively, the right controller 4 may be equipped with a directional pad or a slide stick capable of slide input instead of the analog stick. The right controller 4, like the left controller 3, is equipped with four operation buttons 53-56 (specifically, A button 53, B button 54, X button 55, and Y button 56) on the main surface of the housing 51. Furthermore, the right controller 4 is equipped with a + (plus) button 57 and a home button 58. The right controller 4 is also equipped with a first R button 60 and a ZR button 61 on the upper right side of the housing 51. The right controller 4, like the left controller 3, is also equipped with a second L button 65 and a second R button 66.
[0044] Furthermore, the right controller 4 is equipped with a terminal 64 for wired communication between the right controller 4 and the main unit 2.
[0045] Figure 6 is a block diagram showing an example of the internal configuration of the main unit 2. In addition to the configuration shown in Figure 3, the main unit 2 includes the components 81-91, 97, and 98 shown in Figure 6. Some of these components 81-91, 97, and 98 may be mounted on an electronic circuit board as electronic components and housed within the housing 11.
[0046] The main unit 2 includes a processor 81. The processor 81 is an information processing unit that performs various information processing operations performed in the main unit 2, and may consist of, for example, only a CPU (Central Processing Unit), or it may consist of an SoC (System-on-a-chip) that includes multiple functions such as CPU function and GPU (Graphics Processing Unit) function. The processor 81 performs various information processing operations by executing information processing programs (for example, game programs) stored in a storage unit (specifically, an internal storage medium such as flash memory 84, or an external storage medium installed in slot 23).
[0047] The main unit 2 includes, as an example of an internal storage medium built into itself, a flash memory 84 and a DRAM (Dynamic Random Access Memory) 85. The flash memory 84 and DRAM 85 are connected to the processor 81. The flash memory 84 is a memory mainly used to store various types of data (which may be programs) stored in the main unit 2. The DRAM 85 is a memory used to temporarily store various types of data used in information processing.
[0048] The main unit 2 is equipped with 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 slot 23 and reads and writes data to a predetermined type of storage medium (for example, a dedicated memory card) installed in slot 23, according to instructions from the processor 81.
[0049] The processor 81 performs the above-mentioned information processing by appropriately reading and writing data to and from the flash memory 84 and DRAM 85, as well as to each of the above-mentioned storage media.
[0050] The main unit 2 includes a network communication unit 82. The network communication unit 82 is connected to the processor 81. The network communication unit 82 communicates with external devices via a network (specifically, wirelessly). In this embodiment, the network communication unit 82 communicates with external devices by connecting to a wireless LAN using a method compliant with the Wi-Fi® standard as a first communication mode. The network communication unit 82 also communicates wirelessly with other main unit 2 of the same type using a predetermined communication method (for example, communication using a proprietary protocol or infrared communication) as a second communication mode. The wireless communication using the second communication mode is possible with other main unit 2 located within a closed local network area, and realizes a function that enables so-called "local communication" in which data is transmitted and received by communicating directly between multiple main unit 2.
[0051] The main unit 2 includes a controller communication unit 83. The controller communication unit 83 is connected to the processor 81. The controller communication unit 83 communicates wirelessly with the left controller 3 and / or the right controller 4. The communication method between the main unit 2 and the left controller 3 and the right controller 4 is arbitrary, but in this embodiment, the controller communication unit 83 communicates with the left controller 3 and with the right controller 4 in accordance with the Bluetooth® standard.
[0052] The processor 81 is connected to the left terminal 17, right terminal 21, and lower terminal 27 described above. When the processor 81 communicates with the left controller 3 via a wired connection, 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. When the processor 81 communicates with the right controller 4 via a wired connection, 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. When the processor 81 communicates with the cradle, it transmits data to the cradle via the lower terminal 27. Thus, in this embodiment, the main unit 2 can perform both wired and wireless communication with the left controller 3 and the right controller 4, respectively. Furthermore, when the left controller 3 and the right controller 4 are mounted on the main unit 2 as an integrated unit, or when the main unit 2 alone is mounted on the cradle, the main unit 2 can output data (e.g., image data and audio data) to a stationary monitor or the like via the cradle.
[0053] Here, the main unit 2 can communicate simultaneously (in other words, in parallel) with multiple left controllers 3. Furthermore, the main unit 2 can communicate simultaneously (in other words, in parallel) with multiple right controllers 4. Therefore, multiple users can simultaneously input to the main unit 2 using their respective sets of left controllers 3 and right controllers 4. For example, while the first user inputs to the main unit 2 using the first set of left controllers 3 and right controllers 4, the second user can input to the main unit 2 using the second set of left controllers 3 and right controllers 4.
[0054] The display 12 is also connected to the processor 81. The processor 81 displays images generated (for example, by performing the above information processing) and / or images acquired from an external source on the display 12.
[0055] The main unit 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 terminals 25, as well as to the processor 81. The codec circuit 87 is a circuit that controls the input and output of audio data to the speakers 88 and the audio input / output terminals 25.
[0056] The main unit 2 comprises a power control unit 97 and a battery 98. The power control unit 97 is connected to the battery 98 and the processor 81. Although not shown in the figures, the power control unit 97 is also connected to various parts of the main unit 2 (specifically, the parts that receive power from the battery 98, the left terminal 17, and the right terminal 21). Based on commands from the processor 81, the power control unit 97 controls the power supply from the battery 98 to the aforementioned parts.
[0057] The battery 98 is also 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 unit 2 via the lower terminal 27, the supplied power charges the battery 98.
[0058] Figure 7 is a block diagram showing an example of the internal configuration of the main unit 2, the left controller 3, and the right controller 4. Note that the details of the internal configuration of the main unit 2 are shown in Figure 6 and are therefore omitted in Figure 7.
[0059] The left controller 3 includes a communication control unit 101 that communicates with the main unit 2. As shown in Figure 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 by wired communication via the terminal 42 and by wireless communication without using the terminal 42. The communication control unit 101 controls the method of communication that the left controller 3 performs with 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 performs wireless communication with the main unit 2 (specifically, the controller communication unit 83). Wireless communication between the controller communication unit 83 and the communication control unit 101 is performed according to, for example, the Bluetooth® standard.
[0060] The left controller 3 also includes a memory 102, such as flash memory. The communication control unit 101 is composed of, for example, a microcontroller (also called a microprocessor) and performs various processes by executing firmware stored in the memory 102.
[0061] The left controller 3 is equipped with buttons 103 (specifically, buttons 33-39, 43, 44, and 47). The left controller 3 is also equipped with an analog stick (referred to as "stick" in Figure 7) 32. Each button 103 and the analog stick 32 repeatedly output information about the operations performed on them to the communication control unit 101 at appropriate intervals.
[0062] The communication control unit 101 acquires information about the input (specifically, information about the operation or detection results from the sensor) 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 that has been processed in a predetermined manner), to the main unit 2. The operation data is transmitted repeatedly at a rate of once at predetermined intervals. The interval at which information about the input is transmitted to the main unit 2 may or may not be the same for each input unit.
[0063] When the above operation data is transmitted to the main unit 2, the main unit 2 can obtain the input made to the left controller 3. In other words, the main unit 2 can determine the operation of each button 103 and the analog stick 32 based on the operation data.
[0064] The left controller 3 includes a power supply unit 108. In this embodiment, the power supply unit 108 includes a battery and a power control circuit. Although not shown, the power control circuit is connected to the battery and to each part of the left controller 3 (specifically, each part that receives power from the battery).
[0065] As shown in Figure 7, the right controller 4 includes a communication control unit 111 that communicates with the main unit 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 memory 102 of the left controller 3. Therefore, the communication control unit 111 can communicate with the main unit 2 both by wired communication via the terminal 64 and by wireless communication without the terminal 64 (specifically, communication according to the Bluetooth® standard), and controls the method of communication that the right controller 4 performs with the main unit 2.
[0066] The right controller 4 is equipped with the same inputs as the left controller 3. Specifically, it is equipped with buttons 113 and an analog stick 52. These inputs have the same functions and operate in the same way as the inputs of the left controller 3.
[0067] The right controller 4 is equipped with a power supply unit 118. The power supply unit 118 has the same functions and operates in the same manner as the power supply unit 108 of the left controller 3.
[0068] [2. Overview of processing in the game system] Next, an overview of the processes performed in the game system 1 will be described with reference to Figures 8 to 32. In this embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, player characters controlled by the player) are placed in a game space, which is a three-dimensional virtual space, and displays it on a display device. In this embodiment, the display device on which the game image is displayed may be the display 12 described above, or it may be a stationary monitor.
[0069] [2-1. Voxel] In this embodiment, the shape of some objects in the game space is defined by voxel data. Here, a voxel is a rectangular (more specifically, cubic) region arranged in a grid in the game space, and voxel data is data that indicates information about each voxel. Hereafter, objects whose shape is defined by voxel data will be called "voxel objects". In this embodiment, the game system 1 stores voxel data for a plurality of voxels set in the game space as data for generating voxel objects in the game space.
[0070] Figure 8 shows an example of a terrain object that is a voxel object. As shown in Figure 8, in this embodiment, terrain objects representing the ground and other terrain are defined by voxel data (i.e., they are voxel objects). Each cube shown in Figure 8 represents a terrain object. Note that in Figure 8, the edges of the terrain objects are shown with thick lines, but these thick lines are added for the purpose of making the drawing easier to read, and in reality, the edges of the terrain objects do not need to be displayed with thick lines.
[0071] The terrain object shown in Figure 8 was generated using a rule such as, "If the parameter included in the voxel data set for a voxel is greater than a predetermined value, a cube is placed at the voxel's location; if it is less than or equal to the predetermined value, nothing is placed at the voxel's location." The terrain object shown in Figure 8 is provided to illustrate the relationship between voxels and voxel objects in an easy-to-understand manner. In this embodiment, voxel objects are actually generated using rules (based on voxel data) that result in complex shapes, such as the terrain object shown in Figure 13, which will be described later. The rules for determining the shape of voxel objects based on voxel data are arbitrary. In other embodiments, the game system 1 may generate voxel objects as shown in Figure 8 or as shown in Figure 13 based on object data.
[0072] For voxel objects, the shape can be changed by modifying the voxel data of each voxel. Figures 9 and 10 show examples of what the terrain object shown in Figure 8 looks like before and after a portion of it is deleted. That is, when the shaded portion of the terrain object shown in Figure 9 is destroyed, the terrain object changes to the shape shown in Figure 10. At this time, the game system 1 can easily delete the terrain object by rewriting the voxel data of the shaded portion voxel to indicate that the terrain object does not exist. Furthermore, when adding a terrain object, the game system 1 can easily change the shape of the terrain object by modifying the voxel data of each voxel, just as when deleting a terrain object.
[0073] In this way, Game System 1 can freely change the shape of voxel objects by rewriting the voxel data. For example, if a terrain object is destroyed in a game for some reason (for example, when a player character hits the terrain object) and the shape of that terrain object changes as a result, Game System 1 can freely change the shape of the terrain object by changing the voxel data used to generate the terrain object, rather than directly changing the data that represents the external shape of the terrain object (i.e., the mesh described later).
[0074] In this embodiment, voxels are defined throughout the entire game space (i.e., the voxel space in which voxels are defined corresponds to the entire game space). However, the voxel space does not need to be defined throughout the entire game space; it may be defined in a part of the game space. When the voxel space is defined in a part of the game space, the shape of the voxel object is defined by the voxel data relating to the voxels in that voxel space, and the position of the voxel object in the game space is defined by the position of that voxel space in the game space. Furthermore, the game space may have a main voxel space defined throughout the entire game space and a sub-voxel space defined in a part of the game space. In this case, the game system 1 stores voxel data for each voxel space.
[0075] Figure 11 shows an example of voxel data. For each voxel defined in the game space, the voxel data includes density data, a first material ID, a second material ID, material mixing ratio data, and state data. In this embodiment, this data is set for each individual voxel.
[0076] The density data indicates the density, which is an index used to define the shape of the voxel object based on the voxel in question (specifically, the shape defined by the mesh described later). As will be explained in detail later, the position and shape of the surface of the voxel object (i.e., the mesh described later) are determined based on the density described above.
[0077] In this embodiment, density can take the range of an integer value from a lower limit (e.g., 0) to an upper limit (e.g., 255). In this embodiment, the game system 1 determines the surface shape of a voxel object based on density, such that a higher density value for a voxel tends to result in a larger proportion of the volume occupied by the area within the voxel object within that voxel, and a lower density value tends to result in a smaller proportion. Thus, density is an indicator that affects the proportion of the volume occupied by the area within the voxel object within that voxel. Density can also be said to be an indicator that shows the degree to which the space of the voxel is virtually occupied by its contents (i.e., the virtual contents of the voxel object). For example, if the density is 0, the inside of the voxel is empty; if the density is 255, the entire inside of the voxel is the contents of the voxel object; and if the density is a value between 0 and 255, the contents of the voxel object can occupy the inside of the voxel in proportion to the value. Based on the above density, the shape of the mesh, i.e., the surface shape of the voxel object, can be determined. A mesh can be described as the surface of the portion of a voxel that contains content, or as the boundary between the portion of a voxel that contains content and the portion that does not. Furthermore, the volume occupied by a region within a voxel object generated based on the above density does not need to be exactly equal to the volume indicated by the density. For example, the volume of a voxel object generated using a method like that shown in Figure 8 may differ from that generated using a method like that shown in Figure 13, even if both methods are based on the same density.
[0078] In other embodiments, density may indicate either a state in which the entire region within the voxel is occupied by the volume of the region within the voxel object, or a state in which the region within the voxel is not included by the volume occupied by the region within the voxel object. For example, density data may only take the values of 0 or 1. In other embodiments, density may be an index indicating that the degree to which the space of the voxel is virtually occupied by its contents decreases as the density value increases.
[0079] The first material ID and the second material ID are information indicating the material (in other words, substance) of the voxel. In this embodiment, a voxel may be assigned a material such as sand, rock, or soil. In the game system 1, multiple types of materials are available that can be assigned to a voxel (see the material data shown in Figure 12). In this embodiment, up to two materials from the multiple types of materials available can be assigned to a single voxel. The first material ID is an ID indicating the first material assigned to the voxel, and the second material ID is an ID indicating the second material assigned to the voxel. As will be described in detail later, the material of a voxel object (i.e., the material assigned to the polygon of a voxel object) is determined based on the material assigned to the voxel.
[0080] As described above, in this embodiment, the voxel data includes an ID indicating the material, but in other embodiments, the voxel data may be a data structure that directly includes data indicating the content of the material (i.e., information such as the name, properties, and drawing settings, which will be described later).
[0081] The material mixing ratio data is an example of data that shows the ratio of each material in a given voxel. In this embodiment, since up to two material IDs can be set for one voxel, the material mixing ratio data that shows the ratio of one of the materials, the material indicated by the first material ID and the material indicated by the second material ID, can also represent the ratio of the other material. In this embodiment, the material mixing ratio is a value between 0 and 1 that indicates the proportion of the second material to the whole consisting of the first and second materials. For example, if the material mixing ratio set for a voxel is 0.4, it means that in that voxel, the first material and the second material are composed in a ratio of 0.6:0.4. As will be described in detail later, the appearance and properties of a voxel object are determined based on the material. The material mixing ratio is used to determine the appearance and properties of a voxel object. In other embodiments, the material mixing ratio may be a value that indicates the proportion of the first material. Also, the ratio of materials within a voxel may be represented by separate values that indicate the proportion of each material. In particular, in other embodiments where it is possible to set not just two types of materials but three or more, the ratio within the material voxels will be represented as multiple values that indicate the proportion of each material.
[0082] In this embodiment, it is not necessary for a voxel to have two types of materials assigned to it; it may have only one type of material assigned. For example, if a voxel has only one type of material assigned to it, the first material ID will indicate that material, and the material mixing ratio will be set to 0.
[0083] The status data indicates the state set for the voxel. The specific content and number of types of status data are arbitrary. In this embodiment, the status data includes data indicating the amount of damage set for the voxel. In other embodiments, the status data may include, for example, data indicating whether (and to what extent) the voxel is wet.
[0084] As described above, in this embodiment, the voxel data includes a material ID, so the game system 1 stores material data that defines the content of the material indicated by the material ID. Figure 12 is a diagram showing an example of material data. As shown in Figure 12, in the material data of this embodiment, each material is associated with a material ID and information on the name, properties, and rendering settings set for that material.
[0085] The names included in the material data are the names assigned to the material in question (e.g., soil, sand, grass, etc.). As will be explained in more detail later, the material names of voxel objects may be displayed during gameplay (see Figure 25). To enable this display, the material data includes information about the material's name.
[0086] The properties included in material data are the properties set for that material. Material properties are the properties that the voxel object to which the material is applied possesses in the game. The specific content and number of types of material properties are arbitrary. For example, at least one of the following pieces of information may be set as material properties. Hardness • weight • Slippery • Damage settings when player characters come into contact ·temperature • Can other objects be attached to a voxel object? • The amount of health restored to the player character when the player character destroys or acquires a voxel object. • The amount of in-game currency a player character acquires when they destroy or acquire a voxel object. In other embodiments, information different from that described above may be set as information indicating the properties of the material.
[0087] In this embodiment, the material data includes an ID indicating the properties of the material as information that identifies those properties (see Figure 12). Although not shown, the game system 1 stores property information for each available property, where the content of that property (for example, the weight and slipperiness values mentioned above) is associated with the property ID. By referring to the above property information, the game system 1 can identify the specific content of the properties set for the material.
[0088] The rendering settings included in the material data are information indicating rendering-related settings, such as the texture used to render the voxel object to which the material is set. In this embodiment, the material data includes the ID of the texture used to render the voxel object to which the material is set as rendering setting information (see Figure 12). Although not shown, the game system 1 stores texture information for each prepared texture, associating the texture ID with the texture indicated by that texture ID. By referring to the above texture information, the game system 1 can identify the specific content of the texture set for the material. In other embodiments, in addition to texture information, arbitrary information related to shading settings may be set as rendering setting information. For example, reflectivity and information related to normals may be set.
[0089] Furthermore, the material data may include other data besides the data shown in Figure 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 that are output when the player character walks on the voxel object based on the voxel.
[0090] The material data may be in any format that can identify the properties and / or rendering settings of the material. For example, in other embodiments, the material data may have a data structure that directly indicates the properties and / or rendering settings of the material, instead of a data structure that includes a material ID and a texture ID.
[0091] [2-2. Updating Voxel Data] During gameplay, voxel objects are deformed when the aforementioned voxel data is updated. In this embodiment, when a game event that updates a voxel object (hereinafter referred to as an "update event") occurs, the game system 1 updates the voxel data. The specific content of the update event is arbitrary. An update event may be, for example, a character appearing in the game performing an action that deforms a voxel object (for example, a player character punching a voxel object), or an event that deforms a voxel object may occur (for example, an object thrown by a character making contact with a voxel object, or a bomb exploding).
[0092] Figure 13 shows an example of the game space when an update event occurs. The situation shown in Figure 13 is when a player character 201 performs a punch action on a terrain object 202, which is a voxel object. As will be explained in detail later, in the example shown in Figure 13, the voxel data is updated so that the terrain object 202 around the location where the player character 201's punch action hits is erased. This represents the destruction of the terrain object 202 by the player character 201's punch action.
[0093] In this embodiment, when an update event occurs, the game system 1 sets an update range (update range 203 in the example shown in Figure 13) in the game space for updating the voxel object. The position, shape, and size of the update range are arbitrary. The position of the update range may be determined, for example, based on the position where the object related to the update event that occurred (e.g., the player character that made the punch) and the voxel object came into contact. In the example shown in Figure 13, the position of the update range 203 may be determined based on the position where the punch by the player character 201 hit. For example, the center position of the update range 203 may be the position where it hit, or a predetermined distance forward from the position where it hit. The shape and size of the update range may be predetermined to be a shape corresponding to the type of update event. For example, when an update event occurs due to a punch by the player character 201, the shape and size of the update range may be determined as a sphere of a predetermined size, as shown in Figure 13. The size of the update range may also be determined according to a value indicating the degree of influence of the update event that occurred (e.g., the strength of the punch or the size of the explosion).
[0094] Game system 1 changes the density of voxels corresponding to the set update range. Voxels corresponding to the update range are, for example, voxels within the update range or voxels that overlap with the update range. As a result of the density change, the mesh of the voxel object is changed by the process described later, thereby changing the shape of the voxel object (visual shape and shape used for contact detection). In other embodiments, in addition to changing the density of voxels included in the update range, game system 1 may also change the material of the voxel (i.e., the first material, the second material, and the material mixing ratio) or change the state of the voxel.
[0095] 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 that indicates the update range set in the game space and makes the above determination based on the value of the SDF. The SDF represents the distance from a defined shape to any given position with a sign. Figure 14 shows an example of an update range. In the example shown in Figure 14, a spherical update range is set in the game space. For example, in the example shown in Figure 14, the SDF is set such that for positions inside the shape represented by the SDF in the game space, the SDF value is negative, and for positions outside the shape represented by the SDF, the SDF value is positive. In this example, it is possible to determine whether or not a voxel is included in the update range based on whether the SDF value is positive or negative. Furthermore, by using the signed distance value, it is possible to perform not only simple inside / outside determination but also processing such as correction and interpolation.
[0096] The above example describes a change applied to a voxel object where the voxel object within the update range is deformed to appear as if it were deleted. However, the changes that can be applied to a voxel object using the update range are not limited to this. For example, a change may be applied to a voxel object where a new voxel object is added within the update range (i.e., the volume occupied by the area within the voxel object increases by the amount of the update range) (see Figure 26 below). Alternatively, a change may be applied to a voxel object where only the material of the voxels within the update range changes, without changing the voxel density. Furthermore, a combination of changes to voxel density and material may be applied.
[0097] [2-3. Calculation of Vertices] When the voxel density is updated as described above, the game system 1 sets vertices based on the updated voxel data. These vertices are those that can become the vertices of the mesh of the voxel object. As will be described in detail later, in this embodiment, the above vertices are simplified, and the simplified vertices become the vertices of the mesh of the voxel object.
[0098] Figure 15 shows an example of how vertices are set. In Figures 15 to 17 and 19 to 21, which will be explained below, voxels, vertices, meshes, etc. are represented in 2D for the purpose of making the diagrams easier to see and the explanations easier to understand. However, in reality, vertices and meshes are set in 3D space based on voxels in 3D space. In this embodiment, the game system 1 uses a method to set vertices at coordinates based on the positions and densities of multiple surrounding voxels in areas where voxels with a set density indicating existence (i.e., a density greater than or equal to the reference value described later) and voxels with a set density indicating non-existence (i.e., a density less than the reference value described later) are adjacent. The details of this method will be explained below.
[0099] As described above, in this embodiment, the density set for a voxel is set in the range of 0 to 255. A voxel with a density of 0 represents being completely in the air, and a voxel with a density of 255 represents being completely filled. Densities between 0 and 255 are treated interpolatively and used to determine vertices. In this embodiment, voxels with a density greater than or equal to a reference value are virtually treated as being inside the object, and voxels with a density less than the reference value are virtually treated as being outside the object. Alternatively, voxels with a density greater than or equal to a reference value are virtually treated as existing voxels, and voxels with a density less than the reference value are virtually treated as non-existent voxels. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., the reference value = 1); the reference value can be, for example, 128. In the example shown in Figure 15, the density of voxel 211 and the other outer voxels is set to 0, the density of voxel 212 is set to 100 (below the reference value), and the densities of voxels 213 and 214 are set to 150 and 210 (above the reference value). In this embodiment, the game system 1 generates vertices between voxels with a density above the reference value and voxels with a density below the reference value. Specifically, for each region spanning eight adjacent voxels (four in the diagram) (the region enclosed by dotted lines in the diagram), a decision is made as to whether or not to generate a vertex. In other words, vertices are generated in regions that span both voxels with a density above the reference value and voxels with a density below the reference value. The coordinates of the vertices are determined by comparing the densities of adjacent voxels along the X, Y, and Z axes and interpolating based on the density difference. As will be described in detail later, by setting intersection information that defines the position and orientation of the straight lines connecting the vertices, the coordinates of the vertices can be further calculated based on the intersection information. Furthermore, intersection information may be stored in advance for at least some of the voxels, or if it is not stored, the intersection information may be calculated based on the density of adjacent voxels. In Figure 15, since the density of voxel 212 is below the standard value, voxel 212 is treated as outside the object when determining the presence or absence of a vertex, but the density value of voxel 212 itself is used in calculating the coordinates of the generated vertices.If the baseline value is set lower than the density of voxel 212, the result will be an increase in the number of vertices on the upper right and upper left sides of voxel 212 in Figure 15.
[0100] By setting vertices as described above, when generating a mesh connecting each set vertex (or each vertex after the simplification process described later has been applied to each set vertex), it is possible to generate a shape with a volume that reflects the density of each voxel to some extent. However, depending on the relationship with adjacent voxels, it is possible that voxels with a density of 0 may include some areas within the object, or voxels with a density of 255 may include some areas outside the object. Also, in this embodiment, voxels below a certain threshold are treated as being outside the object, so the volume is smaller because there are fewer vertices compared to when they are treated as being inside the object. Thus, it is not necessary to calculate the polygon mesh so that the volume strictly corresponds to the density value.
[0101] Intersection information may be used to calculate vertices. Intersection information indicates the three-dimensional position and direction in the space where the voxel is set. As will be explained in detail later, when intersection information is set, the vertices are set so that, ideally, the faces of the polygon formed by multiple vertices include the position indicated by the intersection information and are perpendicular to the direction indicated by the intersection information. The "faces of the polygon formed by multiple vertices" mentioned above are the faces that become the mesh faces of the voxel object when the simplification described later is not performed on those vertices. By setting the above intersection information, the shape of the mesh of the voxel object can be defined in more detail. For convenience, below, the coordinates of the position indicated by the intersection information will be called "intersection coordinates," and the direction indicated by the intersection information will be called "normal direction." However, as will be explained later, the faces formed by each determined vertex may not include the position of the intersection coordinates, or may not be perpendicular to the normal direction.
[0102] Figure 16 shows an example of how vertices are determined when intersection information is set. In Figure 16, an example is shown in which intersection information is set for voxel 213 shown in Figure 15. As shown in Figure 16, the intersection coordinates indicated by the intersection information are set on a line connecting voxels, more specifically, on a line connecting the center of a voxel and the center of an adjacent voxel. The normal direction indicated by the intersection information indicates the direction at the position of the intersection coordinates. As shown in Figure 16, the intersection coordinates and normal direction indicated by the intersection information can be represented as a vector that starts at the position of the intersection coordinates and points in the normal direction.
[0103] Furthermore, intersection information does not need to be set for all voxels; it may be set for some of the voxels in the voxel space. For example, intersection information is set for voxels that have vertices around them. More specifically, if there is a voxel with a density above the aforementioned threshold value and an adjacent voxel with a density below the threshold value, intersection information is set for one of these voxels. In this case, the intersection coordinates are set on the line between the center of the voxel with a density above the threshold value and the center of the adjacent voxel with a density below the threshold value.
[0104] When intersection information is set, ideally, the vertices are set such that the face of the polygon formed by multiple vertices includes the position of the intersection coordinates and is perpendicular to the normal direction. In the example shown in Figure 16, two pieces of intersection information, represented as vectors 215 and 216, are set for voxel 213. In this case, vertex 219 is set at a position on the face 217 defined by the first piece of intersection information represented as vector 215, and on the face 218 defined by the second piece of intersection information represented as vector 216. Note that "the face defined by the intersection information" refers to a face that passes through the position of the intersection coordinates indicated by the intersection information and is perpendicular to the normal direction indicated by the intersection information. Note that in the example shown in Figure 16, which is two-dimensional, what is defined by the intersection information is represented as a line, but since voxel space is three-dimensional, in reality, a face is defined by the intersection information.
[0105] Figure 17 shows an example of a method for determining vertices when different intersection information is set than that shown in Figure 16. In the example shown in Figure 17, for voxel 213, two pieces of intersection information are set, represented by two vectors 215' and 216', which are different from the vectors 215 and 216 shown in Figure 16. In this case, vertex 219' is set at a position on the face 217' defined by the first intersection information represented as vector 215', and on the face 218' defined by the second intersection information represented as vector 216'. The vertex 219' shown in Figure 17 is set at a position further from the center of voxel 213 than vertex 219 shown in Figure 16, and the angle of vertex 219' is smaller than the angle of vertex 219. In the example shown in Figure 17, the mesh of the voxel object has a sharper shape at the position of vertex 219' than in the example shown in Figure 16.
[0106] As shown in Figures 16 and 17, by setting intersection information, it is possible to generate meshes for voxel objects that have different shapes even if the density set for the voxels is the same. However, with the method of determining vertices based on density without using intersection information, it can be difficult to define the fine shape of the mesh as intended by the developer. With the above method, for example, it is difficult to make the corners of the mesh of a voxel object sharp, or to make the corners of the mesh of a rectangular voxel object such that three faces touch perpendicularly to each other. In contrast, by setting intersection information and using that information to determine vertices, it becomes easier to define the shape of the mesh in more detail, making it easier to achieve the intended shape.
[0107] Furthermore, when multiple intersection point information is set, it may be impossible to set each vertex to satisfy all the conditions specified by each intersection point information. In other words, it may be impossible to set each vertex such that the faces of the polygon formed by multiple vertices include the positions of each intersection point coordinate indicated by each intersection point information and are perpendicular to each normal direction indicated by each intersection point information. Therefore, in this embodiment, the game system 1 sets the vertices so as to minimize the error between the faces and vertices defined by the intersection point information. As a result, the faces of the mesh generated based on the set vertices will be arranged so that they face the normal direction at the intersection point coordinate positions, or so as to minimize the error from such arrangements. The specific method for determining the vertices is arbitrary. For example, the game system 1 sets the vertices so as to minimize the sum of the squares of the distances between the faces and vertices defined by the intersection point information. The vertices may also be set within a predetermined range based on the position of the voxel in which the intersection point information is set, and in this case, the vertices may be set at the position that minimizes the error within that predetermined range. The predetermined range mentioned above is, for example, the range of the vertex division region described later, which includes the center of the voxel where intersection information is set (in the example shown in Figure 16, the range of the square indicated by the dashed line).
[0108] When vertices are determined using intersection information, game system 1 may determine vertices for voxels for which intersection information is not set based on intersection coordinates and normal directions set based on the density set for the voxel. In other words, game system 1 may set intersection coordinates and normal directions based on density, similar to the intersection coordinates and normal directions indicated by the intersection information, and use the set intersection coordinates and normal directions to determine vertices in the same way as determining vertices based on intersection information set for the voxel. Note that the method of setting intersection coordinates and normal directions based on density is arbitrary. Intersection coordinates and normal directions may be calculated based on the density of two voxels whose centers are located at both ends of the line on which the intersection coordinates are set. For example, game system 1 may calculate the density value at each position on the line connecting the centers of the voxels by interpolating the densities of the two voxels, and set the position that is the midpoint of the range of possible density values (e.g., 127.5) as the position of the intersection coordinates. Furthermore, for example, the game system 1 may calculate the density gradient based on the density set for the voxel and the surrounding voxels, and use this gradient as the normal direction. In this embodiment, both the intersection coordinates and the normal direction were calculated based on the density set for the voxel, but in other embodiments, the game system 1 may calculate only the intersection coordinates based on the density, and determine the vertices using the calculated intersection coordinates and intersection information.
[0109] Game system 1 stores intersection information data that indicates the intersection information to be set. Figure 18 shows an example of intersection information data. In this embodiment, the intersection information data is data that indicates the intersection information to be set for each voxel. The intersection information is associated with one of the voxels in the game space. For example, information indicating the position in a grid set in the game space with the same position and size as the grid made up of voxels (e.g., coordinate information) may be associated with the intersection information, thereby associating the intersection information with one voxel in the game space. As described above, intersection information may be set for some voxels, and there may be voxels for which no intersection information is set.
[0110] In this embodiment, a single voxel is associated with intersection information set in three directions from that voxel (see Figure 18). Specifically, when the axes extending in the three directions in which voxels are aligned in the game space are defined as the x, y, and z axes, the voxel is associated with a first intersection information set on a line extending in the positive x-axis direction from the center of the voxel, a second intersection information set on a line extending in the positive y-axis direction, and a third intersection information set on a line extending in the positive z-axis direction. Note that a single voxel does not necessarily need to be associated with all three pieces of intersection information; it may be associated with only one or two pieces of intersection information. Furthermore, one piece of intersection information includes information on the intersection coordinates and the normal direction. Note that the intersection information may be in any format. For example, the intersection information may include information showing the three-dimensional coordinates representing the intersection coordinates and information showing three vectors when the normal direction is expressed as components related to the three predetermined axis directions. Furthermore, in order to further reduce the amount of data, the information indicating the normal direction may consist of two vectors related to two of the three axis directions mentioned above, and a value indicating the direction (i.e., positive or negative) related to the remaining axis direction.
[0111] As described above, in this embodiment, the game system 1 stores intersection information data separately from the voxel data. In other embodiments, the intersection information data may be stored in a form included in the voxel data. For example, the voxel data may be in a form that includes intersection information data indicating three intersection points associated with the voxel.
[0112] Game System 1 determines the material for each vertex set as described above. The material of a vertex is determined based on the material of the voxels surrounding that vertex. The voxels surrounding a vertex are, for example, the voxels used to determine whether or not to generate that vertex (i.e., voxels that overlap with the "region spanning voxels" described above). The method for determining the material of a vertex is arbitrary. For example, in this embodiment, Game System 1 selects up to a predetermined number of materials (for example, up to two types) from the materials set for the surrounding voxels and determines them as the material of the vertex.
[0113] [2-4. Simplification of Vertices] In this embodiment, the game system 1 simplifies each vertex calculated as described above. Specifically, the game system 1 reduces the number of vertices by replacing some of the vertices calculated as described above with a single vertex. As will be described in detail later, the coordinates (i.e., position) and material of the replaced vertices are set based on the multiple vertices before replacement. This simplification reduces the number of vertices and polygons that make up the mesh of the voxel object, thereby reducing the amount of memory used for processing and reducing the processing load.
[0114] In this embodiment, the game system 1 simplifies by representing each vertex using SVO (Sparse Voxel Octree). Figure 19 shows an example of vertex simplification. In Figure 19, one square shown by a solid line in Figure 19(a) represents one vertex partition region. Here, a vertex partition region is a square region with the center position of the voxel as its vertex (in actual 3D space, a vertex partition region is a cube or cuboid), and is the region whose edges are the dashed lines in Figures 15 to 17 described above. Also, in Figure 19, a vertex partition region with the letter "v" inside indicates a vertex partition region where a vertex is set.
[0115] In this embodiment, the game system 1 determines whether simplification is possible for vertices within a predetermined number of adjacent vertex division regions (four in Figure 19, eight in actual 3D space). If it is determined that simplification is possible, simplification is performed for the vertices within that predetermined number of vertex division regions.
[0116] Figure 19(a) shows the state before simplification. In the example shown in Figure 19, it is assumed that the vertex division regions within the area enclosed by the dotted line are determined to be simplifiable. At this time, the game system 1 performs simplification so that the vertices in each of the predetermined number of vertex division regions determined to be simplifiable are replaced with a single vertex (see Figure 19(b)). As a result, the vertices in the predetermined number of vertex division regions are simplified to a single vertex.
[0117] In this embodiment, the game system 1 performs simplification in multiple stages. The number of stages is arbitrary, but Figure 19 illustrates and explains up to the second stage. Figure 19(b) shows the state after the first stage of simplification, and Figure 19(c) shows the state after the second stage of simplification. In the second stage of simplification, it is determined whether or not simplification is possible for the vertices that were created by the first stage of simplification. In the example shown in Figure 19, it is determined that simplification is possible for the vertex division region enclosed by the dotted line in Figure 19(b), and as a result, the vertices in that vertex division region are simplified, resulting in the state shown in Figure 19(c). Note that the criteria for determining whether or not simplification is possible in the first stage and the criteria for determining whether or not simplification is possible in the second stage may be the same or different.
[0118] The specific method for determining whether simplification is possible is arbitrary. In this embodiment, the conditions used for the above determination are a condition relating to the shape of the voxel object and a condition relating to the material. In this embodiment, if both the condition relating to the shape of the voxel object and the condition relating to the material are satisfied, it is determined that simplification is possible, and if at least one of the conditions relating to the shape of the voxel object and the condition relating to the material is not satisfied, it is determined that simplification is not possible.
[0119] The shape-related condition is, for example, that the shape of each vertex before simplification does not change significantly from the shape of each vertex after simplification. For example, whether or not the shape of each vertex changes significantly before and after simplification can be determined by calculating an index that shows the error between the mesh before simplification and the mesh after simplification, and determining whether or not this index is below a predetermined tolerance value. Also, for example, if the shape of each vertex before simplification is hollow, but the shape of each vertex after simplification is not hollow (i.e., the information that it is hollow is lost due to simplification), the shape-related condition is determined not to be met. Whether or not the above case occurs can be determined, for example, based on the density of each voxel corresponding to the vertex division region to be judged. Also, for example, if the shape of each vertex before simplification is a shape that can only be represented by two or more vertices and cannot be represented by one vertex, the shape-related condition is determined not to be met. The same conditions as in conventional methods using SVO may be used for the shape-related conditions of the voxel object.
[0120] Furthermore, as a condition regarding materials, in this embodiment, the condition is the number of material types set for each vertex within the predetermined number of vertex division areas that are subject to simplification. Figure 20 shows an example of a material condition. Figure 20(a) shows the case where the materials of vertices 221 to 224 are (grass), (grass), (grass and soil), and (grass and soil), respectively, and Figure 20(b) shows the case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and soil), and (grass and soil), respectively. In this embodiment, the material condition is that the total number of material types set for each of the vertices subject to simplification is less than or equal to a predetermined number. For example, the material condition is that it is less than or equal to 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 Figure 20(a), the total number of material types set for each of the vertices 221 to 224 subject to simplification is 2 types, grass and soil, so the material condition is satisfied. In this case, provided that the above-mentioned conditions regarding the shape of the object are met, each vertex 221-224 is determined to be simplifiable. On the other hand, in the case of Figure 20(b), the total number of material types that can be set for each vertex 221-224 that is subject to simplification is three types: grass, soil, and sand, so the material conditions are not met. In this case, regardless of whether the above-mentioned conditions regarding the shape of the object are met or not, each vertex 221-224 is determined to be non-simplifiable.
[0121] In addition, in Game System 1, even if materials are strictly classified as different types, multiple types of materials may be provided that have the same set properties but different appearances. Some of these multiple types of materials may be treated as the same type when determining the conditions related to materials. For example, regarding soil materials, there may be multiple types of soil materials that have the same properties but similar appearances (e.g., texture color and pattern). In such cases, Game System 1 may treat these multiple types of soil materials as the same type when determining the conditions related to materials.
[0122] In this embodiment, similar to voxels, up to two types of materials can be set for vertices. However, in this embodiment, if the total number of material types set for each vertex subject to simplification is three or more, simplification will not be performed. That is, if the total number of material types exceeds the number of materials that can be set for a single vertex, simplification will not be performed. Therefore, even if the number of vertices is reduced through simplification, the material information set for the vertices will not be lost due to the simplification, and the material information can be maintained.
[0123] In this embodiment, the material of the simplified vertex is determined based on the material of each vertex before simplification. Specifically, the game system 1 sets one or two types of materials set for the vertex before simplification to the first and second materials of the simplified vertex. This allows the material information to be maintained. The ratio of the simplified materials is determined based on the ratio of the materials of each vertex before simplification.
[0124] [2-5. Mesh Generation] In this embodiment, a mesh of a voxel object is generated based on each vertex that has been simplified as described above. Figure 21 shows an example of a mesh generated based on each vertex. The squares shown in Figure 21 represent the vertex division regions described above, or vertex division regions that have been combined into one through simplification. As shown in Figure 21, the game system 1 generates a mesh in which the vertex division regions are polygons whose sides are straight lines connecting adjacent vertices. Each polygon that makes up the mesh is either a triangle or a quadrilateral.
[0125] In this embodiment, the game system 1 generates two types of meshes: a display mesh and a collision detection mesh. The display mesh is used for displaying voxel objects. The collision detection mesh is used for collision detection of voxel objects. As will be described in detail later, by using the above two types of meshes, the game system 1 can process using meshes suitable for displaying voxel objects and collision detection, respectively.
[0126] In this embodiment, the game system 1 generates the display mesh and the judgment mesh based on the SVO data described above (i.e., based on each simplified vertex). This allows for improved processing efficiency by sharing the vertex data used to generate the two types of meshes. In other embodiments, the game system 1 may not need to simplify the vertices and may generate the display mesh and / or judgment mesh based on the unsimplified vertices.
[0127] In this embodiment, the game system 1 generates a judgment mesh with a simpler shape than the display mesh. Specifically, the game system 1 ensures that the number of vertices in the judgment mesh is less than the number of vertices in the display mesh. 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, but also includes data used to determine whether simplification is possible or not. This data includes, for example, data of vertices calculated as candidates for the simplified vertices (referred to as provisional vertices), and the above-mentioned index data that indicates the error between the vertices before simplification and the provisional vertices. For example, the game system 1 may use vertices from the provisional vertices whose index is less than or equal to a predetermined threshold (this threshold shall be greater than the above-mentioned tolerance value) for generating the judgment mesh. This makes it possible to reduce the number of vertices in the judgment mesh to less than the number of vertices in the display mesh. By reducing the number of vertices in the judgment mesh to less than the number of vertices in the display mesh, the processing load due to collision detection can be reduced. Furthermore, since the number of vertices in the display mesh is not excessively reduced, the appearance of voxel objects can be represented in detail.
[0128] In other embodiments, the display mesh and the judgment mesh may be generated based on the same data or on different data. Furthermore, the display mesh and the judgment mesh may have the same shape (however, even in this case, the materials set for them may be different). Also, the number of vertices in the judgment mesh may be the same as the number of vertices in the display mesh, or it may be greater than the number of vertices in the display mesh.
[0129] Furthermore, the game system 1 determines a material for each polygon of the mesh. The material of a polygon is determined based on the material set for each vertex of that polygon. The specific method for determining the material of a polygon is arbitrary. In this embodiment, for polygons of the display mesh, the game system 1 selects up to two materials from the materials set for each vertex of the polygon and determines them as the material of the polygon. For polygons of the display mesh, up to two of the above materials are set for each vertex of the polygon, and the polygon is drawn based on the material set for each vertex. Furthermore, for polygons of the judgment mesh, the game system 1 selects one material from the materials set for each vertex of the polygon and determines it as the material of the polygon.
[0130] As described above, in this embodiment, a display mesh and a detection mesh may be set for a single voxel object. However, depending on the game situation, it is not necessary for both a display mesh and a detection mesh to be set for a single voxel object simultaneously (for example, it is not necessary for both to be set in the processing of one frame). For example, the detection mesh may be generated in the range where collision detection is performed within the game space, and not generated in the range where collision detection is not performed. As an example, the game system 1 may generate a detection mesh for voxel objects within a predetermined range centered on the player character, and not generate a detection mesh for voxel objects outside that predetermined range, but only generate a display mesh.
[0131] Furthermore, the game system 1 may store data related to the generated mesh in memory for display meshes, and in frames after the mesh has been generated, use this data without re-executing the mesh generation process, except for the updated range. This reduces the processing load required to generate display meshes. Also, for collision detection meshes, the data related to the generated mesh may not be stored in memory, and meshes may be generated sequentially as needed (for example, whenever collision detection is required). This saves memory space used for mesh generation.
[0132] The above describes a method for generating each mesh (i.e., the display mesh and the judgment mesh) based on the modified voxel data when the voxel data is changed from its initial state. This method can also be used, for example, at the start of a game when generating each mesh based on the initial voxel data. However, the meshes based on the initial voxel data do not necessarily need to be generated based on the initial voxel data at the start of the game; they may be prepared in advance before the game starts.
[0133] [2-6. Processing using meshes] Next, we will explain an example of processing using a mesh generated as described above for voxel objects. In the following, we will assume that terrain objects such as the ground and walls are voxel objects, and we will explain an example where an action occurs in the game as a result of collision detection when the player character performs an action.
[0134] Figure 22 is an example of a game image showing a player character moving over a terrain object. In the example shown in Figure 22, the material of polygons in a certain area 251 of the terrain object's detection mesh is set to "lava". The material of polygons other than area 251 of the terrain object's detection mesh is set to "rock". In the example shown in Figure 22, the game system 1 performs collision detection between the terrain object and the player character 201 using the detection mesh. That is, it performs collision detection to determine whether the terrain object's detection mesh and the detection area set for the player character (for example, an area of a predetermined shape set based on the player character's position) come into contact. If a collision is detected between the polygon with the material "lava" and the player character 201, the system performs a process to reduce the player character 201's health as a game action. In the above case, the system also performs a process to make the player character 201 perform a predetermined reaction.
[0135] In this embodiment, the lava material is assumed to have a property that reduces the health of the player character it comes into contact with (for example, a property that its temperature is above a predetermined value) as part of the property information included in the material data described above. The game system 1 generates an in-game action (in the above example, a reduction in the player character's health) based on the property information corresponding to the material set on the polygon in the collision mesh where collision has been detected by collision detection.
[0136] Furthermore, if a collision is detected between a polygon whose material is rock and the player character 201, the process of reducing the player character's health will not be executed. Also, based on the collision, the player character 201 is controlled so that it cannot enter the inside of the polygon. Therefore, the player character can stand on or walk on the polygon. In this embodiment, by setting a material for each polygon, the game system 1 can execute different processes depending on which part of the voxel object other objects come into contact with. Furthermore, the content of the executed process can be made according to the type of material. In addition, in this embodiment, the player character can change the terrain object (for example, by deforming it or changing its material), so for example, the player can erase the lava part of the terrain object or change the lava to another material. Therefore, by changing the terrain object, the player can avoid the reduction of the player character's health due to contact with lava.
[0137] The content of the processing performed when a collision between a voxel object and another object is detected is arbitrary. For example, if the other object is a moving object such as a player character or an enemy character, the processing may include outputting the sound of the object's footsteps or displaying an effect (for example, an effect representing dust or splashes of water) at the point of contact. In this case, the game system 1 can make the footsteps sound different or the effects different depending on the type of material set on the polygon of the part of the voxel object that made contact.
[0138] Figure 23 is an example of a game image showing a player character pulling a fragment object from a terrain object. As shown in Figure 23, in this embodiment, the player can have the player character 201 perform an action (referred to as a "pulling action") in which the player grasps the terrain object 202 and pulls out a part of it as a fragment object 252 by a predetermined input. The game system 1 erases a part of the terrain object 202 and generates a fragment object 252 as an in-game effect resulting from the pulling action.
[0139] When a pull-out action is performed, the game system 1 specifically executes the following processes. That is, when the player inputs an operation to have the player character perform a pull-out action, the game system 1 has the player character perform an action such as digging forward and grabbing, and performs a collision check. If a collision is detected between the player character performing the pull-out action and the terrain object, 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 (e.g., forward) relative to the player character. The shape and size of the update range may be predetermined according to the type of action performed by the player character. The game system 1 also reduces the density of voxels corresponding to the update range 253. Then, through mesh updates corresponding to the reduction in voxel density, the terrain object 202 is deformed so that the portion within the update range 253 is erased (see Figure 23(b)). In this embodiment, the density is reduced for each voxel corresponding to the update range 253, but the voxels whose density is reduced may be at least a portion of the voxels corresponding to the update range 253.
[0140] Furthermore, while the above assumes that the voxel object corresponding to the update range 253 is unconditionally deformed by the pull action, in other embodiments, the deformation of the voxel object corresponding to the update range 253 may be conditional on the amount of damage set on 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 on the voxel corresponding to the update range 253 and decrease the density of the voxel when the amount of damage exceeds a predetermined value. In this case, the amount of increase in damage may be determined according to the action performed on the voxel object.
[0141] Furthermore, the game system 1 generates a fragment object 252 representing the erased portion of the terrain object 202. That is, based on the above-mentioned pull-out action, the game system 1 generates the fragment object 252 in a state where it is held by the player character. The fragment object 252 may be generated to have a shape corresponding to the erased portion of the terrain object 202, or it may have a predetermined shape. The fragment object 252 may or may not be a voxel object. If the fragment object is a voxel object, a voxel space different from the voxel space of the voxel corresponding to the terrain object 202, etc., is defined for the fragment object 252.
[0142] 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 polygons in the detection mesh of the terrain object 202 that come into contact with the update range 253. The material of the fragment object 252 is determined to be the same as one of the materials set for the polygons in the detection mesh that come into contact with the update range 253. This makes it possible to make the material of the fragment object 252 the same as the material of the erased part of the terrain object. As is clear from the above explanation, the fragment object 252 is not actually part of the terrain object. However, because it is generated along with the erasure of a part of the terrain object, and the material of the erased part of the terrain object is inherited by the fragment object 252, it is possible to give the player the impression that the player character 201 has extracted a part of the terrain object 202 through a pull action.
[0143] In this embodiment, each type of material provided is assigned a priority, and the game system 1 determines that the material with the highest priority among the materials assigned to each polygon of the judgment mesh within the update range 253 is the material for the fragment object 252. Here, for example, consider the case where the judgment mesh within the update range 253 includes polygons with the material rock and polygons with the material lava. In such a case, if the material of the fragment object 252 is set to lava, the player character's health may decrease when the player character grasps the fragment object 252 through a pull-out action (as explained in Figure 22, the lava material is assumed to have the property of reducing the player character's health upon contact). Furthermore, as described above, if the judgment mesh within the update range 253 includes polygons with different types of materials, it may be difficult for the player to predict what the material of the fragment object 252 will be, and the above-mentioned inconvenience may occur against the player's will. In contrast, in this embodiment, the possibility of the above-mentioned inconvenience occurring can be reduced by setting a priority for the material that is set as the material for the fragment object.
[0144] Figure 24 is an example of a game image showing how fragment objects are generated when a player character destroys a terrain object. As shown in Figure 24, in this embodiment, the player can cause the player character 201 to perform a punch action by inputting a predetermined command. The game system 1, as an in-game effect resulting from the punch action, erases a portion of the terrain object 202 and generates fragment objects 255, similar to the punch action described above. Specifically, it deforms the terrain object 202 so that a portion of it is erased. In the case of a punch action, unlike the pull-out action described above, after the punch action, the fragment objects 255 are not grasped by the player character 201 but are placed around the location where the punch action was performed (see Figure 24(b)). It should be noted that fragments corresponding to the destruction of the terrain object 202 may not be generated.
[0145] When a punch action is performed, the game system 1 specifically executes the following processes. That is, when the player inputs an operation to make the player character perform a punch action, the game system 1 makes the player character perform a punching action toward the front and performs a collision check. If a collision is detected between the player character performing the punch action and the terrain object, 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 (for example, forward) relative to the player character. The position, shape, and size of the update range 254 due to the punch action may be the same as or different from the update range 253 due to the pull-out action. The game system 1 then reduces the density of voxels corresponding to the update range 254. As a result, similar to the pull-out action, the terrain object 202 is deformed by the punch action so that the portion within the update range 254 is erased (see Figure 24(b)). Furthermore, similar to the pull-out action, the game system 1 may, instead of unconditionally deforming the voxel objects corresponding to the update range 254, increase the amount of damage set for voxels within the update range 254 in accordance with the punch action, and decrease the density of the voxel in question when the amount of damage exceeds a predetermined value. In addition, the voxels whose density is reduced by the punch action may be at least a portion of the voxels corresponding to the update range 254.
[0146] Furthermore, game system 1 generates fragment objects 255 corresponding to the erased portion of terrain object 202. That is, based on the punch action, game system 1 generates the fragment objects 255 without the player character holding them (for example, by placing them around the location where the punch action occurred). The fragment objects 255 may be generated to have a shape corresponding to the erased portion of terrain object 202, or they may have a predetermined shape. The fragment objects 255 may or may not be voxel objects.
[0147] 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 polygons in the detection mesh of the terrain object 202 that come into contact with the update range 254. The material of the fragment object 255 is determined to be the same as one of the materials set for the polygons in the detection mesh that come into contact with the update range 254. This makes it possible to make the material of the fragment object 255 the same as the material of the erased part of the terrain object. Furthermore, by generating the fragment object 255 along with the erasure of a part of the terrain object, and inheriting the material of the erased part of the terrain object to the fragment object 255, it is possible to give the player the impression that a part of the terrain object destroyed by the player character's punch action was generated as a fragment object.
[0148] In this embodiment, the material of the fragment object 255 is determined to be the material that has the greatest decrease in voxel density among the materials set for polygons in the determination mesh that come into contact with the update range 254. This makes it possible to generate fragment objects that more accurately reflect the material configuration of the parts of the terrain object that have been erased by the punch action.
[0149] The method for determining the material of the fragment object generated by the above-described pull-out or punch action is arbitrary. For example, the method for determining the material of the fragment object may be the same for both the pull-out and punch actions. Alternatively, for example, the material set on the most polygons among the materials set on each polygon of the judgment mesh within the update range may be determined as the material of the fragment object. Alternatively, for example, the material set on polygons that satisfy a predetermined condition (for example, polygons at the position that come into contact with the hand of the player character performing the pull-out or punch action) among the polygons of the judgment mesh within the update range may be determined as the material of the fragment object. Furthermore, in other embodiments, multiple types of materials may be set on the fragment object.
[0150] In this embodiment, the player can have the player character perform an action to throw the fragment object 252 or 255 generated as described above (hereinafter referred to as the "throwing action"). The player can also have the player character perform an action to hold the fragment object that is generated in response to the punching action and placed on the ground, by a predetermined input. As a result of the above-mentioned pull-out action, or as a result of the action to hold the fragment object after the punching action, the player character will be in a state of holding the fragment object. In this state, the game system 1 will have the player character perform an action to release the fragment object in a predetermined direction as a throwing action in response to the player's input.
[0151] Figure 25 shows an example of a game image in a state where the player character is capable of performing a throwing action and is in a throwing stance, and is deciding on the direction to throw. As shown in Figure 25, when the player character 201 is holding the fragment object 261, the player character 201 can perform a throwing action. In this state, as shown in Figure 25, the game system 1 displays a targeting image 262 and an object information image 263 superimposed on an image representing the game space as a process to generate an action within the game.
[0152] The aiming image 262 indicates the direction in which the fragment object is released by the throwing action (also called the aiming direction). That is, in response to the player's input for performing the throwing action, the game system 1 moves the fragment object 261 from the player character 201's position toward the position in the game space indicated by the aiming image 262. The aiming direction is controlled based on the player's input. For example, the game system 1 may change the aiming direction in response to an input that changes the orientation of the virtual camera. Specifically, the game system 1 may control the virtual camera in response to the input so that it rotates around the player character while maintaining the player character within its field of view, and control the aiming direction so that it corresponds to the virtual camera's line of sight. At this time, the aiming image 262 is displayed, indicating the position where a straight line extending from the player character's position in the aiming direction intersects with the terrain object 264. Specifically, game system 1 performs collision detection between the aiming direction (i.e., the straight line extending in the aiming direction) and the detection mesh of terrain object 264. If a collision is detected, it displays the aiming image 262. The aiming image 262 is positioned to indicate the location of the polygon in the detection mesh that intersects the straight line extending in the aiming direction.
[0153] The aiming image 262 described above allows the player to see the position where the fragment object will contact the voxel object when the player character performs a throwing action. This makes it easier for the player to perform the throwing action. The specific control method for the aiming direction and the aiming image 262 is arbitrary, and conventional methods may be used. For example, in another embodiment, the aiming image 262 may be displayed in a first-person view game image where the player character is not displayed.
[0154] When the player character is in a position to throw a shard object, a throwing action is performed in the direction of the aim, in response to a predetermined input from the player.
[0155] Object information image 263 shows information about the terrain object 264 at the position indicated by the aiming image 262. In this embodiment, object information image 263 shows the name of the material set on the polygon of the judgment mesh at the position indicated by the aiming image 262 (in the example shown in Figure 25, it is "rock"). This allows the player to see the material of the voxel object that the fragment object thrown by the throwing action comes into contact with. Object information image 263 also shows information about the properties of the material (in this case, hardness). This allows the player to see the properties of the voxel object that the fragment object thrown by the throwing action comes into contact with. Note that the content shown in object information image 263 is arbitrary. For example, in other embodiments, object information image 263 may show any property of the material set on the polygon at the position indicated by the aiming image 262, or it may show the state of the polygon (for example, the amount of damage as described above). In this embodiment, since the polygon material of the judgment mesh is of only one type, the material corresponding to the aiming position is uniquely identified. Therefore, it is suitable for displaying information related to the material.
[0156] In this embodiment, when a fragment object released by a throwing action is determined to have come into contact with a voxel object as a result of collision detection, the game system 1 modifies the voxel object as an action within the game. Figure 26 shows an example of a game image after the terrain object 264 shown in Figure 25 has been modified due to contact between the fragment object 261 and the terrain object 264. In the example shown in Figure 26, the terrain object 264 is deformed so that it appears as if the fragment object is attached to the contact point between the fragment object and the terrain object 264. Specifically, the game system 1 generates an update range that includes the contact point and deforms the terrain object 264 to achieve the above shape by increasing the density of voxels in the update range. For example, the update range may be set to a shape corresponding to the shape of the fragment object, and the terrain object 264 may be deformed so that the update range is within the terrain object 264. As a result, in the example shown in Figure 26, the terrain object has an additional portion 265 added to it. In the example shown in Figure 26, the fragment object is removed when it comes into contact with the terrain object 264.
[0157] Furthermore, the polygon material in the added portion 265 is determined based on the material of the fragment object that came into contact with the terrain object 264. Specifically, the game system 1 sets the material of each voxel within the update range to be the same as the material of the fragment object. Then, the materials of the display mesh and the detection mesh are determined based on the material of the voxel. This makes it possible to make the appearance of the added portion 265 the same as the appearance of the fragment object (although in reality, the terrain object 264 has been deformed as described above), making it easier to give the player the impression that the fragment object is attached to the terrain object 264.
[0158] In the example shown in Figure 26, the change made to the voxel object in response to the fragment object coming into contact with it was a deformation that added an additional part to the voxel object, but the changes made to the voxel object are not limited to this. The above changes may change the density of the voxels or change the material. For example, if the fragment object has explosive properties, the fragment object may explode in response to contact with the voxel object, and in this case, the voxel object may be deformed so that a part of the voxel object is erased. Specifically, game system 1 sets an update range that includes the contact location and reduces the density of voxels within the update range. Also, for example, if 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 contact of the fragment object. Specifically, game system 1 sets an update range that includes the contact location and may change the material of the voxels within the update range that is lava 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 turns into obsidian or rock.
[0159] The content of the above changes 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 materials of the voxel object and the fragment object. This allows for various changes to be made to the voxel object.
[0160] Furthermore, game system 1 may decide whether or not to make the above changes based on the material of the voxel object, based on the material of the fragment object, or based on a combination of the materials of the voxel object and the fragment object. For example, if a fragment object whose material is rock comes into contact with a voxel object whose material is rock, game system 1 may make the changes shown in Figure 26, but may not make the changes shown in Figure 26 if a fragment object whose material is rock comes into contact with a voxel object whose material is iron.
[0161] In this embodiment, as described above, one type of material is set for the polygons of the detection mesh and the fragment objects. If multiple types of materials were set for at least one of the polygons of the detection mesh and the fragment objects, it would become difficult to determine the changes applied to the voxel object according to the types of materials used when the detection mesh and the fragment objects come into contact. In contrast, in this embodiment, since the detection mesh and the fragment objects that are determined to be in contact by collision detection each have only one type of material, it becomes easy to determine the changes applied to the voxel object.
[0162] [2-7. Processing of intersection information in response to deformation of voxel objects] Next, referring to Figures 27 to 37, we will explain the process performed on the intersection information set for voxels when a voxel object is deformed.
[0163] [2-7-1. Example of deleting intersection information] Figure 27 shows an example of a game image when intersection information is set for a terrain object. In Figure 27, the terrain object 271, which is a voxel object, has a shape that forms a cliff. In order to achieve this shape, in the example shown in Figure 27, intersection information is set for the voxels from which the mesh of the terrain object 271 is generated. In Figure 27, two upward-pointing vectors 272 and two horizontal-pointing vectors 273 are shown as examples of vectors representing the intersection information set for the terrain object 271, but in reality, more intersection information may be set. Note that each vector 272 and 273 is not actually displayed in the game image.
[0164] In the example shown in Figure 27, intersection information, represented as a vector 272 with the upward direction as the normal direction, is set for the voxel at the location where the mesh for the upward-facing face of the terrain object 271 is generated. Additionally, intersection information, represented as a vector 273 with the predetermined direction as the normal direction, is set for the voxel at the location where the mesh for the face of the terrain object 271 facing a predetermined direction parallel to the horizontal direction is generated. The voxel at the location where the mesh for the upward-facing face is generated is a voxel whose density is set to be above the above-mentioned reference value, and whose adjacent voxel on the upper side has a density below the reference value. The voxel at the location where the mesh for the predetermined direction is generated is a voxel whose density is set to be above the above-mentioned reference value, and whose adjacent voxel on the side facing that predetermined direction has a density below the reference value. Based on the above intersection information, the mesh of the terrain object 271 is generated so that the upward-facing face and the face facing the predetermined direction are perpendicular to each other. Furthermore, if intersection information is not set for the voxels, it is difficult to generate a mesh with a shape where two faces touch perpendicularly at the cliff edge as described above. However, by setting intersection information, the angle at the cliff edge of terrain object 271 can be set to a right angle or an angle close to it.
[0165] Figure 28 shows examples of game images before and after deformation is applied to the terrain object 271 in the situation shown in Figure 27. Situation (a) in Figure 28 shows the player character 201 performing a punch action near the location where intersection information is set for the terrain object 271. Situation (b) in Figure 28 shows the situation after the player character 201 has deformed the terrain object 271 so that a part of it disappears due to the punch action. As shown in Figure 28, when a punch action is performed on the terrain object 271, the density of voxels in the terrain object 271 decreases, similar to the example shown in Figure 24 above, causing the terrain object 271 to deform as if a part of it has been erased. Specifically, the game system 1 sets an update range based on the punch action and deforms the mesh of the terrain object 271 by reducing the density of voxels within the update range.
[0166] Furthermore, in this embodiment, when a voxel object is deformed, the game system 1 sets a deletion range to delete intersection information. In this embodiment, the deletion range 283, like the update range 282, is represented by an SDF. Figure 29 is a diagram showing an example of an update range and a deletion range set for a terrain object. As shown in Figure 29, the update range 282 is set to include, for example, a position 281 based on a punch action. In this embodiment, the deletion range 283 is also set to include a position 281 based on a punch action, similar to the update range 282. The specific method for determining the deletion range 283 is arbitrary. For example, the deletion range 281 may be determined based on the position where the punch action was performed, or it may be determined based on the update range 282 based on that position. In this embodiment, the deletion range 283 is set to encompass the update range 282. Specifically, the game system 1 determines the deletion range 283 by expanding the update range 282. This makes it easy to generate a deletion range 283 that encompasses the update range 282. Furthermore, in this embodiment, the center position of the deletion range 283 is set to the same position as the center position of the update range 282. However, the deletion range 283 may be set to any position that encloses the update range 282. In the example shown in Figure 29, the deletion range 283 is larger than the update range 282, but in other examples, the deletion range 283 may be the same as the update range 282. Also, in the example shown in Figure 29, the update range 282 and the deletion range 283 are spherical, but they may be of any shape. In other embodiments, the update range 282 and the deletion range 283 do not have to be similar in shape.
[0167] Game system 1 deletes the intersection information set in the voxels within the deletion range set as described above (see Figures 28 and 29). Then, when generating the mesh of the terrain object 271 after deformation, vertices are set based on the density of voxels rather than on the intersection information, and the mesh is generated based on those vertices. The method of generating the mesh based on vertices is the same as the method described in [2-4. Simplification of Vertices] and [2-5. Mesh Generation] above. Therefore, in the situation shown in Figure 28(b), the shape of the mesh of the part of the terrain object 271 that is deformed so that part of it is deleted is determined without regard to the intersection information that was set before deformation.
[0168] As described above, in this embodiment, since intersection information within the deletion range is deleted, calculations are performed without using intersection information when generating the deformed mesh corresponding to the above action, thus suppressing the increase in processing load in the game system 1. In addition, the amount of memory used for mesh generation can be reduced. Furthermore, in the example shown in Figure 28, the deformed mesh of the terrain object 271 does not use intersection information, so the vertices in the mesh are less likely to be sharp. Therefore, the shape of the terrain object 271 after deformation can be made to be a more natural shape, representing the shape after it has been destroyed by the punch action.
[0169] Furthermore, the deletion of intersection information mentioned above means deleting the intersection information from the data used to set vertices (which can also be called generating a mesh), and the game system 1 itself may store the intersection information data as separate data from the data used to set vertices. For example, when certain conditions are met in the game, voxel objects such as terrain objects placed in the game space may be reset to their initial shapes, and in this case, a mesh of the initial shape may be generated using the stored intersection information data.
[0170] As described above, the example shown in Figure 28 describes the case where deformation occurs that reduces the volume of the internal region of the terrain object 271. However, even in cases where deformation occurs that increases the volume of the internal region of the terrain object 271, as shown in Figure 26, for example, the game system 1 may set a deletion range and delete the intersection information set in the voxels within that deletion range.
[0171] [2-7-2. Example of retaining intersection information] In this embodiment, under certain conditions, intersection information may be retained when a voxel object is deformed. An example of how intersection information is retained will be described below.
[0172] In this embodiment, a correspondence is established between two voxel objects, and the other voxel object deforms in accordance with the deformation of one voxel object. For example, the game system 1 generates meshes for each voxel object so that the two voxel objects have complementary shapes. At this time, intersection information for the voxel objects may be retained without being deleted in accordance with the deformation of the voxel objects.
[0173] The following describes the process of changing the shapes of two voxel objects to which a correspondence relationship is established, referring to Figures 30 to 35. In the following, one of the two voxel objects to which a correspondence relationship is established will be referred to as the "first corresponding object," and the other as the "second corresponding object." In addition, the term "corresponding object" may be used as a general term for both the first and second corresponding objects.
[0174] Figure 30 shows an example of a game image representing the game space where the first corresponding objects are placed. In the example shown in Figure 30, three first corresponding objects 291-293 are placed in the game space. Each of the first corresponding objects 291-293 is assumed to have a corresponding second corresponding object (objects 301-303 shown in Figure 32). In the situation shown in Figure 30, the second corresponding objects are not displayed because the density of each voxel is 0 and they do not exist.
[0175] In this embodiment, each corresponding object is a voxel object corresponding to a different voxel space. In other words, a different voxel space is set for each corresponding object. In other embodiments, the voxel space for multiple corresponding objects may be common. In the example shown in Figure 30, the voxel space of the corresponding object is the sub-voxel space described above, which is a rectangular parallelepiped space. In the example shown in Figure 30, the first corresponding objects 291 to 293 each have the shape in which the volume of their internal region is maximized (hereinafter referred to as the "maximum shape"), that is, the surface and internal region of the first corresponding object occupy the entire voxel space. At this time, the density of each voxel in the first corresponding objects 291 to 293 is the upper limit value (specifically, 255).
[0176] In the example shown in Figure 30, the player character 201 performs a punch action on the first corresponding object 292. Figure 31 is an example of a game image showing the situation after the punch action has been performed from the situation shown in Figure 30. When a punch action is performed on the first corresponding object 292, the density of voxels in the first corresponding object 292 decreases, causing the first corresponding object 292 to deform as if some (or all) of it has been erased (see Figure 31).
[0177] In this embodiment, when the first corresponding object 292 is deformed as described above, the game system 1 also deforms the second corresponding object 302 that corresponds to the first corresponding object 292. Specifically, when the voxel density of the first corresponding object 292 is reduced, the game system 1 increases the voxel density of the second corresponding object 302. As a result, as shown in Figure 31, the second corresponding object 302 is deformed such that the volume of its inner region increases. In the examples shown in Figures 30 and 31, the state changes from one in which the second corresponding object 302 does not exist to one in which the second corresponding object 302 exists. As will be described in detail later, in this embodiment, the shape of the added portion of the second corresponding object 302 is the same as the shape of the disappeared portion of the first corresponding object 292.
[0178] Figure 32 is an example of a game image showing a situation where a punch action has been performed on each of the first corresponding objects 291 to 293, in addition to the situation shown in Figure 31. In the example shown in Figure 32, each of the first corresponding objects 291 to 293 is deformed so that a part of it disappears in response to the punch action by the player character 201. At this time, in response to the deformation of each of the first corresponding objects 291 to 293, the second corresponding objects 301 to 303 are deformed so that the part of the first corresponding object 291 to 293 that disappeared is added to the second corresponding objects 301 to 303. If the first corresponding object has become smaller and the entire first corresponding object is included within the update range based on the punch action, the entire first corresponding object disappears in response to the punch action by the player character 201. At this time, the second corresponding object is deformed to the maximum shape described above.
[0179] Figure 33 is a diagram showing an example of a game image representing a situation in which a punch action is performed on the second corresponding object 302 in the situation shown in Figure 32. In this embodiment, when a punch action is performed on the second corresponding object 302, the game system 1 deforms the second corresponding object 302 in the same way as when a punch action is performed on the first corresponding object, so that a part of the second corresponding object 302 disappears. At this time, the first corresponding object 292 corresponding to the second corresponding object 302 is deformed. Specifically, the first corresponding object 292 is deformed so that the shape appears as if the part of the second corresponding object 302 that disappeared has been added to the first corresponding object 292 (see Figure 33). As described above, in this embodiment, when the second corresponding object is deformed, the corresponding object is deformed in the same way as when the first corresponding object is deformed.
[0180] As described above, in this embodiment, when one corresponding object is deformed, other corresponding objects are also deformed. This allows, for example, by making one corresponding object smaller, corresponding objects in other locations can be made larger to create platforms or defensive walls against enemies, thereby improving the strategic aspect of the game. In the example shown in Figure 30, the corresponding object is an object used as a platform for the player character, but the corresponding object may be used for any purpose within the game.
[0181] In this embodiment, frame images 294-296 and 304-306 are displayed as examples of images indicating the positions where corresponding objects 291-293 and 301-303 are placed (see Figures 30-32). Therefore, even if a corresponding object does not exist, such as the second corresponding object in Figure 30, the position where the corresponding object is placed can be notified to the user by the frame image. In this embodiment, the frame image also shows the outline of the corresponding object when it is at its maximum size. Therefore, in this embodiment, the frame image can notify the user not only of the position of the corresponding object but also of the range in which the corresponding object may be placed. In other embodiments, the form of the image indicating the position where the object is placed is arbitrary. For example, the above image may be an image showing the center position of the object. In other embodiments, the above image may not be displayed at all.
[0182] Next, we will describe the process of updating the density of corresponding objects in order to deform them in response to the deformation of the corresponding object. First, the game system 1 stores correspondence information that shows the correspondence between the first corresponding object and the second corresponding object. For example, the game system 1 stores information that associates voxel data related to the first corresponding object with voxel data related to the second corresponding object as correspondence information. The format of the correspondence information is arbitrary. For example, in another embodiment, voxel data may include information indicating the voxel object (or voxel data) corresponding to the voxel object as correspondence information. When a corresponding object is deformed by an action that deforms a voxel object, the game system 1 refers to the above correspondence information to identify the corresponding object to the said corresponding object.
[0183] Figure 34 shows an example of density values set for each voxel of the first corresponding object and the second corresponding object. In Figure 34, for the purpose of making the diagram easier to see and the explanation easier to understand, voxels are shown as being arranged two-dimensionally in a two-dimensional voxel space, but in reality, voxels are arranged three-dimensionally in a three-dimensional voxel space. In Figure 34, one rectangle represents one voxel, and the number inside the rectangle indicates the density set for the voxel. In the example shown in Figure 34, the density of each voxel of the first corresponding object before deformation is set to the upper limit (here, 255), and the density of each voxel of the second corresponding object at this time is set to the lower limit (here, 0). In other words, the situation before deformation in Figure 34 is the situation shown in Figure 30, where the first corresponding object is at its maximum shape and the second corresponding object does not exist.
[0184] When an action to deform the first corresponding object is performed by a player character or the like, an update range 311 is set based on that action, and the density of voxels within the update range 311 is updated to decrease. In the example shown in Figure 34, the bottom right four voxels of the first corresponding object fall within the update range 311, and the densities of these four voxels are updated to 150, 100, 100, and 0, respectively. The first corresponding object is deformed by generating a mesh based on the updated densities.
[0185] If the first corresponding object is deformed as described above, the game system 1 sets an update range 312 for the second corresponding object. The update range 312 for the second corresponding object is set to be the same as the update range 311 for the first corresponding object. Specifically, the update range 312 is set so that the positional relationship between the voxel space for the second corresponding object and the update range 312 is the same as the positional relationship between the voxel space for the first corresponding object and the update range 311.
[0186] Game system 1 updates the density of voxels within update range 312. In this embodiment, the density of voxels within update range 312 increases in accordance with the decrease in the density of voxels within update range 311. Here, in this embodiment, each voxel of the first corresponding object is associated with each voxel of the second corresponding object. Specifically, each voxel is assigned an identification number corresponding to its position in voxel space, and the same number is assigned to the voxel of the first corresponding object and the corresponding voxel of the second corresponding object. Game system 1 can identify the voxel of the second corresponding object that corresponds to the voxel of the first corresponding object by referring to the above identification number. The specific method for associating the voxels of the first corresponding object with the voxels of the second corresponding object is arbitrary. For example, in other embodiments, the voxel data may include information indicating the voxel that corresponds to the voxel in question among the voxels of other voxel objects that correspond to the voxel object in question.
[0187] In this embodiment, the game system 1 increases the density of voxels within the update range 312 of the second corresponding object by an amount corresponding to the decrease in the density of voxels corresponding to that voxel (voxels within the update range 311 of the first corresponding object). For example, in the example shown in Figure 34, the density of the lower right voxel within the update range 311 has decreased from 255 to 0, so the density of the voxel corresponding to that voxel is increased from 0 to 255. In this way, in this embodiment, the game system 1 increases the density of voxels related to the second corresponding object by the same amount as the decrease in the density of voxels of the first corresponding object. This makes it possible to add second corresponding objects by the amount that the first corresponding object has decreased.
[0188] In this embodiment, the density of voxels in the second corresponding object is calculated such that the sum of its density and the density of the corresponding voxels in the first corresponding object equals the upper limit of the density (here, 255). For example, in the example shown in Figure 34, after deformation, the densities of each voxel within the update range 311 are 155, 100, 100, and 0, and the densities of each voxel within the update range 312 corresponding to each of those voxels are 100, 155, 155, and 255. This makes it possible to make the shapes of the first corresponding object and the second corresponding object complementary to each other. For example, in the examples shown in Figures 30 to 33, the shapes of the first and second corresponding objects are set so that when combined, they form a single rectangular prism. This makes the correspondence between the first and second corresponding objects easier for the player to understand. For example, even when multiple first corresponding objects are arranged as shown in Figure 30, it becomes easier for the player to understand which second corresponding object corresponds to which first corresponding object. In other embodiments, the sum of the voxel density of the first corresponding object and the voxel density of the second corresponding object corresponding to that voxel does not have to be the upper limit of the density.
[0189] In this embodiment, the first corresponding object and the second corresponding object have complementary shapes. However, this does not mean that the combined shape of the first and second corresponding objects must be strictly constant. For example, in this embodiment, when the mesh of a voxel object is generated based on the density set for the voxels, the mesh faces of the first corresponding object and the mesh faces of the second corresponding object may not strictly coincide (although they will roughly coincide). Even if the mesh faces of the first and second corresponding objects do not strictly coincide, it can still be said that the first and second corresponding objects have complementary shapes.
[0190] The process for deforming the first corresponding object in response to the deformation of the second corresponding object is the same as the process for deforming the second corresponding object in response to the deformation of the first corresponding object. Specifically, the game system 1 sets an update range in the voxel space of the first corresponding object that corresponds to the update range set based on the action of deforming the second corresponding object, and increases the density of voxels within the update range by the amount by which the density of voxels corresponding to those voxels (voxels of the second corresponding object) decreases. In this embodiment, for two voxel objects with a correspondence relationship, the deformation of one voxel object can affect the other voxel object in both directions.
[0191] In this embodiment, deformations that increase the voxel density of a corresponding object may be performed by actions of the player character. When the voxel density of a corresponding object increases, the game system 1 decreases the voxel density of the corresponding object that is linked to that corresponding object. The method for calculating the density in this case is the same as the method shown in Figure 34, where the sum of the voxel density of the first corresponding object and the voxel density of the corresponding second corresponding object becomes the upper limit of the density. This allows the two corresponding objects to have mutually complementary shapes even when deformations that increase the voxel density of a corresponding object are performed by actions.
[0192] In addition, the update range based on an action that deforms a corresponding object may span multiple corresponding objects. In this embodiment, the game system 1 deforms multiple corresponding objects and, in accordance with that deformation, deforms each corresponding object that corresponds to those multiple corresponding objects. For example, if the update range based on the above action spans multiple first corresponding objects, multiple first corresponding objects are deformed, and in accordance with that deformation, multiple second corresponding objects are deformed. Also, for example, if the update range based on the above action spans both first and second corresponding objects, these corresponding objects are deformed, and in accordance with that deformation, the second and first corresponding objects corresponding to these corresponding objects are deformed, respectively. In the above cases, the game system 1 performs the process of updating the voxel density for each corresponding object using the method described above.
[0193] In this embodiment, the number and size of voxels in the voxel space are assumed to be the same for both the first corresponding object and the second corresponding object. Therefore, there is a one-to-one correspondence between each voxel in the first corresponding object and each voxel in the second corresponding object. In other embodiments, however, the number and size of voxels in the first corresponding object and the number and size of voxels in the second corresponding object may be different.
[0194] Even when the number of voxels is the same for the first corresponding object and the second corresponding object but their sizes are different, the second corresponding object can be deformed in accordance with the deformation of the first corresponding object by updating the voxel density of the second corresponding object in accordance with the deformation of the first corresponding object, in the same manner as in this embodiment. In this case, the sizes of the first corresponding object and the second corresponding object when they reach their maximum shape will be different.
[0195] Furthermore, if the number of voxels differs between the first corresponding object and the second corresponding object, the correspondence between each voxel of the first corresponding object and each voxel of the second corresponding object may be set as follows. For example, if the number of voxels of the first corresponding object is less than the number of voxels of the second corresponding object, each voxel of the first corresponding object may be associated with some of the voxels of the second corresponding object, while some of the voxels of the second corresponding object may not be associated with the voxels of the first corresponding object. In the above case, when the first corresponding object is deformed in response to the deformation of the second corresponding object, the game system 1 updates, for example, the density of voxels in the first corresponding object based on the density of voxels in the second corresponding object that correspond to those voxels. Furthermore, in the above case, when the second corresponding object is deformed in response to the deformation of the first corresponding object, the game system 1, for example, updates the density of the voxels of the second corresponding object that are associated with the voxels of the first corresponding object based on the density of the corresponding voxels of the first corresponding object, and updates the density of the voxels that are not associated with the voxels of the first corresponding object by interpolation using the density of the voxels associated with the voxels of the first corresponding object. As described above, even if the number of voxels of the first corresponding object and the second corresponding object are different, the other corresponding object can be deformed in response to the deformation of one corresponding object.
[0196] In another embodiment, if the number of voxels in the first corresponding object is less than the number of voxels in the second corresponding object, each voxel in the second corresponding object may be associated with one of the voxels in the first corresponding object. In this case, multiple voxels in the second corresponding object will be associated with one voxel in the first corresponding object. When the density of the multiple voxels in the second corresponding object is changed, the game system 1 may update the density of one voxel in the first corresponding object that corresponds to those multiple voxels based on the density of each of those multiple voxels. For example, the density of one voxel in the first corresponding object that corresponds to those multiple voxels may be updated to increase by the average value of the decrease in the density of each of those multiple voxels.
[0197] Furthermore, in the examples shown in Figures 30 to 33, the voxel spaces of the first corresponding object and the second corresponding object are both rectangular prisms, and in the game space, each voxel space is arranged in the same orientation. However, each voxel space does not have to be arranged in the same orientation. For example, one voxel space may be arranged in a vertical orientation, and the other voxel space may be arranged in a horizontal orientation. Also, for example, one voxel space and the other voxel space may be arranged in a reversed orientation, for example, so that the relationship between one voxel and its corresponding voxel is point-symmetric or line-symmetric. In this case, the update range set in the other voxel space that corresponds to the update range set in one voxel space is set such that the positional relationship between the other voxel space and the update range is the same as the positional relationship obtained by reversing the positional relationship between the first voxel space and the update range.
[0198] Intersection information is set for some of the voxels of the first and second corresponding objects. Figure 35 shows an example of intersection information set for a corresponding object. In Figure 35, the corresponding object 320 has reached its maximum shape, as the density of each voxel is at its upper limit. In the example shown in Figure 35, intersection information is set for the voxels at the positions where the mesh of the corresponding object 320, which has reached its maximum shape, is generated. Specifically, for the voxels at the positions corresponding to the corners of the corresponding object 320 when it reaches its maximum shape, intersection information is set, represented as three vectors 321 perpendicular to the three faces that form the corner. For the voxels at the positions corresponding to the edges of the corresponding object 320 when it reaches its maximum shape, intersection information is set, represented as two vectors 322 perpendicular to the two faces that form the edge. For the voxels at the positions corresponding to the faces of the corresponding object 320 when it reaches its maximum shape, intersection information is set, represented as a vector 323 perpendicular to that face. Note that each vector 321-323 is not actually displayed in the game image. As described above, by setting the intersection information, the mesh of the corresponding object 320 can be made into a more accurate rectangular prism, as shown in Figure 35. Note that Figure 35 shows only a portion of the vectors representing the intersection information set for the corresponding object 320, and in reality, more intersection information will be set. For example, in Figure 35, only one vector is shown for one edge or face, but in reality, multiple intersection information may be set for one edge or face.
[0199] In this embodiment, the intersection information is retained when the corresponding object to which the intersection information is set is deformed by an action such as the punch action described above, or when it is deformed in accordance with the deformation of the corresponding object. In this embodiment, the intersection information is used to set vertices when it is set between a voxel whose density is above a reference value and a voxel whose density is below a reference value (for example, as shown in Figures 16 and 17), but it is not used to set vertices when it is set between voxels whose densities are both above a reference value, or between voxels whose densities are both below a reference value. Therefore, if the density of voxels at the location where the intersection information is set and the surrounding voxels is updated to 0, the vertices are set without using the intersection information, so that no mesh vertices are set on a voxel even though the density of a voxel and the surrounding voxels is 0.
[0200] Furthermore, if the density of voxels around the location where intersection information is set is updated from a state where the density of voxels is 0 to the upper limit of the corresponding object's voxel density, vertices are set and a mesh is generated based on the retained intersection information. Therefore, in this embodiment, even if the corresponding object is deformed in such a way that a part of it is erased, and then further deformed to return to its maximum shape, it will be restored to a more accurate rectangular prism shape.
[0201] In other embodiments, the game system 1 may delete intersection information if it is set for voxels whose density has decreased (more specifically, whose density has decreased to a value below a reference value) during deformation of the corresponding object. In this case, the deletion range for deleting intersection information may be the same range as the update range for updating the voxel density. In the above case, the game system 1 may set the same intersection information as deleted for voxels of the corresponding object corresponding to the corresponding object from which the intersection information was deleted, and for voxels corresponding to the voxels from which the intersection information was deleted. This makes it possible to suppress the increase in processing load by deleting intersection information that does not affect vertex setting for corresponding objects whose voxel density has decreased. Furthermore, for corresponding objects whose voxel density has increased, since vertices are set based on the same intersection information as deleted in the corresponding object, it is possible to generate a mesh that more accurately reproduces the shape of the corresponding object.
[0202] Furthermore, the phrase "the same intersection information as the deleted intersection information" means that the positional relationship between the voxel space and the intersection coordinates and normal direction indicated by the intersection information is the same for the corresponding object from which the intersection information was deleted and the corresponding object. Note that if one voxel space and the other voxel space are arranged in a reversed manner, the above positional relationship is determined after considering the reversal. Therefore, if one voxel space and the other voxel space are arranged in a reversed manner, the phrase "the same intersection information as the deleted intersection information" means that the intersection coordinates and normal direction indicated by the deleted intersection information are reversed in the same way as the voxel space.
[0203] In this embodiment, when the second corresponding object is deformed in response to the first corresponding object being deformed in such a way that a portion of it is erased, the game system 1 generates an effect image 298, as shown in Figure 31. The effect image 298 is displayed to move from the deformed first corresponding object 292 to the second corresponding object 302. Furthermore, when the first corresponding object is deformed in response to the second corresponding object being deformed in such a way that a portion of it is erased, the game system 1 generates an effect image 308, as shown in Figure 33. The effect image 308 is displayed to move from the deformed second corresponding object 302 to the first corresponding object 292. The above effect images can notify the player of the corresponding object that corresponds to the deformed corresponding object.
[0204] In this embodiment, effect images 298 and 308 move from a starting position in a first range containing at least voxels with reduced density to a target position in a second range containing at least voxels with increased density. This allows the player to be notified of the portion of a corresponding object that appears to have been erased and the portion of a corresponding object that appears to have been added to that object. The first range is, for example, a range consisting of voxels with reduced density, and the starting position in the first range may be, for example, the center position of that range. The second range is, for example, a range consisting of voxels with increased density, and the target position in the second range may be, for example, the center position of that range.
[0205] Figures 31 and 33 show game images in which a transformation occurs in which a part of a corresponding object is erased, an effect image 298 or 308 is displayed, and a transformation occurs in which a part of the corresponding object is added to the said corresponding object. However, in this embodiment, first, in response to the transformation in which a part of the corresponding object is erased, an effect image is displayed at a position within the first range of the corresponding object, and then the effect image moves to a position within the second range of the corresponding object, after which a transformation occurs in which a part of the corresponding object is added. This makes it easier to understand the correspondence between two corresponding objects. In addition, it is possible to create an effect in which the reduced part of one corresponding object moves to the other corresponding object.
[0206] Furthermore, an effect image may also be displayed when a transformation is performed that adds a portion of a corresponding object, and in response to that transformation, a portion of the corresponding object that is linked to that object is deleted. For example, when a transformation is performed that adds a portion of a first corresponding object, and in response, a portion of a second corresponding object is deleted, the effect image may be displayed moving from the first corresponding object to the second corresponding object, or from the second corresponding object to the first corresponding object.
[0207] The materials for the corresponding objects may be determined in any way. For example, different materials may be assigned to the voxels of the first and second corresponding objects so that they have different appearances. Alternatively, the same material may be assigned to the voxels of the first and second corresponding objects. Note that no material may be assigned to each corresponding object.
[0208] As described above, in this embodiment, when updating the voxel density in response to a first action on a first voxel object (for example, the terrain object 271 shown in Figure 28), the intersection information is deleted, and when updating the voxel density in response to a second action on a second voxel object (for example, the first corresponding object 292 shown in Figure 30), the intersection information is not deleted. This makes it possible to suppress the increase in processing load caused by the mesh generation process that uses intersection information, and for a given voxel object, by retaining the intersection information, the shape of the mesh can be restored to its original shape more accurately when the density of that voxel object is restored to its original state.
[0209] Note that the above-mentioned "first action" and "second action" may refer to two actions whose operational content is different from each other, or two actions whose target voxel objects are different from each other. In this embodiment, intersection information is deleted when a punch action is performed on a terrain object, whereas intersection information is retained when a punch action is performed on a corresponding object. In contrast, in other embodiments, intersection information may be deleted when a punch action is performed on a terrain object, while intersection information may be retained when an action with operational content different from a punch action (for example, a body slam action) is performed on a terrain object.
[0210] [2-7-3. Example of adding intersection information] Furthermore, in this embodiment, a process may be performed to newly set intersection information in response to deformation of the voxel object. An example of newly set intersection information will be described below.
[0211] Figure 36 shows an example of a game image in which a part of a terrain object is deformed to rise upwards. In the example shown in Figure 36, a voxel object 331, which is part of the terrain object, is deformed to rise upwards from the ground, as if a rectangular prism is extending upwards. The conditions for deforming the voxel object 331 are arbitrary. In the example shown in Figure 36, for example, the voxel object 331 is deformed in response to a predetermined action (for example, hitting object 332) performed by the player character 201 on an object 332 placed on the upper surface of the voxel object 331.
[0212] As shown in Figure 36, when deforming the voxel object 331, the game system 1 increases the density of voxels in the upper range from the top surface of the voxel object 331 to a value greater than or equal to a baseline value. The specific method for deforming the voxel object 331 is arbitrary. For example, the game system 1 prepares an SDF representing the shape of a rectangular prism, moves the shape of the rectangular prism upward from the ground in voxel space, and sets the newly formed area inside the rectangular prism as the voxel update range. The method for setting the update range is arbitrary; the update range may be set based on the position where a predetermined action is performed by the player character 201, or it may be set to a predetermined position. By increasing the density of voxels within the above update range, the voxel object 331 can be deformed to rise upwards. Alternatively, for example, by repeating the above deformation over multiple frames, the voxel object 331 can be deformed to gradually extend upwards.
[0213] In this embodiment, intersection information is newly set for voxels whose density has been increased during the process of performing the above-mentioned deformation. For example, the intersection information is set based on the SDF used to set the update range, or based on the set update range. As an example, intersection information is set with the position on the surface represented by the SDF or the outline shape of the update range as the intersection coordinate, and the direction perpendicular to that surface as the normal direction. In the example shown in Figure 36, intersection information is set for voxels located on the side and top surfaces of the rectangular prism among the voxels whose density has been increased. In Figure 36, vectors 335 to 337 (see solid arrows) that represent some of the intersection information to be set are illustrated. In the example shown in Figure 36, intersection information is set that shows the intersection coordinates of the position on the top and side surfaces of the rectangular prism, and the normal direction perpendicular to the surface of the rectangular prism at that position. Specifically, for the corner formed by the side and top surfaces of the rectangular prism, intersection information is set, represented as three vectors 335 perpendicular to the three surfaces that form the corner. For the two sides of the rectangular prism, or the edges formed by the sides and the top surface, intersection information is set, represented as two vectors 336 perpendicular to the two faces forming the edge. For the sides or top surface of the rectangular prism, intersection information is set, represented as a vector 337 perpendicular to that face. Game system 1 generates the mesh of the deformed voxel object 331 based on this intersection information. This makes the mesh of the deformed voxel object 331 more accurate in the shape of the rectangular prism.
[0214] In the example shown in Figure 36, intersection information is newly set when a deformation is performed that increases the density of voxels, but intersection information may also be newly set when a deformation is performed that decreases the density of voxels. For example, when a player character performs a deformation that creates a hole in a terrain object through a predetermined action, intersection information may be set for the voxels that are located on the side of the hole. For example, when creating a hole that is carved out in the shape of a rectangular prism, the intersection coordinates are set to indicate the intersection coordinates that indicate the position on the side of the rectangular prism and the normal direction that is perpendicular to the side at that position.
[0215] As described above, game system 1 updates the density of voxels within the update range and may also set intersection information for at least some of the voxels whose density has been updated. This makes it easier to achieve the intended shape of the mesh of the deformed voxel object.
[0216] [2-7-4. Processing when voxel objects are restored] In this embodiment, intersection information deleted in response to deformation of a voxel object may be restored in response to the restoration of the shape of the voxel object. An example of how intersection information is restored will be described below.
[0217] Figure 37 shows an example of how a character object is restored after deformation. In the example shown in Figure 37, the character object 341, which is a voxel object, has intersection information, represented as a vector 342, set for some of the voxels related to the character object 341. Also in the example shown in Figure 37, the character object 341 is deformed so that a part of it is erased according to a predetermined condition (see Figure 37(b)), and then restored to its original shape (see Figure 37(c)). The predetermined condition is arbitrary; for example, a punch action is performed by the player character. The conditions for the restoration of the character object 341 are also arbitrary. For example, the character object 341 may be restored after a predetermined time has elapsed since the deformation that caused a part to be erased, or it may be restored after a game-related condition (for example, a predetermined recovery item is used on the character object 341) is met.
[0218] In the example shown in Figure 37, if a part of character object 341 is deformed so that it is erased, the intersection information set for character object 341 is deleted (see Figure 37(b)). In Figure 37, vectors representing some of the intersection information set for character object 341 are shown (see solid arrows). The process of deleting intersection information in the example shown in Figure 37 is the same as the process described in [2-7-1. Example of deleting intersection information] above. Specifically, game system 1 sets the deletion range for intersection information based on the voxel update range and deletes the intersection information set for voxels within the deletion range.
[0219] In the example shown in Figure 37, when the shape of character object 341 is restored, the density of each voxel related to character object 341 is returned to its value before deformation (in this case, the density is increased). At this time, game system 1 restores the deleted intersection information (see Figure 37(c)). For example, game system 1 stores the deleted intersection information in the situation shown in Figure 37(b) as data separate from the data used for setting vertices, and uses this data to restore the intersection information. The mesh of character object 341 after restoration is generated based on the restored intersection information. This makes it possible to more accurately represent the shape of character object 341 after restoration as the shape before deformation. Note that character object 341 may also have a shape that suggests information in the game, such as the shape of an arrow indicating the direction that player character 201 should move. In this case, by restoring the intersection information, the shape of character object 341 after restoration can be made to more accurately represent information in the game.
[0220] [3. Specific examples of processing in game systems] Next, we will explain specific examples of information processing in game system 1 with reference to Figures 38 to 43.
[0221] Figure 38 shows an example of various data used for information processing in the game system 1. Each piece of data shown in Figure 38 is stored in memory accessible by the main unit 2 (for example, flash memory 84, DRAM 85, and / or a memory card installed in slot 23). As shown in Figure 38, the game system 1 stores the game program. The game program is for executing the game processing in this embodiment (specifically, the game processing shown in Figure 39). The game program includes the material data mentioned above (see Figure 12). Also, as shown in Figure 38, the memory stores the voxel data mentioned above (see Figure 11), the intersection information data mentioned above (see Figure 18), update range data, deletion range data, mesh data, correspondence information data, object data, etc.
[0222] The update range data is data indicating the update range as described above. The deletion range data is data indicating the deletion range as described above. In this embodiment, the update range and deletion range are represented by the SDF described above.
[0223] Mesh data includes various data related to the mesh of a voxel object. As shown in Figure 38, in this embodiment, mesh data includes SVO data, display mesh data, and determination mesh data. SVO data is data that holds each vertex calculated from the voxel data in the SVO structure described above. In this embodiment, in addition to data indicating the position of each vertex, SVO data includes data indicating the material set for each vertex (for example, data indicating the material ID). Display mesh data includes various data related to the display mesh. Specifically, 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 material ID). Determination mesh data includes various data related to the determination mesh. Specifically, 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 material ID).
[0224] The correspondence information data shows the correspondence information described above, which indicates the correspondence between a first correspondence object and a second correspondence object. The correspondence information may, for example, show the correspondence between voxel data identification information and voxel data identification information, or show the correspondence between voxel space identification information and voxel space identification information, or show the correspondence between voxel object identification information and voxel object identification information. The correspondence information may be predetermined in the game program, or correspondence relationships may be added, deleted, and / or changed during the game in accordance with predetermined conditions being met.
[0225] Object data includes various data about objects other than voxel objects (for example, player characters, fragment objects, etc.). Object data is stored for each object that appears in the game space. Object data includes, for example, data indicating the object's position, velocity, and state.
[0226] Figure 39 is a flowchart illustrating an example of the game processing flow executed by game system 1. Game processing is initiated, for example, when the game is started in response to player instructions during the execution of the game program described above. The processing loop, consisting of a series of processes from steps S1 to S15, is executed in a cycle of one per frame.
[0227] In this embodiment, the processor 81 of the main unit 2 executes the game program stored in the game system 1, thereby executing the processing of each step shown in Figures 39 to 43. However, in other embodiments, some of the processing of each step may be executed by a processor other than the processor 81 (for example, a dedicated circuit). Also, if the game system 1 can communicate with other information processing devices (for example, a server), some of the processing of each step shown in Figures 39 to 43 may be executed by the other information processing device. Furthermore, the processing of each step shown in Figures 39 to 43 is merely an example, and the processing order of each step may be changed, or other processing may be executed in addition to (or instead of) the processing of each step, as long as similar results can be obtained.
[0228] Furthermore, the processor 81 executes the processing of each step shown in Figures 39 to 43 using memory (for example, DRAM 85). That is, the processor 81 stores the information (in other words, data) obtained by each processing step in memory, and when it is necessary to use that information in subsequent processing steps, it reads the information from memory and uses it.
[0229] In step S1 shown in Figure 39, the processor 81 acquires the operation data indicating the operation input from the player. That is, the processor 81 acquires the operation data received from each controller via the controller communication unit 83 and / or terminals 17 and 21. The processing in step S2 is executed after step S1.
[0230] In step S2, the processor 81 designates one of the game space objects that needs processing but has not yet been processed as the target for processing, and performs the processes of calculating the velocity of the designated object and reflecting the results of contact between objects in the previous frame. The velocity of the object is used in the process of step S11, described later, to calculate the position of the object in the current frame. For example, if the designated object is a player character, the velocity of the player character is calculated based on the operation data obtained in step S1. If the designated object is an object that is not operated by the player (for example, a fragment object), the velocity of the object is calculated based on rules predetermined in the game program. For example, the velocity of a fragment object is set to 0 if it is placed on a terrain object and is not moving, set to the same velocity as the player character if it is being held by a player character, and set to a velocity that moves in the aiming direction with a size determined by the above rules if it is released by a throwing action by a player character. Specifically, the velocity of an object is calculated based on virtual physics calculations that include interactions between objects. For example, interactions such as repulsion from collisions between objects, friction from contact, falling due to virtual gravity, and deceleration due to virtual air resistance are all reflected in the determination of velocity.
[0231] Furthermore, the process that reflects the results of object contact in the previous frame includes processing that affects the objects if it is determined in the collision detection (step S10) of the previous frame that objects have come into contact with each other. The above processing is, for example, as follows: - If it is determined that the player character came into contact with a lava terrain object in the previous frame, the player character's health will be reduced. - If it is determined that the player character made contact with a terrain object in the previous frame due to a pull-out or punch action, the process of generating a fragment object is executed. • If it was determined that the fragment object had come into contact with a rock terrain object in the previous frame, the process of destroying the fragment object is executed. If the state of an object is changed during the processing of step S2, the processor 81 updates the object data stored in memory for that object to reflect the changed state. The processing of step S3 is executed after step S2.
[0232] In step S3, the processor 81 determines whether an update event has occurred that updates the voxel object 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 S10) in the previous frame. For example, if it is determined that the player character has come into contact with a voxel object such as a terrain object or a corresponding object in the previous frame due to an action that deforms the voxel object, it is determined that an update event has occurred. More specifically, if it is determined that the player character has come into contact with a voxel object due to a punch action, it is determined that an update event has occurred that deforms the voxel object so that a part of it appears to have been erased (see Figures 24, 28, 31, and 37). Note that such an update event includes an event that deforms the terrain object so that a part of it appears to have been erased, and also changes the material of the deformed part and the surrounding area. Also, for example, if it is determined that a fragment object has come into contact with a rock terrain object in the previous frame, it is determined that an update event has occurred that deforms the terrain object so that the fragment object appears to have attached to it (see Figure 26). For example, if it is determined that the player character has come into contact with object 332 shown in Figure 36 due to a predetermined action, it is determined that an update event has occurred that deforms the terrain object so that it rises upward (see Figure 36). Also, for example, if the conditions for restoring the shape of the deformed character object are met, as in the example shown in Figure 37, it is determined that an update event has occurred that restores the character object. If the result of the determination in step S3 is positive, the process in step S4 is executed. On the other hand, if the result of the determination in step S3 is negative, the process in step S5, described below, is executed.
[0233] In step S4, the processor 81 executes a voxel update process to update the voxel data for the voxel object for which an update event was determined to have occurred in step S3. The details of the voxel update process in step S4 will be described below with reference to Figure 40.
[0234] Figure 40 is a subflowchart showing an example of a detailed flow of the voxel update process in step S4 shown in Figure 39. In the voxel update process, first in step S21, the processor 81 sets the update range for updating the voxels of the voxel object in the game space. For example, the specific contents of the update range (i.e., position, shape, and size) are associated with each type of update event in the game program. The update range set in step S21 is set to be associated with the type of update event that is determined to occur in step S3. The processor 81 stores the data indicating the set update range in memory as update range data. The process in step S22 is executed after step S21.
[0235] In step S22, the processor 81 makes changes to the voxels corresponding to the update range set in step S21 in accordance with the update event. For example, if the voxel objects within the update range are deformed to appear as if they have been deleted, or if voxel objects have been added to the update range, the voxel data stored in memory is updated to change the density of the voxels corresponding to the update range (see [2-2. Updating Voxel Data] above). Also, for example, if the material of the voxel objects within the update range is changed, the voxel data stored in memory is updated to update the first and second material IDs and material mixing ratio of the voxels corresponding to the update range. The processing in step S23 is executed after step S22.
[0236] In step S23, the processor 81 determines whether or not a transformation of the voxel object occurred during the processing in step S22. For example, if the update events shown in Figures 23, 24, 26, 28, 30-33, 36, and 37 occur, it is determined that a transformation of the voxel object has occurred. If the determination result in step S23 is positive, the processing in step S24 is executed. On the other hand, if the determination result in step S23 is negative, the processor 81 terminates the voxel update process.
[0237] In step S24, the processor 81 executes intersection information control processing. Intersection information control processing is a process for deleting, adding, or restoring intersection information for voxel objects that were deformed in the processing of step S22. The details of the intersection information control processing in step S24 will be described below with reference to Figure 41.
[0238] Figure 41 is a subflowchart showing an example of a detailed flow of the intersection information control process in step S24 shown in Figure 40. In the intersection information control process, first in step S31, the processor 81 determines whether or not to delete the intersection information in response to the update event. In this embodiment, whether the intersection information is deleted, added, restored, or retained in response to the update event is predetermined according to the type of update event, the type of action that caused the update event, and / or the type of voxel object to be updated. For example, in the case of the example described above in [2-7. Processing of intersection information in response to deformation of voxel objects], it is determined that the intersection information will be deleted in the case of an update event in which a terrain object or character object is destroyed by a punch action by a player character. If the result of the determination in step S31 is affirmative, the process in step S32 is executed. On the other hand, if the result of the determination in step S31 is negative, the process in step S34 is executed.
[0239] In step S32, the processor 81 sets the deletion range based on the update range set in step S21, according to the method described in [2-7-1. Example of deleting intersection information] above. The processor 81 stores the data indicating the set update range in memory as update range data. The process in step S33 is executed after step S32.
[0240] In step S33, the processor 81 deletes the intersection information set for voxels within the deletion range set in step S32. The processor 81 updates the intersection information data stored in memory so that the intersection information corresponding to the above voxels is deleted. As mentioned above, the processor 81 only needs to delete the intersection information from the data used in the series of processes for generating the mesh in steps S7 to S10 described later, and may store the intersection information data as other data different from the said data. The process in step S34 is executed after step S33.
[0241] In step S34, the processor 81 determines whether or not to add intersection information in response to the update event. For example, in the case of an update event in which the terrain object is deformed to rise upward due to an action on object 332 shown in Figure 36, it is determined that intersection information should be added. If the result of the determination in step S34 is affirmative, the processing in step S35 is executed. On the other hand, if the result of the determination in step S34 is negative, the processing in step S35 is executed.
[0242] In step S35, the processor 81 adds intersection information to some of the voxels whose density was updated in the process of step S22. For example, the processor 81 determines the intersection coordinates and normal direction of the added intersection information according to the method described in [2-7-3. Example of adding intersection information] above, and stores the intersection information data indicating the said intersection information in memory. The process of step S34 is executed after step S33.
[0243] In step S36, the processor 81 determines whether or not to restore the intersection information in response to the update event. For example, in the case of an update event that restores the deformed character object 341 shown in Figure 37, it is determined that the intersection information should be restored. If the determination result in step S36 is affirmative, the processing in step S37 is executed. On the other hand, if the determination result in step S36 is negative, the processor 81 terminates the intersection information control processing.
[0244] In step S37, the processor 81 restores intersection information for voxels whose density was updated in the process of step S22. For example, the processor 81 stores the intersection information data that was deleted in the process of step S33 due to previous deformation as separate data from the data used in the series of processes for generating the mesh, and in step S37, it restores the intersection information data using this data. After step S37, the processor 81 terminates the intersection information control process.
[0245] In addition, when the corresponding object is deformed as described above, the determinations in steps S31, S34, and S36 will be negative. As a result, the intersection information is retained. In other embodiments, if the density of voxels in the corresponding object is reduced in step S22, the processor 81 may delete the intersection information set for those voxels in step S33. In this case, if the processor 81 performs the process in step S35 for the corresponding object corresponding to the corresponding object from which the intersection information has been deleted, the processor 81 may set the same intersection information as the deleted intersection information in step S35.
[0246] Returning to the explanation of Figure 39, in the next step S25 following step S24, the processor 81 determines whether the voxel object for which an update event occurred in step S3 is the corresponding object described above, that is, whether a corresponding voxel object exists. This determination is made, for example, by checking whether a voxel object corresponding to the voxel object exists in the corresponding information data stored in memory. If the result of the determination in step S25 is positive, the processing in step S26 is executed. On the other hand, if the result of the determination in step S25 is negative, the processor 81 terminates the voxel update process.
[0247] In step S26, the processor 81 sets the effect flag to ON for the voxel object for which an update event was determined to have occurred in step S3. The effect flag indicates whether or not an effect image (see Figures 31 and 33) is currently being displayed when the corresponding object is deformed. The effect flag is set for each corresponding object. If the effect flag is ON, the effect control process (step S13) described later will configure the display of the effect image, and the game image including the effect image will be generated in the process of step S14 described later. After step S26, the processor 81 terminates the voxel update process.
[0248] Returning to the explanation of Figure 39, in the next step S5 following the voxel update process in step S4, the processor 81 executes the corresponding object update process. The corresponding object update process updates the voxel data under certain conditions if the object specified in step S2 is the corresponding object. The details of the corresponding object update process in step S5 will be explained below with reference to Figure 42.
[0249] Figure 42 is a sub flowchart showing an example of the detailed flow of the corresponding object update process in step S5 shown in Figure 39. In the corresponding object update process, first, in step S41, the processor 81 determines whether the voxel object specified in step S2 is a corresponding object and whether the timing for performing deformation according to the deformation of the corresponding voxel object has arrived. In the present embodiment, the above timing is the timing when the effect image generated according to the deformation of the voxel object corresponding to the voxel object reaches the position of the voxel object. Therefore, the determination in step S41 can be made based on whether the determination result in step S55 in the effect control process described later is affirmative and whether the process in step S56 has been executed. When the voxel object specified in step S2 is not a corresponding object, or when the corresponding voxel object has not been deformed, or even when the corresponding voxel object has been deformed but the above timing has not yet arrived, the determination result in step S41 is negative. When the determination result in step S41 is affirmative, the process in step S42 is executed. On the other hand, when the determination result in step S41 is negative, the processor 81 ends the corresponding object update process.
[0250] In step S42, the processor 81 sets an update range for updating the density for the voxel object specified in step S2. This update range corresponds to the update range set in step S21 executed for the voxel object corresponding to the voxel object. The above update range is set based on the corresponding update range according to the method described in the above [2-7.2 Process of changing the shapes of two voxel objects]. The processor 81 stores the data indicating the set update range in the memory as update range data. The process in step S43 is executed after step S42.
[0251] In step S43, the processor 81 updates the density for the voxels within the update range set in step S42. Specifically, the density of the voxel after the update is calculated based on the density of the voxel corresponding to the voxel according to the method described in the above [2-7.2. Process for changing the shape of two voxel objects]. The processor 81 updates the voxel data stored in the memory so as to indicate the calculated density value. After step S43, the processor 81 ends the corresponding object update process.
[0252] Returning to the description of FIG. 39, in step S6, which is the next step of the corresponding object update process in step S5, the processor 81 determines whether the processing in steps S2 to S5 has been completed for all objects that require processing. If the determination result in step S6 is affirmative, the processing in step S7 is executed. On the other hand, if the determination result in step S6 is negative, the processing in step S2 is executed again.
[0253] In step S7, the processor 81 updates the vertices of the voxel object in the game space. That is, when the voxel data is updated in the processing of step S4 or S5 above, new vertices are calculated based on the updated voxel data. Note that the positions and materials of the new vertices are calculated according to the method described in the above [2-3. Calculation of vertices]. The processing in step S8 is executed after step S7.
[0254] In step S8, the processor 81 simplifies the vertices. That is, for each vertex updated by the processing in step S7, the processor 81 simplifies it according to the method described in [2-4. Simplification of Vertices] above. The SVO data stored in memory is updated to show each vertex obtained by the processing in steps S7 and S8. Therefore, the SVO data is updated by the processing in steps S7 and S8. Note that the processing in steps S7 and S8 does not require recalculating the vertices for the entire voxel data, and may be performed only on the parts of the voxels whose contents were changed in the processing in step S4 or S5. The processing in step S9 is performed after step S8.
[0255] In step S9, the processor 81 updates the display mesh of the voxel object based on the SVO data stored in memory. The position of each vertex of the display mesh and the material of each polygon of the display mesh (i.e., the material set for each vertex of the polygon) are calculated according to the method described in [2-5. Mesh Generation] above. The processor 81 updates the display mesh data stored in memory to reflect the updated position and material of each vertex of the display mesh. The processing in step S10 is executed after step S9. The processor 81 may start the processing from step S10 onward without waiting for the completion of step S9 and execute them in parallel. In that case, step S9 must be completed before the start of step S14.
[0256] In step S10, the processor 81 updates the determination mesh of the voxel object based on the SVO data stored in memory. 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 method described in [2-5. Mesh Generation] above. The processor 81 updates the determination mesh data stored in memory to reflect the updated position and material of each vertex of the determination mesh. The processing in step S11 is executed after step S10.
[0257] In the example shown in Figure 39, the process of generating the collision mesh (step S10) is performed every frame, but the process of generating the collision mesh does not have to be performed every frame. For example, if the collision detection process in step S11 is performed only on frames where predetermined conditions are met, the processor 81 may perform the process of generating the collision mesh on the frame in which the collision detection in step S11 is performed. The processor 81 may also perform the process of generating the collision mesh for voxels within the region in the game space where the collision detection in step S11 is performed. For example, in a situation where there are no objects other than voxel objects that are subject to collision detection around the player character in the game space (i.e., a situation where only collision detection between the player character and the surrounding voxel objects needs to be performed), the processor 81 may perform the process of generating the collision mesh for voxels within a predetermined range relative to the player character.
[0258] In step S11, the processor 81 performs collision detection for each object in the game space based on the detection mesh data and object data stored in memory. Specifically, the processor 81 uses the detection mesh for voxel objects and a predetermined shape of detection area set for non-voxel objects to perform collision detection. In this embodiment, the collision detection in step S11 is performed taking into account the speed calculated in step S2. In other words, the processor 81 performs collision detection using the position of each object when it moves at the above speed.
[0259] In this embodiment, the collision determination in step S11 determines, for example, whether or not the following contact occurs. - Contact between a player character performing movement, punching, or pulling actions and voxel objects such as terrain objects. • Contact between the character performing the action of picking up (the fragment object) and the fragment object. • Contact between a line extending from the player character's position in the aiming direction and a voxel object. • Contact between fragment objects released by the player character's throwing action and voxel objects. If the collision detection in step S11 determines that objects have come into contact with each other, then in the next frame, step S2 will execute a process that reflects the result of the object contact, or in the next frame, step S3 will determine that an update event has occurred. The process in step S12 is executed after step S11.
[0260] In step S12, the processor 81 controls the movement of each object in the game space. For example, for the player character, the processor 81 controls movement and various actions based on the operation data acquired in step S1. When a predetermined action occurs, an area for collision detection corresponding to that action is generated in the game space. For example, a fragment object is controlled to move in the aiming direction as described above, in response to being released by a throwing action by the player character. In one processing of step S12, the processor 81 controls each object to perform one frame's worth of action for actions that take place over multiple frames (for example, actions by the player character). As the processing of step S12 is repeatedly executed over multiple frames, each object performs a series of actions related to movement and various actions. The position of an object is basically determined to be the position after moving at the speed calculated in step S2. However, if the collision detection in step S11 determines that an object is in contact with another object and its movement is hindered by the other object it is in contact with, the position of that object is determined not to change. The object data stored in memory is updated to reflect the object after control in step S12. The process in step S13 is executed after step S12.
[0261] In step S13, the processor 81 executes the effect setting process. The effect setting process is the process of setting the effect image to be displayed according to the deformation of the corresponding object. The details of the effect setting process in step S13 will be explained below with reference to Figure 43.
[0262] Figure 43 is a subflowchart showing an example of a detailed flow of the corresponding object update process in step S13 shown in Figure 39. In the effect setting process, in step S51, the processor 81 first determines whether or not there is a corresponding object with the effect flag set to ON. If the result of the determination in step S51 is positive, the process in step S52 is executed. On the other hand, if the result of the determination in step S51 is negative, the processor 81 terminates the effect setting process.
[0263] In step S52, the processor 81 determines whether or not an effect image has occurred. The determination in step S52 is made, for example, by determining whether or not the effect flag was set to ON by the processing in step S25 during the processing of the current frame in the processing loop in steps S1 to S15. If the determination result in step S52 is positive, the processing in step S53 is executed. On the other hand, if the determination result in step S52 is negative, the processing in step S54 is executed.
[0264] In step S53, the processor 81 generates a new effect image. Specifically, it sets the display so that the effect image is newly placed at the location of the voxel object whose effect flag was set to ON by the process in step S25. The method of displaying the effect image is arbitrary; for example, an object representing the effect image may be placed in the virtual space. The specific starting position where the effect image is placed is determined according to the method described in [2-7. Process to change the shape of two voxel objects] above. At this time, the processor 81 stores data indicating the position where the effect image will be placed in memory. If the above display setting is performed, a game image including the effect image is generated and displayed in the process of step S14 described later. The process of step S55 is executed after step S53.
[0265] In step S54, the processor 81 moves the position of the placed effect image. In this embodiment, the processor 81 moves the effect image at a predetermined speed along a predetermined trajectory from the current position to the target position. In one step S54 operation, the position moved by the distance traveled in one frame from the current position is calculated, and the calculated position is set as the position of the effect image after the move. The processor 81 stores the data indicating the calculated position after the move in memory. The target position is the position of the voxel object corresponding to the voxel object for which the effect flag is set to ON. The target position is determined according to the method described in [2-7. Processing to change the shape of two voxel objects] above. The predetermined trajectory may be any trajectory, for example, a parabolic trajectory connecting the starting position and the target position. The processing in step S55 is executed after step S54.
[0266] In step S55, the processor 81 determines whether the effect image has reached the voxel object corresponding to the voxel object for which the effect flag has been set to ON. Specifically, the processor 81 determines whether the position after movement, calculated in step S54, has reached the target position. If the result of the determination in step S55 is positive, the processing in step S56 is executed. On the other hand, if the result of the determination in step S55 is negative, the processor 81 terminates the effect setting process.
[0267] In step S56, the processor 81 sets the effect flag to off. As a result, in the processing of step S14 described later, the effect image corresponding to the effect flag will not be displayed. After step S56, the processor 81 terminates the effect setting process.
[0268] In the effect setting process shown in FIG. 43, although the case where one effect image is displayed has been described, a plurality of effect images may be displayed simultaneously. At this time, the processor 81 executes the processes of steps S52 to S56 for each of the arranged effect images.
[0269] Returning to the description of FIG. 39, in step S14 following the effect setting process of step S13, the processor 81 generates a game image. That is, the processor 81 generates a game image by performing drawing based on a virtual camera for each polygon of the display mesh of the voxel object and each polygon of the object other than the voxel object. Each polygon of the display mesh is drawn using drawing settings such as a texture corresponding to the material set for the polygon. Also, in the present embodiment, when the display setting is such that an effect image is generated by the process of step S13, a game image including the effect image arranged at the position calculated in step S53 or S54 is generated (see FIGS. 31 and 33). Further, 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. 25). The game image generated in step S14 is output to the display device and displayed at a cycle of once per frame.
[0270] 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, the series of processes of 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. 39.
[0271] [4. Operational Effects and Variations of the Present Embodiment] According to the above embodiment, a voxel mesh is generated based on the density and intersection information set for the voxels, and when the density of voxels corresponding to the update range is reduced, the intersection information set for voxels corresponding to the deletion range is deleted. This makes it possible to suppress the increase in processing load in the process of generating a voxel mesh using intersection information.
[0272] In the above embodiment, an example was described in which the voxel density is updated and intersection information is deleted in response to an action by the player character. However, the voxel density may be updated and intersection information may be deleted according to any conditions in the game. For example, the voxel density may be updated and intersection information may be deleted in response to a predetermined amount of time having elapsed from a certain point in the game.
[0273] In the above embodiment, when processing is performed using data (meaning including programs) in a certain information processing device, some of the data necessary for the processing may be transmitted from another information processing device different from the said information processing device. In this case, the said information processing device may perform the processing using the data received from the other information processing device and the data stored in itself.
[0274] In other embodiments, the information processing system may not have to include some of the configurations in the above embodiments, nor may it perform some of the processes executed in the above embodiments. For example, in order to obtain some specific results in the above embodiments, the information processing system may have to include the configurations for obtaining those results and perform the processes for obtaining those results, but it may not have to include other configurations or perform other processes. [Industrial applicability]
[0275] The above embodiment can be used, for example, as a game system or game program, with the aim of suppressing the increase in processing load in the process of generating object meshes. [Explanation of Symbols]
[0276] 1. Game System 2. Main unit 81 processors 201 Player Characters 271,331 terrain objects 282 Update Scope 283 Deletion range 291-293 First Corresponding Object 301-303 Second Corresponding Object 341 Character Objects
Claims
1. On the computer, Voxel data defined in a voxel space within a virtual space, wherein for each of multiple voxels, a density is set that indicates the degree to which the space defined by that voxel is virtually occupied by its contents, and furthermore, for at least some of the voxels, intersection information regarding the intersections between lines connecting voxels and meshes is set based on the voxel data, A mesh based on the voxel data is generated and updated, wherein the vertex coordinates of the mesh are determined at least based on the density and the intersection information. Based on the operation input, the player character is controlled within the virtual space, and in response to a first instruction based on the operation input, the player character is made to perform a first action. The density of voxels in the voxel data corresponding to the first voxel update range set based on the location where the first action was performed is reduced, and if intersection information is set in the voxels of the voxel data corresponding to the first intersection information update range set based on the location where the first action was performed, the intersection information is deleted. A game program that causes the virtual space, including the voxel mesh, to be rendered.
2. The aforementioned intersection information includes, for each voxel, data indicating the coordinates of the intersection point and data indicating the normal direction for the intersection point between the boundary with an adjacent voxel in a predetermined direction and the mesh. To the aforementioned computer, The vertices of the voxel mesh are set between voxels whose density is within a first range and voxels whose density is within a second range. With respect to the voxel for which the intersection information has been set, the coordinates of the vertices of the voxel mesh are determined based on the intersection information such that the faces of the voxel mesh are arranged to face the normal direction at the coordinates of the intersection, or at a position where the error from said arrangement is minimized. With respect to voxels for which the aforementioned intersection information has not been set, based on the intersection set based on the density, The game program according to claim 1, which generates and updates the voxel mesh based on a method for determining the coordinates of the vertices of the voxel mesh.
3. To the aforementioned computer, The game program according to claim 2, which generates and updates the voxel mesh based on a method in which the coordinates of the vertices of the voxel mesh are determined at a position where the distance from a plurality of faces facing the normal direction at the coordinates of the intersection is minimized, based on each of the plurality of intersection information.
4. The aforementioned computer further: In response to a second instruction based on the input, the player character is made to perform a second action. A game program according to any one of claims 1 to 3, wherein the density of voxels in the voxel data that fall within a second voxel update range set in response to the second action is reduced without deleting the intersection information.
5. The voxel data includes at least first voxel data defined in a first voxel space and second voxel data defined in a second voxel space. The first action is an action on the first voxel data, and the first voxel update range is an update range for the first voxel data. The game program according to claim 4, wherein the second action is an action on the second voxel data, and the second voxel update range is an update range for the second voxel data.
6. The voxel data further includes a third voxel data defined in a third voxel space, in which a correspondence relationship is set for each of the multiple voxels with the respective voxels of the second voxel data. The aforementioned computer further: The game program according to claim 5, wherein when the density of voxels in the second voxel data is reduced, the density of the voxels in the third voxel data, which are voxels to be increased, is increased, and the correspondence relationship with the voxels to be decreased, which are voxels to be decreased, is set.
7. The aforementioned voxel data is First voxel data defined in the first voxel space, The second voxel data defined in the second voxel space, It further includes third voxel data defined in a third voxel space, in which, for each of multiple voxels, a correspondence relationship is set between each voxel of the second voxel data, The aforementioned computer further: A game program according to any one of claims 1 to 3, wherein, based on the first action, when the density of voxels in the second voxel data is reduced, the density of the voxels in the third voxel data, which are voxels to be increased and which have a correspondence relationship with the voxels to be reduced, is increased, and if the intersection information was set for the voxels to be reduced, the same intersection information that was deleted from the voxels to be reduced is set for the voxels to be increased.
8. The aforementioned computer further: In response to a third instruction based on the input, the player character is made to perform a third action. A game program according to any one of claims 1 to 3, wherein the density of voxels in the voxel data that fall within the third voxel update range set in response to the third action is updated, and intersection information is set for at least some of the voxels.
9. The voxel data includes at least a fourth voxel data defined in a fourth voxel space, in which the intersection information is set for a predetermined voxel, The aforementioned computer further: If the density of the fourth voxel data decreases based on the first action, A game program according to any one of claims 1 to 3, wherein the density of voxels in the fourth voxel data corresponding to the fourth voxel update range is increased, and the intersection information deleted based on the first action is restored.
10. Voxel data defined in a voxel space within a virtual space, wherein for each of multiple voxels, a density is set that indicates the degree to which the space defined by that voxel is virtually occupied by its contents, and furthermore, for at least some of the voxels, intersection information regarding the intersections between lines connecting voxels and meshes is set based on the voxel data, A voxel mesh is generated and updated based on the voxel data, wherein the vertex coordinates of the mesh are determined at least based on the density and the intersection information. Based on the operation input, the player character is controlled within the virtual space, and in response to a first instruction based on the operation input, the player character is made to perform a first action. The density of voxels in the voxel data corresponding to the first voxel update range set based on the location where the first action was performed is reduced, and if intersection information is set in the voxels of the voxel data corresponding to the first intersection information update range set based on the location where the first action was performed, the intersection information is deleted. An information processing system that renders the virtual space including the voxel mesh.
11. The aforementioned intersection information includes, for each voxel, data indicating the coordinates of the intersection point and data indicating the normal direction for the intersection point between the boundary with an adjacent voxel in a predetermined direction and the mesh. The vertices of the voxel mesh are set between voxels whose density is within a first range and voxels whose density is within a second range. With respect to the voxel for which the intersection information has been set, the coordinates of the vertices of the voxel mesh are determined based on the intersection information such that the faces of the voxel mesh are arranged to face the normal direction at the coordinates of the intersection, or at a position where the error from said arrangement is minimized. With respect to voxels for which the aforementioned intersection information has not been set, based on the intersection set based on the density, The information processing system according to claim 10, which generates and updates the voxel mesh based on a method for determining the coordinates of the vertices of the voxel mesh.
12. The information processing system according to claim 11, which generates and updates the voxel mesh based on a method for determining the coordinates of the vertices of the voxel mesh at a position where the distance from a plurality of faces facing the normal direction is minimized at the coordinates of the intersection, based on each of the plurality of intersection information.
13. In response to a second instruction based on the input, the player character is made to perform a second action. An information processing system according to any one of claims 10 to 12, wherein the density of voxels in the voxel data that fall within a second voxel update range set in response to the second action is reduced without deleting the intersection information.
14. The voxel data includes at least first voxel data defined in a first voxel space and second voxel data defined in a second voxel space. The first action is an action on the first voxel data, and the first voxel update range is an update range for the first voxel data. The information processing system according to claim 13, wherein the second action is an action on the second voxel data, and the second voxel update range is an update range for the second voxel data.
15. The voxel data further includes a third voxel data defined in a third voxel space, in which a correspondence relationship is set for each of the multiple voxels with the respective voxels of the second voxel data. The information processing system according to claim 14, wherein when the density of voxels in the second voxel data is reduced, the density of the voxels in the third voxel data, which are voxels to be increased, is increased, and the correspondence relationship with the voxels to be decreased, which are voxels to be decreased, is set.
16. The aforementioned voxel data is First voxel data defined in the first voxel space, The second voxel data defined in the second voxel space, It further includes third voxel data defined in a third voxel space, in which, for each of multiple voxels, a correspondence relationship is set between each voxel of the second voxel data, An information processing system according to any one of claims 10 to 12, wherein, based on the first action, the density of voxels in the second voxel data is reduced, the density of the voxels in the third voxel data, which are voxels to be increased, that have a correspondence relationship with the voxels to be reduced, is increased, and if the intersection information was set for the voxels to be reduced, the same intersection information that was deleted from the voxels to be reduced is set for the voxels to be increased.
17. In response to a third instruction based on the input, the player character is made to perform a third action. An information processing system according to any one of claims 10 to 12, wherein the density of voxels in the voxel data that fall within the third voxel update range set in response to the third action is updated, and intersection information is set for at least some of the voxels.
18. The voxel data includes at least a fourth voxel data defined in a fourth voxel space, in which the intersection information is set for a predetermined voxel, If the density of the fourth voxel data decreases based on the first action, An information processing system according to any one of claims 10 to 12, wherein the density of voxels in the fourth voxel data corresponding to the fourth voxel update range is increased, and the intersection information deleted based on the first action is restored.
19. An information processing device equipped with a processor, The aforementioned processor, Voxel data defined in a voxel space within a virtual space, wherein for each of multiple voxels, a density is set that indicates the degree to which the space defined by that voxel is virtually occupied by its contents, and furthermore, for at least some of the voxels, intersection information regarding the intersection points between the lines connecting the voxels and the mesh is set based on the voxel data, A voxel mesh is generated and updated based on the voxel data, wherein the vertex coordinates of the mesh are determined at least based on the density and the intersection information. Based on the operation input, the player character is controlled within the virtual space, and in response to a first instruction based on the operation input, the player character is made to perform a first action. The density of voxels in the voxel data corresponding to the first voxel update range set based on the location where the first action was performed is reduced, and if intersection information is set in the voxels of the voxel data corresponding to the first intersection information update range set based on the location where the first action was performed, the intersection information is deleted. An information processing device that performs drawing of the virtual space including the voxel mesh.
20. The aforementioned intersection information includes, for each voxel, data indicating the coordinates of the intersection point and data indicating the normal direction for the intersection point between the boundary with an adjacent voxel in a predetermined direction and the mesh. The aforementioned processor, The vertices of the voxel mesh are set between voxels whose density is within a first range and voxels whose density is within a second range. With respect to the voxel for which the intersection information has been set, the coordinates of the vertices of the voxel mesh are determined based on the intersection information such that the faces of the voxel mesh are arranged to face the normal direction at the coordinates of the intersection, or at a position where the error from said arrangement is minimized. With respect to voxels for which the aforementioned intersection information has not been set, based on the intersection set based on the density, The information processing apparatus according to claim 19, which generates and updates the voxel mesh based on a method for determining the coordinates of the vertices of the voxel mesh.
21. The aforementioned processor, The information processing apparatus according to claim 20, which generates and updates the voxel mesh based on a method for determining the coordinates of the vertices of the voxel mesh at a position where the distance from a plurality of faces facing the normal direction is minimized at the coordinates of the intersection, based on each of the plurality of intersection information.
22. In the information processing system, Voxel data defined in a voxel space within a virtual space, wherein for each of multiple voxels, a density is set that indicates the degree to which the space defined by that voxel is virtually occupied by its contents, and furthermore, for at least some of the voxels, intersection information regarding the intersection points between the lines connecting the voxels and the mesh is set based on the voxel data, A mesh based on the voxel data is generated and updated, wherein the vertex coordinates of the mesh are determined at least based on the density and the intersection information. Based on the operation input, the player character is controlled within the virtual space, and in response to a first instruction based on the operation input, the player character is made to perform a first action. The density of voxels in the voxel data corresponding to the first voxel update range set based on the location where the first action was performed is reduced, and if intersection information is set in the voxels of the voxel data corresponding to the first intersection information update range set based on the location where the first action was performed, the intersection information is deleted. A game processing method for rendering the virtual space, which includes the voxel mesh.
23. The aforementioned intersection information includes, for each voxel, data indicating the coordinates of the intersection point and data indicating the normal direction for the intersection point between the boundary with an adjacent voxel in a predetermined direction and the mesh. In the aforementioned information processing system, The vertices of the voxel mesh are set between voxels whose density is within a first range and voxels whose density is within a second range. With respect to the voxel for which the intersection information has been set, the coordinates of the vertices of the voxel mesh are determined based on the intersection information such that the faces of the voxel mesh are arranged to face the normal direction at the coordinates of the intersection, or at a position where the error from said arrangement is minimized. With respect to voxels for which the aforementioned intersection information has not been set, based on the intersection set based on the density, The game processing method according to claim 22, wherein the voxel mesh is generated and updated based on a method for determining the coordinates of the vertices of the voxel mesh.
24. In the aforementioned information processing system, The game processing method according to claim 23, wherein the voxel mesh is generated and updated based on a method in which the coordinates of the vertices of the voxel mesh are determined at a position where the distance from a plurality of faces facing the normal direction at the coordinates of the intersection is minimized, based on each of the plurality of intersection information.
25. The aforementioned information processing system further includes: In response to a second instruction based on the input, the player character is made to perform a second action. A game processing method according to any one of claims 22 to 24, wherein the density of voxels in the voxel data that fall within the second voxel update range set in response to the second action is reduced without deleting the intersection information.
26. The voxel data includes at least first voxel data defined in a first voxel space and second voxel data defined in a second voxel space. The first action is an action on the first voxel data, and the first voxel update range is an update range for the first voxel data. The game processing method according to claim 25, wherein the second action is an action on the second voxel data, and the second voxel update range is an update range for the second voxel data.
27. The voxel data further includes a third voxel data defined in a third voxel space, in which a correspondence relationship is set for each of the multiple voxels with the respective voxels of the second voxel data. The aforementioned information processing system further includes: The game processing method according to claim 26, wherein when the density of voxels in the second voxel data is reduced, the density of the voxels in the third voxel data, which are voxels to be increased, is increased, and the correspondence relationship with the voxels to be decreased, which are voxels to be decreased, is set.
28. The aforementioned voxel data is First voxel data defined in the first voxel space, The second voxel data defined in the second voxel space, It further includes third voxel data defined in a third voxel space, in which, for each of multiple voxels, a correspondence relationship is set between each voxel of the second voxel data, The aforementioned information processing system further includes: A game processing method according to any one of claims 22 to 24, wherein, based on the first action, the density of voxels in the second voxel data is reduced, the density of the voxels in the third voxel data, which are voxels to be increased, that have a correspondence relationship with the voxels to be reduced, is increased, and if the intersection information was set for the voxels to be reduced, the same intersection information that was deleted from the voxels to be reduced is set for the voxels to be increased.
29. The aforementioned information processing system further includes: In response to a third instruction based on the input, the player character is made to perform a third action. A game processing method according to any one of claims 22 to 24, wherein the density of voxels in the voxel data that fall within the third voxel update range set in response to the third action is updated, and intersection information is set for at least some of the voxels.
30. The voxel data includes at least a fourth voxel data defined in a fourth voxel space, in which the intersection information is set for a predetermined voxel, The aforementioned information processing system further includes: If the density of the fourth voxel data decreases based on the first action, A game processing method according to any one of claims 22 to 24, wherein the density of voxels in the fourth voxel data corresponding to the fourth voxel update range is increased, and the intersection information deleted based on the first action is restored.