Pose control apparatus, pose control method, pose control system, and pose control program

The posture control device addresses the issue of skin meshes embedding in fixed objects by calculating bone matrices for specific and non-specific bones, ensuring smooth character animations.

JP2025137134APending Publication Date: 2025-09-19KONAMI DIGITAL ENTERTAINMENT CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024036158
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-08
Publication Date
2025-09-19

AI Technical Summary

Technical Problem

Existing animation technologies fail to prevent skin meshes from being embedded in fixed objects during posture blending, causing unintended character postures due to hierarchical bone structure movements.

Method used

A posture control device that calculates bone matrices by blending first and second posture matrices at predetermined ratios for specific and non-specific bones, ensuring vertices are correctly positioned relative to the environment.

Benefits of technology

Prevents skin meshes from appearing embedded in fixed objects, maintaining smooth and intended character postures during animations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025137134000001_ABST
    Figure 2025137134000001_ABST
Patent Text Reader

Abstract

To prevent skin meshes constituting vertices affected by bones from denting a fixed object in representation.SOLUTION: A pose control apparatus includes: a first calculation unit (101) which calculates a first bone matrix by blending a first matrix formed by multiplying first pose matrices when a character takes a first pose with a second matrix formed by multiplying second pose matrices when the character takes a second poser; a second calculation unit (102) which calculates a second bone matrix by blending and multiplying the first pose matrices with the second pose matrices by layer; and a pose determination unit (103) which determines a third pose by blending the first bone matrix with the second bone matrix.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a posture control device for controlling the posture of a character in a skin mesh animation. [Background technology]

[0002] Conventionally, systems that use motion data to move characters placed in a game space are known. For example, the invention described in Patent Document 1 performs retargeting processing that reflects the motion of a source model on the motion of a target model whose bone shape is different from that of the source model, thereby preventing any sense of incongruity in the movement or display of the target model. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Patent Publication No. 2021-43611 Summary of the Invention [Problem to be solved by the invention]

[0004] Bones are structured hierarchically, so that when a higher-level bone is moved, the lower-level bones are also moved. In animations using bones, on a timeline where there are no keyframes between keyframes, the character's posture is determined by blending the previous and next keyframes at a predetermined ratio. However, this blending can sometimes result in an unintended bone being applied to determine the posture, and the skin mesh that constitutes the vertices affected by that bone - in other words, the character object represented by the skin mesh - may appear to be embedded in fixed objects such as the ground or a wall. Patent Document 1 does not disclose anything about this point, leaving room for improvement.

[0005] One aspect of the present disclosure aims to prevent a skin mesh comprising vertices influenced by bones from appearing embedded in a fixed object when determining a character's posture by blending previous and next key frames at a predetermined ratio. [Means for solving the problem]

[0006] A posture control device according to one embodiment of the present disclosure is a posture control device that controls the posture of a character having a plurality of connected bones, and includes: a memory unit that stores a first posture matrix for each of the plurality of bones when the character assumes a first posture, and a second posture matrix for each of the plurality of bones when the character assumes a second posture; a first calculation unit that, for some of the plurality of bones, blends a first matrix obtained by multiplying the first posture matrix with a second matrix obtained by multiplying the second posture matrix with the first posture matrix at a predetermined ratio to calculate a first bone matrix for determining vertices related to the posture; a second calculation unit that, for bones other than the some of the plurality of bones, blends the first posture matrix with the second posture matrix at a predetermined ratio for each layer and multiplies the blended matrices to calculate a second bone matrix for determining vertices related to the posture; and a posture determination unit that uses the first bone matrix and the second bone matrix to determine a third posture by blending the first posture and the second posture at the predetermined ratio.

[0007] A posture control method according to one aspect of the present disclosure is a posture control method for controlling the posture of a character having a plurality of connected bones, the method including: a storage unit that stores a first posture matrix for each of the plurality of bones when the character assumes a first posture; and a second posture matrix for each of the plurality of bones when the character assumes a second posture; and a posture control step including: a first calculation step for calculating, for some of the plurality of bones, a first matrix obtained by multiplying the first posture matrix with a second matrix obtained by multiplying the second posture matrix with the first posture matrix at a predetermined ratio to calculate a first bone matrix for determining vertices associated with the posture; a second calculation step for calculating, for bones other than the some of the plurality of bones, a second bone matrix for determining vertices associated with the posture by blending the first posture matrix with the second posture matrix at a predetermined ratio for each layer of the plurality of bones and multiplying the blended matrices; and a posture determination step for determining a third posture by blending the first posture and the second posture at the predetermined ratio using the first bone matrix and the second bone matrix.

[0008] A posture control system according to one embodiment of the present disclosure is a posture control system for controlling the posture of a character having a plurality of connected bones, and includes: a memory unit that stores a first posture matrix for each of the plurality of bones when the character assumes a first posture; and a second posture matrix for each of the plurality of bones when the character assumes a second posture. The posture control system includes: a first calculation unit that, for some of the plurality of bones, blends a first matrix obtained by multiplying the first posture matrix with a second matrix obtained by multiplying the second posture matrix with the first posture matrix at a predetermined ratio to calculate a first bone matrix for determining vertices associated with the posture; a second calculation unit that, for bones other than the some of the plurality of bones, blends the first posture matrix with the second posture matrix at a predetermined ratio for each layer and multiplies the blended matrices to calculate a second bone matrix for determining vertices associated with the posture; and a posture determination unit that determines a third posture by blending the first posture and the second posture using the first bone matrix and the second bone matrix at the predetermined ratio.

[0009] The posture control device according to each aspect of the present disclosure may be realized by a computer, in which case the game control program that realizes the game control device on a computer by causing the computer to operate as each part (software element) of the game control device, and the computer-readable recording medium on which the program is recorded, also fall within the scope of the present disclosure. [Effects of the Invention]

[0010] According to one aspect of the present disclosure, it is possible to prevent a skin mesh that constitutes vertices influenced by bones from being displayed as being embedded in a fixed object. [Brief explanation of the drawings]

[0011] [Figure 1] 1 is a schematic block diagram illustrating an example configuration of a game system according to an embodiment of the present disclosure. [Figure 2]FIG. 1 is a functional block diagram showing an example of the functional configuration of a game device included in a game system. [Figure 3] 10A and 10B are diagrams illustrating examples of pre-prepared key frame data and frame data created by blending key frame data. [Figure 4] 10A and 10B are diagrams illustrating another example of prepared key frame data and frame data created by blending key frame data. [Figure 5] FIG. 10 is a diagram for explaining a method of calculating frame data between key frame data in skin mesh animation (bone animation). [Figure 6] 10A and 10B are diagrams showing examples of bones and vertices when a character is standing and when the character has bent knees. [Figure 7] FIG. 10 is a diagram illustrating possible adverse effects that may occur when an intermediate frame is created. [Figure 8] FIG. 10 is a diagram illustrating possible adverse effects that may occur when an intermediate frame is created. [Figure 9] FIG. 10 is a diagram illustrating an example of creating an IK matrix. [Figure 10] 10 is a flowchart showing the flow of processing in the game device. DETAILED DESCRIPTION OF THE INVENTION

