Animation generation program and animation generation system
The animation generation program and system dynamically calculate joint angles for object parts, reducing development burden and ensuring flexible, high-quality animations without pre-created static data.
Patent Information
- Application Number
- JP2021118118
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-07-16
- Publication Date
- 2025-07-03
- Estimated Expiration
- 2041-07-16
AI Technical Summary
Existing animation generation methods require developers to create static animation data in advance, increasing development burden and risking abnormalities when applied to objects beyond the assumed joint range.
An animation generation program and system that dynamically calculates the rotation angles of joint portions for object parts based on designated operations, reducing the need for pre-created static data and ensuring smooth operation across various objects.
Reduces developer burden and ensures flexible, high-quality animation generation by dynamically calculating joint angles, allowing for more efficient and customizable animations.
Smart Images

Figure 0007702293000001 
Figure 0007702293000002 
Figure 0007702293000003
Abstract
Description
Technical Field
[0001] At least one of the embodiments of the present invention relates to an animation generation program and an animation generation system for realizing a function of generating an animation of an object that executes an operation in a virtual space.
Background Art
[0002] Conventionally, in the field of video games and the like, animations have been generated by continuously executing a predetermined operation on an object represented by a three-dimensional model in a virtual space.
[0003] As a method for generating an animation related to an object, animation data (hereinafter, static animation data) that is registered in advance to be an animation by continuously playing back all poses by specifying the coordinates of the parts of the three-dimensional model and the rotation angles of the joints in each pose is prepared, and other animations are generated by combining and using the static animation data. Here, the “static” animation refers to an animation generated by specifying the coordinates of all parts of the three-dimensional model and the rotation angles of the joints for all poses of the object.
[0004] For example, Patent Document 1 discloses a system that automatically generates an animation (motion) of a character when moving on an inclined surface using basic movement operation data representing a basic movement operation in which the character moves on a reference plane.
Prior Art Documents
Patent Documents
[0005]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0006] Here, in the case of a method for automatically generating an animation of an object using static animation data, it was necessary for the developer to create the static animation data in advance, and a problem occurred in that the burden on the developer increased as the scale of development grew. In Patent Document 1, the burden of creating the animation is reduced by generating an animation when moving on an inclined plane by using the animation during planar movement. However, it can be said that the burden on the developer of having to prepare static animation data still remains. Also, since the static animation data created for a certain object is to be reused for other objects, there is a problem in that some abnormality may occur, such as the animation reproduction by the static animation data when applied to other objects executing operations beyond the movable range of the joints assumed in the 3D model.
[0007] An object of at least one embodiment of the present invention is to solve the above problems and enable dynamic generation of an animation to be executed on an object.
Means for Solving the Problems
[0008] According to a non-limiting perspective, an animation generation program according to an embodiment of the present invention is an animation generation program for causing a server to realize a function of generating an animation of an object that is an object configured by a combination of parts each having at least one joint portion and that executes operations in a virtual space. The program causes the server to have a registration function for registering in advance, as designated operation information, the content of a designated operation for each of the parts (hereinafter referred to as object parts) constituting the object, an acquisition function for acquiring the designated operation information for specifying the designated operation to be executed on the object parts, and for each of the object parts of the object that require operations, generating a parts animation that controls the designated operation of the object part by dynamically calculating the rotation angle of the joint portion required for the designated operation of the object part according to a predetermined calculation rule, and generating an animation of the entire object based on the parts animation of each object part.
[0009] According to a non-limiting perspective, an animation generation system according to an embodiment of the present invention includes a communication network, a server, and a user terminal, and is an animation generation system that generates an animation of an object that is an object composed of a combination of parts each having at least one joint portion and that performs an operation in a virtual space. The animation generation system includes: a registration means for registering in advance, as designated operation information, the content of a designated operation for the parts (hereinafter referred to as object parts) constituting the object; an acquisition means for acquiring the designated operation information for specifying the designated operation to be executed on the object parts; and a generation means for generating a part animation that controls the designated operation of each object part by dynamically calculating the rotation angle of the joint portion required for the designated operation of the object part according to a predetermined calculation rule for each of the object parts of the object that require an operation, and generating an animation of the entire object based on the part animations of each object part.
[0010] According to a non-limiting perspective, an animation generation program according to an embodiment of the present invention is an animation generation program for causing a user terminal to realize a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and that executes an operation in a virtual space. The animation generation program includes a registration function for preliminarily registering, as specified operation information, the content of a specified operation for each of the parts (hereinafter referred to as object parts) that constitute the object in the user terminal, an acquisition function for acquiring the specified operation information for specifying the specified operation to be executed on the object parts, and a generation function for generating a part animation that controls the specified operation of each object part by dynamically calculating the rotation angle of the joint portion required for the specified operation of the object part according to a predetermined calculation rule for each of the object parts that require an operation among the object parts of the object, and generating an animation of the entire object based on the part animations of each object part.
Effects of the Invention
[0011] One or more deficiencies are solved by each embodiment of the present application.
Brief Description of the Drawings
[0012]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
[0013] Hereinafter, examples of embodiments of the present invention will be described with reference to the drawings. Note that various components in the examples of each embodiment described below can be appropriately combined as long as there is no contradiction. In addition, the content described as an example of a certain embodiment may be omitted in other embodiments. Also, operations and processes not related to the characteristic parts of each embodiment may be omitted. Furthermore, the order of various processes constituting the various flows described below is arbitrary as long as there is no contradiction in the processing content.
[0014] [First Embodiment] FIG. 1 is a block diagram showing an example of the configuration of an animation generation system 100 according to an embodiment of the present invention. As shown in FIG. 1, the animation generation system 100 includes a server 10 and user terminals (user terminals) 20, 201 to 20N (N is an arbitrary integer) used by users of the animation generation system 100. Note that the configuration of the animation generation system 100 is not limited to this, and it may be configured such that a single user terminal is used by a plurality of users, or it may be configured to include a plurality of servers.
[0015] The server 10 and the plurality of user terminals 20, 201 to 20N are each connected to a communication network 30 such as the Internet. Although not shown, the plurality of user terminals 20, 201 to 20N are connected to the communication network 30 by performing data communication via a base station managed by a communication carrier and a wireless communication line.
[0016] By including the server 10 and the plurality of user terminals 20, 201 to 20N, the animation generation system 100 realizes various functions for executing various processes according to user operations.
[0017] Server 10 is managed by the administrator of the animation generation system 100 and has various functions for providing information related to various processes to a plurality of user terminals 20, 201 to 20N. In this example, server 10 is composed of an information processing device such as a WWW server and includes a storage medium for storing various information. The configuration of server 10 is not particularly limited as long as it has a general configuration for performing various processes as a computer, such as a control unit and a communication unit. Hereinafter, an example of the hardware configuration of server 10 will be briefly described.
[0018] As shown in FIG. 1, server 10 includes at least a CPU (Central Processing Unit) 101, a memory 102, and a storage device 103.
[0019] CPU 101 is a central processing unit that performs various operations and controls. Also, when server 10 includes a GPU (Graphics Processing Unit), a part of various operations and controls may be performed by the GPU. Server 10 appropriately executes various information processes necessary for animation generation using the data read into memory 102 by CPU 101, and stores the obtained processing results in storage device 103 as necessary.
[0020] Storage device 103 has a function as a storage medium for storing various information. The configuration of storage device 103 is not particularly limited, but from the viewpoint of reducing the processing load on each of the plurality of user terminals 20, 201 to 20N, it is preferably configured to be able to store all the various information necessary for animation generation. Such examples include HDDs and SSDs. However, the storage unit for storing various information only needs to have a storage area in a state accessible by server 10. For example, it may be configured to have a dedicated storage area outside server 10.
[0021] FIG. 2 is a block diagram showing the configuration of server 10A, which is an example of the configuration of server 10. As shown in FIG. 2, server 10A includes at least a registration unit 11, an acquisition unit 12, and a generation unit 13.
[0022] The registration unit 11 has a function of registering in advance, as designated operation information, the content of a designated operation for parts (object parts) that constitute an object.
[0023] Here, an object is a virtual entity that can be placed in a virtual space, and is meant to be constituted by a combination of object parts each having at least one joint part. The object is not particularly limited as long as it is constituted by a combination of object parts. Regarding the connection between object parts, some are connected by joints and some may be fixedly connected. As examples of the types of objects, various types such as humanoid objects and four-legged walking animal-type objects can be considered. Such a configuration of the object is provided in advance as a three-dimensional model. In the following, although the explanation is mainly made assuming that the object is a three-dimensional model, two-dimensional models are not excluded, and it is also applicable to the case of generating an animation using a two-dimensional model.
[0024] Also, an object part means a part within a predetermined range in a three-dimensional model that constitutes an object. An object part is a part that occupies a predetermined range within the object. An object part has at least one joint part. A part or the whole of one object part performs a rotational movement around the joint part. For example, between two object parts, they are connected to each other via a joint part. Here, the boundary between a plurality of object parts can be determined as appropriate. For example, the range of one object part with respect to the entire object can be determined with, for example, a joint part as the boundary. How to handle the joint part on the boundary can be determined as appropriate, but for example, it can be considered to belong to either one of the object parts.
[0025] Further, the designated operation means an operation to be executed on the object part. Also, the designated operation information means information for specifying the content of the designated operation. Furthermore, the designated operation information includes information necessary for dynamically calculating the rotation angle of the joint part for executing the designated operation. As information necessary for dynamic calculation, for example, information specifying the target posture, the target direction of the part, or the locus of the part for executing the designated operation, and information specifying a predetermined calculation rule for dynamically calculating the rotation angle of the joint part in each posture state when executing the designated operation using those pieces of information are included. Also, for example, a function that encompasses all of the information specifying the target posture, the target direction of the part, or the locus of the part for executing the designated operation, and the information of the predetermined calculation rule for dynamically calculating the rotation angle of the joint part in each posture state when executing the designated operation using those pieces of information may be registered as the designated operation information. Here, the predetermined calculation rule may be a general-purpose calculation rule (general-purpose function) registered in advance and read and used when executing the designated operation, or may be a calculation rule registered as an original function set to execute a calculation process specialized for the content of the designated operation. Here, the function in this example means a calculation rule for dynamically calculating and outputting the rotation angle of each joint part necessary for each posture state of the designated operation to be executed on the object part based on the input of a predetermined type of parameter. Note that "dynamically calculate" means that when the target posture, the target direction of the part, or the locus of the part for executing the designated operation is specified, the posture state of the object part and the rotation angle of the joint part at that time during the process are not stored in advance as animation data, but rather the rotation angle of the joint part for obtaining the optimal posture state according to the situation is calculated and obtained each time.
[0026] Also, the configuration for registering the content of the designated operation in advance as the designated operation information is not particularly limited, and it may be a predetermined storage means provided in the server 10 or a predetermined storage area in a device (for example, the user terminal 20) capable of communicating with the server 10.
[0027] The acquisition unit 12 has a function of acquiring designated operation information for specifying a designated operation to be executed on an object part.
[0028] Here, acquiring designated operation information means acquiring designated operation information for an animation specified by some means. As the entity that designates the designated operation information, for example, it can be considered a user who determines an operation on an object or an AI for controlling the behavior of the object. The specific configuration for acquiring the designated operation information is not particularly limited. For example, in response to the determination of the content of the designated operation for an object part, a configuration can be considered where the designated operation information for realizing it is read by referring to the storage area of the registration destination in the registration unit 11.
[0029] The generation unit 13 generates a part animation that controls the designated operation of each object part that requires operation among the object parts of the object by dynamically calculating the rotation angle of the joint part required for the designated operation of the object part according to a predetermined calculation rule, and has a function of generating an animation of the entire object based on the part animations of each object part.
[0030] Here, the object part that requires operation means the object part of the entity that executes the designated operation specified by the designated operation information. Since it is not necessarily the case that all object parts constituting the object require operation, the intention is to perform processing only on the object parts that require operation for which the designated operation information has been acquired.
[0031] Also, the rotation angle of the joint part means the rotation angle of the joint from its default position (initial position) when the position of one of the two parts connected to the joint part is used as a reference for the other part. That is, it means information for specifying the rotation angle of the other part regardless of the posture state of one part.
[0032] Further, dynamically calculating the rotation angle of a joint means that, based on information such as the target posture given to the object part, the target position, target direction, and target trajectory of the part, the rotation angle of each joint in each posture state until reaching there is calculated each time according to various conditions that change each time, such as the external environment at the start of the calculation and the posture state at the start of the calculation. Any conditions can be adopted as long as they may affect the animation generation result.
[0033] Also, part animation refers to the animation data of only the object part for controlling the object part to execute a specified operation. The animation of the entire object is generated by combining the part animations for a plurality of object parts.
[0034] The plurality of user terminals 20, 201 to 20N are each managed by a user and are configured by communication terminals capable of performing network distribution type animation generation, such as mobile phone terminals, PDAs (Personal Digital Assistants), portable devices, and so-called wearable devices. Note that the configuration of the user terminal that the animation generation system 100 can include is not limited to the above example, and any configuration can be used as long as the user can recognize the generated content of the animation. Other examples of the configuration of the user terminal include combinations of various communication terminals and personal computers.
[0035] Further, the plurality of user terminals 20, 201 to 20N are each connected to the communication network 30 and include hardware (for example, a display device that displays a browser screen or an animation generation screen according to coordinates) and software for executing various processes by communicating with the server 10. Note that each of the plurality of user terminals 20, 201 to 20N may be configured to be able to directly communicate with each other without going through the server 10.
[0036] Next, the operation of the animation generation system 100 (system 100) in this example will be described.
[0037] FIG. 3 is a flowchart showing an example of the animation generation process executed by the system 100. In the animation generation process in this example, processes related to controlling the generation of an animation in response to an operation by a user of the user terminal 20 (terminal 20) are performed. Hereinafter, a case where the server 10A and the terminal 20 execute the animation generation process will be described as an example.
[0038] The animation generation process is started, for example, when the terminal 20 that has accessed the server 10A requests a screen display accompanied by a request for generating an animation.
[0039] First, the server 10A registers, in advance, as information necessary for the animation generation process, the content of the specified operation for the object part as specified operation information (step S11). For example, the server 10A registers, in advance, as specified operation information, information for specifying the object part that is the target of the specified operation, information for determining the target posture, the target position of the part, the target direction, the target trajectory, etc. in the specified operation to be executed on the object part, and information on a predetermined operation rule for dynamically executing calculations.
[0040] Next, the server 10A acquires the specified operation information for specifying the specified operation for the object part (step S12). The specified operation is given, for example, based on a user operation on the object, and the server 10A selects and acquires the specified operation information corresponding to the specified operation from among a plurality of pieces of pre-registered specified operation information.
[0041] Next, the server 10A generates part animations based on the acquired specified operation information, and generates an animation of the entire object based on the part animations of each object part (step S13). In this example, the server 10A dynamically calculates the rotation angles of the joint parts required in each posture state to execute the specified operation for each object part, generates part animations, and combines the generated part animations to generate an animation of the entire object. In this example, the server 10A transmits output information for displaying the animation of the entire object to the terminal 20 to the terminal 20.
[0042] When the terminal 20 receives information from the server 10A, it outputs a screen for displaying the generation result of the animation on the display screen of a predetermined display device (step S14). In this example, when the terminal 20 outputs a screen for displaying the generation result of the animation, the processing here ends.
[0043] FIG. 4 is a flowchart showing an example of the operation on the server 10A side in the animation generation process. Here, the operation of the server 10A in the system 100 will be described again.
[0044] First, the server 10A registers in advance the content of the specified operation for the object part as specified operation information as information necessary for the animation generation process (step S101). Next, the server 10A acquires the specified operation information for specifying the specified operation for the object part (step S102). Next, the server 10A generates part animations based on the acquired specified operation information, and generates an animation of the entire object based on the part animations of each object part (step S103). When the server 10A generates an animation of the entire object, the processing here ends.
[0045] FIG. 5 is a flowchart showing an example of the operation on the terminal 20 side when the terminal 20 executes the animation generation process. Hereinafter, the case where the terminal 20 executes the animation generation process alone will be described as an example. Note that the configuration of the terminal 20 has the same functions as that of the server 10A except for receiving various information from the server 10A, and thus the description thereof will be omitted from the viewpoint of avoiding redundant explanations.
[0046] First, as information necessary for the animation generation process, the terminal 20 registers in advance the content of the specified operation on the object part as specified operation information (step S201). Next, the terminal 20 acquires the specified operation information for specifying the specified operation on the object part (step S202). Next, the terminal 20 generates a part animation based on the acquired specified operation information, and generates an animation of the entire object based on the part animations of the respective object parts (step S203). When the terminal 20 generates the animation of the entire object, the processing here ends.
[0047] As described above, as one aspect of the first embodiment, a server 10A having a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and that operates in a virtual space includes a registration unit 11, an acquisition unit 12, and a generation unit 13. Therefore, the content of a specified operation for parts (object parts) constituting the object is registered in advance as specified operation information, the specified operation information for specifying the specified operation to be executed by the object parts is acquired, and for each of the object parts that require operation among the object parts of the object, the rotation angle of the joint portion required for the specified operation of the object part is dynamically calculated according to a predetermined calculation rule, thereby generating a part animation that controls the specified operation of the object part, generating an animation of the entire object based on the part animations of each object part, and it becomes possible to reduce the burden on developers for generating the animation of the object while sufficiently ensuring the degree of freedom in designing the object.
[0048] Also, as one aspect of the first embodiment, a user terminal 20 having a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and that operates in a virtual space includes a registration unit 11, an acquisition unit 12, and a generation unit 13. Therefore, the content of a specified operation for parts (object parts) constituting the object is registered in advance as specified operation information, the specified operation information for specifying the specified operation to be executed by the object parts is acquired, and for each of the object parts that require operation among the object parts of the object, the rotation angle of the joint portion required for the specified operation of the object part is dynamically calculated according to a predetermined calculation rule, thereby generating a part animation that controls the specified operation of the object part, generating an animation of the entire object based on the part animations of each object part, and it becomes possible to reduce the burden on developers for generating the animation of the object while sufficiently ensuring the degree of freedom in designing the object.
[0049] That is, without using the animation data in which the posture of the object and the rotation angle of the joint part are statically determined, i.e., the static animation data registered and managed in a set with the 3D model in so-called assets, it is possible to dynamically generate the animation to be executed on the object. Therefore, when generating the animation of the object, it is not necessary to create the static animation data in advance, and it is possible to reduce the burden on the developer. As a result, for example, it becomes possible to expect an improvement in the development speed of video games.
[0050] [Second Embodiment] FIG. 6 is a block diagram showing the configuration of a server 10B which is an example of the server 10. In this example, the server 10B includes at least a registration unit 11, an acquisition unit 12B, and a generation unit 13.
[0051] In the second embodiment, the specified operation information acquired by the acquisition unit 12B is specified by first combination instruction information which is an instruction combining specified operations for a plurality of object parts.
[0052] Here, the first combination instruction information means an instruction combining a plurality of specified operations for at least one or more object parts. The first combination instruction information may be a combination of specified operations for each of a plurality of different object parts, or may be a combination of a plurality of specified operations for one object part. The acquisition unit 12B specifies the plurality of specified operations included in the first combination instruction information, and selects and acquires the specified operation information corresponding to each of the specified operations from those registered in advance.
[0053] FIG. 7 is a flowchart showing an example of the animation generation process executed by the system 100. Hereinafter, the operations of the server 10B and the terminal 20 will be described as an example. Note that the description of the flowcharts showing the operations of the server 10B and the terminal 20 respectively is omitted from the viewpoint of avoiding duplicate explanation.
[0054] Server 10B acquires the first combination instruction information (step S2-11). Next, server 10B identifies a plurality of specified operations included in the first combination instruction information, and selects and acquires the specified operation information corresponding to each identified specified operation from those registered in advance (step S2-12).
[0055] As described above, as one aspect of the second embodiment, a server 10B having a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and that executes an operation in a virtual space includes at least a registration unit 11, an acquisition unit 12B, and a generation unit 13. The specified operation information acquired by the acquisition unit 12B is specified by first combination instruction information that is an instruction combining specified operations for a plurality of object parts. Therefore, it is possible to combine and specify a plurality of specified operations for at least one object part by the first combination instruction information, and it is possible to express an animation of an object combining part animations by one first combination instruction information.
[0056] [Third Embodiment] FIG. 8 is a block diagram showing the configuration of a server 10C which is an example of the server 10. In this example, the server 10C includes at least a registration unit 11, an acquisition unit 12, a generation unit 13, and a determination unit 14.
[0057] The determination unit 14 has a function of determining the occurrence of an abnormality in the animation based on the state of the bones and / or joint portions of the object in the animation generated by the generation unit 13.
[0058] Here, a bone is one of the elements that an object part has, and it means the skeletal part that connects between joint parts. Two bones are connected by a joint part. The bone performs a rotational movement around the joint part as the rotation angle of the joint part changes. When generating an animation of an object part, for example, assuming that the bone and skinning are preset, the position and / or posture of a CG model or the like associated with the bone changes according to the change in the position and / or posture of the bone during the playback of the animation. The configuration for determining the state of the bone here is not particularly limited, but a configuration based on the change in the position (coordinates) of the bone or the change in the posture (angle) of the bone is preferable. Also, the configuration for determining the state of the joint part is not particularly limited, but a configuration based on the change in the position (coordinates) of the joint part or the change in the rotation angle is preferable. As an example of the condition for determining the occurrence of an abnormality, a configuration for determining whether the amount of change in the position and / or rotation angle of the bone and / or joint part exceeds the assumed range can be considered.
[0059] Also, an animation abnormality means that the conditions for determining that the operation of the object executed with the animation data is abnormal are satisfied. As an example of an animation abnormality, it is conceivable that the position and / or rotation angle of the bone and / or joint part exceeds the allowable range.
[0060] Also, the animation to be determined for the occurrence of an abnormality is not particularly limited, and the determination target may be a single part animation or a combination of part animations. Here, the combination of part animations may be an animation of the entire object or a combination of a plurality of part animations that are a part of the entire object.
[0061] FIG. 9 is a flowchart showing an example of the animation generation process executed by the system 100. Hereinafter, the operations of the server 10C and the terminal 20 will be described as an example. Note that the description of the flowcharts showing the operations of the server 10C and the terminal 20 respectively will be omitted from the viewpoint of avoiding duplicate explanations.
[0062] When the server 10C generates the animation of the entire object, it determines the occurrence of an abnormality in the animation based on the state of the bones and / or joints of the object in the generated animation (step S3-11). For example, the server 10C determines the occurrence of an abnormality in the animation by determining whether the positions and rotation angles of the bones and / or joints are within the assumed range of movement.
[0063] As described above, as one aspect of the third embodiment, the server 10C having a function of generating an animation of an object that is composed of a combination of parts each having at least one joint and that operates in a virtual space includes at least a registration unit 11, an acquisition unit 12, a generation unit 13, and a determination unit 14. Based on the state of the bones and / or joints of the object in the animation generated by the generation unit 13, the occurrence of an abnormality in the animation is determined. Therefore, it becomes possible to easily determine the presence or absence of an abnormality in the dynamically generated animation.
[0064] [Fourth Embodiment] FIG. 10 is a block diagram showing the configuration of a server 10D which is an example of the server 10. In this example, the server 10D includes at least a registration unit 11, an acquisition unit 12D, a generation unit 13, an aim information registration unit 15, and an aim command acquisition unit 16.
[0065] The aim information registration unit 15 has a function of registering aim information in which the rotation angle of each joint, the position of a predetermined part of a predetermined object part or a part of an accompanying object associated with the object part, and the aim direction which is the direction in which the predetermined part or the part of the accompanying object is facing are associated with respect to a plurality of posture states when each joint of the object is changed in angle in various ways.
[0066] Here, varying the angles of each joint means varying the combinations of the rotation angles of each joint. The joints for which the angles are varied can be some or all of them. Even if the rotation angles of some of the joints of the object remain unchanged, if the rotation angles of other joints of the object change, it corresponds to varying the angles of each joint in various ways. Note that the amount of change in the angle of the joint at the time of registration is not particularly limited, but it may be changed by a predetermined angle for each joint, for example, changed by 5 degrees each time.
[0067] Also, an attached object means an object that can be arranged attached to an object part in a virtual space and whose position and / or orientation change so as to follow the object part. Examples of attached objects include, for example, weapons held by the object. The attached object is not particularly limited as long as it is attached to the object part, but it is preferably an object whose position and / or orientation change substantially identically as the position and / or orientation of the object part change.
[0068] Also, the aim direction here means the direction in which a predetermined part or a part of the attached object faces in the posture state of the object at that time. Examples of the direction in which the predetermined part or a part of the attached object faces include the direction in which the lower arm of the object faces, the direction in which the muzzle of the rifle held by the object faces, and the like.
[0069] Also, the aim information means information for realizing an operation of directing a predetermined part of a predetermined object part or a part of an accompanying object associated with the object part in a specific direction. Specifically, the aim information is information in which, for a plurality of posture states when each joint part of the object is changed in angle variously, the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an accompanying object associated with the object part, and the aim direction which is the direction in which the predetermined part or the part of the accompanying object is facing are associated with each other. The aim information is not particularly limited as long as the posture of the object and the aim direction are associated with each other. Also, there may be cases where a plurality of posture states are registered for the same aim direction.
[0070] Also, the configuration for registering the aim information is not particularly limited, and it may be a predetermined storage means provided in the server 10D or a storage means provided in a device (for example, the user terminal 20) capable of communicating with the server 10D.
[0071] The aim command acquisition unit 16 has a function of acquiring an aim command for directing a predetermined part of a predetermined object part or a part of an accompanying object associated with the object part in a designated aim direction.
[0072] The aim command is a command for requesting the object to execute an operation of directing a predetermined part of the object part or a part of the accessory object in a designated aim direction. This aim command may be issued by a user operation or by an AI that controls a character which is an example of the object. However, the aim command includes a command for directing a predetermined part of the designated object part or a part of an accompanying object associated with the object part in a designated aim direction.
[0073] The acquisition unit 12D has a function of acquiring the aim information necessary for calculation based on the aim direction specified by the aim command acquired by the aim command acquisition unit 16, and acquiring the designated operation information necessary for executing the aim command based on the acquired aim information.
[0074] Here, obtaining the aim information necessary for the operation means obtaining the aim information corresponding to the aim direction by referring to the aim information registered in the aim information registration unit 15 using the information on the aim direction included in the aim instruction.
[0075] Also, since the aim direction in the aim information registered in the aim information registration unit 15 does not always exactly match the aim direction specified by the aim instruction, in that case, it is preferable to have a configuration that specifies the aim information of the aim direction closest to the aim direction specified by the aim instruction as the acquisition target. Alternatively, the aim information of the aim direction specified by the aim instruction may be approximately calculated using a plurality of registered aim information for nearby aim directions. When approximately calculating, it is preferable to approximate and calculate the rotation angle of each joint part from the rotation angles of the joint parts in each posture state in the plurality of registered aim information.
[0076] Also, the specified operation information necessary for executing the aim instruction means that when the object is made to execute an operation so as to be in the posture state (or the posture state in the aim information approximately calculated using a plurality of registered aim information) registered in association with the aim direction in the aim information registered in the aim information registration unit 15, it means including at least the specified operation information for specifying the necessary operations for each object part constituting the object.
[0077] FIG. 11 is a flowchart showing an example of the animation generation process executed by the system 100. Hereinafter, the operations of the server 10D and the terminal 20 will be described as an example. Note that the description of the flowcharts showing the operations of the server 10D and the terminal 20 respectively will be omitted from the perspective of avoiding redundant explanations.
[0078] Server 10D preliminarily registers aiming information in which, for a plurality of posture states when each joint part of an object is variably angled, the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an accompanying object accompanying the object part, and the aim direction which is the direction in which the predetermined part or the part of the accompanying object faces are associated with each other (step S4-11).
[0079] Server 10D acquires an aiming command to direct a predetermined part of a predetermined object part or a part of an accompanying object accompanying the object part in a designated aim direction (step S4-12).
[0080] When Server 10D acquires the aiming command, it acquires the aiming information necessary for calculation based on the aim direction specified by the acquired aiming command (step S4-13).
[0081] When Server 10D acquires the aiming information, it acquires the designated motion information necessary for executing the aiming command based on the acquired aiming information (step S4-14).
[0082] As described above, as one aspect of the fourth embodiment, a server 10D having a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and operates in a virtual space includes at least a registration unit 11, an acquisition unit 12D, a generation unit 13, an aim information registration unit 15, and an aim command acquisition unit 16. For a plurality of posture states when each joint portion of the object is changed in angle in various ways, aim information is registered in which the rotation angle of each joint portion, the position of a predetermined part of a predetermined object part or a part of an attached object attached to the object part, and the aim direction which is the direction in which the predetermined part or the part of the attached object is facing are associated with each other. An aim command for directing a predetermined part of a predetermined object part or a part of an attached object attached to the object part in a specified aim direction is acquired, aim information necessary for calculation is acquired based on the aim direction specified by the aim command acquired by the aim command acquisition unit 16, and specified motion information necessary for executing the aim command is acquired based on the acquired aim information. Therefore, it is possible to dynamically generate an animation for aim commands in various directions, and it is possible to reduce the processing load during animation generation by using the information registered in advance as aim information.
[0083] Also, although not particularly mentioned in the example of the above-described fourth embodiment, in the process of acquiring aim information by the acquisition unit 12D, when aim information including an aim direction substantially the same as the aim direction specified by an aim command is not registered, or when it is impossible to direct a predetermined part of a predetermined object part or an attached object to the aim direction specified by an aim command due to the range limitation of the rotation angle of the joint part of the object, such situations may occur. In such a case, the acquisition unit 12D may acquire aim information in the aim direction closest to the aim direction specified by the aim command, acquire designated operation information based on the aim information, and further acquire designated operation information for directing a predetermined part or a part of the attached object in the specified direction. Then, the generation unit 13 may generate an animation that causes the object to direct a predetermined part or a part of the attached object in the aim direction included in the acquired aim information and execute a designated operation of directing the object from the aim direction to the aim direction specified by the aim command. By doing so, it becomes possible to cause the object to execute an aim command for a direction not included in the aim information.
[0084] [Fifth Embodiment] [Generation of Procedural Animation] First, the generation of procedural animation will be described. In this example, in order to be able to generate animations dynamically and procedurally (controlled by mathematical formulas, scripts, condition definitions, etc.) for each object part constituting the object, the control content for each object part is calculated based on the designated operation information. The following describes the specific configuration.
[0085] FIG. 12 is a block diagram showing the configuration of a server 10Z which is an example of the server 10 in the system 100 (see FIG. 1). In this example, the server 10Z includes at least a registration unit 11Z, an acquisition unit 12Z, a generation unit 13Z, a determination unit 14Z, an aim information registration unit 15Z, and an aim command acquisition unit 16Z.
[0086] The registration unit 11Z has a function of registering in advance, as designated operation information, the content of a designated operation for parts (object parts) that make up an object.
[0087] Here, an object means a virtual entity that can be placed in a virtual space, and is composed of a combination of object parts each having at least one joint part. In this example, the object is, for example, a humanoid character or a humanoid robot.
[0088] Also, an object part means a predetermined part that makes up an object. For example, when the object is a humanoid character or a humanoid robot, the object is composed of a combination of object parts such as "head", "torso", "right arm", "right hand", "left arm", "left hand", "waist", "right leg", "right foot", "left leg", and "left foot".
[0089] Also, the movement of an object part means a movement in which the position and / or posture of the object part changes. Also, the designated operation means an operation to be executed on the object part. In this example, for each object part of the humanoid character, there is a corresponding designated operation.
[0090] Also, the designated operation means an operation to be executed on the object part. Also, the designated operation information means information for specifying the content of the designated operation. Furthermore, the designated operation information includes information regarding conditions for dynamically calculating the rotation angle of the joint part for executing the designated operation. The said conditions are, for example, information indicating a target posture or a target direction.
[0091] Also, the information registered by the registration unit 11Z as the designated operation information may include information on the calculation rules for the object to realize the designated operation.
[0092] Here, the predetermined operation rule means a rule for dynamically performing operations on the operations to be executed on the object parts. Specifically, the predetermined operation rule is a rule for executing various operations so that when the object parts are operated, the operations are in the specified posture, locus, and direction.
[0093] In addition, when the coordinates of a predetermined part of the object part or the direction in which the predetermined part faces in the target posture are specified by the specified operation, the operation rule may at least include a rule for dynamically calculating the rotation angle of the joint part of the object part for moving the predetermined part to the specified coordinate position or moving it so as to face the specified direction. For example, the operation rule may at least include a rule using IK (Inverse Kinematics).
[0094] In addition, when the information on the rotation angle of the joint part of the object part in the target posture is specified by the specified operation, the operation rule may at least include a rule for calculating the rotation amount of each of the joint parts until the target posture is reached based on the specified information on the rotation angle of the joint part. For example, the operation rule may at least include a rule using FK (Forward Kinematics).
[0095] IK and FK are used separately according to the content of the operation to be executed on the object.
[0096] In addition, the registration unit 11Z may include information on a function for the object to realize the specified operation in the information registered as the specified operation information.
[0097] Here, the function for realizing the specified operation means an operation for performing operations on the operations to be executed on the object parts based on the input of predetermined types of parameters, and outputting information such as the rotation angle of each joint part provided in the object parts and information indicating the locus of the object parts. In this example, the function for realizing the specified operation is a function using IK or FK.
[0098] Note that the function for realizing the specified operation may be separate from the specified operation information. Also, while the specified operation information includes information on the target posture, target position, and target direction of the specified operation, the function for realizing the specified operation may be separate from the specified operation information. On the other hand, the function for realizing the specified operation may include information on the target posture, target position, and target direction of the specified operation.
[0099] Note that the content registered as the specified operation information may be anything as long as it is information that can be used to dynamically generate part animations, and may be, in addition to functions, data structures, classes, etc.
[0100] Also, the operation rule may be a rule for performing an operation for dynamically executing the specified operation based on obtaining at least information on the position and / or posture of the object parts that require an operation and information on the surrounding environment of the object parts.
[0101] Here, the information on the surrounding environment of the object parts means information on the situation around the object parts. The information on the surrounding environment of the object parts is not particularly limited, but it is preferably information that at least includes factors that can affect the process and result of the specified operation when the object parts execute the specified operation. Examples of the information on the surrounding environment of the object parts include information indicating whether there is an object near the object parts and information indicating the shape of the ground in the virtual space. In this example, the information on the surrounding environment of the object parts is terrain information near the location where the humanoid character stands and information on the objects arranged near the humanoid character, etc.
[0102] The acquisition unit 12Z has a function of acquiring the specified operation information for specifying the specified operation to be executed on the object parts.
[0103] Here, the configuration for specifying the designated operation information to be acquired is not particularly limited. The designated operation information may be specified by a user operation, or may be specified by an AI that controls a character, which is an example of an object.
[0104] In addition, the designated operation information acquired by the acquisition unit 12Z is specified by first combination instruction information, which is an instruction combining designated operations for a plurality of object parts. Hereinafter, the expression "animation clip" is used as a term referring to the first combination instruction information in this example. An animation clip is an instruction in which designated operations for each of a plurality of object parts are combined, or a plurality of designated operations for one object part are combined.
[0105] Further, the designated operation information acquired by the acquisition unit 12Z is specified by second combination instruction information, which is an instruction further combining a plurality of first combination instruction information. Hereinafter, the expression "animation sequence" is used as a term referring to the second combination instruction information in this example. When an animation is generated based on an animation sequence, first, the animation clips constituting the animation sequence are specified, and the designated operations constituting the specified animation clips are specified. Then, the acquisition unit 12Z acquires the designated operation information based on the specified designated operations.
[0106] The generation unit 13Z has a function of generating a part animation that controls the designated operation of an object part by dynamically calculating the rotation angle of a joint part required for the designated operation of the object part according to a predetermined calculation rule for each of the object parts of the object that require an operation, and generating an animation of the entire object based on the part animations of each object part.
[0107] Here, the object parts that require operations refer to the object parts of the entity that executes the specified operation identified by the specified operation information. In this example, the object parts that require operations are identified by the specified operation information acquired by the acquisition unit 12Z.
[0108] Also, the rotation angle of a joint part means the magnitude of the rotation angle of one object part with respect to the reference orientation of the other object part for two object parts connected to the joint part, expressed with the joint part as the center. In this example, for the calculation of the rotation angle of the joint part, a value based on the default state of the model data of the humanoid character is used.
[0109] Also, dynamically calculating the rotation angle of a joint part means calculating it according to the situation of the object part having the joint part.
[0110] Also, part animation refers to the animation data only for the object part for controlling the object part to execute the specified operation. Also, the animation of the entire object is generated by combining the part animations for multiple object parts.
[0111] Also, the generation unit 13Z may have a function of dynamically calculating the rotation angle of the joint part required for the specified operation of the object part using a function as the calculation rule.
[0112] Here, the function used as the calculation rule is, for example, a function identified by the function information included in the specified operation information registered by the registration unit 11Z for the object to realize the specified operation.
[0113] In addition, when an instruction to start executing another specified operation is given while the specified operation for one object part is being executed from the start until completion by the generation unit 13Z, among the multiple specified operations with overlapping execution periods, it may have a function of determining which specified operation to execute based on a predetermined priority order, and generating part animation by controlling to execute the determined specified operation from the overlapping point in time.
[0114] Here, the instruction to start executing the specified operation means an instruction to execute the specified operation from the specified point in time. In this example, the specified point in time is the start point of execution appropriately specified for the specified operation by the part animation or the start point of execution specified in the animation clip or animation sequence.
[0115] Also, the predetermined priority order means the order of the specified operations to be given priority in execution. The specified operation to be given priority in execution is not particularly limited, but it is preferably specified in advance based on the information set in the specified operation or determined at the time of generating the animation. In this example, the predetermined priority order is the order of giving priority in execution depending on whether to give priority to the specified operation whose execution period starts later when the execution periods overlap. In this example, when the execution periods of multiple specified operations at least partially overlap (conflict), the specified operations are evaluated in the order according to the information set in the specified operations.
[0116] Also, executing the determined specified operation from the overlapping point in time means switching to the execution of the determined specified operation from the overlapping point in time or continuing the execution of the determined specified operation even after the overlapping point in time. When switching the specified operation to be executed on the object part at the overlapping point in time, two types of part animations may be blended during the switching period.
[0117] With such a configuration, it becomes possible to make the object take more natural actions. Since the part animation is generated in units of object parts, for example, in the case of a robot object, the object parts can be changed according to the user's request, and in the case of a customizable video game, by exchanging the object parts and simultaneously exchanging the part animation related to the object parts, it becomes possible to generate animations according to the customization. Also, in the above configuration, the control target for animation generation was described as the rotation angle of the joint part, but it is not limited to this, and by also making the movement and scaling of the object parts the control targets, it becomes possible to increase the variations of the animation. For example, it becomes possible to generate an animation expressing that the robot's arm extends.
[0118] In addition, the most prominent advantage of the method for generating procedural animation in this example is that it can respond to the environment, such as lightly touching a wall with the hand while the character is walking and adjusting the height of the feet according to the undulations of the ground. In addition to this, it becomes possible to make a determination of self-collision. For example, when a robot with exchangeable parts is the object, the shape of itself will change greatly due to the exchange of parts, but at that time, since self-collision can be determined, it becomes possible to generate animations dynamically. By determining self-collision, it is possible to eliminate the discrepancies in the animation and improve the quality of the animation.
[0119] [Abnormality Detection of Animation] With the above configuration, it becomes possible to generate animations dynamically and procedurally. However, since procedural animations can be generated infinitely, it is difficult to visually check each one for abnormalities. Therefore, it is preferable to have a configuration that can automatically determine whether an abnormality occurs in the procedural animation.
[0120] Therefore, a determination unit 14Z may be further provided in the server 10Z to determine the occurrence of an abnormality in the generated animation based on the state of the bones and / or joint parts of the objects in the animation. Here, a bone is one of the elements included in an object part and means a skeletal part that connects between joint parts. Two bones are connected by a joint part. A bone performs a rotational motion around the joint part with the change in the rotation angle of the joint part. Also, an abnormality in the animation means that the conditions for determining that the operation of the object executed in the animation data is abnormal are satisfied. As an example of an abnormality in the animation, it is conceivable that the position or rotation angle of the bones and / or joint parts exceeds the allowable range.
[0121] Further, as the determination unit 14Z, the server 10Z may determine that an abnormality has occurred when the difference in the rotation angles of the bones and / or joint parts at two time points at a predetermined time interval for the generated animation exceeds a predetermined threshold. The two time points at a predetermined time interval are, for example, two frames during the execution of a predetermined operation or two important pose time points in a predetermined operation. With such a configuration, by determining whether the amount of angular change within a certain time is too large, it is possible to determine as abnormal an animation in which the position of the bone lacks continuity and teleports instantaneously.
[0122] Further, as the determination unit, the server 10Z may determine that an abnormality has occurred in the rotation of the bone when the rotation angle of the bone and / or joint part for the generated animation exceeds an angle within a predetermined range. Here, the angle within the predetermined range can be appropriately set for each bone and / or joint part. With such a configuration, it becomes possible to determine as abnormal an animation in which the position of the bone or the rotation angle of the joint part moves beyond the allowable range.
[0123] In addition, as a storage unit, the server 10Z may store, in a predetermined storage means, the designated operation information (including combinations of a plurality of designated operations) used for generating an animation that meets a predetermined criterion among part animations or animations of the entire object. Here, the predetermined criterion is not particularly limited, but a criterion such as the occurrence of an animation abnormality can be considered. The information stored in the predetermined storage means by the storage unit is not particularly limited as long as it can reproduce an animation that meets the predetermined criterion. In this example, the information stored by the storage unit is designated operation information, first combination instruction information, second combination instruction information, and the like. That is, by storing the designated operation information (including combinations of a plurality of designated operations) used for generating an animation by the storage unit in a predetermined storage means, it is possible to reproduce animations at any level of part animations, animation clips, or animation sequences. With such a configuration, the content of the animation that meets the predetermined criterion can be easily confirmed by the producer, and an improvement in development efficiency can be expected. That is, for procedurally generated animations that can be generated infinitely, it is difficult to reproduce the problematic animation later, so there is an issue of how to perform debugging. However, if the abnormal animation can be stored, it becomes possible to build accumulated information about the conditions under which the abnormality occurs. As a result, an effect is obtained in that it is possible to avoid in advance the conditions under which an abnormality occurs even for procedurally generated animations.
[0124] In this way, for dynamically generated animations, by making it possible to determine the occurrence of an abnormality in the animation based on the state of the bones and / or joints of the object, it becomes possible to automatically perform an abnormality determination for infinitely generatable procedural animations, and it becomes possible to ensure the quality of the generated animations.
[0125] [Animation Generation Related to Aiming Operation] Animation can be dynamically and procedurally generated by dynamically calculating the part animation for each object part based on the specified operation information. However, for operations such as turning a part of an object towards a target or aiming the muzzle of a gun held by the object at the target, i.e., so-called aiming operations, there was no method for performing the aiming operation in a specific direction at all angles.
[0126] Therefore, an aiming information registration unit 15Z may be further provided in the server 10Z, and aiming information associating the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an accompanying object attached to the object part, and the aiming direction, which is the direction in which the predetermined part or the part of the accompanying object is facing, is registered for a plurality of posture states when each joint part of the object is changed in angle in various ways.
[0127] Here, changing the angle of each joint part in various ways means changing the combination of the rotation angles of each joint part in various ways. The joint parts for which the angle is changed may be some or all of them. Even if the rotation angle of a part of the joint parts of the object has not changed, if the rotation angle of other joint parts of the object has changed, it corresponds to changing the angle of each joint part in various ways. Note that the amount of change in the angle of the joint part at the time of registration is not particularly limited, but it may be changed by a predetermined angle for each joint, for example, changed by 5 degrees each time.
[0128] In addition, the accompanying object means an object that can be arranged attached to an object part in a virtual space and whose position and / or posture changes so as to follow the object part. In this example, the accompanying object corresponds to, for example, a gun held by a humanoid character by hand.
[0129] In addition, the aim direction in this example means the direction in which a predetermined part or a part of an attached object faces in the posture state of the object at that time. Examples of the direction in which a predetermined part or a part of an attached object faces include the direction in which the lower arm of the object faces, or the direction in which the muzzle of a rifle held by the object faces.
[0130] In addition, the aim information means information for realizing an operation of directing a predetermined part of a predetermined object part or a part of an attached object attached to the object part in a specific direction. In this example, the aim information corresponds to, for example, the rotation angle of each joint part for a plurality of posture states when the joint parts of a humanoid character are variously changed in angle, the position of the muzzle of a gun held by the humanoid character with its hand, and the aim direction which is the direction in which the muzzle is facing.
[0131] Furthermore, an aim command acquisition unit 16Z may be further provided in the server 10Z to acquire an aim command for directing a predetermined part of a predetermined object part or a part of an attached object attached to the object part in a specified aim direction. The aim command is a command that requests the object to execute an operation of directing a predetermined part of the object part or a part of an attached object in a specified aim direction. This aim command may be issued by a user operation or by an AI that controls a character which is an example of an object. However, the aim command includes a command for directing a predetermined part of the specified object part or a part of an attached object attached to the object part in a specified aim direction.
[0132] The aim direction specified in this example means the direction when aiming at the specified target. In this example, the aim direction specified is the direction in which a humanoid character points the muzzle of a gun held in its hand at a specific target.
[0133] In addition, the acquisition unit 12Z may acquire aim information necessary for calculation based on the aim direction specified by the acquired aim command, and acquire specified action information necessary to execute the aim command based on the acquired aim information.
[0134] Here, acquiring the aim information necessary for the calculation means acquiring the aim information corresponding to the aim direction by referring to the aim information registered in the aim information registration unit 15Z using the aim direction information included in the aim command. In this example, for example, the acquisition unit 12Z specifies the aim information of the aim direction that matches or is closest to the specified aim direction as the acquisition target.
[0135] FIG. 13 is a flowchart showing an example of animation generation executed by the server 10Z. In the animation generation process in this example, processes related to generating animation are performed. Each process will be described below. The order of each process is random as long as no inconsistency occurs in the process contents.
[0136] The animation generation process is started, for example, when the terminal 20 that has accessed the server 10Z requests the start of a process related to animation generation.
[0137] In the animation generation process, the server 10Z first registers the contents of the designated action for the parts (object parts) constituting the object as designated action information in advance (step S301). In this example, the server 10Z associates information indicating which object part it is with information on the conditions for dynamically calculating the rotation angle of the joint for causing the object part of a humanoid character to execute the designated action, and registers them as the designated action information.
[0138] When the server 10Z registers the content of the specified action as the specified action information in advance, the server 10Z acquires the second combination command information (step S302). In this example, the server 10Z acquires the second combination command information in response to an execution command of the animation sequence.
[0139] When the server 10Z acquires the second combination instruction information, it specifies the first combination instruction information that constitutes the acquired second combination instruction information (step S303). In this example, the server 10Z specifies the first combination instruction information based on the information for specifying the first combination instruction information included in the acquired second combination instruction information in order to specify the content of the animation clip that constitutes the animation sequence.
[0140] When the server 10Z specifies the first combination instruction information, it specifies the designated operation that constitutes the specified first combination instruction information (step S304). In this example, the server 10Z specifies the designated operation based on the information for specifying the designated operation information of the acquisition target included in the specified first combination instruction information in order to generate the part animation that constitutes the animation clip.
[0141] When the server 10Z specifies the designated operation, it acquires the designated operation information of the specified designated operation (step S305). In this example, the server 10Z selects and acquires, from the designated operation information registered by the server 10A in this example, the one specified as the acquisition target.
[0142] When the server 10Z acquires the designated operation information, it generates a part animation based on the acquired designated operation information, and generates an animation of the entire object based on the part animations of each object part (step S306). In this example, the server 10Z generates a part animation based on the information indicating which object part it is and the information regarding the conditions for dynamically calculating the rotation angle of the joint part for executing the designated operation on the object part of the humanoid character, and combines the generated part animations to generate an animation clip. Then, the server 10Z combines the animation clips to generate an animation sequence.
[0143] In this example, when the server 10Z generates the animation of the entire object, the processing here ends.
[0144] FIG. 14 is an explanatory diagram for explaining an example of object parts corresponding to at least one of the embodiments of the present invention. FIG. 14 shows a humanoid character which is an example of an object. The humanoid character shown in FIG. 14 is composed of a total of 11 object parts: "head", "torso", "right arm", "right hand", "left arm", "left hand", "waist", "right leg", "right foot", "left leg", and "left foot". Further, these object parts are connected to each other by joints. That is, two object parts are connected with a joint as a boundary. The joint located at the boundary of the object parts is treated as belonging to either one of the object parts. For example, the joint at the boundary between the "torso" and the "right arm" belongs to the "right arm". Also, for example, the joint at the boundary between the "head" and the "torso" belongs to the "head". Note that joints may also be provided inside the object parts other than at the boundaries of the object parts. For example, the "right arm" has one joint at the position of the middle elbow.
[0145] FIG. 15 is an explanatory diagram for explaining an example of designated operation information corresponding to at least one of the embodiments of the present invention. FIG. 15 shows an example of the designated operation information registered in the registration unit 11Z.
[0146] Here, "ID" is information for identifying the type of the designated operation.
[0147] Also, "part" is information for indicating which object part the designated operation is an operation of. In this example, "part" indicates which part of the object part the operation is, regardless of left or right.
[0148] Also, the "specified operation name" is the name of the specified operation corresponding to the "ID". In this example, as the "specified operation name", names such as "weapon holding" and "aiming" are shown, from which the outline of the specified operation can be understood. Thus, there are specified operations that can be used in various situations. On the other hand, the specified operation name with ID "A03" is "recoil expression". The "recoil expression" is a specified operation that expresses the recoil when the character fires a gun held by the character. Thus, there may be specified operations with limited usage situations.
[0149] Also, the "operation content" is the specific content of the movement of the object parts for executing the specified operation. In this example, the "operation content" is information indicating the outline of the specific movement of the object parts. For each specified operation, the rotational angle of the joint part is calculated using IK or FK according to the "operation content". Note that the specified operation "walk" for the part "foot" is an operation with periodicity in which the calculation is performed with the specified trajectory as the target and the part animation is generated.
[0150] Also, the "priority" is information that determines which specified operation to execute when the execution of multiple specified operations for one object part overlaps. In this example, any one of the three types, "overwrite", "IK", and "additive", is associated with the specified operation as the information for determining the priority.
[0151] The specified operation of "overwrite" overwrites the specified operation whose execution period has already started. Specifically, when the execution period of the specified operation with the priority of "overwrite" for one object part starts, the specified operation is preferentially executed. Note that "overwrite" is set for the operation in which the animation is generated by the calculation using FK.
[0152] The specified operation of "IK" takes precedence over the specified operation of "overwrite". Specifically, when the execution period of the specified operation with the priority of "IK" starts for one object part, even if the execution period of "overwrite" has started, the specified operation with "IK" is executed preferentially. Note that "IK" is set for operations in which animation is generated by calculations using IK.
[0153] The specified operation of "additive" performs an addition process on the control state of the posture at that time. Specifically, when the execution of the specified operation of "additive" starts during the execution period of the specified operations of "overwrite" or "IK", it is executed so that the specified operation of "additive" is added based on the state during the execution of the specified operations of "overwrite" or "IK".
[0154] In addition, when the execution periods of multiple specified operations at least partially overlap (conflict), the specified operations (part animations) are evaluated in the order of "overwrite", "IK", "additive", and the processing regarding the above-described priority is executed.
[0155] FIG. 16 is an explanatory diagram for explaining an example of first combination instruction information corresponding to at least one of the embodiments of the present invention. The content of the first combination instruction information (animation clip) is shown in FIG. 16. As shown in FIG. 16, the first combination instruction information is information indicating a combination of a plurality of designated operations, and the designated operation information specifying each designated operation is information of a function for the object to realize the designated operation. Here, for each designated operation, it is possible to specify the execution start timing, the execution time length, the operation progress speed with respect to the execution period length, and the like. Here, the designated operation is executed slowly as the execution period becomes longer, and is executed quickly as the execution period becomes shorter. Designated operations with different target object parts and overlapping execution periods are executed simultaneously. Also, the operation progress speed with respect to the execution period length is the speed of the progress of the execution of the designated operation with respect to the execution period length. In the example shown in FIG. 16, the period from the point in time when the execution of the plurality of designated operations starts first to the point in time when the execution ends last is defined as the execution period of the animation clip. In the example of FIG. 16, the designated operation of turning the body and the head in a predetermined direction is executed by a function called direction(), the designated operation of turning the body in a predetermined direction is executed by a function called aim(), and the designated operation of turning the right arm (armR) in a predetermined direction is executed by a function called aim(). By sequentially executing these by the animation clip, it becomes possible to dynamically generate an animation of a series of operations of "discovering a target object with the head and the body turned in a predetermined direction, and sequentially turning the body and the right arm toward the target object to point the muzzle at the object".
[0156] FIG. 17 is an explanatory diagram for explaining an example of second combination instruction information corresponding to at least one of the embodiments of the present invention. The content of the second combination instruction information (animation sequence) is shown in FIG. 17. As shown in FIG. 17, the second combination instruction information is an instruction obtained by further combining a plurality of first combination instruction informations. Similar to an animation clip, the animation sequence can specify the execution start timing, execution period, etc. of the animation clip. Here, the animation clip is executed slower as the execution period becomes longer, and is executed faster as the execution period becomes shorter. In the example shown in FIG. 17, the period from the point in time when the execution of the plurality of animation clips starts first to the point in time when the execution ends last is defined as the execution period of the animation sequence. In this example, the animation sequences are stored in a queue in a FIFO (First In First Out) manner and sequentially executed. When a predetermined interrupt condition is satisfied, a new animation sequence is added at a location other than the end of the queue. According to the animation sequence, it is possible to dynamically generate an animation for executing a more complex operation by combining animation clips.
[0157] FIG. 18 is an explanatory diagram for explaining an example of "aimIK" for realizing an aim operation corresponding to at least one of the embodiments of the present invention. aimIK is a newly developed method for dynamically realizing a process of orienting a part of an object or a part of an accompanying object of the object toward a target. For example, when it is indispensable for the rotation of the shoulder joint part to realize a process of "orienting the direction of the arm toward the target", in aimIK, first, the information on the aim direction (vector indicating the aim direction) set at the tip of the hand is moved to the shoulder joint part. Next, the target is also moved by the same amount as the moved vector indicating the aim direction to arrange a virtual target. Then, the shoulder joint part is rotated so that the direction of the vector moved to the shoulder joint part faces the virtual target. When the vector direction of the shoulder joint part faces the virtual target by such a procedure, the aim direction of the hand also faces the original target. In the case of a planar space as shown in FIG. 18, the aim is completed by one process. However, in reality, since it is a three-dimensional object in a three-dimensional space and the rotation axes are different for each joint part, there is an actual situation where it cannot be accurately aimed at by one process. Therefore, when actually executing aimIK, the process is repeated for each joint part so that the orientation of a part of the object or a part of the accompanying object of the object gradually faces the aim direction. Such an aim operation by aimIK is to perform posture control to a near posture state based on approximate aim information when the aim direction in the aim information registered in the aim information registration unit 15Z does not exactly match the aim direction specified by the aim command, and from that state, the aim operation until it exactly matches the aim direction specified by the aim command is realized by aimIK, so that a situation where a movement exceeding the limit of the rotation angle of the joint part (the movable range of the joint) occurs is avoided, and it is always possible to realize an aim operation of exactly aligning the orientation with respect to the aim direction specified by the aim command.
[0158] As described above, as one aspect of the fifth embodiment, a server 10Z having a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and operating in a virtual space includes a registration unit 11Z, an acquisition unit 12Z, and a generation unit 13Z. Therefore, the content of the specified operation for the parts (object parts) constituting the object is registered in advance as specified operation information, the specified operation information for specifying the specified operation to be executed on the object parts is acquired, and for each of the object parts that need to operate among the object parts of the object, the rotation angle of the joint portion required for the specified operation of the object part is dynamically calculated according to a predetermined calculation rule, and a part animation for controlling the specified operation of the object part is generated. Based on the part animations of each object part, an animation of the entire object is generated, and it is possible to reduce the burden on developers for generating the animation of the object while sufficiently ensuring the degree of freedom in the design of the object.
[0159] That is, in order to dynamically generate the animation of the object without using animation data (assets) in which the posture of the object and the rotation angle of the joint portion are statically determined, it is not necessary to create static animation data in advance when generating the animation of the object, and it is possible to reduce the burden on developers. For example, an improvement in the development speed of video games can be expected. Also, since no animation data is used, it is possible to avoid being restricted by the data in the design of the object.
[0160]
[0161] Also, in the example of the fifth embodiment described above, based on the state of the bones and / or joint parts of the object in the animation generated by the generation unit 13Z, the occurrence of an abnormality in the animation is determined, and the animation is dynamically generated. Therefore, even when the developer himself / herself cannot confirm in advance the presence or absence of an animation abnormality, it is possible to discover the animation abnormality.
[0162] Also, in the example of the fifth embodiment described above, for a plurality of posture states when each joint part of the object is changed in angle in various ways, the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an accompanying object accompanying the object part, and the aim direction, which is the direction in which the predetermined part or a part of the accompanying object is facing, are associated with each other to register aim information. An aim command for directing a predetermined part of a predetermined object part or a part of an accompanying object accompanying the object part in a specified aim direction is obtained, the aim information necessary for calculation is obtained based on the aim direction specified by the aim command obtained by the aim command acquisition unit 16Z, the specified motion information necessary for executing the aim command is obtained based on the obtained aim information, and the aim command in various directions can be dynamically executed without using static animation data that specifies the posture and the rotation angle of the joint part during the motion execution process.
[0163] As described above, one or two or more deficiencies are solved by each embodiment of the present application. Note that the effects of each embodiment are non-limiting effects or examples of effects.
[0164] Note that in each of the above-described embodiments, the plurality of user terminals 20, 201 to 20N and the server 10 execute the above-described various processes according to various control programs (for example, an animation generation program) stored in a storage device provided by themselves.
[0165] Further, the configuration of the system 100 is not limited to the configurations described as examples of the above-described embodiments. For example, a part or all of the processes described as processes executed by the user terminal may be executed by the server 10, or a part or all of the processes described as processes executed by the server 10 may be executed by any one of the plurality of user terminals 20, 201 to 20N (for example, the user terminal 20). Further, a part or all of the storage unit provided in the server 10 may be provided in any one of the plurality of user terminals 20, 201 to 20N. That is, a part or all of the functions provided in either the user terminal 20 or the server 10 in the system 100 may be configured to be provided in the other.
[0166] Further, the program may be configured to implement a part or all of the functions described as examples of the above-described embodiments in a single device that does not include a communication network.
[0167] [Appendix] [1] An animation generation program for causing a server to realize a function of generating an animation of an object that is an object composed of a combination of parts each having at least one joint portion and operates in a virtual space, in the server, a registration function for registering in advance, as designated operation information, the content of a designated operation for the parts (hereinafter referred to as object parts) constituting the object; an acquisition function for acquiring the designated operation information for specifying the designated operation to be executed on the object parts; a generation function that generates a part animation for controlling the designated operation of the object part by dynamically calculating the rotation angle of the joint part required for the designated operation of the object part according to a predetermined calculation rule for each of the object parts of the object that require operation, and generates an animation of the entire object based on the part animations of the respective object parts Animation generation program for realization. [2] The specified operation information acquired by the acquisition function is specified by first combination instruction information which is an instruction combining the specified operations for a plurality of the object parts. The animation generation program according to [1]. [2-1] The specified operation information acquired by the acquisition function is specified by second combination instruction information which is an instruction further combining a plurality of the first combination instruction information. The animation generation program according to [2]. [3] The registration function assumes that the information to be registered as the specified operation information includes information on a function for the object to realize the specified operation. The generation function dynamically calculates the rotation angle of the joint part required for the specified operation of the object part using the function as the calculation rule. The animation generation program according to [1] or [2]. [4] The calculation rule is a rule that acquires information on the position and / or orientation of at least the object part that requires an operation and information on the surrounding environment of the object part, and performs a calculation for dynamically executing the specified operation based on the acquired information. The animation generation program according to any one of [1] to [3]. [5] In the generation function, when an instruction to start the execution of another specified operation is given while the execution of the specified operation for one object part starts and ends, among the plurality of specified operations with overlapping execution periods, which specified operation to execute is determined based on a predetermined priority order, and the generated part animation is generated by controlling to execute the determined specified operation from the overlapping time point. The animation generation program according to any one of [1] to [4] for realization. [6] When the coordinate of a predetermined part of the object part in the target posture or the direction in which the predetermined part faces is specified by the specified operation, the calculation rule includes at least a rule for calculating the rotation angle of the joint part of the object part for moving the predetermined part to the specified coordinate position or moving it so as to face the specified direction. The animation generation program according to any one of [1] to [5]. [7] When the information on the rotation angle of the joint part of the object part in the target posture is specified by the specified operation, the calculation rule includes at least a rule for calculating the rotation amount of each of the joint parts until the target posture is reached based on the information on the rotation angle of the specified joint part. The animation generation program according to any one of [1] to [6]. [8] A determination function for determining the occurrence of an abnormality in the animation based on the state of the bone and / or the joint part of the object in the animation generated by the generation function is realized in the server by the animation generation program according to any one of [1] to [7]. The animation generation program according to any one of [1] to [7] for realizing. [8-1] In the determination function, when the difference in the rotation angle of the bone and / or the joint part at two time points at a predetermined time interval for the animation generated by the generation function exceeds a predetermined threshold value, it is determined that an abnormality has occurred. The function for realizing this is the animation generation program described in [8]. The animation generation program described in [8] for realizing. [8-2] In the determination function, when the rotation angle of the bone and / or the joint part for the animation generated by the generation function exceeds an angle within a predetermined range, it is determined that an abnormality has occurred in the rotation of the bone. The function for realizing this is the animation generation program described in [8] or [8-1]. The animation generation program described in [8] or [8-1] for realizing. [9] A storage function for causing the server to store, in a predetermined storage means, the specified operation information (including combinations of a plurality of the specified operations) used for generating the animation for the animation of the part animation or the whole object that satisfies a predetermined criterion The animation generation program according to any one of [1] to [8] for realizing
[10] In the server, For a plurality of posture states when each joint part of the object is variously changed in angle, an aim information registration function for registering aim information in which the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an attached object attached to the object part, and the aim direction which is the direction in which the predetermined part or the part of the attached object is facing are associated with each other, An aim command acquisition function for acquiring an aim command for directing the predetermined part or a part of the attached object in a specified aim direction, and realizing In the acquisition function, a function for acquiring the aim information necessary for calculation based on the aim direction specified by the acquired aim command, and acquiring the specified operation information necessary for executing the aim command based on the acquired aim information The animation generation program according to any one of [1] to [9] for realizing
[11] An animation generation program for causing at least one of the functions realized by the server by the animation generation program according to any one of [1] to
[10] to be realized by a user terminal communicable with the server.
[12] An animation generation system including a communication network, a server, and a user terminal, and generating an animation of an object that is composed of a combination of parts each having at least one joint part and operates in a virtual space, Registration means for registering in advance, as designated operation information, the content of a designated operation on the parts (hereinafter referred to as object parts) that make up the object; Acquisition means for acquiring the designated operation information for specifying the designated operation to be executed on the object parts; For each of the object parts that require operation among the object parts of the object, generating part animation that controls the designated operation of the object part by dynamically calculating the rotation angle of the joint part required for the designated operation of the object part according to a predetermined calculation rule, and generating the animation of the entire object based on the part animation of each object part. An animation generation system characterized by the above.
[13] The server includes the registration means, the acquisition means, and the generation means; The user terminal includes output means for outputting, to the display screen of the display device, a screen representing the state of the predetermined object by the display means. The animation generation system according to
[12] .
[14] An animation generation program for realizing, on a user terminal, a function of generating an animation of an object that is composed of a combination of parts each having at least one joint part and that operates in a virtual space, On the user terminal, A registration function for registering in advance, as designated operation information, the content of a designated operation on the parts (hereinafter referred to as object parts) that make up the object; An acquisition function for acquiring the designated operation information for specifying the designated operation to be executed on the object parts; For each of the object parts of the object that require operation, generate part animation that controls the specified operation of the object part by dynamically calculating the rotation angle of the joint required for the specified operation of the object part according to a predetermined calculation rule, and generate the animation of the entire object based on the part animation of each object part. The generation function An animation generation program for realization.
[15] An animation generation method for generating an animation of an object that is composed of a combination of parts each having at least one joint and that performs an operation in a virtual space, A registration process of registering in advance, as specified operation information, the content of the specified operation for the parts (hereinafter referred to as object parts) constituting the object, An acquisition process of acquiring the specified operation information for specifying the specified operation to be executed on the object part, For each of the object parts of the object that require operation, generate part animation that controls the specified operation of the object part by dynamically calculating the rotation angle of the joint required for the specified operation of the object part according to a predetermined calculation rule, and generate the animation of the entire object based on the part animation of each object part. The generation process includes An animation generation method characterized by the above.
[16] An animation generation system including a communication network, a server, and a user terminal, and an animation generation method for generating an animation of an object that is composed of a combination of parts each having at least one joint and that performs an operation in a virtual space, A registration process of registering in advance, as specified operation information, the content of the specified operation for the parts (hereinafter referred to as object parts) constituting the object, An acquisition process for acquiring the designated operation information for specifying the designated operation to be executed on the object part, For each of the object parts of the object that require operation, generating part animation for controlling the designated operation of the object part by dynamically calculating the rotation angle of the joint part required for the designated operation of the object part according to a predetermined calculation rule, and generating the animation of the entire object based on the part animation of each object part. An animation generation method characterized by the above.
Industrial Applicability
[0168] According to one embodiment of the present invention, it is useful for reducing the burden on developers for generating animations of objects while ensuring sufficient freedom in the design of the objects.
Explanation of Signs
[0169] 10 Server 20, 201~20N User Terminal 11 Registration Department 12 Acquisition Department 13 Generation Department 14 Judgment Department 15 Aim Information Registration Department 16 Aim Command Acquisition Department 30 Communication Network 100 Animation Generation System
Claims
1. An animation generation program for realizing on a server a function of generating an animation of an object that operates in a virtual space, the object being composed of a combination of parts each having at least one joint portion, the program comprising: On the server, A registration function for registering in advance, as designated operation information, the content of a designated operation for the parts (hereinafter referred to as object parts) constituting the object; An acquisition function for acquiring the designated operation information for specifying the designated operation to be executed on the object parts; A generation function for generating part animations that control the designated operations of the object parts by dynamically calculating the rotation angles of the joint portions required for the designated operations of the object parts according to a predetermined calculation rule for each of the object parts that require operation among the object parts of the object, and generating an animation of the entire object based on the part animations of the respective object parts; An aim information registration function for registering aim information in which the rotation angle of each joint portion, the position of a predetermined part of a predetermined object part or a part of an attached object attached to the object part, and the aim direction, which is the direction in which the predetermined part or the part of the attached object is facing, are associated with respect to a plurality of posture states when each joint portion of the object is changed in angle in various ways; An aim command acquisition function for acquiring an aim command for directing the predetermined part or the part of the attached object in the designated aim direction, In the acquisition function, the aim information required for calculation is acquired based on the aim direction specified by the acquired aim command, and the designated operation information required for executing the aim command is acquired based on the acquired aim information Animation generation program.
2. The designated operation information acquired by the acquisition function is specified by first combination command information, which is a command combining the designated operations for a plurality of the object parts The animation generation program according to Claim 1.
3. On the server, a determination function for determining the occurrence of an abnormality in the animation based on the state of the bones and / or the joint portions of the object in the animation generated by the generation function The animation generation program according to claim 1 or claim 2 for realization.
4. An animation generation system that includes a communication network, a server, and a user terminal, and generates an animation of an object that is composed of a combination of parts each having at least one joint part and operates in a virtual space, a registration means for registering in advance, as designated operation information, the content of a designated operation for the parts (hereinafter referred to as object parts) that constitute the object; an acquisition means for acquiring the designated operation information for specifying the designated operation to be executed on the object parts; a generation means for generating a part animation that controls the designated operation of each object part by dynamically calculating the rotation angle of the joint part required for the designated operation of the object part according to a predetermined calculation rule for each of the object parts of the object that require operation, and generating an animation of the entire object based on the part animations of each object part; an aim information registration means for registering aim information in which the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an attached object attached to the object part, and the aim direction, which is the direction in which the predetermined part or the part of the attached object is facing, are associated with respect to a plurality of posture states when each joint part of the object is changed in angle variously; and an aim command acquisition means for acquiring an aim command for directing the predetermined part or the part of the attached object in a designated aim direction, wherein the acquisition means acquires the aim information required for calculation based on the aim direction specified by the acquired aim command, and acquires the designated operation information required for executing the aim command based on the acquired aim information Animation generation system.
5. An animation generation program for causing a user terminal to realize a function of generating an animation of an object that is composed of a combination of parts each having at least one joint part and operates in a virtual space, on the user terminal, A registration function that registers in advance, as designated operation information, the content of a designated operation for the parts (hereinafter referred to as object parts) that make up the object; An acquisition function that acquires the designated operation information for specifying the designated operation to be executed on the object parts; A generation function that generates part animation for controlling the designated operation of each object part by dynamically calculating the rotation angle of the joint part required for the designated operation of the object part according to a predetermined calculation rule for each of the object parts of the object that require operation, and generates the animation of the entire object based on the part animation of each object part; An aim information registration function that registers aim information in which the rotation angle of each joint part, the position of a predetermined part of a predetermined object part or a part of an attached object attached to the object part, and the aim direction, which is the direction in which the predetermined part or the part of the attached object is facing, are associated with respect to a plurality of posture states when each joint part of the object is changed in angle in various ways; An aim command acquisition function that acquires an aim command for directing a predetermined part or a part of an attached object in a designated aim direction; In the acquisition function, the aim information required for calculation is acquired based on the aim direction specified by the acquired aim command, and the designated operation information required for executing the aim command is acquired based on the acquired aim information Animation generation program.
Citation Information
Patent Citations
Method and device for generating animation
JP2002175541A
Data conversion device, robot, program and information processing method
JP2017042896A
Game program and game system
JP2018028810A
Game program and game system
JP2018028812A
Client / server-based animation software, systems and methods
US20060109274A1