Image generation program, recording medium, and image generation method
The image generation program and method address the challenge of character penetration by constraining control point movements in cloth simulation, enhancing collision detection and natural clothing representation.
Patent Information
- Application Number
- JP2025180047
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-10-24
- Publication Date
- 2026-01-23
AI Technical Summary
Existing cloth simulation technologies face challenges in allocating sufficient time for collision detection, leading to phenomena like a character's body penetrating clothing due to time constraints on calculation load.
An image generation program and method that utilize an information processing device to calculate bending angles, set degrees of freedom, and update control points to prevent penetration by constraining target positions and movements of control points on a clothing object relative to a body object.
Prevents the occurrence of a character's body penetrating clothing by effectively managing collision detection through constrained movement and deformation of control points, ensuring natural and accurate representation of clothing movement.
Smart Images

Figure 2026012246000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to an image generating program, a recording medium, and an image generating method. [Background technology]
[0002] Conventionally, methods for simulating deformable objects using spring models have been known. For example, Patent Document 1 describes a cloth simulation technology that determines the shape of a flexible object such as cloth, clothing, or hair using a model in which the vertices of the polygons are virtual mass points and adjacent mass points are connected by virtual springs. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2005-99952 Summary of the Invention [Problem to be solved by the invention]
[0004] When using the above-mentioned cloth simulation technology to represent, for example, clothing worn by a character's body, it is conceivable to execute a collision detection process between the body and the clothing. In such cases, there is a problem that due to time constraints on the calculation load, it is not possible to allocate sufficient time to the collision detection process, which can result in the body going through the clothing.
[0005] The present invention has been made in consideration of these problems, and aims to provide an image generation program, a recording medium, and an image generation method that can prevent the occurrence of the phenomenon in which a character's body penetrates clothing. [Means for solving the problem]
[0006] In order to achieve the above-mentioned object, the image generation program of the present invention causes an information processing device to function as an angle calculation processing unit that calculates bending angles of joints of a first object; a first target position calculation processing unit that calculates first target positions of each of a plurality of control points set on the second object by a predetermined simulation processing for deforming the second object associated with the first object; a second target position calculation processing unit that calculates second target positions of each of the plurality of control points based on weight information including at least one reference point associated with each of the plurality of control points and a degree of association for each of the reference points; a degree of freedom setting processing unit that variably sets degrees of freedom of movement from the second target positions for the plurality of control points based on the bending angles; a control point update processing unit that updates the positions of the plurality of control points so that they approach the first target positions based on the set degrees of freedom; and an image generation processing unit that generates an image of the second object based on the updated positions of the control points.
[0007] In order to achieve the above object, a recording medium of the present invention is a recording medium that stores the image generation program and is readable by an information processing device.
[0008] In order to achieve the above-mentioned object, the image generation method of the present invention is an image generation method executed by an information processing device, and includes the steps of: calculating bending angles of joints of a first object; calculating first target positions of a plurality of control points set on the second object by a predetermined simulation process for deforming a second object associated with the first object; calculating second target positions of the plurality of control points based on weight information including at least one associated reference point set for each of the plurality of control points and the degree of association for each of the reference points; variably setting degrees of freedom of movement from the second target positions for the plurality of control points based on the bending angles; updating the positions of the plurality of control points so that they approach the first target positions based on the set degrees of freedom; and generating an image of the second object based on the updated positions of the control points. [Effects of the Invention]
[0009] According to the image generation program of the present invention, it is possible to prevent the occurrence of a phenomenon in which a character's body penetrates clothing. [Brief explanation of the drawings]
[0010] [Figure 1] 1 is a system configuration diagram showing an example of the overall configuration of a game system common to the first and second embodiments. [Figure 2] 1 is a block diagram illustrating an example of a functional configuration of an information processing device according to a first embodiment. [Figure 3] 10 is a diagram illustrating an example of a core line set by a core line setting processing unit. FIG. [Figure 4] 10A and 10B are diagrams illustrating an example of the thickness of a core wire set by a thickness setting processing unit. [Figure 5] 10A and 10B are diagrams illustrating an example of an offset set by an offset setting processing unit. [Figure 6]FIG. 1 is a diagram showing an example of a plurality of rectangles that form a three-dimensional object that resembles a square piece of cloth, and a diagram showing an example of a mechanical model assumed when performing calculations required to draw the three-dimensional object. [Figure 7] 10 is a diagram for explaining an example of a constraint process executed by a first target position constraint processing unit. FIG. [Figure 8] 10 is a diagram for explaining an example of a constraint process executed by a first target position constraint processing unit. FIG. [Figure 9] 10A and 10B are diagrams for explaining an example of a constraint process executed by a second target position constraint processing unit. [Figure 10] 10A and 10B are diagrams for explaining an example of a constraint process executed by a second target position constraint processing unit. [Figure 11] 10 is a diagram for explaining an example of a constraint process executed by a third target position constraint processing unit. FIG. [Figure 12] 10 is a diagram for explaining an example of a constraint process executed by a fourth target position constraint processing unit. FIG. [Figure 13] 10 is a diagram for explaining an example of a constraint process executed by a fifth target position constraint processing unit. FIG. [Figure 14] 4 is a flowchart illustrating an example of a processing procedure executed by the information processing device according to the first embodiment. [Figure 15] FIG. 10 is a block diagram illustrating an example of a functional configuration of an information processing device according to a second embodiment. [Figure 16] 10A and 10B are diagrams for explaining an example of a bending angle calculation process performed by an angle calculation processing unit. [Figure 17] 10 is a diagram showing an example of control points set on a clothing object and reference points set on a body object. FIG. [Figure 18] 10 is a diagram for explaining an example of a skinning position calculated by a second target position calculation processor. FIG. [Figure 19] 10 is a diagram illustrating an example of a change area of a control point set by an area setting processing unit. FIG. [Figure 20] FIG. 10 is a diagram illustrating an example of a distribution shape of the application rate of a limit value. [Figure 21] 10A and 10B are diagrams illustrating specific examples of changes to the application rate of the limit value executed by a rate change processing unit. [Figure 22] 10 is a diagram illustrating an example of a distribution shape of the application rate of the limit value changed by the rate change processing unit. FIG. [Figure 23] 10 is a flowchart illustrating an example of a processing procedure executed by an information processing device according to a second embodiment. [Figure 24] FIG. 2 is a block diagram illustrating an example of a hardware configuration of an information processing device. DETAILED DESCRIPTION OF THE INVENTION
[0011] Hereinafter, embodiments of the present invention will be described with reference to the drawings. Note that in each of the embodiments described below, the present invention will be described as being applied to a game, that is, a game is provided by executing an image generation program and an image generation method of the present invention on an information processing device, but the application is not limited to games.
[0012] <0. Overall structure of the game system> An example of the overall configuration of a game system 1 common to all embodiments will be described using Fig. 1. As shown in Fig. 1, the game system 1 includes an information processing device 3, a game controller 5, and a display device 7. The game controller 5 and the display device 7 are connected to the information processing device 3 so as to be able to communicate with each other via wire or wirelessly.
[0013] The information processing device 3 is, for example, a stationary game console. However, it is not limited to this and may be, for example, a portable game console that is integrated with an input unit, a display unit, etc. In addition to game consoles, it may also be, for example, a computer manufactured and sold, such as a server computer, a desktop computer, a notebook computer, a tablet computer, etc., or a telephone manufactured and sold, such as a smartphone, a mobile phone, a phablet, etc.
[0014] A player performs various operation inputs using a game controller 5. In the example shown in Fig. 1, the game controller 5 has, for example, a cross key 9, a plurality of buttons 10, a joystick 11, a touchpad 12, and the like.
[0015] 1. First Embodiment First, a first embodiment of the present invention will be described. In the first embodiment, various constraint processes are applied to the control points of a clothing object worn by a body object of a character, thereby preventing the occurrence of a phenomenon in which the body object passes through the clothing object.
[0016] (1-1. Functional configuration of information processing device) An example of the functional configuration of the information processing device 3 according to the first embodiment will be described with reference to FIG. 2 and FIGS. 3 to 13. FIG.
[0017] As shown in FIG. 2, the information processing device 3 has a core line setting processing unit 13, a thickness setting processing unit 15, an offset setting processing unit 17, a target position calculation processing unit 19, a first target position constraint processing unit 21, a second target position constraint processing unit 23, a third target position constraint processing unit 25, a fourth target position constraint processing unit 27, a fifth target position constraint processing unit 29, a control point update processing unit 31, and an image generation processing unit 33.
[0018] The core line setting processing unit 13 sets a core line connecting multiple joints of a body object (an example of a first object). The core line setting processing unit 13 also sets a local coordinate system, which is, for example, a three-dimensional orthogonal coordinate system, for each core line.
[0019] Fig. 3 shows an example of a skeleton set by the skeleton setting processing unit 13. As shown in Fig. 3, a body object 35 of a character is wearing a clothing object 37. The character performs various actions in response to the player's operation of the game controller 5. The body object 35 has shoulder joints 39L, 39R, elbow joints 41L, 41R, wrist joints 43L, 43R, hip joints 45L, 45R, knee joints 47L, 47R, and ankle joints 49L, 49R. 3, a core line 51A connecting the shoulder joint 39L and the elbow joint 41L, a core line 51B connecting the elbow joint 41L and the wrist joint 43L, a core line 51C connecting the shoulder joint 39R and the elbow joint 41R, a core line 51D connecting the elbow joint 41R and the wrist joint 43R, a core line 51E connecting the hip joint 45L and the knee joint 47L, a core line 51F connecting the knee joint 47L and the ankle joint 49L, a core line 51G connecting the hip joint 45R and the knee joint 47R, and a core line 51H connecting the knee joint 47R and the ankle joint 49R are set inside the body object 35. Note that when an offset distance, which will be described later, is set, the core line 51 may also be set outside the body object 35. Furthermore, in the example shown in FIG. 3, each of the core lines 51A to 51H is set to connect the joints at both ends in a straight line, but the core lines may be set to have a shape that matches the shape of the body object 35, for example.
[0020] For each of the core wires 51A to 51H, a local coordinate system, which is a three-dimensional Cartesian coordinate system, is set, for example, in which the direction from the start point of the core wire to the end point (the direction of the arrow in Figure 3) is defined as the X-axis direction, and two directions that are perpendicular to the X-axis direction and perpendicular to each other are defined as the Y-axis direction and the Z-axis direction (see Figures 7 and 9, etc., described below).
[0021] Core wire 51A and core wire 51B share elbow joint 41L and form core wire line 53. For example, a parent-child relationship may be established between core wire 51A and core wire 51B, with core wire 51A being the parent and core wire 51B being the child. Core wire line 53 passes through the inside of a cylindrical sleeve portion 37a of clothing object 37. Sleeve portion 37a covers the periphery of core wire line 53 (the circumferential periphery around the core wire).
[0022] Core wires 51C and 51D share elbow joint 41R and form core wire line 55. For example, a parent-child relationship may be established between core wire 51C and core wire 51D, with core wire 51C being the parent and core wire 51D being the child. Core wire line 55 passes through the inside of tubular sleeve portion 37b of clothing object 37. Sleeve portion 37b covers the periphery of core wire line 55 (the circumferential periphery around the core wire).
[0023] Core wires 51E and 51F share knee joint 47L and form core wire line 57. For example, a parent-child relationship may be established between core wire 51E and core wire 51F, with core wire 51E being the parent and core wire 51F being the child. Core wires 51G and 51H share knee joint 47R and form core wire line 59. For example, a parent-child relationship may be established between core wire 51G and core wire 51H, with core wire 51G being the parent and core wire 51H being the child. The two core wire lines 57 and 59 pass through the inside of a cylindrical hem portion 37c of clothing object 37. Hem portion 37c covers the periphery of core wire lines 57 and 59 (circumferentially around the core lines).
[0024] For the sake of convenience, in this specification, when there is no need to distinguish between the core wires 51A to 51H, they will simply be referred to as "core wire 51."
[0025] 2, the thickness setting processing unit 15 sets the thickness of the core wire 51. Specifically, the thickness setting processing unit 15 sets the thickness of the core wire 51 individually at a plurality of locations including one end of the core wire 51, a middle portion, and the other end of the core wire 51.
[0026] FIG. 4 shows an example of the thickness of the core wire 51 set by the thickness setting processing unit 15. In the example shown in FIG. 4, the thickness of the core wire 51 is set to any value at three positions: the start position 51s, the intermediate position 51m, and the end position 51e. For example, parameters are set with the radius at the start position 51s as radiusSt, the radius at the intermediate position 51m as radiusMd, and the radius at the end position 51e as radiusEd. Furthermore, the position of the intermediate position 51m in the core wire direction is set to any position within the range of the entire length of the core wire 51 (for example, a proportion value between 0 and 1 when the entire length of the core wire 51 is 1). For example, a parameter is set with the distance from the start position 51s as radiusT. By setting the thickness as described above, a cylindrical shape 69 centered on the core wire 51 is virtually set. Note that, although only one intermediate position can be set in the above example, multiple intermediate positions may be set.
[0027] Returning to FIG. 2, offset setting processing unit 17 sets an offset distance between the position of the joint and the end of core wire 51. When the offset distance is set by offset setting processing unit 17, core wire setting processing unit 13 described above sets core wire 51 based on a position offset by the offset distance from the position of the joint. Note that the offset distance does not necessarily have to be set.
[0028] FIG. 5 shows an example of an offset set by the offset setting processor 17. For ease of explanation, FIG. 5 shows the inside of a hem 37c of a clothing object 37, with the lower portion cut away. A plurality of control points 61 set on the clothing object 37 are also shown. The control points 61 are points used for control purposes to express the movement and deformation of the clothing object 37. In the example shown in FIG. 5, the starting position (upper end) of a core line 51F set on the character's left leg is offset backward from the knee joint 47L of the left leg by a predetermined offset distance (denoted as offsetD in FIG. 5). The offset distance can be set to any value as a parameter. This allows the shape of the hem 37c of the clothing object 37 to be adjusted to, for example, a shape that sufficiently covers the fullness of the calf 35a of the body object 35.
[0029] Although not shown, similarly to the above, core line 51H of the character's right leg may also be set at a predetermined offset distance backward from knee joint 47R of the right leg. Furthermore, the end of core line 51 may be offset at joints other than knee joints 47L and 47R. This allows the shape of clothing object 37 to be adjusted to match the body shape of the character.
[0030] Returning to Figure 2, the target position calculation processing unit 19 calculates the target positions of each of the multiple control points set on the clothing object 37 by a predetermined simulation process for deforming the clothing object 37 (an example of a second object attached to the first object) covering the body object 35.
[0031] The "predetermined simulation process" is not particularly limited as long as it is a process capable of simulating the deformation of the clothing object 37, but a so-called cloth simulation process capable of simulating the deformation of a cloth object is preferable. Specifically, a simulation process that performs mechanical calculations using an elastic spring model may be used. FIG. 6(a) is an explanatory diagram showing an example of a plurality of rectangles that form a three-dimensional object that resembles, for example, a square piece of cloth, and FIG. 6(b) is an explanatory diagram showing an example of a mechanical model that is assumed when performing calculations required to render the three-dimensional object shown in FIG. 6(a).
[0032] When performing the calculations required to render the three-dimensional object shown in Figure 6(a), a spring model is assumed in which the vertices of each rectangle are mass points, adjacent mass points are connected by springs, and each mass point receives force from adjacent mass points (two or three adjacent mass points for mass points at the edge of a piece of cloth) via these springs, as shown in Figure 6(b). With this spring model, for example, when rendering the movement of pulling the edge of a piece of cloth, it is possible to calculate the force acting on the mass point corresponding to the edge of the cloth, the force acting on the mass point adjacent to that mass point, and the force acting on the mass point adjacent to that mass point, making it possible to calculate the change in shape of a three-dimensional object that resembles cloth.
[0033] Additionally, position-based physical simulation (PBD: Position Based Dynamics, paper "Position Based Dynamics", http: / / matthias-mueller-fischer.ch / publications / posBasedDyn.pdf) can be used as a cloth simulation process. PBD is a method of performing physics calculations without velocity information, using the current position, the previous position, and the frame update time Δt (for example, 16.67 ms at 60 fps).
[0034] In addition to the above simulation processes, various other simulation processes can be adopted as long as they are methods that can simulate cloth-like movement. For convenience of explanation, in this specification, the predetermined simulation process executed by target position calculation processing unit 19 will also be referred to as "cloth simulation," and the target position calculated by target position calculation processing unit 19 will also be referred to as "target position by cloth simulation."
[0035] Returning to FIG. 2 , the first target position constraint processor 21 constrains the target position of the control point 61 calculated by the target position calculation processor 19 to a region closer to the initial position than a plane that includes the core line 51 and is perpendicular to a normal line connecting the initial position of the control point 61 and the closest point on the core line. The "initial position of the control point 61" refers to the position of each control point 61 in the local coordinate system of the clothing object 37, set, for example, when a character wearing the clothing object 37 assumes a predetermined posture (initial pose). The initial position of each control point 61 is set so that the clothing object 37 does not interfere with the body object 35. Each control point 61 has information about its initial position and information indicating which core line 51 it belongs to (it may belong to two or more core lines). If one control point 61 belongs to two or more core lines, it may also include weight information indicating the degree of association with each core line. The "closest point" refers to the point on the core line 51 that is closest to the initial position of the control point 61 being processed.
[0036] 7 and 8 show an example of the constraint processing executed by the first target position constraint processing unit 21. Note that FIG. 8 is a view of FIG. 7 viewed from the positive X-axis direction. As shown in FIGS. 7 and 8, a normal line 63 is set that passes through the initial position of the control point 61 to be processed and is perpendicular to the core line 51. The intersection of the normal line 63 and the core line 51 is the closest point 65. Next, a plane 67 that is perpendicular to the normal line 63 and includes the core line 51 is set. The target position of the control point 61 to be processed is constrained (limited) to be located in a region closer to the initial position than the plane 67 so as not to reach a region on the opposite side of the plane 67 from the initial position. In other words, the target position of the control point 61 is constrained so as not to move in the opposite direction from the orientation of the initial position relative to the closest point 65 (so as not to exceed 90° from the orientation of the initial position). If the control point 61 enters a region on the opposite side of the region on the initial position side relative to the plane 67, there is a high possibility that the body object 35 will penetrate through the clothing object 37. Therefore, by performing the above-described restraint processing, it is possible to prevent the occurrence of a phenomenon in which the body object 35 penetrates through the clothing object 37.
[0037] Returning to Figure 2, the second target position constraint processing unit 23 constrains the target position of the control point 61 calculated by the aforementioned target position calculation processing unit 19 to an area outside the shape 69 determined by the thickness of the core line 51 set by the aforementioned thickness setting processing unit 15.
[0038] 9 and 10 show an example of the constraint processing executed by the second target position constraint processing unit 23. Note that FIG. 10 is a view of FIG. 9 viewed from the positive X-axis direction. As shown in FIGS. 9 and 10, the target position of the control point 61 to be processed is constrained (restricted) to the outer region of the shape 69 determined by the thickness of the core line 51 set by the thickness setting processing unit 15 described above. As a result, the movement of the control point 61 is restricted so as not to enter the inner region of the shape 69 determined by the thickness setting. In other words, the shape 69 functions as a collision detection object (so-called collision). As a result, by setting the thickness of the core line 51 according to the shape of the body object 35, it is possible to further prevent the body object 35 from penetrating through the clothing object 37.
[0039] Returning to Figure 2, the third target position constraint processing unit 25 constrains the target position so that the distance between the target position of the control point 61 calculated by the aforementioned target position calculation processing unit 19 and the core line 51 does not exceed a predetermined upper limit value set based on the distance between the initial position and the core line 51.
[0040] FIG. 11 shows an example of the constraint processing executed by the third target position constraint processor 25. As shown in FIG. 11, the target position of the control point 61 being processed is constrained (limited) so that the distance between the target position and the core line 51 does not exceed a predetermined upper limit Limd1, which is set based on the distance d1 between the initial position of the control point 61 and the core line 51. The upper limit Limd1 may be set, for example, as the distance d1 between the initial position and the core line 51 multiplied by a predetermined coefficient. This constraint processing restricts the movement of the control point 61 so that it does not move outside the area of a cylindrical shape 71 with a radius Limd1 and centered on the core line 51. This restricts the movement of the control point 61 of the clothing object 37 so that it does not move too far from the core line 51. As a result, excessive deformation of the clothing object 37 in a direction perpendicular to the body direction (the direction of the core line 51) can be prevented, allowing the movement of the clothing object 37 to be expressed more naturally.
[0041] 2, the fourth target position constraint processing unit 27 constrains the target positions so that the distance between the target positions of two control points 61 that are adjacent in the circumferential direction around the same core line 51 does not exceed a predetermined upper limit value that is set based on the distance between the initial positions of the two control points 61. The "circumferential direction around the core line 51" refers to the circumferential direction centered on the X-axis along the core line 51.
[0042] FIG. 12 shows an example of the constraint processing executed by the fourth target position constraint processor 27. As shown in FIG. 12, the target position of the control point 61 being processed is constrained (limited) so that the distance between the target position of a circumferentially adjacent control point 61 does not exceed a predetermined upper limit Limd2 set based on the distance d2 between the initial position of the control point 61 being processed and the initial position of the adjacent control point 61. The upper limit Limd2 may be set, for example, as a value obtained by multiplying the distance d2 by a predetermined coefficient. If the distance between two circumferentially adjacent control points 61 around the same core line 51 becomes too large, the body object 35 is likely to penetrate through the clothing object 37 at that location. Therefore, the above constraint processing restricts the movement of the control point 61 so that it does not move too far from the adjacent control point 61, thereby suppressing the penetration phenomenon. Furthermore, excessive deformation of the perimeter around the body of the clothing object 37 can be prevented, allowing the movement of the clothing object 37 to be expressed more naturally.
[0043] 2, the fifth target position constraint processing unit 29 constrains the target position so that the distance between the target position calculated by the above-described target position calculation processing unit 19 and the initial position in the direction along the core line 51 does not exceed a predetermined upper limit. The "direction along the core line 51" is the X-axis direction along the core line 51.
[0044] FIG. 13 shows an example of the constraint processing executed by the fifth target position constraint processor 29. As shown in FIG. 13, the target position of the control point 61 being processed is constrained (limited) so that the distance d3 from the initial position in the direction along the core line 51 does not exceed a predetermined upper limit Limd3. The upper limit Limd3 is set to an appropriate value taking into consideration, for example, the game specifications, the scene, and the presentation. The above constraint processing limits the movement of the control point 61 so that it does not deviate too far from the initial position in the direction along the core line 51. This prevents the amount of deformation of the clothing object 37 in the body direction (the direction of the core line 51) from becoming too large, allowing the movement of the clothing object 37 to be expressed more naturally.
[0045] 2, the control point update processor 31 updates the positions of the multiple control points 61 so that they approach the target positions calculated by the target position calculation processor 19 and constrained by the above-mentioned constraint processes due to the cloth simulation. In other words, the movement of the control points 61 due to the cloth simulation is limited to within the range constrained by the constraint processes.
[0046] The image generation processing unit 33 generates an image of the clothing object 37 based on the positions of the control points 61 updated by the control point update processing unit 31. The image generation processing unit 33 also generates an image of the body object 35. Although a detailed description will be omitted, the image of the body object 35 is generated by calculating target positions of multiple control points set on the body object 35 by a predetermined motion processing and updating the position of each control point so that it approaches the calculated target position.
[0047] The processing in each processing unit described above is not limited to these examples of division of processing, and may be performed by a smaller number of processing units (for example, one processing unit), or by further subdivided processing units. The functions of each processing unit described above are implemented by a game program executed by CPU 101 (see FIG. 24 described below), but some of them may be implemented by actual devices such as dedicated integrated circuits such as ASICs and FPGAs, or other electrical circuits.
[0048] (1-2. Processing procedure executed by the information processing device) Next, an example of a processing procedure executed by the information processing device 3 according to the first embodiment will be described with reference to FIG.
[0049] In step S5, the information processing device 3 sets, via the core line setting processing unit 13, a core line 51 that linearly connects multiple joints in the body object 35. If an offset distance is set, the core line 51 is set based on a position offset by the offset distance from the position of the joint.
[0050] In step S10, the information processing device 3 sets the thickness of the core wire 51 set in step S5 above using the thickness setting processing unit 15. The thickness of the core wire 51 is set individually at multiple locations including both ends and the middle part (for example, three locations: the starting end position, the middle position, and the ending end position).
[0051] In step S15, the information processing device 3 executes a cloth simulation using the target position calculation processing unit 19, and calculates target positions of each of the control points 61 set on the clothing object 37 by the cloth simulation.
[0052] In step S20, the information processing device 3, using the first target position constraint processing unit 21, constrains the target position of the control point 61 calculated in step S15 above to an area closer to the initial position than a plane 67 including the core line 51 and perpendicular to a normal line 63 connecting the predetermined initial position of the control point 61 and the closest point 65 on the core line 51.
[0053] In step S25, the information processing device 3, by means of the second target position constraint processing unit 23, constrains the target position of the control point 61 calculated in step S15 above to an area outside the shape 69 determined by the thickness of the core line 51 set in step S10 above.
[0054] In step S30, the information processing device 3 constrains the target position using the third target position constraint processing unit 25 so that the distance between the target position of the control point 61 calculated in step S15 and the core line 51 does not exceed a predetermined upper limit value Limd1 set based on the distance d1 between the initial position of the control point 61 and the core line 51.
[0055] In step S35, the information processing device 3 constrains the target positions by the fourth target position constraint processing unit 27 so that the distance between the target positions calculated in step S15 of two circumferentially adjacent control points 61 around the same core line 51 does not exceed a predetermined upper limit value Limd2 set based on the distance d2 between the two control points 61 at their initial positions.
[0056] In step S40, the information processing device 3 constrains the target position by the fifth target position constraint processing unit 29 so that the distance d3 in the direction along the core line 51 between the target position calculated in step S15 above and the initial position does not exceed a predetermined upper limit value Limd3.
[0057] In step S45, the information processing device 3 uses the control point update processing unit 31 to update the positions of the multiple control points 61 so that they approach the target positions based on the cloth simulation calculated in step S15 above and constrained by each of the constraint processes in steps S20 to S40 described above.
[0058] In step S50, the information processing device 3 generates an image of the clothing object 37 based on the position of the control point 61 updated in step S45 above, using the image generation processing unit 33. The image generation processing unit 33 also generates an image of the body object 35. This completes the process of this flowchart.
[0059] The above-described processing procedure is an example, and at least some of the procedures may be deleted or changed, or other procedures may be added. Furthermore, the order of at least some of the procedures may be changed, or multiple procedures may be combined into a single procedure.
[0060] (1-3. Effects of the First Embodiment) As described above, the game program of the first embodiment causes the information processing device 3 to function as: a core line setting processing unit 13 that sets the core line 51 connecting the multiple joints of the body object 35; a target position calculation processing unit 19 that calculates the target positions of each of the multiple control points 61 set on the clothing object 37 by a predetermined simulation process for deforming the clothing object 37 covering the body object 35; a first target position constraint processing unit 21 that constrains the target position to an area on the initial position side of a plane 67 that includes the core line 51 and is perpendicular to a normal 63 that connects the initial positions of the predetermined control points 61 and the closest point 65 on the core line 51; a control point update processing unit 31 that updates the positions of the multiple control points 61 so that they approach the constrained target positions; and an image generation processing unit 33 that generates an image of the clothing object 37 based on the updated positions of the control points 61.
[0061] In this embodiment, a core line 51 is set connecting the multiple joints of the body object 35, and the target positions of the control points 61 of the clothing object 37 calculated by a predetermined simulation process are constrained to a region closer to the initial position than a plane 67 that includes the core line 51 and is perpendicular to a normal line 63 connecting the preset initial position of the control point 61 and the closest point 65 on the core line 51. This restricts the movement of the control point 61 so that it cannot reach a region opposite the region closer to the initial position relative to the core line 51 (if the control point 61 reaches this region, there is a high possibility that the body will penetrate through the clothing). In other words, it is possible to set in advance the region (region closer to the initial position) in which the control point 61 of the clothing object 37 should exist relative to the core line 51. The initial positions of the control points 61 of the clothing object 37 are set so that they do not interfere with the body object 35 when the character is in a predetermined posture, for example. This makes it possible to prevent the character's body from penetrating through the clothing.
[0062] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as a thickness setting processing unit 15 that sets the thickness of the core line 51, and a second target position constraint processing unit 23 that constrains the target position to an area outside the shape 69 determined by the thickness setting of the core line 51.
[0063] In this case, the movement of the control point 61 of the clothing object 37 can be restricted so that it does not enter the inside of the shape 69 determined by the thickness setting of the core line 51. By setting the thickness of the core line 51 to an appropriate value according to the shape of the body object 35, it is possible to further prevent the character's body from passing through the clothing.
[0064] In this embodiment, the thickness setting processor 15 may set the thickness of the core wire 51 individually at a plurality of locations including one end of the core wire 51, the middle portion, and the other end.
[0065] In this case, the thickness of the core wire 51 can be set in detail according to, for example, the shape of the body object 35. This can further improve the effect of suppressing the occurrence of the punch-through phenomenon compared to when collision detection is performed using simple shapes such as a capsule, sphere, cube, or cylinder.
[0066] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as a third target position constraint processing unit 25 that constrains the target position so that the distance between the target position and the core line 51 does not exceed a predetermined upper limit value Limd1 set based on the distance d1 between the initial position and the core line 51.
[0067] In this case, the movement of the control point 61 of the clothing object 37 can be restricted so that it does not move too far from the core line 51. This prevents the amount of deformation of the clothing object 37 in the direction perpendicular to the body direction from becoming too large, allowing for a more natural expression of the movement of the clothing object 37. For example, if the clothing object 37 has sleeves 37a, 37b into which the arms of the body object 35 are inserted and a hem 37c into which the legs are inserted, it is possible to prevent the sleeves 37a, 37b and the hem 37c from stretching too far away from the body.
[0068] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as a fourth target position constraint processing unit 27 that constrains the target position so that the distance between the target positions of two control points 61 that are circumferentially adjacent around the same core line 51 does not exceed a predetermined upper limit value Limd2 set based on the distance d2 between the initial positions of the two control points 61.
[0069] If the distance between two adjacent control points 61 circumferentially around the same core line 51 of a clothing object 37 becomes too large, there is a high possibility that the body will pass through the clothing at that location.
[0070] In this embodiment, the movement of a control point 61 of a clothing object 37 can be restricted so that it does not move too far away from adjacent control points 61 that belong to the same core line 51. This further enhances the effect of suppressing the occurrence of punch-through. It also prevents the amount of deformation of the perimeter around the body of the clothing object 37 from becoming too large, allowing the movement of the clothing object 37 to be expressed more naturally.
[0071] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as a fifth target position constraint processing unit 29 that constrains the target position so that the distance d3 in the direction along the core line 51 between the target position and the initial position does not exceed a predetermined upper limit value Limd3.
[0072] In this case, movement of the control point 61 of the clothing object 37 can be restricted so that it does not deviate too far from its initial position in the direction along the core line 51. This prevents the amount of deformation of the clothing object 37 in the body direction from becoming too great, allowing the movement of the clothing object 37 to be expressed more naturally. For example, when a character wearing a clothing object 37 with sleeves 37a, 37b raises their arms upward, it is possible to adjust the amount of sliding of the sleeves to prevent them from sliding down too much.
[0073] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as an offset setting processing unit 17 that sets an offset distance between the position of the joint and the end of the core wire 51, and in that case, the core wire setting processing unit 13 may set the core wire 51 based on a position offset by the offset distance from the position of the joint.
[0074] In this case, either or both ends of the core wire 51 can be set at a position offset from the joint position. This allows the shape of the clothing object 37 to be adjusted to match the body shape of the character. For example, by offsetting the knee joint-side ends of the core wires 51F, 51H connecting the knee joints 47L, 47R and the ankle joints 49L, 49R rearward from the knee joints 47L, 47R, the shape of the clothing object 37 can be adjusted to a shape that sufficiently covers the bulge of the character's calves, further improving the effect of preventing the calves from poking through the clothing.
[0075] 2. Second Embodiment Next, we will explain the second embodiment of the present invention. In this second embodiment, skinning position information is provided for the control points of the clothing object worn by the body object of a character, and the degree of freedom of movement of each control point from the skinning position is changed depending on the bending state of the joints, thereby preventing the body object from penetrating the clothing object, especially at the joints.
[0076] (2-1. Functional configuration of information processing device) An example of the functional configuration of the information processing device 3 according to the second embodiment will be described with reference to Fig. 15 and Fig. 16 to Fig. 22. In Fig. 15, the same components as those in Fig. 2 are denoted by the same reference numerals, and the description thereof will be omitted as appropriate.
[0077] As shown in Figure 15, the information processing device 3 has the aforementioned core line setting processing unit 13, an angle calculation processing unit 73, a first target position calculation processing unit 75, a second target position calculation processing unit 77, an area setting processing unit 79, a degree of freedom setting processing unit 81, the aforementioned control point update processing unit 31, and the aforementioned image generation processing unit 33.
[0078] The processing contents of the core line setting processing unit 13 are the same as those in the first embodiment, and therefore a description thereof will be omitted.
[0079] The angle calculation processing unit 73 calculates the bending angle of the joints of the body object 35. Specifically, the angle calculation processing unit 73 calculates the bending angle based on the relative angle between two adjacent core lines 51 that share one joint.
[0080] Fig. 16 shows an example of the bending angle calculation process performed by the angle calculation processor 73. As shown in Fig. 16, two adjacent core lines 51, 51 (represented as core line A and core line B in Fig. 16) that share one joint are set. Core lines A and B are, for example, core lines 51A and 51B that share an elbow joint 41L, core lines 51C and 51D that share an elbow joint 41R, core lines 51E and 51F that share a knee joint 47L, or core lines 51G and 51H that share a knee joint 47R. In this case, the angle calculation processor 73 calculates the bending angle θ, which is the relative angle between core line A and core line B, based on the direction of the X-axis (vector information) of the local coordinate system set for each of core line A and core line B.
[0081] 15, the first target position calculation processor 75 performs the same processing as the target position calculation processor 19 described above. That is, the first target position calculation processor 75 calculates first target positions of each of the control points 61 set on the clothing object 37 by a predetermined simulation process for deforming the clothing object 37 covering the body object 35. For convenience of explanation, the predetermined simulation process executed by the first target position calculation processor 75 is also referred to as "cloth simulation," and the first target position calculated by the first target position calculation processor 75 is also referred to as "target position by cloth simulation" in this specification.
[0082] The second target position calculation processor 77 calculates second target positions of the plurality of control points 61 based on weight information set for each of the plurality of control points 61. The weight information is information for setting how each control point 61 follows a reference point (e.g., a joint position) set in the body object 35, and includes at least one associated reference point and a weighting amount that indicates the degree of association for each reference point. For convenience of explanation, the second target position calculated by the second target position calculation processor 77 is also referred to as a "skinning position" in this specification.
[0083] Next, a specific example of processing by the second target position calculation processor 77 will be described. FIG. 17 shows an example of setting reference points and control points. As shown in FIG. 17, a body object 35 is wearing a clothing object 37. The clothing object 37 has a fixed portion 83 that is fixed to the body, and a movable portion 85 that is freely movable. In the example shown in FIG. 17, the fixed portion 83 is a portion of the hem 37c of the clothing object 37 that is above the boundary 87, and the movable portion 85 is a portion of the hem 37c that is below the boundary 87.
[0084] A plurality of reference points 89 (so-called bones) for moving the body are set in the body object 35. Note that in FIG. 17, the reference points 89 are indicated by hatching to distinguish them from the control points 61. In the example shown in FIG. 17, the reference points 89 are set at positions corresponding to the hip joints 45L and 45R, the knee joints 47L and 47R, and the ankle joints 49L and 49R of the body object 35. Each reference point 89 moves by the movement system (motion calculation, etc.) of the body object 35. Any of the reference points 89 corresponding to the hip joints 45L and 45R, the knee joints 47L and 47R, and the ankle joints 49L and 49R is set as the reference point for deforming the movable part 85 of the clothing object 37.
[0085] As shown in FIG. 17, a plurality of control points 61 are set on the clothing object 37. The control points 61 are points used for control purposes to express the movement and deformation of the clothing object 37. The plurality of control points 61 are arranged in a grid pattern so as to cover the surface of the clothing object 37. The control points 61 of the fixed part 83 are set to a ratio of 0 (or a value close to 0) to which a movement amount limit value (described later) is applied. On the other hand, the control points 61 of the movable part 85 are set to a ratio of 0 to 1 (0 to 1) to which a movement amount limit value is applied.
[0086] As described above, weight information is assigned to each control point 61, and this weight information includes which reference point 89 the control point 61 is associated with and the degree of association (weight) for each reference point 89. For example, three reference points 89 corresponding to the hip joint 45R, the right knee joint 47R, and the right ankle joint 49R are associated with each control point 61 in the right foot region of the movable part 85 of the clothing object 37, and a weight is assigned to each reference point 89. Similarly, three reference points 89 corresponding to the hip joint 45L, the left knee joint 47L, and the left ankle joint 49L are associated with each control point 61 in the left foot region of the movable part 85 of the clothing object 37, and a weight is assigned to each reference point 89. The sum of the weights (ratios) assigned to each reference point 89 for one control point 61 is 1. The weight information has been adjusted so that the movable part 85 of the clothing object 37 does not interfere with the body object 35 (for example, does not sink in or penetrate through).
[0087] Based on the weight information, the second target position calculation processor 77 calculates the skinning position (second target position) of each control point 61. Specifically, the second target position calculation processor 77 calculates the skinning position of each control point 61 according to the following calculation formula (1).
[0088]
number
[0089] Note that goal[i]∈R 3 is the skinning position of the i-th control point 61, BoneNum[i]∈N is the number of reference points 89 associated with the i-th control point 61, BoneWeightArray[i][j]∈R is the weight of the j-th reference point 89 associated with the i-th control point 61, and BonePosition[k]∈R 3 is the current position of the k-th reference point 89, and BoneArray[i][j]∈Z is the index (array subscript) of the j-th reference point 89 associated with the i-th control point 61.
[0090] FIG. 18 shows an example of a calculated skinning position. Note that, for ease of explanation, FIG. 18 illustrates a simplified two-dimensional object with a reduced number of control points 61. Assume that, as the body object 35 moves from the initial state shown in FIG. 18(a), each reference point 89 moves, for example, as shown in FIG. 18(b). As described above, a weight is set for each reference point 89 associated with each control point 61 as weight information. The skinning position of each control point 61 is calculated based on the current position of each reference point 89 after movement and the weight. FIG. 18(c) shows a state in which each control point 61 has moved to this calculated skinning position. In this way, when the reference point 89 moves in accordance with the movement of the body object 35, the skinning position of each control point 61 also moves by a predetermined amount in a predetermined direction so as to follow it.
[0091] Returning to Figure 15, the area setting processing unit 79 sets the area of the control points 61 (hereinafter referred to as the "change area" as appropriate) among the multiple control points 61, whose degrees of freedom of movement from the second target position are changed based on the bending angle of the joint by the degree of freedom setting processing unit 81 described later, to a specified area near the joint.
[0092] FIG. 19 shows an example of a change region of a control point 61 set by the region setting processing unit 79. As shown in FIG. 19, two adjacent core lines 51, 51 (represented as core line A and core line B in FIG. 19) that share one joint are set. If the total length of core line A is L1, then of the multiple control points 61 belonging to core line A, a region of control points 61 corresponding to a length of L1 / 3 on the joint side is set as the change region. Similarly, if the total length of core line B is L2, then of the multiple control points 61 belonging to core line B, a region of control points 61 corresponding to a length of L2 / 3 on the joint side is set as the change region. Note that the ratio of the total length of the core lines may be other than 1 / 3 (for example, 50%, 15%, etc.).
[0093] 15 , the degree of freedom setting processing unit 81 variably sets the degree of freedom of movement from the skinning position calculated by the second target position calculation processing unit 77 for the plurality of control points 61 based on the bending angle calculated by the angle calculation processing unit 73. The degree of freedom setting processing unit 81 has a limit value setting processing unit 91, a ratio setting processing unit 93, and a ratio change processing unit 95.
[0094] The limit value setting processor 91 sets, for each of the multiple control points 61, a limit value for the amount of movement from the skinning position calculated by the second target position calculation processor 77. The "limit value for the amount of movement" is a value that defines a predetermined range for restricting the target position of the control point 61 by cloth simulation within the predetermined range from the skinning position. The limit value setting processor 91 does not set the limit value for the amount of movement individually for each of the multiple control points 61, but sets it as a common value for the multiple control points 61. The limit value for the amount of movement is adjusted to an appropriate value by the game program designer or the like, and the limit value setting processor 91 variably sets the limit value in accordance with the results of this adjustment.
[0095] The ratio setting processor 93 individually sets, for each of the plurality of control points 61, a ratio at which the movement amount limit value set by the limit value setting processor 91 is applied (hereinafter referred to as the "limit value application ratio" as appropriate). The limit value application ratio may be set as a numerical value in the range of 0 to 1, or as a numerical value (%) in the range of 0 to 100. For example, the position of a control point 61 for which the limit value application ratio is set to 0 is limited (fixed) to the skinning position regardless of the size of the movement amount limit value. Furthermore, a control point 61 for which the limit value application ratio is set to a value greater than 0 can move freely from the skinning position according to the target position determined by the cloth simulation described above, within a range of the value obtained by multiplying the movement amount limit value by the ratio. In other words, the smaller the limit value application ratio, the smaller the degree of freedom of movement of the control point 61 from the skinning position, and the larger the limit value application ratio, the greater the degree of freedom of movement of the control point 61 from the skinning position.
[0096] The application rate of the limit value is set individually for each of the multiple control points 61, so it is possible to vary it depending on the part of the clothing object 37. For example, the application rate of the limit value may be set to gradually increase from a fixed part of the clothing object 37 (e.g., fixed part 83) toward a freely movable part (e.g., the lower end of the movable part 85).
[0097] An example of the distribution shape of the limit value application rate in this case is shown in Fig. 20. Fig. 20 is a graph in which the vertical axis represents the limit value application rate (0 to 1) and the horizontal axis represents, for example, the position in the core line direction (e.g., the X-axis direction of core lines 57, 59). In the example shown in Fig. 20, the limit value application rate is set to gradually increase from the fixed end (e.g., fixed part 83) of clothing object 37 to the free end (e.g., the bottom end of movable part 85).
[0098] Such editing of the percentage distribution is performed, for example, by a game program designer, etc. In this case, the percentage distribution may be edited by selecting a specific curve from a plurality of types of curves, or, for example, as shown in Figure 20, a plurality of editing points 97 may be provided at both ends or in the middle of the curve, and the shape of the curve may be edited by changing the values of the editing points 97.
[0099] The rate change processing unit 95 changes the application rate of the limit value set by the rate setting processing unit 93, based on the bending angle θ calculated by the angle calculation processing unit 73. The rate change processing unit 95 also sets the degree of change of the application rate of the limit value so that it gradually increases from the end opposite the joint to the end on the joint side in the change region set by the region setting processing unit 79.
[0100] FIG. 21 shows a specific example of how the limit value application rate is changed by the rate change processing unit 95. As shown in FIG. 21, the limit value application rate is changed so that it decreases as the bending angle θ of the joint decreases from 180°. In other words, the greater the degree of bending of the joint, the smaller the degree of freedom of movement of the control point 61 from the skinning position. In the example shown in FIG. 21, for example, when the bending angle θ is 180°, the application rate is 100%; when the bending angle θ is 150° or more and less than 180°, the application rate is 80%; when the bending angle θ is 120° or more and less than 150°, the application rate is 70%; when the bending angle θ is 90° or more and less than 120°, the application rate is 50%; when the bending angle θ is 45° or more and less than 90°, the application rate is 30%; and when the bending angle θ is less than 45°, the application rate is 0%. Note that the above-described change in the limit value application rate is merely an example, and other changes may be made.
[0101] FIG. 22 shows an example of the distribution shape of the limit value application rate changed by the rate change processor 95. Note that the distribution shape in FIG. 22 corresponds to the aforementioned FIG. 20. In the example shown in FIG. 22, the limit value application rate is changed to 50% of the pre-change value (indicated by the dashed line 99 in FIG. 22) in the change area set near the joint shared by core lines A and B because, for example, the bending angle θ of the joint is 90° (dashed line 102 in FIG. 22). In this case, if the limit value application rate changes suddenly, the movement (stiffness) of the clothing object 37 will change suddenly, making the movement of the clothing object 37 unnatural. For this reason, the rate change processor 95 sets the degree of change of the limit value application rate so that it gradually increases from the end of the change area opposite the joint toward the end on the joint side. In the example shown in FIG. 22, in the change area on the core line A side, the limit value application rate gradually decreases to 50% of the pre-change value from the end of the change area opposite the joint toward the end on the joint side (solid line 104 in FIG. 22). In the change area on the core line B side, the application rate of the limit value gradually decreases from the end opposite the joint to 50% of the value before the change toward the end on the joint side (solid line 104 in FIG. 22). This allows the movement (stiffness) of the clothing object 37 to change gradually, allowing the movement of the clothing object 37 to be expressed more naturally.
[0102] 15, the control point update processor 31 updates the positions of each of the multiple control points 61 based on the degrees of freedom set by the degree of freedom setting processor 81, so that they each approach the target position of the cloth simulation calculated by the first target position calculation processor 75. Specifically, the control point update processor 31 updates the positions of each of the multiple control points 61 so that they each approach the target position of the cloth simulation, within the range of the limit value for the amount of movement from the skinning position to which the limit value application rate has been applied. In other words, the movement of the control points 61 by the cloth simulation is limited to within the range of the limit value from the skinning position.
[0103] The image generation processing unit 33 generates an image of the clothing object 37 based on the positions of the control points 61 updated by the control point update processing unit 31. The image generation processing unit 33 also generates an image of the body object .
[0104] The processing in each processing unit described above is not limited to these examples of division of processing, and may be performed by a smaller number of processing units (for example, one processing unit), or by further subdivided processing units. The functions of each processing unit described above are implemented by a game program executed by CPU 101 (see FIG. 24 described below), but some of them may be implemented by actual devices such as dedicated integrated circuits such as ASICs and FPGAs, or other electrical circuits.
[0105] (2-2. Processing Procedures Executed by Information Processing Device) Next, an example of a processing procedure executed by the information processing device 3 according to the second embodiment will be described with reference to FIG.
[0106] In step S105, the information processing device 3 causes the core line setting processing unit 13 to set a core line 51 connecting multiple joints in the body object 35. When an offset distance is set as in the first embodiment, the core line 51 may be set at a position offset by the offset distance from the position of the joint.
[0107] In step S110, the information processing device 3 causes the angle calculation processing unit 73 to calculate the bending angle θ based on the relative angle between two adjacent core wires 51 that share one joint.
[0108] In step S115, the information processing device 3 sets, by the area setting processing unit 79, a change area for the control points 61 among the plurality of control points 61, the control points 61 for which the degree of freedom of movement from the second target position is to be changed based on the bending angle calculated in step S110.
[0109] In step S120, the information processing device 3 executes a cloth simulation using the first target position calculation processor 75, and calculates target positions (first target positions) of the control points 61 set on the clothing object 37 by the cloth simulation.
[0110] In step S125, the information processing device 3 causes the second target position calculation processing unit 77 to calculate the skinning positions (second target positions) of the plurality of control points 61 based on the weight information set for each of the plurality of control points 61.
[0111] In step S130, the information processing device 3 causes the limit value setting processing unit 91 to set, for the plurality of control points 61, limit values for the amount of movement from the skinning position calculated in step S125 above.
[0112] In step S135, the information processing device 3 causes the ratio setting processing unit 93 to individually set, for each of the plurality of control points 61, a ratio at which the movement amount limit value set in step S130 is applied.
[0113] In step S140, the information processing device 3 causes the ratio change processing unit 95 to change the application ratio of the limit value set in step S135 for each control point 61 within the change area set in step S115, based on the bending angle calculated in the above-mentioned step S110.
[0114] In step S145, the information processing device 3 causes the control point update processing unit 31 to update the positions of the multiple control points 61 so that they approach the target positions determined by the cloth simulation calculated in step S120 above, within the range of the limit value for the amount of movement from the skinning position to which the application rate of the limit value set in step S135 and changed in step S140 above has been applied.
[0115] In step S150, the information processing device 3 generates an image of the clothing object 37 based on the position of the control point 61 updated in step S145 using the image generation processing unit 33. The image generation processing unit 33 also generates an image of the body object 35. This completes the process of this flowchart.
[0116] The above-described processing procedure is an example, and at least some of the procedures may be deleted or changed, or other procedures may be added. Furthermore, the order of at least some of the procedures may be changed, or multiple procedures may be combined into a single procedure.
[0117] (2-3. Effects of the Second Embodiment) As described above, the game program of the second embodiment causes the information processing device 3 to function as an angle calculation processing unit 73 that calculates bending angles of joints of the body object 35; a first target position calculation processing unit 75 that calculates first target positions (target positions by cloth simulation) of multiple control points 61 set on the clothing object 37 by a predetermined simulation processing (cloth simulation processing) for deforming the clothing object 37 covering the body object 35; a second target position calculation processing unit 77 that calculates second target positions (skinning positions) of the multiple control points 61 based on at least one reference point 89 associated with each of the multiple control points 61 and weight information including the degree of association for each reference point 89; a degree of freedom setting processing unit 81 that variably sets the degrees of freedom of movement from the second target positions for the multiple control points 61 based on the bending angles; a control point update processing unit 31 that updates the positions of the multiple control points 61 so that they approach the first target positions based on the set degrees of freedom; and an image generation processing unit 33 that generates an image of the clothing object 37 based on the updated positions of the control points 61.
[0118] For example, because the changes in body movement are large near the joints of a character's elbows and knees, the body, which is hidden within the clothing, is likely to protrude through the clothing. In particular, the elbows and knees of a character are likely to protrude when the joints are bent, making this phenomenon particularly noticeable in terms of their shape.
[0119] In this embodiment, weight information including at least one associated reference point 89 and the degree of association for each of the control points 61 of the clothing object 37 is set in advance. Then, based on the weight information, second target positions of the control points 61 are calculated. The reference point 89 moves in accordance with the movement of the body object 35, and the second target positions of each control point 61 also move a predetermined amount in a predetermined direction so as to follow the movement of the reference point 89.
[0120] At this time, the weight information is set so that the second target positions of the control points 61 do not interfere with the body object 35. Then, in this embodiment, the bending angles of the joints of the body object 35 are calculated, and the degrees of freedom of movement from the second target positions of the control points 61 of the clothing object 37 are variably set based on the angles. For example, if the degrees of freedom are set high, the amount of movement of the control points 61 from the second target positions increases (making the punch-through phenomenon more likely to occur), and if the degrees of freedom are set low, the amount of movement of the control points 61 from the second target positions decreases (making the punch-through phenomenon less likely to occur). Therefore, for example, if the bending angle of a joint is large, changing the degrees of freedom to lower it can prevent the character's body from punching through the clothing near joints such as the elbows and knees.
[0121] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as an area setting processing unit 79 that sets the area of the control point 61, among the multiple control points 61, whose degree of freedom of movement from the second target position is changed based on the bending angle, to a predetermined area near the joint.
[0122] In this case, the degrees of freedom can be changed according to the bending angle of the joints only in the areas near the joints, rather than for the entire clothing object 37. This makes it possible to lower the degrees of freedom only in the clothing joint area when the bending angle of the joint is large (less movement and stiffer), while maintaining a high degree of freedom in areas away from the joints (larger and softer movement), allowing the movement of the clothing object 37 to be expressed more naturally.
[0123] In addition, in this embodiment, the game program may further cause the information processing device 3 to function as a core line setting processing unit 13 that sets a core line 51 connecting multiple joints of the body object 35, in which case the angle calculation processing unit 73 calculates the bending angle θ based on the relative angle between two adjacent core lines 51 that share one joint, the degree of freedom setting processing unit 81 has a limit value setting processing unit 91 that sets a limit value for the amount of movement from the second target position for the multiple control points 61, a ratio setting processing unit 93 that individually sets a ratio for applying the limit value for the amount of movement to each of the multiple control points 61, and a ratio change processing unit 95 that changes the ratio based on the bending angle, and the control point update processing unit 31 may each update the position of the multiple control points 61 to approach the first target position within the range of the limit value for the amount of movement from the second target position to which the ratio has been applied.
[0124] In this case, by setting the application rate of the limit value, it is possible to vary the movement amount limit value applied to each of the multiple control points 61. This makes it possible, for example, when the bending angle of a joint is large, to make it difficult for parts of the clothing object 37 close to the joint to move, and to make parts farther from the joint move freely, for each control point 61. As a result, it is possible to prevent the body from passing through the clothing near joints such as the elbows and knees, and to express natural movement of the clothing object 37.
[0125] In this embodiment, the rate change processing unit 95 may set the degree of change in the rate at which the limit value is applied to gradually increase from the end of the predetermined area opposite the joint toward the end of the area on the joint side.
[0126] If the rate at which the movement limit value is applied changes suddenly, the movement (stiffness) of the clothing object 37 changes suddenly, resulting in unnatural movement of the clothing object 37. In this embodiment, the degree of change in the rate at which the limit value is applied can be gradually increased from the side opposite the joint toward the joint within a set predetermined region, so that the movement (stiffness) of the clothing object 37 can be changed gradually, allowing the movement of the clothing object 37 to be expressed more naturally.
[0127] <3. Modifications, etc.> The present invention is not limited to the above-described embodiment, and various modifications are possible within the scope of the spirit and technical concept of the present invention.
[0128] Although the above description has been given of the case where the first object is the body of a character, the first object is not limited to a body object. The first object may be any object that has a "connection portion that connects elements that move relatively" equivalent to a "joint," and the above-described processing may be applied to such an object.
[0129] Furthermore, although the above description has been given using an example of a simulation of a clothing object worn by a character, the second object is not limited to clothing. For example, the above-described processing may be applied to flexible objects attached to a character, such as cloth equipment (headband, bandana, etc.) or cloth or paper possession items (pieces of cloth, scrolls, flags, etc.), or flexible objects that are part of the body, such as hair. In the case of an object such as hair, the "predetermined simulation processing" is preferably a so-called string simulation processing that can simulate the deformation of an object such as a string or rope.
[0130] Furthermore, although the above description has been given of the case where the image generation program is a game program, the image generation program can also be applied to technical fields other than games, such as CG animation, computer simulation, and CAD.
[0131] Furthermore, in addition to what has already been described above, the methods according to the above-described embodiments and modifications may be appropriately combined and used. Although not specifically illustrated, the above-described embodiments and modifications may be implemented with various modifications within the scope of their spirit.
[0132] <4. Hardware configuration of information processing device> Next, an example of a hardware configuration of the information processing device 3 that realizes each processing unit implemented by a program executed by the CPU 101 and the like described above will be described with reference to FIG.
[0133] 24, the information processing device 3 includes, for example, a CPU 101, a ROM 103, a RAM 105, a GPU 106, a dedicated integrated circuit 107 constructed for a specific application, such as an ASIC or an FPGA, an input device 113, an output device 115, a recording device 117, a drive 119, a connection port 121, and a communication device 123. These components are connected to each other via a bus 109, an input / output interface 111, etc., so that signals can be transmitted between them.
[0134] The game program can be recorded in, for example, the ROM 103, the RAM 105, or a recording device 117 such as a hard disk.
[0135] The game program may also be temporarily or permanently (non-temporarily) recorded on a removable recording medium 125, such as a magnetic disk such as a flexible disk, various optical disks such as CDs, MO disks, and DVDs, or a semiconductor memory. Such recording medium 125 may also be provided as a so-called package software. In this case, the game program recorded on such recording medium 125 may be read by drive 119 and recorded on the recording device 117 via input / output interface 111, bus 109, etc.
[0136] The game program may also be stored, for example, on a download site, another computer, or another storage device (not shown). In this case, the game program is transferred via a network NW such as a LAN or the Internet, and the communication device 123 receives the program. The program received by the communication device 123 may then be recorded in the storage device 117 via the input / output interface 111, the bus 109, or the like.
[0137] The game program may also be recorded in, for example, an appropriate externally connected device 127. In this case, the game program may be transferred via an appropriate connection port 121 and recorded in the recording device 117 via the input / output interface 111, the bus 109, etc.
[0138] The CPU 101 then executes various processes in accordance with the programs recorded in the recording device 117, thereby realizing processes by the aforementioned core line setting processor 13, thickness setting processor 15, offset setting processor 17, target position calculation processor 19, first target position constraint processor 21, second target position constraint processor 23, third target position constraint processor 25, fourth target position constraint processor 27, fifth target position constraint processor 29, control point update processor 31, image generation processor 33, angle calculation processor 73, first target position calculation processor 75, second target position calculation processor 77, region setting processor 79, degree of freedom setting processor 81, etc. In this case, the CPU 101 may, for example, directly read out and execute the programs from the recording device 117, or may first load the programs into RAM 105 and then execute them. Furthermore, when the CPU 101 receives the programs via the communication device 123, drive 119, or connection port 121, for example, the CPU 101 may directly execute the received programs without recording them in the recording device 117.
[0139] Furthermore, the CPU 101 may perform various processes based on signals and information input from an input device 113, such as a microphone, mouse, keyboard, etc. (not shown), including the game controller 5 described above, as needed.
[0140] The GPU 106 performs processing for image display, such as rendering processing, in response to instructions from the CPU 101 .
[0141] Then, the CPU 101 and the GPU 106 output the results of the above processing from an output device 115, which may include, for example, the above-mentioned display device 7. Furthermore, the CPU 101 and the GPU 106 may transmit the processing results via the communication device 123 or the connection port 121, as necessary, or may record the results in the recording device 117 or the recording medium 125. [Explanation of symbols]
[0142] 1. Game System 3. Information processing equipment 5. Game Controllers 7 Display device 13 Core wire setting processing section 15 Thickness setting processing section 17 Offset setting processing section 19 Target position calculation processing unit 21 First target position constraint processing unit 23 Second target position constraint processing unit 25 Third target position constraint processing unit 27 Fourth target position constraint processing unit 29 Fifth target position constraint processing unit 31 Control point update processing unit 33 Image generation processing section 35 Body Object (First Object) 37 Clothing object (second object) 39L, 39R shoulder joint 41L, 41R Elbow joint 43L, 43R Wrist joint 45L, 45R hip joint 47L, 47R knee joint 49L, 49R ankle joint 51s Starting position (end of one side) 51m intermediate position (middle part) 51e End position (other end) 51A~51H Core wire 61 control points 63 Normal 65 Nearest point 69 Shape determined by thickness 73 Angle calculation processing unit 75 First target position calculation processing unit 77 Second target position calculation processing unit 79 Area setting processing section 81 Degree of freedom setting processing section 89 Reference point 91 Limit value setting processing section 93 Ratio setting processing section 95 Ratio change processing section 125 Recording Media d1~d3 distance Limd1 upper limit Limd2 upper limit Limd3 upper limit OffsetD offset distance θ bending angle
Claims
1. An information processing device an angle calculation processing unit that calculates bending angles of joints included in the first object; a first target position calculation processing unit that calculates first target positions of a plurality of control points set on the second object by a predetermined simulation process for deforming a second object associated with the first object; a second target position calculation processing unit that calculates second target positions of the plurality of control points based on weight information including at least one reference point associated with each of the plurality of control points and a degree of association for each of the reference points; a degree-of-freedom setting processing unit that variably sets degrees of freedom of movement from the second target position for the plurality of control points based on the bending angle; a control point update processing unit that updates the positions of the plurality of control points so as to approach the first target position based on the set degrees of freedom; an image generation processing unit that generates an image of the second object based on the updated positions of the control points; An image generation program to function as a.
2. The information processing device a region setting processing unit that sets a region of the control points, among the plurality of control points, in which a degree of freedom of movement from the second target position is changed based on the bending angle, to a predetermined region near the joint; 2. The image generating program according to claim 1, further functioning as:
3. The information processing device a core line setting processing unit that sets a core line connecting the plurality of joints included in the first object; It further functions as The angle calculation processing unit calculating the bending angle based on a relative angle between two adjacent core lines that share one of the joints; The degree of freedom setting processing unit a limit value setting processing unit that sets limit values for the amount of movement from the second target position for the plurality of control points; a ratio setting processing unit that individually sets a ratio at which the limit value of the movement amount is applied to each of the plurality of control points; a ratio change processing unit that changes the ratio based on the bending angle, The control point update processing unit updating the positions of the plurality of control points so as to approach the first target position within a range of a limit value of a movement amount from the second target position to which the ratio has been applied; The image generating program according to claim 2 .
4. The ratio change processing unit The degree of change of the ratio is set to gradually increase from the end of the predetermined region opposite the joint toward the end of the predetermined region on the joint side. The image generating program according to claim 3 .
5. the image generation program is a game program; The image generating program according to any one of claims 1 to 4.
6. 6. A recording medium readable by an information processing device, on which the image generating program according to claim 1 is recorded.
7. An image generation method executed by an information processing device, comprising: calculating bending angles of joints of the first object; calculating first target positions of a plurality of control points set on the second object by a predetermined simulation process for deforming a second object associated with the first object; calculating second target positions of the plurality of control points based on weight information including at least one reference point associated with each of the plurality of control points and a degree of association for each of the reference points; variably setting the degree of freedom of movement from the second target position for the plurality of control points based on the bending angle; updating the positions of the plurality of control points so as to approach the first target position based on the set degrees of freedom; generating an image of the second object based on the updated positions of the control points; An image generating method comprising:
Citation Information
Patent Citations
Drawing computer, computer program and recording medium
JP2005099952A