[0012] An example of an embodiment of the present disclosure will be described in detail below with reference to the drawings. In the description of the drawings, identical parts will be assigned the same reference numerals and descriptions thereof will be omitted. Note that the following description will be given taking as an example a game system 1 including a posture control device according to this embodiment. The posture control device controls the posture of a character in the game system 1.

[0013] (Game system configuration) 1 is a schematic block diagram showing an example configuration of a game system 1. The game system 1 includes a plurality of game devices 10-1, 10-2, ..., 10-n (n is a positive integer) and a server 30. The game devices 10-1, 10-2, ..., 10-n and the server 30 in the game system 1 are connected to each other via a network NW such as the Internet so that they can communicate data with each other. However, the game devices 10-1, 10-2, ..., 10-n do not necessarily have to be connected to the network NW.

[0014] (Game device hardware configuration) Since the game devices 10-1, 10-2, ..., 10-n have the same hardware configuration, the following description will be limited to the game device 10-1 unless otherwise specified. Figure 1 shows an example of the hardware configuration of the game device 10-1.

[0015] The game device 10-1 operated by a user is a computer used by the user to play a game. The game device 10-1 is, for example, a home game machine (stationary or portable), a personal computer, a smartphone, a mobile phone terminal, a PHS (Personal Handy-phone System) terminal, a personal digital assistant (PDA), a tablet computer, a multi-function television receiver (so-called smart TV), an arcade (commercial) game machine installed in amusement facilities, etc.

[0016] The game device 10-1 comprises a CPU (Central Processing Unit) 11, a ROM (Read Only Memory) 12, a RAM (Random Access Memory) 13, a storage unit 14, a communication unit 15, an operation unit 16, an image processing unit 17, a display unit 18, a sound processing unit 19, an audio output unit 20, and a recording medium drive 21, which are interconnected via a bus 23 including an address bus, a data bus, a control bus, etc.

[0017] The CPU 11 executes the commands of the game program and controls the entire game device 10-1. The ROM 12 stores programs and data necessary for basic operational control of the game device 10-1. The RAM 13 stores various programs and data and ensures a working area for the CPU 11.

[0018] The storage unit 14 is a storage device that stores game programs, various data, etc. As the storage unit 14, for example, a non-volatile semiconductor memory, a hard disk drive, a solid state drive, etc. can be used.

[0019] The communication unit 15 includes a communication interface (not shown) and has a communication control function for communicating data when a game is being executed. The communication control function for data communication includes, for example, an Internet connection function, a wireless LAN (Local Area Network) connection function, and a short-range wireless communication function using a predetermined frequency band (for example, a 2.4 GHz frequency band). The communication unit 15 transmits a connection signal for connecting the game device 10-1 to the network NW based on a command from the CPU 11, and also receives information transmitted from a communication partner and supplies the information to the CPU 11.

[0020] If game device 10-1 is not connected to network NW, game device 10-1 does not need to include communication unit 15.

[0021] The operation unit 16 is used by the user to input various operation commands to the game device 10-1. Examples of the operation unit 16 include a position input unit (a component of a touch panel) with a touch interface, physical buttons, a controller, an analog stick, a keyboard, a pointing device, etc. The operation unit 16 may also be configured as a device capable of voice input, which identifies voice input from a voice input unit such as a microphone.

[0022] The image processing unit 17 drives the display unit 18 based on an image display command from the CPU 11 to display a game screen. The image processing unit 17 may be configured, for example, as a GPU (Graphics Processing Unit). Various known display devices, such as a liquid crystal display or an organic EL (Electro-Luminescence) display, can be used for the display unit 18. The display unit 18 may also be configured as a touch panel that combines a display device, such as a liquid crystal display, with a position input unit having a touch interface. When the display unit 18 is configured as a touch panel, the image processing unit 17 includes a touch input detection unit (not shown). When a pointer, such as a finger or a pen, touches the screen, the touch input detection unit detects the coordinates of the contact position on the screen and supplies a coordinate signal to the CPU 11. This allows the CPU 11 to recognize the contact position on the screen of the display unit 18.

[0023] It should be noted that display unit 18 does not need to be integrated with game device 10-1, and may be, for example, a television monitor or the like that is externally connected to game device 10-1. In this way, when display unit 18 is an externally connected television monitor or the like, display unit 18 is not included in the configuration of game device 10-1.

[0024] The sound processing unit 19 generates an analog audio signal based on a sound generation instruction from the CPU 11 and outputs the signal to the audio output unit 20. The audio output unit 20 is, for example, a speaker. Like the display unit 18, the audio output unit 20 does not need to be integrated with the game device 10-1, and may be, for example, a speaker (including a television speaker), headphones, earphones, or the like that is externally connected to the game device 10-1. In this way, when the audio output unit 20 is, for example, an externally connected speaker, the audio output unit 20 is not included in the configuration of the game device 10-1.

[0025] The recording medium drive 21 may be, for example, a DVD-ROM drive, CD-ROM drive, hard disk drive, optical disk drive, flexible disk drive, silicon disk drive, cassette medium reader, etc. In this case, the recording medium 22 may be a DVD-ROM, CD-ROM, hard disk, optical disk, flexible disk, semiconductor memory, etc. The recording medium drive 21 reads image data, audio data, and program data from the recording medium 22, and supplies the read data to the RAM 13, etc. via a decoder.

[0026] The game device 10-1 is capable of playing against a computer (also called a CPU game) or a network battle. In a network battle, for example, a user A who operates one game device 10-1 and a user B who operates the other game device 10-2 can play a competitive game via a network NW. In a network battle, for example, each game device 10-1, 10-2, ..., 10-n logs into a server 30, and the game devices matched by the server 30 communicate directly with each other via a P2P (Peer to Peer) connection or the like to play a competitive game. Alternatively, data exchange between the game devices can be performed via the server 30. Either method may be used to perform a network battle.

[0027] Communication between each game device 10-1, 10-2, ..., 10-n and the server 30 can be realized, for example, by using TCP / IP (Transmission Control Protocol / Internet Protocol) as the base protocol and implementing the application protocol specified in this system at a higher level.

[0028] On the other hand, communication between game devices connected by P2P or the like can be realized by, for example, UDP (User Datagram Protocol), a communication protocol on the transport layer of the OSI reference model that is mainly implemented on the IP protocol. The above-mentioned UDP is a communication method in which data is sent to the other game device (e.g., game device 10-2) without performing data delivery confirmation or error correction, and therefore has the advantage of low data reliability but high data transfer speed. Of course, it is also possible to use existing protocols other than UDP for communication between game devices, or new protocols that will be newly defined in the future.

