Information processing program, information processing system, information processing device, and information processing method
The information processing program deforms objects in a virtual space by generating and updating particle data to create voxel objects, addressing the challenge of time-based deformation in virtual environments.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-01-30
- Publication Date
- 2026-04-02
AI Technical Summary
Existing methods fail to deform objects in a virtual space over time using particles effectively.
An information processing program that generates particle data, calculates particle positions over time, updates voxel data, and generates meshes to deform objects in a virtual space, utilizing particle generation, calculation, voxel data generation, and mesh generation means.
Enables accurate deformation of objects in a virtual space over time using particles, reducing processing load and ensuring precise object representation.
Smart Images

Figure 0007839814000001 
Figure 0007839814000002 
Figure 0007839814000003
Abstract
Description
Technical Field
[0006] , ,
[0007] , ,
[0001] The present invention relates to an information processing program, an information processing system, an information processing apparatus, and an information processing method for generating an object in a virtual space using voxel data.
Background Art
[0002] Conventionally, fluid simulation has been performed using particles, and the simulation results have been visualized using voxels (see, for example, Non-Patent Document 1).
Prior Art Documents
Non-Patent Documents
[0003]
Non-Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] Conventionally, an existing object arranged in a virtual space has not been deformed over time using particles.
[0005] Therefore, an object of the present invention is to provide an information processing program, an information processing system, an information processing apparatus, and an information processing method capable of deforming an existing object arranged in a virtual space over time using particles. [[ID=4l]]
Means for Solving the Problems
[0006] In order to solve the above problems, the present invention employs the following configurations (1) to (15). <o000035> (1) An example of the present invention is an information processing program executed in a computer of an information processing device. The information processing program causes the computer to function as a particle generation means, a particle calculation means, a voxel data generation means, a mesh generation means, and an image generation means. The particle generation means generates particle data including data indicating the positions of multiple particles corresponding to the shape of an existing object, which is an object placed in a virtual space. The particle calculation means calculates the change in the positions of the multiple particles over time and updates the particle data based on the calculation results. The voxel data generation means generates voxel data relating to voxel objects having a shape corresponding to the positions of the multiple particles, based on the particle data. The mesh generation means generates a mesh of voxel objects based on the voxel data. The image generation means generates an image of the mesh drawn in the virtual space for output to a display device.
[0008] According to the configuration described in (1) above, existing objects can be deformed over time using particle data.
[0009] (2) The existing object may be an object generated based on voxel data generated before the particle generation means generates particle data related to the existing object.
[0010] According to the configuration described in (2) above, voxel objects placed in virtual space can be deformed over time using particles.
[0011] (3) The particle generation means may generate particle data based on whether or not at least a portion of the existing object exists in a plurality of unit regions, each of which is divided into a grid-like area containing the existing object in the virtual space.
[0012] According to the configuration described in (3) above, particle data indicating a group of particles arranged according to the shape of an existing object can be generated with a small amount of computation.
[0013] (4) The length of one side of the unit region may be equal to the length of one side of the voxel corresponding to the voxel data generated based on the particle data.
[0014] According to the configuration described in (4) above, it is possible to generate voxel objects that adequately reflect the shape represented by multiple particles, and the processing load can be reduced by limiting the number of particles.
[0015] (5) The particle calculation means may update the particle data so that at least some of the particles disappear when the disappearance conditions are met.
[0016] According to the configuration in (5) above, it is possible to represent the process of an object shrinking while deforming.
[0017] (6) The particle calculation means may repeatedly update the particle data. The particle calculation means may use the previously updated particle data to calculate the current particle data values that indicate the new positions of multiple particles, without using the voxel data generated based on the previously updated particle data.
[0018] According to the configuration described in (6) above, the position of the particle after movement can be calculated with high accuracy by using the previously updated particle data.
[0019] (7) The information processing program may further enable the computer to function as a voxel updating means, which updates the range of the voxel space where voxels are set for voxel data generated based on particle data, based on updated particle data.
[0020] According to the configuration described in (7) above, the possibility that the moved particle will be located outside the sub-voxel space can be reduced.
[0021] (8) The particle calculation means may control the positions of a plurality of particles so that the particles are located within a voxel space in which voxels regarding voxel data generated based on the particle data are set.
[0022] According to the configuration of (8) above, the possibility that the particles are located outside the sub-voxel space can be further reduced.
[0023] (9) The particle generation means may generate particle data corresponding to the existing object in response to the existing object coming into contact with a first object different from the existing object.
[0024] According to the configuration of (9) above, the processing load can be reduced by not generating particle data during the period before contact when there is no need to deform the existing object.
[0025] (10) The particle generation means may generate particle data corresponding to the existing object on at least the condition that the material set for the existing object and the material set for the first object are in a predetermined combination.
[0026] According to the configuration of (10) above, it is possible to express how the existing object is deformed in response to coming into contact with a specific object.
[0027] (11) The information processing program may further cause the computer to function as contact determination means and disappearance means. The contact determination means determines whether a particle has come into contact with a second object different from the voxel object, or whether the voxel object has come into contact with the second object. The disappearance means causes the portion of the second object that has come into contact to disappear from the virtual space when it is determined that a particle has come into contact with the second object, or when it is determined that the voxel object has come into contact with the second object.
[0028] According to the configuration described in (11) above, it is possible to represent how other objects disappear due to voxel objects.
[0029] (12) The disappearance means may make the contacted portion of the second object disappear from the virtual space, provided that the material set on the voxel object or existing object and the material set on the second object are in a predetermined combination.
[0030] According to the configuration described in (12) above, a voxel object can cause a specific object to disappear, while preventing other objects from disappearing.
[0031] (13) The particle calculation means may update the particle data so that each of the multiple particles moves to a destination position set for each of the multiple particles as time progresses.
[0032] According to the configuration described in (13) above, each particle can be easily moved to a desired position, and the process of deforming the object into a desired shape becomes easier.
[0033] (14) The information processing device may store data indicating the target position after changes due to changes in the positions of multiple particles over time. The particle calculation means may set destination positions based on the target positions and update the particle data until each of the multiple particles reaches its target position.
[0034] According to the configuration described in (14) above, multiple particles can be moved to any position, and the object can be deformed into a desired shape.
[0035] (15) The information processing device may store post-change data relating to the shape of an object after it has changed over time. The mesh generation means may generate a mesh of voxel objects based on voxel data based on particle data, at least until each of the plurality of particles reaches a target position. At a predetermined timing after each of the plurality of particles has reached a target position, the mesh generation means may terminate the generation of the mesh based on voxel data based on particle data and generate a mesh based on the post-change data.
[0036] According to the configuration described in (15) above, the shape of the deformed object can be adjusted to a highly accurate form.
[0037] Another example of the present invention is an information processing device (for example, a terminal device or server) or information processing system that includes all or part of the means described in (1) to (15) above. Another example of the present invention is an information processing method (specifically, a game processing method) in which the information processing system performs each of the processes described in (1) to (15) above. [Effects of the Invention]
[0038] According to the above-described information processing program, information processing system, information processing device, and information processing method, existing objects placed in a virtual space can be deformed over time using particles. [Brief explanation of the drawing]
[0039] [Figure 1] This diagram shows an example of the main unit with the left and right controllers attached. [Figure 2] This diagram shows an example of the left and right controllers being removed from the main unit. [Figure 3] A six-view drawing showing an example of the main unit. [Figure 4] A six-view drawing showing an example of a left controller. [Figure 5] A six-view drawing showing an example of a 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 the contents of voxel data. [Figure 12] A diagram showing an example of property information that indicates the properties of a material. [Figure 13] A diagram showing an example of texture information that indicates the texture of a material. [Figure 14] A diagram showing an example of a mesh generation method. [Figure 15] A diagram showing an example of a game image that includes terrain objects. [Figure 16] A diagram showing an example of a primary voxel object and a secondary voxel object. [Figure 17] A diagram showing an example of a game space with ice objects placed within it. [Figure 18] Figure 17 shows an example of a state where the ice object 222 is in contact with the lava terrain object 223. [Figure 19] Figure 18 shows an example of a deformed state of an ice object. [Figure 20] This diagram shows an example of a process that deforms an object using particle data. [Figure 21] This diagram shows an example of setting up multiple particles based on an existing object. [Figure 22] This figure shows an example of generating a deformed object 233 from a group of particles 232. [Figure 23] This diagram shows an example of a process that moves the sub-voxel space. [Figure 24]A diagram showing an example of a process for correcting the position of particles. [Figure 25] This diagram illustrates an example of how a voxel object gradually grows in size. [Figure 26] This diagram shows an example of how a deformed object can cause other objects to disappear. [Figure 27] This diagram shows an example of various types of data used in information processing in Game System 1. [Figure 28] A flowchart illustrating an example of the game processing flow executed by Game System 1. [Figure 29] A subflowchart showing an example of a detailed flow of the particle processing in step S5, as shown in Figure 28. [Modes for carrying out the invention]
[0040] [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 main game device 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.
[0041] 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.
[0042] 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".
[0043] 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.
[0044] 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.
[0045] 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.
[0046] 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).
[0047] 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.
[0048] 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.
[0049] 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.
[0050] 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).
[0051] 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.
[0052] 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.
[0053] 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.
[0054] Furthermore, the left controller 3 is equipped with a terminal 42 for wired communication between the left controller 3 and the main unit 2.
[0055] 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.
[0056] 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.
[0057] Furthermore, the right controller 4 is equipped with a terminal 64 for wired communication between the right controller 4 and the main unit 2.
[0058] 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.
[0059] 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).
[0060] 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.
[0061] 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.
[0062] The processor 81 performs the above-mentioned information processing by appropriately reading and writing data to the flash memory 84 and DRAM 85, as well as to each of the above-mentioned storage media.
[0063] 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 performs wireless communication 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 sent and received by communicating directly between multiple main unit 2.
[0064] 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.
[0065] 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.
[0066] 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.
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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.
[0071] 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.
[0072] 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.
[0073] 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.
[0074] 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.
[0075] 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.
[0076] 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.
[0077] 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).
[0078] 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.
[0079] 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.
[0080] 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.
[0081] [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 26. 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.
[0082] [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 the data set for 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 each of the multiple voxels set in the game space as data for generating voxel objects in the game space.
[0083] 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.
[0084] Furthermore, the terrain object shown in Figure 8 is 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 position; if it is less than or equal to the predetermined value, nothing is placed at the voxel's position." 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, in practice, voxel objects are generated (based on voxel data) using a rule that results in a shape more complex than the length of one side of a voxel, such as the terrain object shown in Figure 13, which will be described later. The rule for determining the shape of a voxel object based on voxel data is arbitrary. In other embodiments, the game system 1 may generate voxel objects as shown in Figure 8 or as shown in Figure 15 based on object data.
[0085] 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.
[0086] 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).
[0087] Figure 11 shows an example of the contents of voxel data. In this embodiment, the game space can be divided into a plurality of voxels arranged in a grid. The game system 1 stores voxel data associated with each voxel in the game space. The voxel data indicates the presence or absence of a voxel object in the voxel corresponding to the voxel data.
[0088] As shown in Figure 11, the voxel data includes density data. The density data indicates the density, which is an index used to define the shape of the voxel object in the voxel corresponding to the voxel data (specifically, the shape defined by the mesh described later). As will be described 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 above density. In other words, in this embodiment, the above density is used to create a mesh that defines the surface of the voxel object.
[0089] In this embodiment, density can take the form of an integer value within a range from a lower limit (e.g., 0) to an upper limit (e.g., 255). In this embodiment, the game system 1 determines the 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 voxel objects within that voxel, while 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 voxel objects within a voxel. Density can also be said to be an indicator that shows the degree to which objects are contained within the area in which each voxel is defined. For example, if the density is 0, there are no voxel objects within that voxel; if the density is 255, the entire voxel is filled with voxel objects; and if the density is between 0 and 255, voxel objects can occupy the voxel in proportion to the value. Based on the above density, the shape of the mesh, i.e., the shape of the voxel object, can be determined. However, the volume of the voxel object generated based on the above density does not need to exactly match the ratio indicated by the density. For example, the volume of the voxel object may differ between the method used to generate the voxel object shown in Figure 8 and the method used to generate the voxel object shown in Figure 15, even if they are based on the same density.
[0090] In other embodiments, density may indicate either a state in which voxel objects occupy the entire region within the voxel, or a state in which no voxel objects are contained within the region within the voxel. For example, density data may only take the values of 0 or 1.
[0091] As shown in Figure 11, voxel data includes material data. Material data indicates the material (in other words, substance) of the voxel object generated by the voxel data. In this embodiment, the voxel object is assigned materials such as sand, rock, and soil. That is, in this embodiment, multiple types of materials are provided as materials that can be assigned to the voxel object, and the voxel object is assigned one of these multiple types of materials.
[0092] As shown in Figure 11, in this embodiment, the material data indicates the material identification information (referred to as the "material ID"). In this embodiment, the game system 1 stores material information indicating the properties and texture of each material provided in the game. In this embodiment, the material information associates the material ID with the properties of the material and the appearance of the material (specifically, the texture). Specifically, the material information is information that associates the material ID with the identification information of the properties of the material (referred to as the "property ID") and the identification information of the texture of the material (referred to as the "texture ID") (see Figure 11).
[0093] Figure 12 shows an example of property information indicating the properties of a material. As shown in Figure 12, the game system 1 stores property information that associates the above property ID with information indicating the content of the property indicated by the property ID. The properties of a material are the properties that the voxel object to which the material is set has in the game, such as weight and slipperiness as shown in Figure 12. The specific content of the properties is arbitrary, and for example, the following information may be set as the properties of the material. ·temperature • Fragility (for example, the number of times a voxel object will break when subjected to an impact) • Whether or not other objects can be attached to a voxel object. • The amount of health the player character recovers when the player character destroys a voxel object. • The amount of in-game currency a player character acquires when they destroy a voxel object. The specific properties set for the material are arbitrary. In other embodiments, different information may be set as information indicating the properties of the material.
[0094] Figure 13 shows an example of texture information indicating the texture of a material. As shown in Figure 13, the game system 1 stores texture information that associates the above-mentioned texture ID with the texture indicated by that texture ID.
[0095] In addition to texture information, optional information regarding color and / or pattern may be set as data that defines the appearance of a voxel object. For example, a crack pattern may be set as information regarding the appearance of a voxel object. By using such a pattern, game system 1 can generate an image of a voxel object that represents a cracked appearance.
[0096] As described above, in this embodiment, the material data defines the properties of the voxel object and the texture used for the voxel object by the material ID. For example, if the material ID indicated by the material data included in the voxel data is "002", the properties indicated by the property ID "001" associated with that material ID in the material information are set as the properties of the voxel object corresponding to that voxel data (see the arrow shown in Figure 11). In the above case, the texture indicated by the texture ID "002" associated with that material ID in the material information is applied to the voxel object corresponding to that voxel data (see the arrow shown in Figure 11).
[0097] As described above, in this embodiment, the game system 1 manages the properties and textures of materials separately. Therefore, in this embodiment, it is possible to easily set up multiple types of materials that have the same properties but different appearances (i.e., textures), or multiple types of materials that have different properties but the same appearance.
[0098] The material data may be any data that can identify the properties and / or texture of the material. For example, in other embodiments, the material data may indicate the property ID and texture ID, or it may have a data structure that actually contains data indicating the properties and texture of the material.
[0099] Furthermore, material data may also include information about the material, which may contain other information different from the properties and textures described above. For example, material data may include effect data that indicates an effect that occurs when the effect conditions set for a voxel object (for example, when a part of the voxel object is destroyed, or when a character steps on the voxel object) are met. Note that effect data may be data that indicates an effect image (for example, an effect image that represents the destruction of the voxel object) or data that indicates an effect sound (the sound of a character walking on the voxel object).
[0100] As shown in Figure 11, voxel data includes state data that indicates the state of the voxel object. The specific content of the state data is arbitrary. For example, the state data may indicate whether the voxel object is wet or not, or it may indicate the amount of damage inflicted on the voxel object. The content of the state data may be updated during gameplay.
[0101] [2-2. Mesh] In this embodiment, the surface of a voxel object is represented by a mesh. A mesh is a collection of multiple faces (specifically, polygons) placed in the game space. In this embodiment, the game system 1 generates a mesh for a voxel object based on the voxel data of each voxel set in the game space. An example of generating a mesh based on voxel data is described below.
[0102] Figure 14 shows an example of a mesh generation method. Note that in Figure 14, voxels and meshes are represented in two dimensions for clarity and ease of explanation; however, in reality, a three-dimensional mesh is generated based on voxels in three-dimensional space.
[0103] As described above, in this embodiment, the density set for a voxel is set within the range of 0 to 255. In this embodiment, voxels with a density equal to or greater than the reference value are considered to be inside the object, and voxels with a density less than the reference value are considered to be outside the object. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., reference value = 1), and the reference value can be, for example, 128. In the example shown in Figure 10, the density of voxel 201 and the other outer voxels is set to 0, the density of voxel 202 is set to 100 (less than the reference value), and the densities of voxels 203 and 204 are set to 150 and 200 (greater than or equal to the reference value). In this embodiment, the game system 1 generates vertices between voxels with a density equal to or greater than the reference value and voxels with a density less than the reference value. Specifically, for each region spanning eight adjacent voxels (four in the diagram) (the region enclosed by the dotted line in the diagram), a determination 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 a certain threshold and voxels with a density below that threshold. Furthermore, if the boundary between adjacent vertices (the boundary of the region containing each vertex) passes through a range of voxels with a density above a certain threshold and voxels with a density below that threshold, a polygon mesh is generated by connecting those vertices. The coordinates of the vertices are determined by comparing the densities of adjacent voxels along each of the X, Y, and Z axes and interpolating based on the density difference. At this time, coordinate calculations can also be performed based on normal information, but the normal information may be stored in advance for at least some voxels, or if it is not stored, the normal information may also be calculated based on the densities of adjacent voxels. Note that in Figure 10, the density of voxel 202 is below the threshold, so voxel 202 is treated as outside the object when determining the presence or absence of a vertex, but the density value of voxel 202 itself is used in the calculation of the coordinates of the generated vertices. If the baseline value is set lower than the density of voxel 202, the result will be an increase in the number of vertices on the upper right and upper left sides of voxel 202 in Figure 10.
[0104] As described above, by generating a polygon mesh, 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 that 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 will be smaller because there will be fewer vertices compared to when they are treated as being inside the object. In other words, it is not necessary to calculate the polygon mesh so that the volume corresponds precisely to the density value.
[0105] Figure 15 shows an example of a game image including terrain objects. In this embodiment, by generating a mesh as described above, the voxel object can be made to have a shape with complex irregularities compared to the length of one side of a voxel.
[0106] The method for generating the mesh based on the voxel data is arbitrary. For example, in another embodiment, if the density of the voxel data is greater than a predetermined value, the mesh may be generated such that cubes are placed in the voxels (see Figure 8).
[0107] Game System 1 determines the appearance (i.e., color and / or pattern) of each face of the mesh generated as described above, according to the material identified by the voxel data. Specifically, Game System 1 determines the texture to be used for rendering each face of the mesh based on the voxel data, and generates an image of the voxel object by mapping the determined texture to each face. The texture mapped to each face of the mesh is determined based on the voxel data of the voxel used to generate that face (referred to as the target voxel) among the voxels in which the voxel object exists. The target voxel is, depending on the mesh generation method, for example, one or more voxels arranged around that face. In other words, the texture mapped to the face of the mesh is determined to be the texture corresponding to the material set for one or more voxels arranged around that face.
[0108] In other embodiments, a single voxel data may contain multiple types (e.g., two types) of material data. In this case, the voxel data includes ratio data relating to the multiple types of material data. The ratio data is used to determine the texture to be used for the voxel object, and indicates the ratio by which each material (specifically, the texture corresponding to the material) represented by the multiple types of material data affects the appearance (specifically, the color and / or pattern) of the voxel object. Furthermore, when determining the texture to be mapped to each face of the mesh, the texture is determined based on the various data (specifically, density data, multiple types of material data, and ratio data) contained in the voxel data of the target voxel. For example, if multiple types of materials are set for a target voxel corresponding to one face, the texture corresponding to the material with the greatest influence (one type) may be used, taking the above ratio into consideration, or each texture corresponding to the multiple types of materials may be used, taking the above ratio into consideration.
[0109] In other embodiments, there may be both voxel objects that use voxel data containing one type of material data and voxel objects that use voxel data containing two types of material data.
[0110] [2-3. Primary voxels and secondary voxels] In this embodiment, in addition to the terrain objects described above, other objects different from terrain objects may also be generated as voxel objects. These other objects include, for example, objects representing ice, objects representing rocks, and enemy objects, as described later.
[0111] In this embodiment, the shape of the other objects is defined by voxel data relating to voxels different from those of the terrain objects. Hereinafter, the voxel space relating to the terrain objects will be referred to as the "primary voxel space," the voxels in the primary voxel space will be referred to as "primary voxels," and the voxel data set for the primary voxels will be referred to as "primary voxel data." On the other hand, the voxel space relating to the other objects will be referred to as the "sub-voxel space," the voxels in the sub-voxel space will be referred to as "sub-voxels," and the voxel data set for the sub-voxels will be referred to as "sub-voxel data." In this embodiment, the shape of the terrain objects is defined by primary voxel data, and the shape of the other objects is defined by sub-voxel data. In this embodiment, a voxel object whose shape is defined by primary voxel data will be referred to as a "primary voxel object," and a voxel object whose shape is defined by sub-voxel data will be referred to as a "sub-voxel object."
[0112] Figure 16 shows an example of a primary voxel object and a secondary voxel object. In Figure 16, for the purpose of clearly illustrating the difference between primary and secondary voxels, voxel objects (i.e., terrain object 211 and rock object 212) are shown whose meshes are generated by the same rules as when the mesh of the terrain object shown in Figure 8 is generated. In other words, the voxel object shown in Figure 16 is assumed to have a mesh generated by the rule that "if the density set for a voxel is greater than a predetermined value, a cube is placed at the location of the voxel, and if it is less than or equal to the predetermined value, nothing is placed at the location of the voxel." In Figure 16, for the purpose of making the drawing easier to read, terrain object 211 is shown with a dotted line, rock object 212 is shown with a solid line, and the region 213 of the secondary voxel space is shown with a dashed line.
[0113] The shape of the terrain object 211 is defined by the main voxel data. In this embodiment, the main voxel space is assumed to be set for the entire game space (therefore, the extent of the main voxel space is not shown in Figure 16).
[0114] On the other hand, the shape of the rock object 212 is defined by sub-voxel data. In this embodiment, the sub-voxel space is set as part of the game space (which can also be said to be part of the main voxel space). In the example shown in Figure 16, the area 213 indicated by the dashed line is the range in which the sub-voxel space is set. The shape of the rock object 212 is defined by the sub-voxel data set for each sub-voxel set within the sub-voxel space. The rock object 212 will be placed within the range of the sub-voxel space.
[0115] The length of one side of a sub-voxel may be set to be different from or the same as the length of one side of a main voxel. For example, as shown in Figure 16, by defining a sub-voxel space in which voxels with shorter side lengths than main voxels are defined as sub-voxels, the shape of a sub-voxel object based on sub-voxel data can be represented in more detail than a terrain object based on main voxel data.
[0116] Furthermore, in this embodiment, the game system 1 sets the direction of the coordinate axes in the sub-voxel space (i.e., the orientation of each edge of the sub-voxel) independently of the direction of the coordinate axes in the main voxel space (i.e., the orientation of each edge of the main voxel). For example, in the example shown in Figure 16, the direction of the coordinate axes in the sub-voxel space is different from the direction of the coordinate axes in the main voxel space. This makes it easier to position sub-voxel objects in a free orientation in the game space. For example, it becomes easy to position sub-voxel objects so that they extend in a direction different from the coordinate axes in the main voxel space. It also becomes easier to move (for example, rotate) sub-voxel objects independently of terrain objects.
[0117] Game System 1 can change the position of sub-voxel objects (more precisely, their position in game space) by changing the position of the sub-voxel space within the game space. Furthermore, Game System 1 can change the orientation of sub-voxel objects (more precisely, their orientation in game space) by changing the orientation of the sub-voxel space relative to the game space.
[0118] In this embodiment, when multiple sub-voxel objects are generated, the game system 1 sets a sub-voxel space for each sub-voxel object. This allows the position and orientation of each sub-voxel space in the game space to be set for each sub-voxel space. Furthermore, it becomes easier to generate multiple sub-voxel objects that each have a different shape (for example, multiple sub-voxel objects that have shapes extending in different directions from each other). Note that each sub-voxel space may be arranged so that a part of one sub-voxel space overlaps with a part of another sub-voxel space. In another embodiment, multiple sub-voxel objects may be set in a single sub-voxel space.
[0119] The method for generating the mesh of a sub-voxel object based on sub-voxel data may be the same as, or different from, the method for generating the mesh of a terrain object based on primary voxel data.
[0120] [2-4. Deformation processing using particle data] Next, we will explain the process of deforming voxel objects using particle data. Particle data is data that represents multiple particles (hereinafter sometimes referred to as "particle group") corresponding to an object. Specifically, particle data includes data that indicates the position of each particle. In this embodiment, the game system 1 can naturally represent how voxel objects deform (for example, how they melt) by using particle data. Below, we will explain an example of how an ice object melts, referring to Figures 17 to 24.
[0121] Figure 17 shows an example of a game space with ice objects placed within it. In the example shown in Figure 17, a player object 221 throws an ice object (i.e., an object with the material set to ice) 222 towards a lava terrain object (i.e., a terrain object with the material set to lava) 223. In the example shown in Figure 17, the lava terrain object 223 is the primary voxel object, and the ice object 222 is the secondary voxel object.
[0122] Figure 18 shows an example of the state in which the ice object 222 comes into contact with the lava terrain object 223, starting from the state shown in Figure 17. Figure 19 also shows an example of the state in which the ice object has been deformed, starting from the state shown in Figure 18. As shown in Figures 18 and 19, in this embodiment, the ice object 222 deforms when it comes into contact with the lava terrain object 223, and furthermore, it gradually becomes smaller. This makes it possible to represent the process of the ice object 222 melting due to the lava terrain object 223. When performing such deformation of the ice object 222, the game system 1 performs the deformation process using particle data.
[0123] Figure 20 shows an example of a process that deforms an object using particle data. The object in state (a) of Figure 20 is the object 231 before deformation using particle data (for example, the ice object 222 mentioned above). Hereafter, the object 231 before deformation will be referred to as the "existing object".
[0124] In this embodiment, if the generation conditions are met for an existing object, the game system 1 generates particle data based on the existing object. In the example shown in Figure 20, the game system 1 generates particle data indicating the positions of multiple particles (i.e., the particle group 232 shown in Figure 20(b)) that are arranged to correspond to the shape of the existing object 231. Note that "multiple particles correspond to the shape of the object" means that the shape formed by the multiple particles as a whole roughly matches the shape of the object, and it is not necessary for the shape formed by the multiple particles to strictly match the shape of the object. The process of generating particle data can be said to be the process of converting an existing object into multiple particles that correspond to the shape of the existing object.
[0125] The above generation conditions are arbitrary. For example, the generation condition for the ice object is that it has come into contact with an object of a specific material (specifically, a lava terrain object). In this embodiment, the game system 1 generates particle data corresponding to an existing object when the existing object comes into contact with an object different from the existing object. As a result, particle data is not generated during the period before contact when it is not necessary to deform the existing object, thus reducing the processing load on the game system 1.
[0126] Furthermore, in this embodiment, the game system 1 generates particle data corresponding to the existing object, provided that the material set on the existing object and the material set on other objects are in a predetermined combination (for example, the material of the existing object is ice, and the material of the other object is lava). This makes it possible to represent how the existing object deforms in response to contact with a specific object.
[0127] Figure 21 shows an example of setting up multiple particles based on existing objects. In this embodiment, the game system 1 sets up rectangular (more specifically, cubic) particle regions arranged in a grid in the game space and sets up particles using these particle regions (see Figure 21). The grid shown in Figure 21 is the grid of the particle regions. The game system 1 places particles in one or more particle regions by determining whether or not to place a particle in each particle region. Note that in Figure 21, each element (i.e., particle region, existing object, and particle) is represented in two dimensions for the purpose of making the diagram easier to see and the explanation easier to understand, but these elements are actually placed in three-dimensional space.
[0128] The determination of whether or not to place a particle in a particle region is based on whether or not an existing object exists in that particle region. That is, if an existing object exists in the particle region, a particle is placed in that particle region, and if no existing object exists in the particle region, no particle is placed in that particle region. In this embodiment, the determination of whether or not an existing object exists in a particle region is based on the voxel data of that existing object. Specifically, if an existing object exists in a voxel that overlaps with the particle region (for example, if the density of that voxel is greater than or equal to the above-mentioned standard value), the game system 1 determines that an existing object exists in that particle region. On the other hand, if no existing object exists in a voxel that overlaps with the particle region (for example, if the density of that voxel is less than the above-mentioned standard value), the game system 1 determines that no existing object exists in that particle region.
[0129] The specific method for determining whether or not an existing object exists in a particle region is arbitrary and not limited to the above. For example, in other embodiments, the game system 1 may make the determination based on the mesh of an existing object instead of the voxel data of the existing object. Specifically, the game system 1 may determine that an existing object exists in a particle region if the mesh of an existing object exists in the particle region, or if the particle region is an internal region of an existing object (i.e., an internal region enclosed by a mesh).
[0130] In the example shown in Figure 21, it is determined that an existing object 231 exists in the particle region indicated by the shaded lines. At this time, the game system 1 places particles in the particle region indicated by the shaded lines (i.e., generates particle data indicating that particles will be placed in the particle region indicated by the shaded lines). This sets up a particle group 232 corresponding to the shape of the existing object 231 (see Figure 21). In this embodiment, an existing object 231 is determined to exist in a voxel if its density is equal to or greater than the above-mentioned reference value, while a mesh of the existing object 231 can also be generated for voxels whose density is less than the reference value (but greater than or equal to 1). Therefore, in the example shown in Figure 21, as shown in the figure, a mesh of the existing object 231 may also exist in particle regions other than the particle region indicated by the shaded lines.
[0131] As described above, in this embodiment, the game system 1 generates particle data based on whether or not at least a portion of the existing objects exist in a plurality of unit regions (i.e., particle regions) in which the area containing the existing objects in the virtual space is divided into a grid. This makes it possible to generate particle data indicating a group of particles arranged according to the shape of the existing objects with a small amount of computation.
[0132] It should be noted that the way the particle region is defined in the game space is arbitrary. That is, the size of the particle region and the orientation of each side of the particle region are arbitrary. In this embodiment, the length of one side of the particle region is equal to the length of one side of the voxel corresponding to the voxel data generated based on the particle data (for example, the voxel data of voxel object 233 shown in Figure 20). This makes it possible to generate a voxel object that sufficiently reflects the shape represented by the particle group, and also reduces the processing load of the game system 1 by reducing the number of particles. It can also be said that the length of one side of the particle region is equal to the length of one side of the voxel relating to an existing object. This makes it possible to set up a particle group that sufficiently reflects the shape of an existing object.
[0133] Furthermore, in this embodiment, the orientation of each edge of the particle region is set to be the same as the orientation of each edge of the voxel corresponding to the voxel data generated based on the particle data. This makes it possible to match the orientation of the grid of the particle region with the orientation of the sub-voxels related to the voxel object generated based on the particle data, thereby reducing the processing load for generating the voxel object.
[0134] Furthermore, Game System 1 does not need to define particle regions across the entire game space; it is sufficient to define particle regions within the range that includes existing objects. For example, particle regions can be defined in the sub-voxel space relating to existing objects. This allows for efficient definition of particle regions and reduces the processing load on Game System 1.
[0135] In this embodiment, the particles are spherical, and the radius of the particles is equal to the length of one side of the voxel corresponding to the voxel data generated based on the particle data (it can also be said that it is the same as the length of one side of the particle region) (see Figure 21). This makes it possible to generate a voxel object that sufficiently reflects the shape represented by the group of particles. However, the size of the particles is arbitrary and may be shorter or longer than the length of one side of the voxel relating to the above voxel object. It can also be said that the radius of the particles is equal to the length of one side of the voxel relating to the existing object. This makes it possible to set up a group of particles that sufficiently reflects the shape of the existing object.
[0136] Furthermore, in this embodiment, the size of each generated particle is assumed to be constant, but in other embodiments, the size of each particle does not need to be constant. For example, the game system 1 may change the size of the particles placed in the particle region according to the proportion of the volume occupied by existing objects within the particle region (specifically, the larger the proportion, the larger the particle size). In this case, the particle data may include data indicating the position of the particle and data indicating the size of the particle for each particle. The particle data may also further include data indicating the movement speed of each particle.
[0137] After generating particle data, the game system 1 moves the particle group 232 indicated by the particle data particle by particle (as shown in Figure 20(c)) in order to generate voxel objects that deform existing objects. In other words, the game system 1 updates the particle data to show the position of each particle after the movement. In this embodiment, the game system 1 repeatedly executes the movement process at a rate of once per frame time. Here, the rules for moving the particles are arbitrary. For example, when representing the melting of the ice object 222 mentioned above, each particle may be moved according to the physical laws applied in the game space (e.g., gravity, or collision with other objects). Conventional fluid simulation methods may be used for moving each particle. Furthermore, as will be described in detail later, the game system 1 may set a target position for each particle and move each particle toward the target position (see Figure 25, described later).
[0138] After moving the particle group 232, the game system 1 generates a voxel object (referred to as a "deformed object") 233 that represents the deformed shape of the existing object based on the moved particle group 232 (as shown in Figure 20(d)). In other words, the game system 1 generates voxel data based on particle data representing the moved particle group, and generates a mesh for the deformed object 233 based on the generated voxel data. This process of generating the mesh can be described as a process of converting the particle group 232 into a deformed object 233.
[0139] Figure 22 shows an example of generating a deformable object 233 from a particle group 232. The grid shown in Figure 22 is the grid of sub-voxels related to the deformable object 233. Game system 1 generates voxel data for the deformable object 233 by setting the density for each sub-voxel based on the particle group 232. Note that, as with Figure 21, in Figure 22, each element (i.e., particle group, sub-voxels, and voxel object) is represented in two dimensions for the purpose of making the diagram easier to see and the explanation easier to understand, but these elements are actually arranged in three-dimensional space.
[0140] The density of a sub-voxel is set based on whether or not a particle is present in that sub-voxel. In this embodiment, if at least one particle is present in the sub-voxel, the game system 1 sets the density of the sub-voxel to an upper limit (i.e., 255), and if no particle is present in the sub-voxel, it sets the density of the sub-voxel to a lower limit (i.e., 0). This allows voxel data to be generated with simple calculations, thereby reducing the processing load on the game system 1.
[0141] The specific method for generating voxel data based on particle data is arbitrary and not limited to the above. For example, in another embodiment, the game system 1 may set the density of a sub-voxel based on the number of particles present in the sub-voxel (specifically, such that the density increases as the number of particles increases). Alternatively, the game system 1 may set the density of a sub-voxel based on the distance from the center of a particle to the sub-voxel (specifically, such that the density decreases as the distance from the center of the particle to the sub-voxel increases).
[0142] Game system 1 generates a mesh for the deformed object 233 based on the generated voxel data. The specific method for generating the mesh based on the voxel data is arbitrary. Game system 1 may generate the mesh for the deformed object 233 using the same method as the mesh generation method for other objects different from the deformed object 233 (for example, terrain objects or existing objects), or it may generate it using a different method.
[0143] In the example shown in Figure 22, the mesh of the deformed object 233 is generated using the method described above, resulting in a mesh that roughly covers the particle group 232. This generates a deformed object 233 with a shape corresponding to the general shape of the particle group 232.
[0144] Game system 1 changes the shape of a deformable object over time by repeatedly performing particle movement (shown in Figure 20(c)) and generation of deformable objects (shown in Figure 20(d)). This allows for the representation of, for example, an ice object gradually melting.
[0145] In this embodiment, when moving particles again after generating a deformed object, the game system 1 calculates the position of the particles after the move by moving them from their previous positions, without generating particles from the deformed object (i.e., without converting the deformed object into a group of particles). In other words, the game system 1 calculates the value of the particle data for the current operation (i.e., a value indicating the new position of the particle) using the particle data updated in the previous operation, without using the voxel data generated based on the previously updated particle data (i.e., the voxel data of the deformed object). This is because converting the deformed object into a group of particles may cause errors in the particle positions due to this conversion, making it impossible to accurately calculate the position of the particles after the move. In contrast, in this embodiment, the position of the particles after the move can be accurately calculated by using the particle data updated in the previous operation. In other embodiments, the game system 1 may convert the deformed object into a group of particles and use the particle data representing the converted group of particles to calculate the particle data indicating the position of the particles after the move.
[0146] In this embodiment, the deformed object 233 generated based on particle data is a sub-voxel object. Therefore, if particles are placed outside the sub-voxel space related to the deformed object 233, those particles will not be reflected in the shape of the deformed object 233. As a result, the shape of the deformed object 233 may no longer correspond to the shape of the particle group 232. Therefore, in this embodiment, the game system 1 performs a process to move the sub-voxel space and a process to correct the position of the particles. These movement and correction processes will be described below.
[0147] Figure 23 shows an example of the process of moving the sub-voxel space. In the example shown in Figure 23, the particle group 232 is assumed to change from a state where it is far from the ground 235 (state (a) in Figure 23) to a state where it is deformed while moving closer to the ground 235 (state (b) in Figure 23).
[0148] In the example shown in Figure 23, if the sub-voxel space 236 does not move from its state before the movement, then as a result of the movement of the particle group 232, some of the particles in the moved particle group 232 will be located outside the sub-voxel space 236. Consequently, the deformed object after the movement will have a shape that does not reflect those particles.
[0149] Therefore, in this embodiment, the game system 1 updates the range (or position) of the sub-voxel space of the deformed object in accordance with the updating of the position of the particle group 232. In this embodiment, the game system 1 calculates the centroid position 237 of each particle after movement and moves the sub-voxel space so that the centroid position 237 becomes the center position of the sub-voxel space (see the arrow shown in Figure 23). In other embodiments, the game system 1 may identify particles at each of the front, back, left, right, up, and down ends of the particle group 232 and determine the position of the updated sub-voxel space so that the center position of the sub-voxel space is located at the center of each identified particle. As described above, in this embodiment, the game system 1 updates the range of the voxel space where voxels related to the voxel data of the deformed object are set based on the updated particle data. This reduces the possibility that the moved particles are located outside the sub-voxel space.
[0150] The specific method for updating the position of the sub-voxel space is not limited to the above. In this embodiment, the game system 1 changes the range of the sub-voxel space by moving the center position without changing the size of the sub-voxel space, but in other embodiments, the game system 1 may change the range of the sub-voxel space by changing the size of the sub-voxel space.
[0151] Figure 24 shows an example of a process for correcting the position of particles. In the example shown in Figure 24, particle 238 is positioned outside the sub-voxel space 236 as a result of the movement of particle group 232 (see (a) in Figure 24). In the example shown in Figure 24, some particles, including particle 238, are positioned at a distance from the other particles. This state can occur, for example, when particle group 232 comes into contact with another object, causing some of the particles to scatter and move. Also, the position of sub-voxel space 236 shown in Figure 24 is the position after it has been moved by the sub-voxel space movement process described above.
[0152] If particle 238 is located outside the sub-voxel space 236 as described above, the game system 1 corrects the position of particle 238 so that it is located inside the sub-voxel space 236 (see (b) in Figure 24). In this way, the game system 1 controls the positions of multiple particles so that they are located within the voxel space where the voxels relating to the voxel data of the deformed object are set. This further reduces the possibility that a particle is located outside the sub-voxel space.
[0153] The specific method for correcting the particle's position is arbitrary. For example, in this embodiment, the game system 1 corrects the position of the particle outside the sub-voxel space to a position within the sub-voxel space in such a way that the amount of movement due to the correction is minimized. That is, the corrected position of the particle is set to the position where the normal of the outer surface of the sub-voxel space intersects with the normal that passes through the particle's position before the correction.
[0154] In this embodiment, when deforming an object using particle data, the game system 1 makes particles disappear when the disappearance condition is met. For example, if the existing object is the ice object described above, the disappearance condition includes the condition that "the particle has come into contact with the object of the specific material described above (i.e., the object related to the generation condition; specifically, the lava terrain object) a predetermined number of times." The game system 1 determines whether the disappearance condition is met for each particle. Specifically, each time a particle is moved, the game system 1 determines whether the particle has come into contact with the object of the specific material, and if the number of times a particle has come into contact with that object reaches the predetermined number, the particle is made to disappear. When a particle disappears in this way, the deformed object is generated based on the remaining particles. Therefore, the deformed object gradually becomes smaller as particles disappear (see Figure 19).
[0155] As described above, in this embodiment, the game system 1 updates the particle data so that at least some of the particles disappear when the disappearance condition is met. This allows existing objects (which can also be called deformed objects) to be deformed while shrinking, making it possible to represent the process of an object melting and shrinking.
[0156] The disappearance conditions are arbitrary and not limited to those described above. For example, the disappearance condition could be that a time limit has elapsed since the particle was created. In this case, the deformed object corresponding to an existing object will disappear when the aforementioned time limit has elapsed since the deformed object was created. This prevents an increase in particle movement processing and deformed object creation processing that would occur if the deformed object remained without disappearing. Therefore, the processing load on game system 1 can be reduced.
[0157] In other embodiments, the disappearance condition may be that the object is struck by another object (for example, a player object). For example, if a player object strikes a deformed object, the game system 1 may cause particles within a range based on the location of the strike to disappear. This makes it possible to represent the deformed object disappearing due to a strike.
[0158] In this embodiment, the game system 1 defines the disappearance condition as either the particle coming into contact with the object of the specific material described above a predetermined number of times, or the limited time elapsed since the particle was generated.
[0159] In other embodiments, the game system 1 does not need to make the particles disappear. That is, when the game system 1 deforms an object using particles, it does not need to deform the object in such a way that it becomes smaller.
[0160] In other embodiments, the game system 1 may, instead of (or in conjunction with) making the particles disappear, change the material of the deformed object from the material of the existing object. For example, if the existing object is an iron object, the game system 1 may, in response to the existing object coming into contact with a lava object, deform the existing object with particles and change the material of the existing object from hard "iron" to soft "molten iron".
[0161] In the above examples, we have described how to represent an existing object deforming in a way that appears to melt (and shrink). However, by using particle data, it is possible to represent the deformation of objects in various ways, not just melting. For example, as shown below, it is also possible to represent an object gradually becoming larger using particle data.
[0162] Figure 25 shows an example of how a voxel object gradually grows larger. Figure 25 shows how a small spherical object in the initial state shown in (a) gradually grows larger in the state shown in (b), and takes on the shape of an enemy object in the state shown in (c). Particle data can also be used to represent this kind of process.
[0163] In the example shown in Figure 25, the existing object 242 is a small spherical object. When the generation conditions for this existing object 242 are met, the game system 1 generates particle data and performs deformation processing using the particle data. In this example, the generation conditions are predetermined game conditions (for example, when the conditions for the appearance of an enemy object are met). Thus, the generation conditions are not limited to the existing object coming into contact with another object, but may be other conditions.
[0164] If the generation conditions are met, the game system 1 first places multiple particles (the particle group 241 shown in Figure 25) to correspond to the shape of the existing object 242. Depending on the size of the existing object 242, it may be possible to use only one particle to correspond to its shape. Even in such cases, the game system 1 places a particle group 241 consisting of a predetermined number of particles. In the above case, each particle is placed overlappingly (that is, multiple particles are placed in the same position).
[0165] Once the particles are placed, the game system 1 moves each particle in the particle group 241, as in the example described above, and generates a deformed object 243 based on the moved particles (state (b) shown in Figure 25). In the example shown in Figure 25, the game system 1 sets a target position for each particle. The target position is the position to which the particle should ultimately move, and in the example shown in Figure 25, it is the position where the particle group 241 corresponds to the shape of the enemy object (i.e., the deformed object 244). In this embodiment, the game system 1 stores target position data indicating the target position for each particle. The target position data can be said to be data indicating the position after change due to the change in each particle over time.
[0166] Game system 1 moves each particle toward its respective target position. In one movement process (i.e., the process of moving each particle by one frame), game system 1 updates the particle data so that each particle in the particle group 241 moves to the destination position set for each particle. This makes it easy to move each particle to the desired position and facilitates the process of deforming objects into the desired shape.
[0167] The destination position described above is, for example, the position obtained by moving the particle from its current position to the target position by the amount of movement the particle makes in a single movement process. Here, the magnitude of the movement amount is arbitrary. For example, the game system 1 may set a time (called the "movement completion time") until the particle's movement is complete, and in a single movement process, move each particle by a distance obtained by dividing the distance from the particle's initial position to the target position by the movement completion time. In another embodiment, the game system 1 may pre-set the movement amount for each particle. Furthermore, the movement amount does not have to be constant for each movement process in a frame, and may be different for each movement process.
[0168] Game system 1 moves each particle of the particle group 241 until it reaches its respective target position. When each particle has reached its target position (state (c) in Figure 25), the deformed object 244 generated based on the particle group 241 takes on the shape of the completed enemy object (or a shape that roughly matches that shape). Thus, a small object can be transformed into a large enemy object through a deformation process using particles.
[0169] As described above, game system 1 sets the destination position based on the target position and updates the particle data until each particle reaches its target position. This allows each particle to be moved to a free position and the object to be deformed into a desired shape.
[0170] In this embodiment, at the switching timing after each particle has moved to its target position, the game system 1 terminates the generation of the deformed object 244 based on the particle data. Here, the game system 1 has in advance stored post-change data that shows the shape of the object after the change of the existing object (specifically, the enemy object). The shape shown by the post-change data is, for example, a shape that roughly matches the shape of the particle group when each particle reaches the target position. The post-change data may be any data capable of generating a mesh of the post-change object, and may be voxel data or bone data. The post-change object after the switching timing may be a voxel object or not.
[0171] At the above switching timing, the game system 1 starts generating the transformed object based on the transformed data instead of generating the deformed object 244 based on the particle data. In other words, the game system 1 generates a mesh of voxel objects based on voxel data based on particle data, at least until each of the multiple particles reaches the target position. Then, at the switching timing after each of the multiple particles has reached the target position, the game system 1 stops generating the mesh based on voxel data based on particle data and generates a mesh based on the transformed data. As a result, even if the shape of the transformed object cannot be accurately reproduced with the particle data, the shape can be adjusted to be accurate after the switching timing. In addition, since the game system 1 does not need to perform the voxel object generation process based on particle data after the switching timing, the processing load on the game system 1 can be reduced.
[0172] The switching timing described above can be any timing after each particle has moved to its target position. For example, the switching timing may be immediately after each particle has moved to its target position, or it may be after a predetermined amount of time has elapsed since each particle moved to its target position.
[0173] In this embodiment, the deformation object may affect other objects in response to contact with those objects. For example, in the example shown in Figure 19, when the ice object 222 comes into contact with the lava terrain object 223, the game system 1 changes the contacted portion of the lava terrain object 223 into a rock terrain object 224 (for example, rock formed from solidified lava). This change can be made by modifying the material data contained in the voxel data. Thus, the deformation object may change the material (specifically, its appearance and / or properties) of the other object it comes into contact with.
[0174] Furthermore, a deformed object may cause other objects it comes into contact with to disappear. In other words, if a deformed object comes into contact with another object, the game system 1 may cause the part of that object that has come into contact with it to disappear.
[0175] Figure 26 shows an example of how a deformable object causes other objects to disappear. In Figure 26, when a deformable object 251 moving in the game space comes into contact with a terrain object 253, the deformable object 251 itself deforms as if melting, causing the terrain object 253 to disappear.
[0176] In the example shown in Figure 26, when the existing object 250 comes into contact with the terrain object 253, the game system 1 generates a group of particles 252 corresponding to the shape of the existing object 250 (Figure 26(a)). In the above example, the generation condition for generating particle data is that the existing object 250 comes into contact with the terrain object 253.
[0177] When a group of particles 252 is generated, the game system 1 determines contact between the particles and the terrain object 253 and makes the portion of the terrain object 253 that has come into contact with the particles disappear (Figure 26(b)). If the terrain object 253 is a voxel object, the shape of the terrain object 253 can be changed to make it appear as if the above portion has disappeared by updating the voxel data. Also, if the above disappearance condition is met in response to the contact between the particles and the terrain object 253, the game system 1 makes the particle that has met the disappearance condition disappear.
[0178] As described above, the game system 1 repeatedly moves each particle in the particle group 252 and generates the deformation object 251. In the example shown in Figure 26, as the deformation object 251 moves, the particle group 252 comes into contact with the terrain object 253, so contact between the particles and the terrain object 253, and the disappearance of the terrain object 253 due to contact, occur repeatedly. As a result, the disappearing portion of the terrain object 253 gradually increases (as shown in Figure 26(c)). Also, as the deformation object 251 moves, the disappearance conditions are successively met, and as a result, the particles disappear (i.e., the deformation object 251 becomes smaller). Based on the above, it is possible to represent the process of the terrain object 253 being dissolved by the deformation object 251. For example, if an object with an acid material is used as the deformation object 251 and an object with an iron material is used as the terrain object 253, it is possible to represent the process of the iron being dissolved by the acid.
[0179] As described above, in this embodiment, the game system 1 determines whether or not a particle has come into contact with an object other than the deforming object. If it is determined that the particle has come into contact with the other object, the part of the other object that came into contact with the particle is made to disappear from the virtual space. This makes it possible to represent the process of other objects being melted by the deforming object.
[0180] In this embodiment, the game system 1 determined contact between the particle and the other object. In other embodiments, the game system 1 may determine contact between the deformed object and the other object. Contact determination between the deformed object and the other object may be performed using the voxel data of the deformed object or using the mesh of the deformed object. In this case, if the game system 1 determines that the deformed object has come into contact with the other object, it removes the contacted portion of the other object from the virtual space. This also produces the same effect as in this embodiment.
[0181] Furthermore, in this embodiment, the game system 1, at least under the condition that the material set on the deformed object or existing object and the material set on the other object are in a predetermined combination, will make the contacted portion of the other object disappear from the virtual space. For example, if the deformed object has an acid material set on it, the game system 1 will make the iron material disappear, provided that the other object has an iron material set on it. This makes it possible for the deformed object to melt a specific object, while not melting any other objects.
[0182] In this embodiment, the object affected by contact with the deformed object was a voxel object (specifically, a terrain object), but in other embodiments, the object does not have to be a voxel object. If the object is not a voxel object, the method of making the object disappear or change it is arbitrary. For example, the game system 1 may make a part of the object disappear by changing the mesh of the object.
[0183] Furthermore, if the target object is made to disappear, the game system 1 may generate particle data for the portion of the target object surrounding the disappeared part, and deform that surrounding portion based on the particle data. This allows the game system 1 to represent the disappearance of the target object and the deformation of its surroundings as if melting.
[0184] [3. Specific examples of processing in game systems] Next, we will explain a specific example of information processing in game system 1 with reference to Figures 27 to 29.
[0185] Figure 27 shows an example of various data used for information processing in Game System 1. As shown in Figure 27, Game System 1 stores the game program, main voxel space data, main voxel object data, main mesh data, sub-voxel space data, sub-voxel object data, sub-mesh data, and particle data. The game program and main voxel space data are data that are stored in Game System 1 in advance before the execution of game processing. The game program and main voxel space data are stored, for example, in a storage medium installed in slot 23 of the main unit 2. The main voxel object data, main mesh data, sub-voxel space data, sub-voxel object data, sub-mesh data, and particle data are data that are generated during the execution of game processing. These data are stored, for example, in the DRAM 85 of the main unit 2.
[0186] The game program is a game program for executing the game processing in this embodiment (specifically, the game processing shown in Figure 28).
[0187] The primary voxel space data defines the primary voxel space set in the game space. Specifically, the primary voxel space data indicates the length of one side of the primary voxel and the direction of each side of the primary voxel in the game space. Furthermore, if the primary voxel space is set in only a portion of the game space, the primary voxel space data may also include data indicating the location and size of the space in which the primary voxels are set (i.e., the primary voxel space) (i.e., data indicating the range in the game space in which the primary voxels are set).
[0188] The main voxel object data is data that represents the main object (in this case, terrain object) placed in the game space. Specifically, the main voxel object data includes the main voxel data for each unit region within a portion or all of the game space.
[0189] The main mesh data is data that indicates the mesh set for the main object placed in the game space (i.e., the mesh of the terrain object). The main mesh data includes, for example, data indicating the position of each vertex in the main mesh.
[0190] Sub-voxel space data is data that defines the sub-voxel space set up in the game space. Specifically, sub-voxel space data indicates the location and size of the space in which the sub-voxels are set up (i.e., the sub-voxel space), the length of one side of the sub-voxel, and the direction of each side of the sub-voxel in the game space.
[0191] Sub-voxel object data is data that indicates sub-objects (specifically, existing objects and deformed objects, etc.) placed in the game space. Specifically, sub-voxel object data includes sub-voxel data for each unit region within a portion or all of the game space.
[0192] Sub-mesh data is data that indicates the mesh set for sub-objects placed in game space (i.e., the mesh of existing objects and the mesh of deformed objects, etc.). Sub-mesh data includes, for example, data indicating the position of each vertex in the sub-mesh.
[0193] Particle data is data indicating the position of each particle in the particle group corresponding to the deformation object. In this embodiment, the set of sub-voxel space data, sub-voxel object data, sub-mesh data, and particle data is set for each sub-object. That is, when multiple sub-objects are placed in the game space, the game system 1 stores the above set for each sub-object. When particle data and a deformation object are generated for an existing object, the game system 1 stores the sub-voxel space data, sub-voxel object data, and sub-mesh data related to that deformation object and the particle data as a set (i.e., associated with each other).
[0194] In addition to the data shown in Figure 27, Game System 1 also stores the following data before game processing is executed: the aforementioned property information and texture information data, the aforementioned fragment generation information data, and data related to various characters appearing in the game.
[0195] Figure 28 is a flowchart illustrating an example of the game processing flow performed by game system 1. The game processing shown in Figure 28 is initiated, for example, when the player issues an instruction to start the game during the execution of the game program described above.
[0196] 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 Figure 28. 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 Figure 28 may be executed by the other information processing device. Furthermore, the processing of each step shown in Figure 28 is merely an example, and the processing order of each step may be changed, or other processing may be performed in addition to (or instead of) the processing of each step, as long as similar results can be obtained.
[0197] Furthermore, the processor 81 executes the processing of each step shown in Figure 28 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.
[0198] In step S1 shown in Figure 20, the processor 81 sets up a voxel space in the game space. Specifically, the processor 81 acquires the voxel space data (specifically, the main voxel space data and the sub-voxel space data) and stores it in the DRAM 85 (in other words, writes it). In subsequent game processing, the processor 81 may refer to the voxel space data when executing processing related to voxel objects (for example, the processing in step S2). In this case, the processor 81 refers to the voxel space data stored in the DRAM 85. The processing in step S2 is executed after step S1.
[0199] In step S2, the processor 81 sets up the voxel objects in the game space in their initial state. Specifically, the processor 81 acquires voxel data (specifically, main voxel data and sub-voxel data) that indicates the arrangement of the voxel objects in their initial state, and stores (in other words, writes) part or all of the acquired voxel data to the DRAM 85 as voxel object data (specifically, main voxel object data and sub-voxel object data). The voxel data that indicates the arrangement of the voxel objects in their initial state is stored, for example, in a storage medium installed in slot 23 of the main unit 2. The processing in step S3 is executed after step S2.
[0200] The voxel data written to the DRAM 85 as main voxel object data may be a portion of the main voxel data used for generating game images, out of the main voxel data for the entire game space. The processor 81 may, for example, generate an image of an object using main voxel data for only a portion of the game space (for example, a portion within a predetermined distance from the virtual camera's position). In this case, the main voxel object data may include the voxel data within that portion. Furthermore, when main voxel data for a portion of the game space is written, the same processing as in step S2 is executed at an appropriate timing during the execution of the series of processes in steps S4 to S10 described later (for example, when the virtual camera's position moves by a predetermined distance or more).
[0201] In step S3, the processor 81 generates a mesh for the voxel object. The mesh is generated according to the method described above in "[2-2. Mesh]". Here, the processor 81 generates the mesh based on the main voxel object data and sub-voxel data stored in the DRAM 85 and stores it in the DRAM 85 as either the main mesh data or the sub-voxel data. As a result of the processing in step S3, the voxel object is constructed in the game space. After step S3, the game starts, and the series of processes in steps S4 to S10 are repeatedly executed during the game.
[0202] In step S4, the processor 81 controls the behavior of various objects that appear in the game space (for example, player objects and enemy objects). For example, the processor 81 controls the behavior of player objects based on operation data received from each controller 3 or 4, or controls the behavior of enemy objects based on algorithms defined in the game program. The processing in step S5 is executed after step S4.
[0203] In step S5, the processor 81 performs particle processing to generate and update particle data. The detailed flow of particle processing will be described below with reference to Figure 29.
[0204] Figure 29 is a subflowchart showing an example of a detailed flow of the particle processing in step S5 shown in Figure 28. In particle processing, first in step S11, the processor 81 determines whether the above-mentioned generation conditions have been met for the sub-objects placed in the game space. Note that the generation conditions may be set for each sub-object, and the conditions may be different for each sub-object. If it is determined that the generation conditions have been met for at least one sub-object, the result of the determination in step S11 is affirmative, and if there are no sub-objects for which the generation conditions have been met, the result of the determination in step S11 is negative. If the result of the determination in step S11 is affirmative, the processing in step S12 is executed. On the other hand, if the result of the determination in step S11 is negative, the processing in step S12 is skipped and the processing in step S13 is executed.
[0205] In step S12, the processor 81 generates particle data corresponding to the sub-object (i.e., the existing object) whose generation conditions have been met. Specifically, the processor 81 generates particle data indicating the positions of groups of particles arranged to correspond to the shape of the existing object, using the method described in "[2-4. Deformation processing using particle data]" above. At this time, the processor 81 stores the generated particle data in the DRAM 85, associating it with the sub-voxel object data related to the existing object. Furthermore, when the processor 81 generates particle data for a specific existing object, it sets a target position for each particle and stores target position data indicating the target position in the DRAM 85. The processing in step S13 is executed after step S12.
[0206] In step S13, the processor 81 determines whether or not a particle exists in the game space. If the result of the determination in step S13 is positive, the processing in step S14 is executed. On the other hand, if the result of the determination in step S13 is negative, the processor 81 terminates the particle processing.
[0207] In step S14, the processor 81 moves the group of particles placed in the game space. At this time, the processor 81 updates the particle data stored in the DRAM 85 to indicate the position of each particle after the move. As described in "[2-4. Deformation processing using particle data]" above, the particles may be moved according to the physical laws applied in the game space, or they may be moved based on the target position set for the particle. Note that in one step S14, one movement process (i.e., the process of moving each particle by one frame) is executed. Then, by repeating the process of step S14, the processor 81 calculates the change in the position of each particle in the group of particles over time and sequentially updates the particle data based on the calculation result. The process of step S15 is executed after step S14.
[0208] In step S15, the processor 81 updates the position of the sub-voxel space corresponding to the group of particles placed in the game space. The "sub-voxel space corresponding to the group of particles" refers to the sub-voxel space relating to the deformation object generated based on the group of particles. Specifically, the processor 81 calculates the updated position of the sub-voxel space based on the group of particles using the method described in "[2-4. Deformation processing using particle data]" above. At this time, the processor 81 updates the sub-voxel space data stored in the DRAM 85 to indicate the updated position. The processing in step S16 is executed after step S15.
[0209] In step S16, the processor 81 determines whether or not there are any particles in the group of particles placed in the game space that are located outside the sub-voxel space corresponding to the group of particles. This determination can be made by referring to the particle data stored in the DRAM 85 and the sub-voxel space data associated with the particle data. If the determination result in step S16 is affirmative, the processing in step S17 is executed. On the other hand, if the determination result in step S16 is negative, the processing in step S17 is skipped and the processing in step S18 is executed.
[0210] In step S17, the processor 81 corrects the position of the particle that was determined to be located outside the subvoxel space in step S17. Specifically, the processor 81 corrects the position of the particle so that it is located within the subvoxel space, using the method described in "[2-4. Deformation processing using particle data]" above. At this time, the processor 81 updates the particle data stored in the DRAM 85 to indicate the corrected position of the particle. The processing in step S18 is executed after step S17.
[0211] In step S18, the processor 81 determines whether the disappearance condition has been met for the particles placed in the game space. The disappearance condition may be set for each deformed object (or for each existing object), and the condition may be different for each deformed object. If it is determined that the disappearance condition has been met for at least one particle, the result of the determination in step S18 is affirmative, and if there are no particles for which the disappearance condition has been met, the result of the determination in step S18 is negative. If the result of the determination in step S18 is affirmative, the process in step S19 is executed. On the other hand, if the result of the determination in step S18 is negative, the process in step S19 is skipped and the process in step S20 is executed.
[0212] In step S19, the processor 81 removes particles for which the disappearance condition has been met. Specifically, the processor 81 updates the particle data stored in the DRAM 85 to delete the positions of particles for which the disappearance condition has been met. The process in step S20 is executed after step S19.
[0213] In step S20, the processor 81 generates voxel data for deformation objects corresponding to a group of particles placed in the game space (or updates the voxel data for the deformation object if it has already been generated). Specifically, the processor 81 generates voxel data for the deformation object in the manner described in "[2-4. Deformation processing using particle data]" above, such that the density shown by the voxel data reflects the position of each particle included in the group of particles. At this time, the processor 81 updates the sub-voxel object data for the deformation object to reflect the content of the generated voxel data. After step S20, the processor 81 terminates the particle processing.
[0214] Returning to the explanation of Figure 28, following the particle processing in step S5, in step S6, the processor 81 determines whether the particles have come into contact with other objects. If the determination result in step S6 is positive, the process in step S7 is executed. On the other hand, if the determination result in step S6 is negative, the process in step S6 is skipped and the process in step S8 is executed.
[0215] In step S7, the processor 81 modifies the object that the particle has come into contact with. For example, as a change in response to contact, the processor 81 may change the material of the part of the object that has come into contact with the particle (see Figure 19) or make the contacted part disappear (Figure 26). The processor 81 updates the main voxel object data or sub-voxel object data of the object that the particle has come into contact with, which is stored in the DRAM 85, to reflect the changed state. The processing in step S8 is executed after step S7.
[0216] In step S8, the processor 81 updates the mesh for voxel objects whose voxel data was modified in step S5 or S7. That is, the processor 81 generates a mesh based on the updated voxel data for deformed objects whose voxel data was updated in step S5, and for objects whose voxel data was updated in step S7 (i.e., objects that particles came into contact with). This allows the mesh of voxel objects to be dynamically changed during the game. The processor 81 also updates the mesh data stored in the DRAM 85 (i.e., the main mesh data and sub-mesh data) to reflect the newly generated mesh. The processing in step S9 is executed after step S8.
[0217] In step S9, the processor 81 generates a game image representing the game space and displays it on the display device. Specifically, the processor 81 generates a game image representing the game space, including voxel objects and other objects (e.g., player characters and enemy characters). The image of the voxel object is generated using the voxel object data and mesh data stored in the DRAM 85, according to the method described in "[2-2. Mesh]" above. The processor 81 displays the generated game image on the display device. During the game, the process in step S9 is repeatedly executed at a rate of once every predetermined time (e.g., 1 frame time). The process in step S10 is executed after step S9.
[0218] In step S10, the processor 81 determines whether or not to terminate the game. For example, the processor 81 determines whether or not the user has given an instruction to terminate the game. If the result of the determination in step S10 is negative, the process in step S4 is executed again. Thereafter, the series of processes from steps S4 to S10 are repeatedly executed until it is determined in step S10 that the game should be terminated. On the other hand, if the result of the determination in step S10 is positive, the processor 81 terminates the game process as shown in Figure 28.
[0219] [4. Effects and Modifications of This Embodiment] As described above, in the above embodiment, the information processing system (specifically, the game system 1) is configured to include the following means. Particle generation means (step S12) generates particle data including data indicating the positions of multiple particles corresponding to the shape of an existing object which is an object placed in a virtual space. Particle calculation means (step S14) that calculates the change in the positions of multiple particles over time and updates the particle data based on the calculation results. Voxel data generation means (step S20) that generates voxel data relating to a voxel object having a shape corresponding to the positions of multiple particles, based on particle data. • Mesh generation means (step S8) that generates a mesh of voxel objects based on voxel data. • Image generation means (step S9) for generating an image of a mesh drawn in a virtual space for output to a display device.
[0220] According to the above configuration, existing objects can be deformed over time using particle data. Furthermore, by calculating the change in the position of each particle over time, it is possible to represent the natural deformation of the object.
[0221] In the above embodiment, the case where the existing object is a voxel object was described as an example. In other words, in the above embodiment, the existing object is an object generated based on voxel data that was generated before the particle data related to the existing object was generated (it can also be said that it is an object generated based on voxel data that is different from the voxel data of the deformed object generated based on the particle data). Thus, the above embodiment made it possible to express natural deformation of voxel objects by using particles.
[0222] In other embodiments, the existing object may be an object other than a voxel object. When generating a group of particles corresponding to an existing object that is not a voxel object, the game system 1 may determine whether or not an existing object exists in the particle region based on the mesh of the existing object, and generate the group of particles by placing particles in the particle region where the existing object exists.
[0223] In other embodiments, the information processing system may not have 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 achieve some of the specific effects in the above embodiments, the information processing system may have to have the configurations necessary to achieve those effects and perform the processes necessary to achieve those effects, but it may not have to have other configurations or perform other processes. [Industrial applicability]
[0224] The above embodiment can be used, for example, as a game system and game program, for purposes such as deforming existing objects placed in a virtual space over time using particles. [Explanation of Symbols]
[0225] 1. Game System 2. Main unit 3 Left controller 4 Right controller 81 processors 231,242,250 Existing Objects 232,241,252 particle group 233,243,251 Deformed Objects 236 Sub-voxel space
Claims
1. An information processing program executed in a computer of an information processing device, wherein the computer A particle generation means generates particle data including data indicating the positions of multiple particles corresponding to the shape of an existing object, provided that an existing object, which is an object placed in a virtual space and generated based on voxel data with a material set for each voxel, comes into contact with a first object different from the existing object, and the materials set on the existing object and the materials set on the first object are a predetermined combination; A particle calculation means calculates the change in the positions of the plurality of particles over time and updates the particle data based on the calculation results, A voxel data generation means generates voxel data relating to a voxel object having a shape corresponding to the positions of the plurality of particles based on the particle data, A mesh generation means that generates a mesh of the voxel object based on the generated voxel data, An information processing program that functions as an image generation means for generating an image of the mesh drawn in the virtual space for output to a display device.
2. The information processing program according to claim 1, wherein the existing object is an object generated based on voxel data generated before the particle data relating to the existing object is generated by the particle generation means.
3. The information processing program according to claim 1, wherein the particle generation means generates particle data based on whether or not at least a portion of the existing object exists in a plurality of unit regions in which the region containing the existing object in the virtual space is divided in a grid.
4. The information processing program according to claim 3, wherein the length of one side of the unit region is equal to the length of one side of the voxel corresponding to the voxel data generated based on the particle data.
5. The information processing program according to any one of claims 1 to 4, wherein the particle calculation means updates the particle data such that at least some of the plurality of particles disappear when the disappearance condition is met.
6. The aforementioned particle calculation means is The aforementioned particle data is repeatedly updated, An information processing program according to any one of claims 1 to 4, which calculates the value of the current particle data indicating the new positions of the plurality of particles using the previously updated particle data, without using voxel data generated based on the previously updated particle data.
7. The information processing program according to any one of claims 1 to 4, further comprising the computer functioning as a voxel updating means for updating the range of the voxel space in which voxels relating to voxel data generated based on the particle data are set, based on the updated particle data.
8. The information processing program according to any one of claims 1 to 4, wherein the particle calculation means controls the positions of the plurality of particles so that they are located within a voxel space in which voxels relating to voxel data generated based on the particle data are set.
9. A contact determination means for determining whether the particle has come into contact with a second object different from the voxel object, or whether the voxel object has come into contact with the second object, The information processing program according to any one of claims 1 to 4, wherein if it is determined that the particle has come into contact with the second object, or if it is determined that the voxel object has come into contact with the second object, the computer further functions as a disappearance means for making the contacted portion of the second object disappear from the virtual space.
10. The information processing program according to claim 9, wherein the disappearance means disappears the portion of the second object that has come into contact with the material set on the voxel object or the existing object and the material set on the second object, provided that the material set on the second object is in a predetermined combination.
11. The information processing program according to any one of claims 1 to 4, wherein the particle calculation means updates the particle data so that each of the plurality of particles moves to a destination position set for each of the plurality of particles as time progresses.
12. The information processing device stores data indicating the target position after the change due to the change in the position of the plurality of particles over time. The information processing program according to claim 11, wherein the particle calculation means sets the destination position based on the target position and updates the particle data until each of the plurality of particles reaches the target position.
13. The information processing device stores data relating to the shape of the object after the existing object has changed due to the changes over time. The mesh generation means is At least until each of the plurality of particles reaches the target position, a mesh of the voxel object is generated based on the voxel data derived from the particle data, The information processing program according to claim 12, wherein at a predetermined timing after each of the plurality of particles has reached the target position, the generation of a mesh based on voxel data based on the particle data is terminated, and a mesh is generated based on the modified data.
14. A particle generation means generates particle data including data indicating the positions of multiple particles corresponding to the shape of an existing object, provided that an existing object, which is an object placed in a virtual space and generated based on voxel data with a material set for each voxel, comes into contact with a first object different from the existing object, and the materials set on the existing object and the materials set on the first object are a predetermined combination; A particle calculation means calculates the change in the positions of the plurality of particles over time and updates the particle data based on the calculation results, A voxel data generation means generates voxel data relating to a voxel object having a shape corresponding to the positions of the plurality of particles based on the particle data, A mesh generation means that generates a mesh of the voxel object based on the generated voxel data, An information processing system comprising: an image generation means for generating an image of the mesh drawn in the virtual space for output to a display device.
15. A particle generation means generates particle data including data indicating the positions of multiple particles corresponding to the shape of an existing object, provided that an existing object, which is an object placed in a virtual space and generated based on voxel data with a material set for each voxel, comes into contact with a first object different from the existing object, and the materials set on the existing object and the materials set on the first object are a predetermined combination; A particle calculation means calculates the change in the positions of the plurality of particles over time and updates the particle data based on the calculation results, A voxel data generation means generates voxel data relating to a voxel object having a shape corresponding to the positions of the plurality of particles based on the particle data, A mesh generation means that generates a mesh of the voxel object based on the generated voxel data, An information processing apparatus comprising: an image generation means for generating an image of the mesh drawn in the virtual space for output to a display device.
16. An information processing method performed by an information processing system, A particle generation step that generates particle data including data indicating the positions of multiple particles corresponding to the shape of an existing object, provided that an existing object, which is an object placed in a virtual space and generated based on voxel data with a material set for each voxel, comes into contact with a first object different from the existing object, and the material set for the existing object and the material set for the first object are in a predetermined combination, at least under the conditions that, A particle calculation step that calculates the change in the positions of the plurality of particles over time and updates the particle data based on the calculation results, A voxel data generation step that generates voxel data relating to a voxel object having a shape corresponding to the positions of the plurality of particles, based on the particle data, A mesh generation step that generates a mesh of the voxel object based on the generated voxel data, An information processing method comprising: an image generation step of generating an image of the mesh drawn in the virtual space for output to a display device.
Citation Information
Patent Citations
Image generation system, program and information storage medium
JP2002216152A
Image generating system, program, and information storage medium
JP2002279446A
Program, recording medium, game character drawing method and game machine
JP2004062666A
Program, information storage medium and image generation system
JP2008033522A