[0029] Furthermore, for example, in the case of game device 10-1 having a short-range wireless communication function using a predetermined frequency band (for example, 2.4 GHz frequency band), a plurality of game devices can communicate directly with each other to play a competitive game or the like.

[0030] (Server hardware configuration) The server 30 comprises a CPU 31, a ROM 32, a RAM 33, a storage unit 34, and a communication unit 35, which are interconnected via a bus 36 including an address bus, a data bus, a control bus, and the like.

[0031] The server 30 associates information about the user's game with a user ID that uniquely identifies each user, and stores and manages the information in, for example, a database. The database may be built within the server 30, or may be built in a server computer separate from the server 30.

[0032] The CPU 31 executes commands from the system software and application software, and controls the entire server 30. The ROM 32 stores programs and the like required for basic operational control of the server 30. The RAM 13 stores various programs and data, and ensures a working area for the CPU 31. The memory unit 34 is a storage device that stores programs, various data, and the like. The memory unit 34 can be, for example, a hard disk drive or a solid state drive.

[0033] The communication unit 35 includes a communication interface (not shown) and controls communication between the game devices 10-1, 10-2, ..., 10-n via the network NW. The communication unit 35 can also control communication with other servers (not shown) connected to the network NW.

[0034] The server 30 may be configured as a single computer, or may be configured as a function-distributed type in which the functions of the server 30 are distributed among multiple servers. Alternatively, a load-distributed type configuration may be adopted in which multiple servers 30 are provided on the network NW for redundancy (multiplexing). The server 30 may also be configured as a cloud server that utilizes cloud computing technology.

[0035] Server 30 and game device 10-1 can communicate with each other to send and receive various data, and both are information processing devices equipped with a CPU, ROM, RAM, storage unit, communication unit, etc., and basically have the same hardware configuration. Therefore, some of the various functions of game device 10-1 described above may be realized by CPU 11 of game device 10-1, and the rest may be realized by CPU 31 of server 30. Alternatively, all of the various functions of game device 10-1 described above may be realized by CPU 31 of server 30.

[0036] In a configuration in which all of the various functions of game device 10-1 are realized by CPU 31 of server 30, server 30 can provide users with a so-called cloud gaming service in which game images resulting from game execution are transmitted to game device 10-1 in, for example, a streaming format. This cloud gaming service does not require downloading or installing game-specific software on game device 10-1, and users can easily enjoy game services provided by server 30 anywhere in an environment in which game device 10-1 can be connected to network NW.

[0037] (Example of a game) The game device 10-1 can execute various games, such as sports games based on baseball, soccer, basketball, rugby, American football, etc. Note that the various games may be executed by the game device 10-1 performing data communication with the server 30 or another game device 10-2, or may be executed by the game device 10-1 alone. Note that when a game is executed by the game device 10-1 alone, the posture control device is included in the game device 10-1 alone.

[0038] (Functional configuration of the game device) 2 is a schematic functional block diagram showing an example of the functional configuration of the game device 10-1. As shown in FIG.

[0039] The control unit 100 will be described as an example of the functions of the CPU 11, but is not limited thereto. The control unit 100 may represent an example of the functions of the CPU 11 as well as an example of the functions of a GPU. The control unit 100 functions as a first calculation unit 101, a second calculation unit 102, and a posture determination unit 103 by executing a predetermined program stored in the storage unit 14. In other words, the control unit 100 functions as a posture control device. The data storage unit 110 may or may not be included in the posture control device. The data storage unit 110 is realized, for example, by at least one of the ROM 32, RAM 33, and storage unit 34. The data storage unit 110 stores data necessary for providing a game to the game device 10-1. FIG. 2 illustrates an example in which key frame data 111-1, 111-2, . . . , 111-n indicating the postures of characters are stored as an example of the data necessary for providing a game. When it is not necessary to distinguish between key frame data, the data is simply referred to as key frame data 111.

[0040] Key frame data 111-1 stored in data storage unit 110 includes, for example, a first posture matrix, which is a bone matrix for each of a plurality of bones when a character assumes a first posture. A bone matrix is ​​a matrix set for a bone and indicates the posture of that bone. Similarly, key frame data 111-2 includes a second posture matrix, which is a bone matrix for each of a plurality of bones when a character assumes a second posture.

[0041] In this embodiment, the first posture is described as a posture in which the character stands upright, and the second posture is described as a posture in which the character bends the knees (a posture when the knees are bent in bending and stretching exercises), but the first posture and the second posture are not limited to these. For example, the first posture may be a posture in which the elbows are extended in a push-up, and the second posture may be a posture in which the elbows are fully bent in a push-up.

[0042] The first calculation unit 101 calculates a first bone matrix for determining vertices for an intermediate posture by blending, at a predetermined ratio, a first matrix obtained by multiplying the first matrix by the first posture matrix and a second matrix obtained by multiplying the second matrix by the second posture matrix for a specific bone among multiple bones when the character takes an intermediate posture between the first posture and the second posture. There are multiple specific bones, and there are also multiple first bone matrices for the specific bones.

[0043] Blending matrices at a predetermined ratio means finding matrix A x α + matrix B x (1-α) where α is the predetermined ratio and matrix A and matrix B are matrix A and matrix B. Also, a vertex related to a posture refers to a vertex when a character assumes that posture. In other words, it can be said to be a vertex that makes up a character.

[0044] The first matrix is ​​obtained by multiplying the first orientation matrices that are in a parent-child relationship among the first orientation matrices. The second matrix is ​​obtained by multiplying the second orientation matrices that are in a parent-child relationship among the second orientation matrices. Although the first matrix is ​​obtained by multiplying the first orientation matrices that are in a parent-child relationship, it does not have to be a multiplication of all of the first orientation matrices that are in a parent-child relationship, and it may be a multiplication of only some of them. Also, there may be multiple partial multiplications. In other words, there may be multiple first matrices. The same applies to the second orientation matrix. The bone matrix calculation process by the first calculation unit 101 is also referred to as a first calculation process. Specific examples of the first bone matrix will be described later.

[0045] A posture matrix in a parent-child relationship refers to the following: As mentioned above, bones have a hierarchical structure, and when a higher-level bone is moved, the lower-level bones are also moved. Of these multiple bones, we focus on two connected bones, and of these two bones, the higher-level bone is called the parent bone, and the lower-level bone is called the child bone. The orientation matrix of the parent bone and the orientation matrix of the child bone are called posture matrices in a parent-child relationship.

[0046] A specific bone is a bone that displays a character object, the vertices of which are affected by the bone, embedded in a fixed object such as the ground. A character object is an object that represents a part of a character. For example, if the character is a human, the character object may be the character's foot (the part from the ankle to the toes). A character object is formed by a skin mesh that comprises the vertices affected by the bone. For an object with its hands on a wall, the specific bone is a bone that affects the vertices of the hand that is in contact with the wall. Note that specific bones change depending on the scene, and are not absolutely defined. In a walking scene, the specific bone controls the vertices of the foot that are in contact with the ground. In a leaning scene, the specific bone controls the vertices of the body that is leaning against the wall. In a push-up or handstand scene, the specific bone controls the vertices of the hand that is in contact with the ground. In a scene where a character is getting up from a slide, the specific bone controls the vertices of the body that are in contact with the ground while sliding. In a scene where a character is getting up from a slide, the specific bone controls the vertices of the body that are in contact with the ground while sliding. In a scene where a character is getting up on their hands, the specific bones control the vertices of the hands and feet that are in contact with the ground. The specific bones change depending on the scene.

[0047] The second calculation unit 102 blends the first and second posture matrices at a predetermined ratio for each layer of the multiple bones when an intermediate posture is assumed, excluding a specific bone, and multiplies the blended matrices to calculate a second bone matrix for determining vertices for the intermediate posture. Blending for each layer means blending posture matrices for each bone representing the same part of the character. For example, if the character is human, this means blending posture matrices for bones corresponding to the upper arms, posture matrices for bones corresponding to the thighs, and so on. The bone matrix calculation process by the second calculation unit 102 is also referred to as the second calculation process. Specific examples of the second bone matrix will be described later.

[0048] The posture determination unit 103 determines an intermediate posture using the first bone matrix and the second bone matrix. The intermediate posture is a posture obtained by blending the first posture and the second posture at a predetermined ratio.

[0049] The determination unit 104 determines whether or not a plurality of bones when the intermediate posture is assumed will become specific bones when the second calculation process is performed. Note that the determination unit 104 is not essential and may be omitted. If the bones that will become specific bones are determined in advance, the process may refer to data to determine which bones are the specific bones.

[0050] A game realized in game system 1 is, for example, one in which a character is displayed in a game space. The game space may be a three-dimensional space, and if it is a three-dimensional space, the character is displayed as a 3D model. Generally, in a game, multiple pieces of motion data (key frame data) for the 3D model are prepared in advance, and key frame data prepared according to the situation of the game is applied. For example, when a character bends and stretches, key frame data showing the character standing with knees straight and key frame data showing the character in a bent knee position are prepared, and these are used to realize the bending and stretching motion of the character.

[0051] However, when a person bends and stretches, they do not suddenly go from an extended knee to a bent knee, but rather the knee gradually bends and finally reaches a bent knee. Therefore, it is desirable to be able to express bending and stretching movements in a similar manner when expressing bending and stretching movements with a character. However, if a character's bending and stretching movements are expressed using only key frame data showing the character standing with its knees extended and key frames showing the character with its knees bent, the standing character may suddenly bend its knees, which may cause discomfort to the user.

[0052] Therefore, it would be possible to prepare key frame data that represents the transition between key frame data showing a character standing with knees straight and key frame data showing a character with knees bent, but if we were to try to realize all of the possible postures a character can take with key frame data in this way, a huge number of key frame data would be required, which is not realistic.

[0053] Therefore, for character postures between key frame data, frame data is created by blending the key frame data before and after the posture. For example, frame data showing a posture in the middle of bending and stretching movements is created by blending key frame data showing a character standing with straight knees and key frame data showing a character with bent knees.

[0054] An example of creating frame data for drawing a posture for which no key frame data is prepared will be described with reference to Fig. 3. Fig. 3 is a diagram for explaining an example of prepared key frame data and frame data created by blending key frame data.

[0055] In the example shown in FIG. 3, six key frame data items are prepared in advance: frame 0 (0 ms), frame 1 (16 ms (milliseconds)), frame 2 (32 ms), frame 3 (64 ms), frame 4 (80 ms), and frame 5 (96 ms). Here, if frame data for frame X at 48 ms is required, it is created by blending frames 2 and 3 at 50 percent each. Also, if frame data for frame Y at 82 ms, which is a short delay from frame 4, is required, it is created by blending frame 4 at 75 percent and frame 5 at 25 percent.

[0056] In this way, the posture of the character between key frame data is handled by creating frame data that blends the key frame data before and after it at a predetermined ratio. This prevents the character's movements from becoming awkward, causing discomfort to the user. Note that if a network delay or processing delay occurs and the actual display time is exceeded, the frame may be calculated from the actual time and blended.

[0057] There may also be cases where a switch to another keyframe occurs based on user operation. In this case, too, motion blending is used because it is necessary to connect the movements smoothly. In the case of user operation, it is not possible to predict when the user operation (for example, pressing a button) will occur, so motion blending is also used when switching from one keyframe to another. In this case, a different blending ratio is used than the blending between keyframes. In particular, when keyframes switch suddenly, unexpected blending occurs, which can cause the character's posture to become unintended by the creator.

[0058] Figure 4 shows an example of how the motion changes over time after switching. Figure 4 shows an example of switching between frames B0 and B1 of motion data B at frame Z, which is between frames A1 and A2 of motion data A. In this case, blend data A is created by blending frame A1 of motion data A at 33 percent and frame A2 at 67 percent, and blend data B is created by blending frame B0 of motion data B at 95 percent and frame B1 at 5 percent, and blend data A is then blended at 90 percent and blend data B at 10 percent to create the final frame data.

[0059] Note that the post-switching motion may not change over time until the motion is switched. Alternatively, the post-switching motion may be played after 80% or more of the switching has been completed, and the timing at which the post-switching motion is played may be changed as desired depending on the scene.

[0060] (More about blending between frames) A method for blending key frame data together will be described in detail with reference to Fig. 5. Fig. 5 is a diagram for explaining a method for calculating frame data between key frame data in skin mesh animation (bone animation).

[0061] Figure 5 shows an example that includes bones at three levels. Here, a bone at level 1 is the parent bone for a bone at level 2, and a bone at level 2 is the parent bone for a bone at level 3. Here, parent bones and child bones refer to a tree structure in which multiple bones are hierarchically organized, with each bone acting as a node, and of two connected bones, one bone is assigned as the parent node and the other as the child node. The bone that corresponds to the parent node is called the parent bone, and the bone that corresponds to the child node is called the child bone.

[0062] The keyframe data for frame 1 includes a matrix T31×MF3 that indicates the orientation of the bones on layer 1, a matrix T21×MF2 that indicates the orientation of the bones on layer 2, and a matrix T11×MF1 that indicates the orientation of the bones on layer 3. Here, T11, T21, and T31 are matrices that indicate the rotation, translation, and scaling transformations for the coordinate system of the bones on each layer. Additionally, M11, M21, and M31 are bone offset matrices for each layer.

[0063] Additionally, the keyframe data for frame 2 includes a matrix T32×MF3 indicating the orientation of the bones on layer 1, a matrix T22×MF2 indicating the orientation of the bones on layer 2, and a matrix T12×MF1 indicating the orientation of the bones on layer 3. Here, T12, T22, and T32 are matrices that indicate the rotation, translation, and scaling transformations for the coordinate system of the bones on each layer. Additionally, MF1, MF1, and MF3 are bone offset matrices for each layer.

[0064] In this case, the matrix indicating the bone orientation in the intermediate frame between frame 1 and frame 2 is (bone matrix of frame 1) × α + (bone matrix of frame 2) × (1-α), where α is the predetermined blending ratio. In other words, the matrix indicating the bone orientation in layer 1 of the intermediate frame is ((T31 × MF3) × α + (T32 × MF3) × (1-α)). Similarly, the matrix indicating the bone orientation in layer 2 of the intermediate frame is ((T21 × MF2) × α + ((T22 × MF2) × (1-α)). The matrix indicating the bone orientation in layer 3 of the intermediate frame is ((T11 × MF1) × α + (T12 × MF1) × (1-α)).

[0065] When showing relative coordinates taking into account the parent-child relationships of each layer, they can be expressed in the game space coordinate system as follows: The bind pose matrix is ​​synonymous with the bone offset matrix and is also called the initial posture matrix. The bind pose matrix (bone offset matrix, initial posture matrix) may indicate the character's posture at a relative position for each layer that depends only on the previous layer, or it may indicate the character's posture at an absolute position with respect to the character's coordinate space for each layer. Layer 1: (layer 1 bind pose matrix) × (layer 1 intermediate frame matrix) Layer 2: (layer 1 bind pose matrix) × (layer 2 bind pose matrix) × (layer 1 intermediate frame matrix) × (layer 2 intermediate frame matrix) Layer 3: (layer 1 bind pose matrix) × (layer 2 bind pose matrix) × (layer 3 bind pose matrix) × (layer 1 intermediate frame matrix) × (layer 2 intermediate frame matrix) × (layer 3 intermediate frame matrix) Here, the bind pose refers to the basic posture of the character.

[0066] As shown in Figure 5, the matrix indicating the orientation of the bones at each layer in the bind pose is MF3 for layer 1, MF2 for layer 2, and MF1 for layer 3. The matrix indicating the orientation of the bones at layer 1 in the intermediate frame is ((T31×MF3)×α+(T32×MF3)×(1-α)). The matrix indicating the orientation of the bones at layer 2 is ((T31×MF3)×α+(T32×MF3)×(1-α))×((T21×MF2)×α+(T22×MF2)×(1-α)). The matrix indicating the posture of the bones at layer 3 is ((T31×MF3)×α+(T32×MF3)×(1-α)×((T21×MF2)×α+(T22×MF2)×(1-α))×((T11×MF1)×α+(T12×MF1)×(1-α)).The method of calculating the matrix indicating the posture of the bones in the intermediate frames (bone matrix) described here is also called the conventional calculation method.

[0067] (Creating intermediate frames) Here, referring to Figures 6 and 7, we will explain the problems that can occur when creating an intermediate frame when a character moves from a standing position to a knee-bending position using the conventional calculation method described above, and how this problem can be solved using the posture control device of this embodiment.

[0068] In Figure 6, 601 shows a character standing, and 602 shows a character bending its knees. In Figure 6, thick lines represent bones, and white circles represent vertices that are influenced by the bones. That is, 601 is the first posture described above, and 602 is the second posture described above.

[0069] The data storage unit 110 of the server 30 shown in FIG. 2 contains key frame data 111-1 (first orientation matrix) representing the orientation of the bone 601, and key frame data 111-2 (second orientation matrix) representing the orientation of the bone 602. Key frame data 111-1 contains bone matrices M0, M11-13, M111, M121-123, M131, M1111, and M1311 as first orientation matrices, and key frame data 111-2 contains bone matrices m0, m11-13, m111, m121-123, m131, m1111, and m1311 as second orientation matrices. The digits after M(m) indicate the layer, and bone matrices with the same digits have a parent-child relationship. For example, M11 is layer 2, and M111 is layer 3. M11 is the parent of M111.

[0070] When an intermediate frame is created using the above-described method using key frame data 111-1 and key frame data 111-2, and the blend ratio is α, the bone matrix X1311 is (M0α+m0(1-α))(M13α+m13(1-α))(M131α+m131(1-α))(M1311α+m1311(1-α)). Also, the bone matrix X1111 is (M0α+m0(1-α))(M11α+m11(1-α))(M111α+m1111(1-α)). This can be represented graphically as shown in FIG. 7, resulting in the skin meshes that make up vertices PX11 to PX14 affected by bone matrix X1311 and bone matrix X1111 sinking into the ground. In other words, the character object affected by the bone will sink into the ground, which is a fixed object. Therefore, if intermediate frames are created using this method, the character's ankles and feet will sink into the ground as it goes from a standing position to a knee-bending position. This will give the user a very strange feeling.

[0071] Therefore, the first calculation unit 101 according to this embodiment calculates the bone matrix (Y1311, Y1111) of the specific bone using the following formula. Y1311=(M0×M13×M131×M1311)×α+(m0×m13×m131×m1311)×(1-α) Y1111=(M0×M11×M111×M1111)×α+(m0×m11×m111×m1111)×(1-α) That is, for a specific bone, the first calculation unit 101 multiplies the first orientation matrix (M0, M13, M131, M1311) in a parent-child relationship to calculate a first matrix (M0×M13×M131×M1311), similarly multiplies the first matrix by the second orientation matrix (m0, m13, m131, m1311) in a parent-child relationship to calculate a second matrix (m0×m13×m131×m1311), and blends these at a predetermined ratio α to calculate a first bone matrix ((M0×M13×M131×M1311)×α+(m0×m13×m131×m1311)×(1-α)) for determining the vertices in the intermediate posture.

[0072] Similarly, the first calculation unit 101 multiplies the first orientation matrices (M0, M11, M111, M1111) in a parent-child relationship to calculate the first matrix (M0×M11×M111×M1111), and similarly multiplies the second orientation matrices (m0, m11, m111, m1111) in a parent-child relationship to calculate the second matrix (m0×m11×m111×m1111), and blends these at a predetermined ratio α to calculate the first bone matrix ((M0×M11×M111×M1111)×α+(m0×m11×m111×m1111)×(1-α)) for determining the vertices in the intermediate posture.

[0073] The first bone matrix calculated in this way does not result in a state in which the skin mesh that constitutes the vertices PY11 to PY14 that are affected by Y1311 and Y1111 is sunk into the ground, as shown in 603 in FIG.

[0074] This prevents the ankles from sinking into the ground when the character goes from a standing position to a knee-bending position, and does not cause discomfort to the user.

[0075] Furthermore, the second calculation unit 102 calculates the bone matrices (Y0, Y11, Y111, Y12, Y121, Y122, Y123, Y13, Y131) of bones other than the specific bone using the following calculation formula. Y0=(M0α+m0(1-α)) Y11=(M0α+m0(1-α))(M11α+m11(1-α)) Y111=(M0α+m0(1-α))(M11α+m11(1-α))(M111α+m111(1-α)) Y12=(M0α+m0(1-α))(M12α+m12(1-α)) Y121=(M0α+m0(1-α))(M12α+m12(1-α))(M121α+m121(1-α)) Y122=(M0α+m0(1-α))(M12α+m12(1-α))(M122α+m122(1-α)) Y123=(M0α+m0(1-α))(M12α+m12(1-α))(M123α+m123(1-α)) Y13=(M0α+m0(1-α))(M13α+m13(1-α)) Y131=(M0α+m0(1-α))(M13α+m13(1-α))(M131α+m131(1-α)) That is, for bones other than the specific bone, the second calculation unit 102 blends the first orientation matrices (M0, M11, M111, M12, M121, M122, M123, M13, M131) and the second orientation matrices (m0, m11, m111, m12, m121, m122, m123, m13, m131) at a predetermined ratio α for each layer, and multiplies the blended matrices to calculate second bone matrices (Y0, Y11, Y111, Y12, Y121, Y122, Y123, Y13, Y131) for determining vertices for the intermediate orientation. Note that the calculation process of the second calculation unit 102 is the same as the conventional calculation method described above.

[0076] 6 using the first bone matrix (Y1311, Y1111) calculated by the first calculation unit 101 and the second bone matrix (Y0, Y11, Y111, Y12, Y121, Y122, Y123, Y13, Y131) calculated by the second calculation unit 102. Then, the control unit 100 draws the character's posture using frame data indicating the posture determined by the posture determination unit 103.

[0077] (Creating IK matrices) If only Y1311 and Y1111 are calculated in the first calculation process, and Y131 and Y111, which are the parents of Y1311 and Y1111, are calculated in the second calculation process, a positional deviation may occur between Y1311 and Y131A, which is the parent of Y1311, and between Y1111 and Y111A, which is the parent of Y1111, as shown in Fig. 8. Therefore, when a positional deviation occurs, the attitude determination unit 103 may determine the attitude by controlling Y131A and Y111A based on inverse kinematics (IK). This makes it possible to prevent the position of Y131 from being shifted from Y1311, and the position of Y111 from being shifted from Y1111, as shown by 603 in Fig. 6.

[0078] The IK matrix can be created using a known method, and a detailed description thereof will be omitted here. The IK matrix may, for example, limit the range of motion.

[0079] The number of layers using the IK matrix is ​​not limited to one, and may be multiple. For example, if there is one layer, the start point and end point of the bone are uniquely determined, as shown in 902 in Fig. 9. On the other hand, if there are two or more layers, the position of the intermediate point between the start point and end point is not uniquely determined, as shown in 901 in Fig. 9, so the position of the intermediate point is determined by the IK matrix.

[0080] (Processing flow) Next, the flow of the drawing process in the server 30 will be described with reference to Fig. 10. Fig. 10 is a flowchart showing the flow of the drawing process in the server 30.

[0081] First, if the data storage unit 110 has key frame data to be used for drawing (NO in S100), the control unit 100 uses the key frame data to perform drawing (S116). On the other hand, if the data storage unit 110 does not have key frame data to be used for drawing (YES in S100), the control unit 100 starts creating frame data using key frame data before and after the required frame data (S102).

[0082] When creating frame data, the control unit 100 determines whether the bone for which the bone matrix is ​​to be calculated is a specific bone (S104), and if it is a specific bone (YES in S104), the first calculation unit 101 calculates the bone matrix through a first calculation process (S108). On the other hand, if it is not a specific bone (NO in S104), the second calculation unit 102 calculates the bone matrix through a second calculation process (S106). A specific bone is a bone in which the skin mesh that makes up the vertices affected by that bone is displayed embedded in a fixed object.

[0083] When the calculation of the bone matrices for all bones required for creating the frame data is completed (YES in S110), the control unit 100 ends the creation of the frame data (S112) and performs drawing using the created frame data (S114). This completes the flow of the drawing process in the server 30.

[0084] The processing flow in the flowchart shown in FIG. 10 is an example, and steps may be deleted or new steps may be added without departing from the spirit of the invention.

[0085] Although the above description has been given of a configuration in which the posture control device is realized in the game device 10-1, the present invention is not limited to this. The posture control function of the posture control device may be realized by the server 30. Furthermore, the posture control device may be realized together with the server 30, rather than by the game device 10-1 alone. In other words, a posture control system in which the posture control function is realized by the game device 10-1 and the server 30 may be used.

[0086] [Note] From the above description, the present disclosure can be understood, for example, as follows: Note that, to facilitate understanding of the present disclosure, reference numerals in the accompanying drawings are conveniently added in parentheses, but this does not mean that the present disclosure is limited to the illustrated aspects.

[0087] The posture control device (control unit 100) controls the posture of a character having multiple connected bones. The posture control device includes a data storage unit 110, a first calculation unit 101, a second calculation unit 102, and a posture determination unit 103.

[0088] The data storage unit 110 stores a first posture matrix for each of the plurality of bones when the character is in a first posture, and a second posture matrix for each of the plurality of bones when the character is in a second posture.

[0089] The first calculation unit 101 calculates a first bone matrix for determining vertices related to the posture for some of the multiple bones by blending, in a predetermined ratio, a first matrix obtained by multiplying each of the bones by a first posture matrix and a second matrix obtained by multiplying each of the bones by a second posture matrix.

[0090] The second calculation unit 102 blends the first orientation matrix and the second orientation matrix for each of the multiple bones except for some of the bones at a predetermined ratio for each layer, and multiplies the blended matrices to calculate a second bone matrix for determining the vertices related to the orientation.

[0091] The posture determination unit 103 determines a third posture by blending the first posture and the second posture at a predetermined ratio using the first bone matrix and the second bone matrix.

[0092] The "first posture" and "second posture" are postures used in determining the posture in the posture control device. The "third posture" is a posture determined in the posture control device. An example of the first posture is an upright posture, and an example of the second posture is a bent posture. An example of the third posture is a crouched posture between the upright posture and the bent posture. As other examples, the first posture is a push-up posture with the elbows extended, and the second posture is a push-up posture with the elbows fully bent. The third posture is a push-up posture with the elbows slightly bent, between the push-up posture with the elbows extended and the elbows fully bent.

[0093] The "first posture matrix" is a matrix that is set for each of the bones when the character is in the first posture. An example of the first posture matrix is ​​the frame matrix of each bone in the upright posture when the character is standing upright.

[0094] A "second posture matrix" is a matrix set for each of a plurality of bones when a character assumes a second posture. When a character assumes a bent posture, an example of the second posture matrix is ​​the frame matrix of each bone in the bent posture. Note that in the above-described embodiment, the first posture matrix and the second posture matrix are described as relative values ​​(local coordinate system) that indicate how each bone is positioned relative to its parent bone, but this is not limiting. The first posture matrix and the second posture matrix may also be absolute values ​​(character coordinate system) that indicate how each bone is positioned in the game space. In other words, the first posture matrix and the second posture matrix may indicate the absolute position of the bone in the local coordinate space.

[0095] The "first matrix" is a matrix obtained by multiplying each of the first orientation matrices. Using the example shown in Figure 5, an example of the first matrix is ​​a matrix ((T31) × MF3) × ((T21) × MF2) × ((T11) × MF1).

[0096] The "second matrix" is a matrix obtained by multiplying each of the second orientation matrices. Using the example shown in Figure 5, an example of the second matrix is ​​((T32) × MF3) × ((T22) × MF2) × ((T12) × MF1).

[0097] The "first bone matrix" is a matrix that blends the first matrix and the second matrix at a predetermined ratio and is used to determine vertices. Using the example shown in Figure 5, the first bone matrix is ​​expressed as (T31 x MF3) x (T21 x MF2) x (T11 x MF1) x α + (T32 x MF3) x (T22 x MF2) x (T12 x MF1) x (1 - α).

[0098] The "second bone matrix" is a matrix obtained by blending the first and second orientation matrices at a predetermined ratio for each layer and multiplying the blended matrix, and is a matrix for determining vertices. Using the example shown in Figure 5, the second bone matrix is ​​expressed as (T31 x MF3 x α + T32 x MF3 x (1-α)) x (T21 x MF2 x α + T22 x MF2 x (1-α)) x (T11 x MF1 x α + T12 x MF1 x (1-α)).

[0099] With the above configuration, some bones (for example, bones corresponding to the ankles that come into contact with the ground) are linearly interpolated using keyframe motion. In other words, by blending bone data that is not originally embedded, such as the first and second matrices, it is possible to generate bones that do not embed into fixed objects. This makes it possible to prevent the skin mesh that makes up the vertices affected by the bone from being displayed as if it is embedded into the fixed object when previous and next keyframes are blended at a predetermined ratio.

[0100] It should be noted that CPU 11 may perform a predetermined calculation on the first bone matrix and the second bone matrix and output the result to image processing unit 17. The predetermined calculation is multiplication of the inverse matrix of the bone offset matrix. That is, an example of the final bone matrix output by CPU 11 to image processing unit 17 for the first bone matrix is ​​InvMF3×InvMF2×InvMF1×(T31×MF3)×(T21×MF2)×(T11×MF1)×α+InvMF3×InvMF2×InvMF1×(T32×MF3)×(T22×MF2)×(T12×MF1)×(1-α). The second Born matrix is ​​InvMF3×InvMF2×InvMF1×(T31×MF3×α+T32×MF3×(1-α))×(T21×MF2×α+T22×MF2×(1-α))×(T11×MF1×α+T12×MF1×(1-α)). Here, InvMF1 represents the inverse matrix of MF1. The same applies to InvMF2 and InvMF3.

[0101] The image processing unit 17 controls the character's posture using the bone matrix acquired from the CPU 11, thereby achieving the above-mentioned effects.

[0102] The bone matrices that CPU 11 outputs to image processing unit 17 are absolute values. However, CPU 11 does not necessarily need to output the bone matrices to image processing unit 17. For example, CPU 11 may output the first bone matrix and the second bone matrix to image processing unit 17, and image processing unit 17 may perform the predetermined calculations.

[0103] Some bones may be bones that cause the character object affected by the bone to come into contact with a fixed object. A "fixed object" is an object that is fixed in the game space, and examples thereof include the ground and a wall.

[0104] According to the above configuration, by performing processing by the first calculation unit 101 on bones that affect a character object that comes into contact with a fixed object, it is possible to prevent parts of the character's body (for example, hands or ankles) from being displayed as being embedded in the fixed object.

[0105] If there is a bone having a second bone matrix that does not satisfy a predetermined condition among the multiple second bone matrices for bones other than some bones calculated by the second calculation unit 102, the posture determination unit 103 may determine a third posture for the bone having the second bone matrix that does not satisfy the predetermined condition using an adjustment matrix.

[0106] An adjustment matrix is ​​a matrix for a single bone or a set of bones with defined start and end points, where intermediate positions, i.e., the joint positions of the bones, may be determined by inverse kinematics (IK).

[0107] The "predetermined condition" refers to a condition that is set in advance, and in this case, refers to a condition used to determine whether or not to use an adjustment matrix, for example, inverse kinematics (IK), when determining the third posture. An example of the predetermined condition is a condition in which the bone matrix calculated by the second calculation unit becomes inconsistent, such as no longer showing the connection between bones.

[0108] According to the above configuration, by determining the third posture using an adjustment matrix for bones having a second bone matrix that does not satisfy a specified condition, it is possible to prevent the skin mesh that constitutes the vertices affected by the bone from being displayed as if it is embedded in a fixed object, while also preventing the character's movement from appearing unnatural.

[0109] The multiple bones are arranged hierarchically in a tree structure in which each bone is a node and, of two connected bones, one is assigned to the parent node and the other is assigned to the child node, and the first matrix may be obtained by multiplying the first orientation matrices of the parent node and child node, and the second matrix may be obtained by multiplying the second orientation matrices of the parent node and child node.

[0110] According to the above configuration, the first matrix or the second matrix is ​​obtained by multiplying the first posture matrix or the second posture matrix that are in a parent-child relationship, so that the first matrix or the second matrix can correspond to the posture of the character.

[0111] The second calculation unit 102 may blend the first orientation matrix and the second orientation matrix at a predetermined ratio for each corresponding layer.

[0112] For each layer, the first and second orientation matrices are blended at a predetermined ratio. The character's posture can be determined for each layer.

[0113] The posture control method controls the posture of a character having multiple connected bones. Data storage unit 110 stores a first posture matrix for each of the multiple bones when the character assumes a first posture, and a second posture matrix for each of the multiple bones when the character assumes a second posture.

[0114] The method includes a first calculation step of, for some of the bones among the plurality of bones, blending a first matrix obtained by multiplying the respective first orientation matrices with a second matrix obtained by multiplying the respective second orientation matrices at a predetermined ratio to calculate a first bone matrix for determining vertices related to the orientation, a second calculation step of, for bones other than the portion of the plurality of bones among the plurality of bones, blending the respective first orientation matrices with the respective second orientation matrices at a predetermined ratio for each layer and multiplying the blended matrices to calculate a second bone matrix for determining vertices related to the orientation, and a posture determination step of determining a third posture by blending the first posture and the second posture at a predetermined ratio using the first bone matrix and the second bone matrix. This achieves the same effects as the posture control device described above.

[0115] The posture control system controls the posture of a character having multiple connected bones. The posture control system includes a data storage unit 110, a first calculation unit 101, a second calculation unit 102, and a posture determination unit 103.

[0116] The data storage unit 110 stores a first posture matrix for each of the plurality of bones when the character is in a first posture, and a second posture matrix for each of the plurality of bones when the character is in a second posture.

[0117] The first calculation unit 101 calculates a first bone matrix for determining vertices related to the posture for some of the multiple bones by blending, in a predetermined ratio, a first matrix obtained by multiplying each of the bones by a first posture matrix and a second matrix obtained by multiplying each of the bones by a second posture matrix.

[0118] The second calculation unit 102 blends the first orientation matrix and the second orientation matrix for each of the multiple bones except for some of the bones at a predetermined ratio for each layer, and multiplies the blended matrices to calculate a second bone matrix for determining the vertices related to the orientation.

[0119] The posture determination unit 103 determines a third posture by blending the first posture and the second posture at a predetermined ratio using the first bone matrix and the second bone matrix, thereby achieving the same effect as the posture control device described above.

[0120] The attitude control program is a program for causing a computer to function as an attitude control device, and is a program for causing a computer to function as the first calculation unit 101, the second calculation unit 102, and the attitude determination unit 103.

[0121] [Software implementation example] The function of the attitude control device (e.g., control unit 100) can be realized by a program (attitude control program) for causing a computer to function as the attitude control device, and a program for causing a computer to function as each control block of the attitude control device.

[0122] In this case, the posture control device includes a computer having at least one device (e.g., a processor) and at least one storage device (e.g., a memory) as hardware for executing a program. The computer executes the program to realize each function described in the above embodiment.

[0123] The program may be stored non-transitory on one or more computer-readable storage media. The storage media may or may not be included in the game control device. In the latter case, the program may be supplied to the game control device via any wired or wireless transmission medium.

[0124] In addition, some or all of the functions of each control block can be realized by a logic circuit. For example, an integrated circuit in which a logic circuit that functions as each control block is formed is also included in the scope of the present disclosure. In addition, the functions of each control block can also be realized by, for example, a quantum computer.

[0125] The present disclosure is not limited to the above-described embodiments, and various modifications are possible within the scope of the claims. [Explanation of symbols]

[0126] 1...game system, 10-1...game device, 30...server, 100...control unit, 101...first calculation unit, 102...second calculation unit, 103...attitude determination unit, 104...determination unit, 110...data storage unit 110, 111...key frame data

Claims

1. A posture control device for controlling the posture of a character having a plurality of connected bones, a storage unit that stores a first posture matrix of each of the plurality of bones when the character assumes a first posture and a second posture matrix of each of the plurality of bones when the character assumes a second posture; a first calculation unit that calculates, for some of the bones among the plurality of bones, a first matrix obtained by multiplying the first orientation matrix with a second matrix obtained by multiplying the second orientation matrix with the first orientation matrix at a predetermined ratio to calculate a first bone matrix for determining vertices related to the orientation; a second calculation unit that blends the first orientation matrix and the second orientation matrix at a predetermined ratio for each layer for bones other than the some of the bones among the plurality of bones, and calculates a second bone matrix for determining vertices related to the orientation by multiplying the blended matrices; a posture determination unit that determines a third posture by blending the first posture and the second posture at the predetermined ratio using the first bone matrix and the second bone matrix, Attitude control device.

2. The posture control device according to claim 1 , wherein the part of bones is a bone that causes a character object affected by the part of bones to come into contact with a fixed object.

3. 3. The posture control device according to claim 1, wherein, when there is a bone having a second bone matrix that does not satisfy a predetermined condition among the plurality of second bone matrices for bones other than the certain bones calculated by the second calculation unit, the posture determination unit determines the third posture using an adjustment matrix for the bone having the second bone matrix that does not satisfy the predetermined condition.

4. the plurality of bones are hierarchically organized in a tree structure in which each bone is a node, and of two connected bones, one bone is assigned to a parent node and the other bone is assigned to a child node, the first matrix is ​​obtained by multiplying the first orientation matrices of the parent node and the child node, The attitude control device according to claim 1 , wherein the second matrix is ​​a product of the second attitude matrices of the parent node and the child node in the relationship.

5. The attitude control device according to claim 4 , wherein the second calculation unit blends the first attitude matrix and the second attitude matrix at a predetermined ratio for each corresponding layer.

6. A posture control method for controlling the posture of a character having a plurality of connected bones, comprising: a storage unit stores a first orientation matrix for each of the plurality of bones when the character takes a first orientation, and a second orientation matrix for each of the plurality of bones when the character takes a second orientation; a first calculation step of calculating, for some of the bones among the plurality of bones, a first matrix obtained by multiplying each of the first orientation matrices with a second matrix obtained by multiplying each of the second orientation matrices at a predetermined ratio to calculate a first bone matrix for determining vertices related to the orientation; a second calculation step of blending the first orientation matrix and the second orientation matrix at a predetermined ratio for each layer of the plurality of bones other than the some bones, and multiplying the blended matrices to calculate a second bone matrix for determining vertices related to the orientation; a posture determination step of determining a third posture by blending the first posture and the second posture at the predetermined ratio using the first bone matrix and the second bone matrix, Attitude control method.

7. A posture control system for controlling the posture of a character having a plurality of connected bones, a storage unit that stores a first posture matrix of each of the plurality of bones when the character assumes a first posture and a second posture matrix of each of the plurality of bones when the character assumes a second posture; a first calculation unit that calculates, for some of the bones among the plurality of bones, a first matrix obtained by multiplying the first orientation matrix with a second matrix obtained by multiplying the second orientation matrix with the first orientation matrix at a predetermined ratio to calculate a first bone matrix for determining vertices related to the orientation; a second calculation unit that blends the first orientation matrix and the second orientation matrix at a predetermined ratio for each layer for bones other than the some of the bones among the plurality of bones, and calculates a second bone matrix for determining vertices related to the orientation by multiplying the blended matrices; a posture determination unit that determines a third posture by blending the first posture and the second posture at the predetermined ratio using the first bone matrix and the second bone matrix, Attitude control system.

8. 2. An attitude control program for causing a computer to function as the attitude control device according to claim 1, the attitude control program causing a computer to function as the first calculation unit, the second calculation unit, and the attitude determination unit.

Citation Information

Patent Citations

  • Processing system, information processing device, program and processing method

    JP2021043611A