Animation processing method and apparatus, electronic device, computer-readable storage medium and computer program product

By adding slots on the skeleton of the virtual object and mounting the bones of another virtual object, the problems of high animation production cost and poor effect in the prior art are solved, and diversified mounting postures and more realistic animation effects are achieved.

WO2025112791A1PCT designated stage expired Publication Date: 2025-06-05TENCENT TECHNOLOGY (SHENZHEN) CO LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/118016
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-11-30
Filing Date
2024-09-10
Publication Date
2025-06-05

AI Technical Summary

Technical Problem

When the prior art realizes the animation mount effect between virtual objects, the production cost is high and the animation effect is poor, so it is impossible to effectively realize diversified mount postures.

Method used

By obtaining the animation file of the virtual object, extracting the object skeleton, adding slots to the skeleton of the skeleton, mounting the bones of another virtual object to the slot, controlling the movement of the bones based on the slot, realizing the follow-up movement of the virtual object.

Benefits of technology

It reduces the cost of animation production, improves the authenticity of animation effects, and increases the diversity of mounting postures.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024118016_05062025_PF_FP_ABST
    Figure CN2024118016_05062025_PF_FP_ABST
Patent Text Reader

Abstract

The present application provides an animation processing method and apparatus, an electronic device, a computer-readable storage medium and a computer program product. The method comprises: acquiring a first animation file of a first virtual object and a second animation file of a second virtual object; extracting from the first animation file a first object skeleton of the first virtual object, and extracting from the second animation file a second object skeleton of the second virtual object; adding a bone socket to a first bone of the first object skeleton; mounting a second bone of the second object skeleton to the bone socket; and when a mount animation is played and the mount animation is used for displaying that the second virtual object is mounted on the first virtual object, controlling, on the basis of the bone socket, the second bone to move along with the first bone, wherein, during the process of the second bone moving along with the first bone, the object part of the second virtual object that is rigged to the second bone moves along with the object part of the first virtual object that is rigged to the first bone.
Need to check novelty before this filing date? Find Prior Art

Description

Animation processing method, device, electronic device, computer-readable storage medium, and computer program product

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is based on the Chinese patent application with application number 2023116385056 and application date of November 30, 2023, and claims the priority of the Chinese patent application. The entire content of the Chinese patent application is hereby introduced into this application as a reference. Technical Field

[0003] The present application relates to the field of computer technology, and in particular to an animation processing method, device, electronic device, computer-readable storage medium, and computer program product. Background Art

[0004] In animations and virtual scenes (such as games), there is often a virtual object (i.e., the mounted object) mounted on another virtual object (i.e., the carrier object) to achieve an animation effect in which the two virtual objects move together, such as one virtual object riding on another virtual object. In related technologies, (1) different animation assets and animation logic are produced for the carrier object and the mounted object respectively. Although this can achieve a variety of different mounting postures, the production cost is very high; (2) only one set of animation assets and animation logic is produced for the carrier object and the mounted object, but this makes the mounting postures highly uniform and the animation effect is very poor.

[0005] Summary of the Invention

[0006] Embodiments of the present application provide an animation processing method, device, electronic device, computer-readable storage medium, and computer program product, which can improve animation effects and reduce animation production costs.

[0007] The technical solution of the embodiment of the present application is implemented as follows:

[0008] The present application provides an animation processing method, which is applied to an electronic device and includes:

[0009] Obtain a first animation file of the first virtual object and a second animation file of the second virtual object;

[0010] extracting a first object skeleton of the first virtual object from the first animation file, and extracting a second object skeleton of the second virtual object from the second animation file;

[0011] adding a bone socket to a first bone of the first object skeleton;

[0012] Mounting the second bone of the second object skeleton to the bone slot;

[0013] When the mounting animation is played and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, based on the bone slot, the second bone is controlled to follow the movement of the first bone, wherein, in the process of the second bone following the movement of the first bone, the object part of the second virtual object that is bound to the second bone follows the object part of the first virtual object that is bound to the first bone.

[0014] The present application also provides an animation processing device, including:

[0015] An acquisition module configured to acquire a first animation file of a first virtual object and a second animation file of a second virtual object;

[0016] an extraction module configured to extract a first object skeleton of the first virtual object from the first animation file, and to extract a second object skeleton of the second virtual object from the second animation file;

[0017] an adding module configured to add a bone slot on a first bone of the first object skeleton;

[0018] a mounting module configured to mount the second bone of the second object skeleton to the bone slot;

[0019] The playback module is configured to control the second bone to follow the movement of the first bone based on the bone slot when playing the mounting animation and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, wherein, in the process of the second bone following the movement of the first bone, the object part of the second virtual object bound to the second bone follows the object part of the first virtual object bound to the first bone.

[0020] An embodiment of the present application further provides an electronic device, including:

[0021] a memory configured to store computer-executable instructions;

[0022] The processor is configured to implement the animation processing method provided in the embodiment of the present application when executing the computer executable instructions stored in the memory.

[0023] An embodiment of the present application further provides a computer-readable storage medium storing computer-executable instructions or a computer program. When the computer-executable instructions or the computer program are executed by a processor, the animation processing method provided in the embodiment of the present application is implemented.

[0024] An embodiment of the present application further provides a computer program product, comprising computer executable instructions or a computer program, which, when executed by a processor, implements the animation processing method provided in the embodiment of the present application.

[0025] The embodiments of the present application have the following beneficial effects:

[0026] By applying the above-mentioned embodiment of the present application, the first animation file of the first virtual object and the second animation file of the second virtual object are first obtained; then, the first object skeleton of the first virtual object is extracted from the first animation file, and the second object skeleton of the second virtual object is extracted from the second animation file; then, a bone slot is added to the first bone of the first object skeleton, and the second bone of the second object skeleton is mounted to the bone slot; in this way, when the mounting animation for showing the second virtual object mounted on the first virtual object is played, the second bone is controlled to move with the first bone based on the bone slot, so that the object part of the second virtual object bound to the second bone moves following the object part of the first virtual object bound to the first bone.

[0027] Here, (1) the second skeleton of the second virtual object is based on the skeleton slot and can follow the movement of the first skeleton of the first virtual object, so that the object part of the second virtual object bound to the second skeleton follows the movement of the object part of the first virtual object bound to the first skeleton. In this way, the animation effect of the second virtual object being mounted on the first virtual object for common movement can be improved, and the animation effect of the second virtual object being mounted on the first virtual object for common movement can be made more realistic; (2) since the second virtual object is mounted on the first virtual object for following movement is achieved through the added skeleton slot, it is only necessary to adjust the addition position (first skeleton) or mounting position (second skeleton) of the skeleton slot to achieve mounting in different postures through the skeleton slot, thereby increasing the diversity of mounting postures and eliminating the need to create animation assets and animation logic for different mounting postures for each virtual object, thereby reducing the cost of animation production and improving the efficiency of animation production. BRIEF DESCRIPTION OF THE DRAWINGS

[0028] FIG1 is a schematic diagram of the architecture of an animation processing system provided in an embodiment of the present application;

[0029] FIG2 is a schematic structural diagram of an electronic device provided in an embodiment of the present application;

[0030] FIG3 is a schematic diagram of a first flow chart of an animation processing method provided in an embodiment of the present application;

[0031] FIG4A is a first display diagram of a mounting animation provided by an embodiment of the present application;

[0032] FIG4B is a second display diagram of the mounting animation provided in an embodiment of the present application;

[0033] FIG4C is a third display diagram of the mounting animation provided in an embodiment of the present application;

[0034] FIG5 is a schematic diagram of a second flow chart of the animation processing method provided in an embodiment of the present application;

[0035] FIG6 is a schematic diagram of a second object skeleton of a second virtual object provided in an embodiment of the present application;

[0036] FIG7A is a schematic diagram of a first creation process of a mounting animation blueprint provided in an embodiment of the present application;

[0037] FIG7B is a schematic diagram of a second creation process of a mounting animation blueprint provided in an embodiment of the present application;

[0038] FIG8A is a schematic diagram of a first creation process of a second animation blueprint provided in an embodiment of the present application;

[0039] FIG8B is a schematic diagram of a second creation process of a second animation blueprint provided in an embodiment of the present application;

[0040] FIG8C is a schematic diagram of a third creation process of a second animation blueprint provided in an embodiment of the present application;

[0041] FIG8D is a schematic diagram of a fourth creation process of a second animation blueprint provided in an embodiment of the present application;

[0042] FIG8E is a schematic diagram of the fifth creation process of the second animation blueprint provided in an embodiment of the present application;

[0043] FIG8F is a schematic diagram of the sixth creation process of the second animation blueprint provided in an embodiment of the present application;

[0044] FIG8G is a schematic diagram of the seventh creation process of the second animation blueprint provided in an embodiment of the present application;

[0045] FIG9A is a schematic diagram of a first logic editing process of a second animation blueprint provided in an embodiment of the present application;

[0046] FIG9B is a schematic diagram of a second logic editing process of a second animation blueprint provided in an embodiment of the present application;

[0047] FIG9C is a schematic diagram of a third logic editing process of the second animation blueprint provided in an embodiment of the present application;

[0048] FIG9D is a schematic diagram of a fourth logic editing process of the second animation blueprint provided in an embodiment of the present application;

[0049] FIG9E is a schematic diagram of the fifth logic editing process of the second animation blueprint provided in an embodiment of the present application;

[0050] FIG10A is a schematic diagram of a first creation process of a first animation blueprint provided in an embodiment of the present application;

[0051] FIG10B is a schematic diagram of a second creation process of the first animation blueprint provided in an embodiment of the present application;

[0052] FIG10C is a schematic diagram of a third creation process of the first animation blueprint provided in an embodiment of the present application;

[0053] FIG10D is a schematic diagram of a fourth creation process of the first animation blueprint provided in an embodiment of the present application;

[0054] FIG11A is a schematic diagram of a first creation process of a mounting animation blueprint provided in an embodiment of the present application;

[0055] FIG11B is a schematic diagram of a second creation process of a mounting animation blueprint provided in an embodiment of the present application;

[0056] FIG11C is a schematic diagram of the third creation process of the mounting animation blueprint provided in an embodiment of the present application.

[0057] It should be noted that the above-mentioned "first" and "second" are only used to distinguish different solutions, and do not represent the degree of distinction between the advantages and disadvantages of the solutions or the priority in the implementation process. DETAILED DESCRIPTION

[0058] In order to make the purpose, technical solutions and advantages of this application clearer, the application will be further described in detail below with reference to the accompanying drawings. The described embodiments should not be regarded as limiting this application. All other embodiments obtained by ordinary technicians in this field without making creative work are within the scope of protection of this application.

[0059] In the following description, reference is made to “some embodiments”, which describes a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.

[0060] In the following description, the terms "first\second\third" involved are merely used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged with a specific order or sequence where permitted, so that the embodiments of the present application described herein can be implemented in an order other than that illustrated or described herein.

[0061] In the embodiments of the present application, the term "module" or "unit" refers to a computer program or a part of a computer program that has a predetermined function and works together with other related parts to achieve a predetermined goal, and can be implemented in whole or in part by using software, hardware (such as processing circuits or memories) or a combination thereof. Similarly, a processor (or multiple processors or memories) can be used to implement one or more modules or units. In addition, each module or unit can be part of an overall module or unit that includes the function of the module or unit.

[0062] Unless otherwise defined, all technical and scientific terms used in the embodiments of the present application have the same meanings as those commonly understood by those skilled in the art. The terms used in the embodiments of the present application are only for the purpose of describing the embodiments of the present application and are not intended to limit the present application.

[0063] Before further describing the embodiments of the present application in detail, the nouns and terms involved in the embodiments of the present application are explained. The nouns and terms involved in the embodiments of the present application are subject to the following interpretations.

[0064] 1) Client: An application running in a terminal that provides various services, such as a client that supports animation processing.

[0065] 2) In response to: used to indicate the conditions or states on which the executed operations depend. When the dependent conditions or states are met, one or more operations executed can be in real time or with a set delay. Unless otherwise specified, there is no restriction on the order in which the multiple operations executed are executed.

[0066] 3) Riding: refers to the mounted object enhancing its own mobility by riding on a carrier object such as a vehicle or an animal.

[0067] 4) Digital Content Creation (DCC) Software: This refers to a class of software used to create animated characters, including 3D Studio Max, Maya, Blender, Houdini, etc. 3D Studio Max (abbreviated as 3d Max or 3ds MAX) is computer-based 3D animation rendering and production software.

[0068] 5) Skeleton: Contains bones and joints. A skeleton is a coordinate space, and a skeleton hierarchy is a nested coordinate space. A joint describes the position of a bone (i.e., the origin of the bone in the skeleton coordinate space) within its parent space. Rotation around a joint refers to the rotation of the skeleton coordinate space (including all subspaces) itself.

[0069] 6) Skeletal animation: Each animated character contains at least two main data types: skeleton and model. In the process of game / film animation production, the process of driving the model (changing the appearance of the character model) by the posture of the skeleton is called skeletal animation.

[0070] 7) Skinning: refers to attaching (binding) the vertices in the model (Mesh) to the bones, and each vertex can be controlled by multiple bones, so that the vertices at the joints change position due to the simultaneous pulling of the parent and child bones, thus eliminating cracks.

[0071] 8) Blueprint: It is a special type of resource in Unreal Engine (UE) that provides an intuitive, node-based interface for creating new types of Actors and level script events; it provides level designers and game developers with a tool to quickly create and iterate game playability in the Unreal Editor without writing a single line of code.

[0072] 9) Animation Blueprints: Perform animation blending, directly control the bones of a skeleton, or set up logic that will ultimately define the final animation pose of the skeletal mesh to be used for each frame of animation.

[0073] 10) Sockets (also known as bone sockets): This is the name given in Unreal Engine. They are similar in effect to bones and can be added to a skeletal mesh to serve as locators for attachment points for virtual props, effects, etc.

[0074] 11) ControlRig: Unreal Engine provides an animation tool that allows users to rig and animate characters directly within the Unreal Engine. This is called a "Control Rig." Using the Control Rig allows you to animate directly within the Unreal Editor, bypassing the need for external tools to rig and animate characters.

[0075] 12) Full Body Inverse Kinematics (FBIK): Use Control Rig's FBIK feature to build rigs with a high degree of control and flexibility within Control Rig. This full-body solver approach builds on the position-based IK framework, which enables faster rig performance, per-bone setup, preferred angles, squash and stretch, and more. FBIK is designed to act as a procedural adjustment tool within Control Rig, such as ground alignment or arm extension behaviors.

[0076] Based on the above description of the nouns and terms involved in the embodiments of the present application, the embodiments of the present application are described in detail below. The embodiments of the present application provide an animation processing method, device, electronic device, computer-readable storage medium and computer program product, which can improve animation effects and reduce animation production costs.

[0077] It should be noted that the collection and processing of relevant data in this application should be strictly in accordance with the requirements of relevant laws and regulations when applied in practice, and the informed consent or separate consent of the personal information subject should be obtained. Subsequent data use and processing should be carried out within the scope of authorization of laws and regulations and the personal information subject.

[0078] The following describes the animation processing system provided by an embodiment of the present application. Referring to FIG1 , FIG1 is a schematic diagram of the architecture of the animation processing system provided by an embodiment of the present application. To support an exemplary application, the animation processing system 100 includes: a server 200, a network 300, and a terminal 400. The terminal 400 is connected to the server 200 via the network 300. The network 300 can be a wide area network or a local area network, or a combination of the two, using wireless or wired links to achieve data transmission.

[0079] Here, the terminal 400 (for example, running a client supporting animation processing) sends an animation acquisition request to the server 200 in response to the animation processing instruction, and the animation acquisition request indicates obtaining the first animation file of the first virtual object and the second animation file of the second virtual object; the server 200 receives the animation acquisition request sent by the terminal 400; in response to the animation acquisition request, returns the first animation file of the first virtual object and the second animation file of the second virtual object to the terminal 400; the terminal 400 receives the first animation file of the first virtual object and the second animation file of the second virtual object returned by the server 200; extracts the first object skeleton of the first virtual object from the first animation file, and extracts the second object skeleton of the second virtual object from the second animation file; adds a bone slot to the first bone of the first object skeleton; mounts the second bone of the second object skeleton to the bone slot; when the mounting animation is played and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, based on the bone slot, controls the second bone to follow the movement of the first bone, and in the process of the second bone following the movement of the first bone, the object part of the second virtual object bound to the second bone follows the object part of the first virtual object bound to the first bone to move. In this way, the animation effect of the second virtual object being mounted on the first virtual object to move together can be improved, making the animation effect of the second virtual object being mounted on the first virtual object to move together more realistic.

[0080] In some embodiments, the animation processing method provided by the embodiments of the present application is implemented by an electronic device. For example, it can be implemented by a terminal alone, by a server alone, or by a terminal and a server in collaboration. The embodiments of the present application can be applied to various scenarios, including but not limited to cloud technology, artificial intelligence, smart transportation, assisted driving, video, instant messaging, games, metaverse, etc.

[0081] In some embodiments, the electronic device for implementing the animation processing method provided in the embodiments of the present application may be various types of terminals or servers. Among them, the server (such as server 200) may be an independent physical server, or a server cluster or distributed system composed of multiple physical servers, or a cloud server that provides cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communications, middleware services, domain name services, security services, content delivery networks (CDN), and basic cloud computing services such as big data and artificial intelligence platforms. The terminal (such as terminal 400) may be a laptop, tablet computer, desktop computer, smart phone, intelligent voice interaction device (such as smart speaker), smart home appliance (such as smart TV), smart watch, car terminal, wearable device, virtual reality (VR) device, aircraft, etc., but is not limited to this. The terminal and the server may be directly or indirectly connected by wired or wireless communication, and the embodiments of the present application do not limit this.

[0082] In some embodiments, the terminal or server can implement the animation processing method provided by the embodiment of the present application by running various computer executable instructions or computer programs. For example, computer executable instructions can be commands, machine instructions or software instructions at the microprogram level. The computer program can be a native program or software module in the operating system; it can be a local (Native) application (Application, APP), that is, a program that needs to be installed in the operating system to run; it can also be a small program that can be embedded in any APP, that is, a program that can be run only by downloading it to a browser environment. In short, the above-mentioned computer executable instructions can be instructions in any form, and the above-mentioned computer program can be an application, module or plug-in in any form.

[0083] The following describes an electronic device for implementing the animation processing method provided by an embodiment of the present application. Referring to Figure 2, Figure 2 is a schematic diagram of the structure of the electronic device provided by an embodiment of the present application. The electronic device 500 provided by an embodiment of the present application can be a terminal or a server. As shown in Figure 2, the electronic device 500 includes: at least one processor 510, a memory 550, at least one network interface 520 and a user interface 530. The various components in the electronic device 500 are coupled together through a bus system 540. It can be understood that the bus system 540 is used to achieve connection and communication between these components. In addition to the data bus, the bus system 540 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as bus system 540 in Figure 2.

[0084] In some embodiments, the animation processing device provided in the embodiments of the present application can be implemented in software. Figure 2 shows an animation processing device 555 stored in the memory 550, which can be software in the form of programs and plug-ins, including the following software modules: acquisition module 5551, extraction module 5552, addition module 5553, mounting module 5554 and playback module 5555. These modules are logical, so they can be arbitrarily combined or further split according to the functions implemented. The functions of each module will be explained below.

[0085] The following describes the animation processing method provided by the embodiment of the present application. As mentioned above, the animation processing method provided by the embodiment of the present application is implemented by an electronic device, for example, it can be implemented by a server or a terminal alone, or by a server and a terminal in collaboration. Therefore, the execution entity of each step will not be repeated below. Referring to Figure 3, Figure 3 is a flow chart of the animation processing method provided by the embodiment of the present application. The animation processing method provided by the embodiment of the present application includes:

[0086] Step 101: Obtain a first animation file of a first virtual object and a second animation file of a second virtual object.

[0087] In step 101, the user can trigger an animation processing instruction on the electronic device, and the electronic device responds to the animation processing instruction to obtain the first animation file of the first virtual object and the second animation file of the second virtual object. The first animation file and the second animation file can be artificially produced in advance (for example, produced in an application that supports animation file production), or they can be automatically generated based on artificial intelligence. When needed, the first animation file and the second animation file can be imported into a client that supports animation processing. The first virtual object and the second virtual object can be virtual objects automatically generated based on artificial intelligence (such as virtual characters, virtual animals, etc.), or they can be virtual objects designed and produced by the user. The first virtual object and the second virtual object can be virtual objects in animation videos (such as film and television animation, cartoons, etc.), or they can be virtual objects in virtual scenes (such as game scenes). The first virtual object and the second virtual object can be the same or different.

[0088] In some embodiments, the first animation file of the first virtual object and the second animation file of the second virtual object can be obtained by executing the following steps: obtaining the first standby animation file and the motion animation file of the first virtual object, and using the first standby animation file and the motion animation file as the first animation file; obtaining the second standby animation file of the second virtual object, and using the second standby animation file as the second animation file; wherein the second virtual object in the second standby animation file is a target posture, and the target posture is the posture adopted when the second virtual object is mounted on the first virtual object.

[0089] Here, the first animation file of the first virtual object includes a first standby animation file and a motion animation file of the first virtual object. The first standby animation file is a pre-created animation file of the first virtual object in a specific posture (e.g., standing still). The first standby animation file includes at least one animation frame (at least one animation frame constitutes a first standby animation sequence). The motion animation file is a pre-created animation file that depicts the first virtual object in motion (e.g., running, flying, jumping, crawling, etc.). The motion animation file includes multiple animation frames (at least one animation frame constitutes a motion animation sequence). The second animation file of the second virtual object is a second standby animation file of the second virtual object. The second standby animation file is a pre-created animation file of the second virtual object in a target posture. The second standby animation file includes at least one animation frame (at least one animation frame constitutes a second standby animation sequence). The target posture can be the posture adopted by the second virtual object when mounted on the first virtual object, such as the posture of the second virtual object riding on the first virtual object or the posture of the second virtual object lying on the first virtual object, thereby facilitating the mounting of the second virtual object on the first virtual object in the target posture. In this way, by pre-producing the first standby animation file and the motion animation file of the first virtual object, and the second standby animation file of the second virtual object, subsequent mounting animations that support multiple different mounting postures can be realized. There is no need to produce different animation assets and animation logic for the first virtual object and the second virtual object respectively for different mounting postures, which reduces the implementation cost of the mounting animation and improves the production efficiency of the mounting animation.

[0090] It should be noted that the mounting animation is used to show the process of the second virtual object being mounted on the first virtual object to achieve common movement. That is to say, in the mounting animation, the second virtual object can be mounted on the first virtual object in a target posture, and when the first virtual object moves, the second virtual object follows the movement of the first virtual object. The bone slot added by the embodiment of the present application will cause the second bone of the second virtual object to follow the movement of the first bone of the first virtual object, so that the object part of the second virtual object that is bound to the second bone follows the object part of the first virtual object that is bound to the first bone to move. In this way, the animation effect of the second virtual object being mounted on the first virtual object to move together can be improved, and the animation effect of the second virtual object being mounted on the first virtual object to move together can be made more realistic.

[0091] Step 102: extracting a first object skeleton of a first virtual object from a first animation file, and extracting a second object skeleton of a second virtual object from a second animation file.

[0092] In step 102, after obtaining the first animation file and the second animation file, the first animation file and the second animation file are parsed respectively, thereby extracting a first object skeleton of the first virtual object from the first animation file, and extracting a second object skeleton of the second virtual object from the second animation file. Here, the first object skeleton includes multiple bones and bone joints between any two bones, and the second object skeleton also includes multiple bones and bone joints between any two bones.

[0093] In some embodiments, the first animation file includes, in addition to the first object skeleton, an animation sequence for the first virtual object (specifically, the aforementioned first standby animation sequence and motion animation sequence), and a skeletal mesh (which can also be understood as the three-dimensional object model of the first virtual object). Similarly, the second animation file includes, in addition to the second object skeleton, an animation sequence for the second virtual object (specifically, the aforementioned second standby animation sequence), and a skeletal mesh (which can also be understood as the three-dimensional object model of the second virtual object).

[0094] Step 103: Add a bone socket to the first bone of the first object skeleton.

[0095] In step 103, for the first object skeleton of the extracted first virtual object, the first bone to which the bone slot is to be added is determined from the first object skeleton. Here, the first bone can be any bone in the first object skeleton that is pre-set according to the animation requirements of the mounting animation (such as the requirements of the mounting posture), for example, it can be the pelvic bone, shoulder bone, etc. of the first object skeleton. After determining the first bone to which the bone slot is to be added, a bone slot is added to the first bone. The bone slot is used to mount the second bone of the second object skeleton of the second virtual object. The second bone can also be any bone in the second object skeleton that is pre-set according to the animation requirements of the mounting animation (such as the requirements of the mounting posture), for example, it can be the thigh bone, shoulder bone, limb bone, etc. of the second object skeleton. It can be understood that the first bone can be one or more; the second bone can also be one or more. The bone slot is used to set the mounting position of the second virtual object relative to the first virtual object, and the second bone for constraining the second virtual object; the bone slot can be one or more; each first bone can add one or more bone slots; each bone slot can be used to mount one or more second bones; the bone slot may include a first bone slot indicating the direct mounting position of the second virtual object relative to the first virtual object, and a second bone slot indicating the direct mounting position of the second virtual object relative to the first virtual object.

[0096] In some embodiments, a bone slot can be added to the first bone of the first object skeleton by performing the following steps: adding a first bone slot to the first sub-bone of the first object skeleton, the first bone slot indicating the direct mounting position of the second virtual object relative to the first virtual object; adding a second bone slot to the second sub-bone of the first object skeleton, the second bone slot indicating the indirect mounting position of the second virtual object relative to the first virtual object, and the second bone slot being used to constrain the movement of the target bone in the second skeleton; wherein the first bone includes a first sub-bone and a second sub-bone, and the bone slot includes a first bone slot and a second bone slot.

[0097] Here, first, a first bone slot is added to the first sub-bone of the first object skeleton. The first bone slot actually indicates the direct mounting position of the second virtual object relative to the first virtual object, that is, the second virtual object is mounted on the first virtual object through the first bone slot, and the first bone slot is the direct contact position between the second virtual object and the second virtual object. It can be understood that if the first sub-bones corresponding to the first bone slot are different, then the position where the second virtual object is mounted on the first virtual object will be different. Continuing, a second bone slot is added to the second sub-bone of the first object skeleton. The second bone slot actually indicates the indirect mounting position of the second virtual object relative to the first virtual object, that is, the second virtual object is not in direct contact with the first virtual object at the position of the second bone slot; however, the second sub-bone of the first virtual object can constrain the movement of the target bone in the second virtual object through the second bone slot, so that the target bone of the second virtual object moves following the second sub-bone of the first virtual object.

[0098] In this way, the second virtual object can be mounted on the first virtual object through the first bone slot, and the skeleton of the second virtual object directly mounted on the first bone slot can follow the movement of the first sub-skeleton; the skeleton of the second virtual object that is not in direct contact with the first virtual object can also follow the movement of the skeleton of the first virtual object through the second bone slot; in this way, the first virtual object and the second virtual object can interact in both direct contact positions and indirect contact positions (for example, direct contact position "pelvic bone position", indirect contact position "limbs and head"), making the animation effect of the mounting animation more realistic; and further increasing the diversity of mounting postures, so that the second virtual object can be mounted on the first virtual object through more mounting postures, thereby improving the animation effect of the mounting animation.

[0099] Step 104: Mount the second bone of the second object skeleton to the bone socket.

[0100] In step 104, after adding a bone slot to the first bone of the first object skeleton, the second bone of the second object skeleton can be mounted on the bone slot, so that the second virtual object is mounted on the first virtual object. The second bone can be any bone in the second object skeleton that is pre-set according to the animation requirements of the mounting animation (such as the requirements of the mounting posture), for example, it can be the head bone, hip bone, limb bone, etc. of the second object skeleton. The mounting animation of the second virtual object mounted on the first virtual object is used to show that: the second virtual object is mounted on the first virtual object, and when the first virtual object moves, the second virtual object follows the movement of the first virtual object. It can be understood that, through the bone slot, the second bone of the second virtual object is controlled to follow the movement of the first bone of the first virtual object, so that the object part of the second virtual object that is bound to the second bone follows the object part of the first virtual object that is bound to the first bone.

[0101] In some embodiments, before mounting the second bone of the second object skeleton to the bone slot, the following steps are further performed: creating a mounting animation blueprint for the mounting animation, creating a first animation blueprint for the first virtual object, and creating a second animation blueprint for the second virtual object; adding a first skeletal mesh and a second skeletal mesh to the mounting animation blueprint, the first skeletal mesh and the second skeletal mesh having a hierarchical relationship, and the first skeletal mesh being the parent of the second skeletal mesh; obtaining a first object model of the first virtual object, and placing the first object model and the first animation blueprint on the first skeletal mesh to obtain a third skeletal mesh including the first object skeleton; obtaining a second object model of the second virtual object, and placing the second object model and the second animation blueprint on the second skeletal mesh to obtain a fourth skeletal mesh including the second object skeleton.

[0102] Here, first, a mounting animation blueprint for the mounting animation, a first animation blueprint for the first virtual object, and a second animation blueprint for the second virtual object are created. For example, the mounting animation blueprint, the first animation blueprint, and the second animation blueprint can be created within an application that supports animation production. The mounting animation blueprint is used to play the mounting animation, the first animation blueprint is used to play the animation of the first virtual object, and the second animation blueprint is used to play the animation of the second virtual object. The second virtual object is constrained by the bone slot of the first virtual object, allowing the second virtual object to interact with the first virtual object.

[0103] Second, add a first skeletal mesh corresponding to the first virtual object and a second skeletal mesh corresponding to the second virtual object to the mounting animation blueprint; the first skeletal mesh is used to display the first virtual object, and the second skeletal mesh is used to display the second virtual object. The first skeletal mesh and the second skeletal mesh have a hierarchical relationship, with the first skeletal mesh being the parent of the second skeletal mesh and the second skeletal mesh being the child of the first skeletal mesh. This ensures that the second virtual object in the second skeletal mesh is mounted on the first virtual object in the first skeletal mesh, and that the second virtual object in the second skeletal mesh is constrained by the bone slot of the first virtual object in the first skeletal mesh, thereby achieving the purpose of mounting animation.

[0104] Third, obtain a first object model of the first virtual object and a second object model of the second virtual object. The first object model can be a three-dimensional object model of the first virtual object, obtained by skinning the first object's skeleton; the second object model can be a three-dimensional object model of the second virtual object, obtained by skinning the second object's skeleton. Fourth, place the first object model and the first animation blueprint in a first skeletal mesh to enable display of the first virtual object in the mount animation blueprint, thereby obtaining a third skeletal mesh used to display the first virtual object in the mount animation blueprint. Furthermore, place the second object model and the second animation blueprint in a second skeletal mesh to enable display of the second virtual object in the mount animation blueprint, thereby obtaining a fourth skeletal mesh used to display the second virtual object in the mount animation blueprint. This ensures that the second virtual object is mounted on the first virtual object and is constrained by the first virtual object's skeletal slot, thereby achieving the mount animation. Furthermore, the first and second virtual objects are added and displayed in the mount animation blueprint, thereby enabling playback of the mount animation.

[0105] In some embodiments, the third skeletal mesh includes a first object skeleton, and the fourth skeletal mesh includes a second object skeleton; thus, the second bone of the second object skeleton can be mounted to the bone socket by performing the following steps: creating a blueprint node in the mounting animation blueprint, the blueprint node including a socket pin, a first pin indicating a mounting object, and a second pin indicating a mounted object; controlling the third skeletal mesh to connect to the first pin, controlling the fourth skeletal mesh to connect to the second pin, and controlling the socket pin to indicate the bone socket, based on which, the second bone of the second object skeleton is mounted to the bone socket.

[0106] Here, since the first object model is obtained by skinning the first object skeleton, the third skeletal mesh includes the first object skeleton; similarly, since the second object model is obtained by skinning the second object skeleton, the fourth skeletal mesh includes the second object skeleton. Based on this, after obtaining the third and fourth skeletal meshes, a blueprint node can be created in the mount animation blueprint. Here, the created blueprint node includes a socket pin, a first pin indicating the mounting object (i.e., the carrier), and a second pin indicating the mounted object. In this way, the third skeletal mesh (corresponding to the first virtual object) can be controlled to connect to the first pin, the fourth skeletal mesh (corresponding to the second virtual object) can be controlled to connect to the second pin, and the socket pin can be controlled to indicate the bone socket (for example, the socket pin can be associated with the socket name of the bone socket) to mount the second bone of the second object skeleton to the bone socket. In this way, the second bone is mounted to the bone socket in the mount animation blueprint, thereby implementing the mounting animation in the mount animation blueprint.

[0107] In some embodiments, an animation run control node can also be created in the mount animation blueprint, and then the animation run control node can be controlled to connect to the blueprint node. This ensures that when the mount animation blueprint is run through the animation run control node, the second virtual object is mounted on the bone slot of the first virtual object, thereby controlling the second bone to follow the movement of the first bone based on the bone slot, so that the object portion of the second virtual object bound to the second bone follows the object portion of the first virtual object bound to the first bone. In this way, the playback of the mount animation can be controlled through the animation run control node, which facilitates operation and improves interaction efficiency.

[0108] In some embodiments, the first virtual object can have a variety of motion postures, such as walking on land, running, swimming, floating, flying, surfing, etc. Therefore, for different motion postures of the first virtual object, different mounting postures can be used to mount the second virtual object on the first virtual object. Specifically, the motion posture of the first virtual object can be first obtained; then, a mounting posture of the second virtual object that is compatible with the motion posture can be determined; and then, based on the motion posture and the mounting posture, a first bone in the first object skeleton to be added to the bone slot and a second bone in the second object skeleton to be mounted to the bone slot are determined.

[0109] Here, for different motion postures, a mounting posture that matches the same can be set, that is, a matching relationship between the motion posture and the mounting posture is set, and different motion postures are matched with different mounting postures. After obtaining the motion posture of the first virtual object, a mounting posture that matches the motion posture can be determined based on the set matching relationship, and the mounting posture is the mounting posture of the second virtual object. For the different motion postures of the first virtual object and the different mounting postures of the second virtual object, the first skeleton and the second skeleton determined can be different. Therefore, when the second virtual object is mounted on the first virtual object, the mounting posture and the skeleton constraint method based on the skeleton slot can also be different. Based on this, by adding a skeleton slot to the first skeleton determined based on the motion posture and the mounting posture that matches the motion posture, and mounting the second skeleton determined based on the motion posture and the mounting posture that matches the motion posture to the skeleton slot, the second virtual object can adopt a mounting posture that matches the motion posture and be mounted on the first virtual object. In this way, the diversity of the mounting postures of the mounting animation can be increased, making the mounting posture more suitable for the motion posture of the first virtual object and the animation effect more realistic.

[0110] For example, in a virtual scene (such as a game scene), if different mounting postures are used to mount the second virtual object on the first virtual object for different motion postures of the first virtual object, then the first virtual object will also switch the corresponding mounting posture according to the change of the motion posture of the first virtual object during the switching of the motion posture in the virtual scene. For example, if the first virtual object switches from a first motion posture (such as running) to a second motion posture (such as swimming), then the second virtual object can be mounted on the mounting posture of the first virtual object, and switched from the first mounting posture (such as riding) to the second mounting posture (such as lying down). Among them, the first mounting posture is adapted to the first motion posture, and the first bone added to the bone slot and the second bone mounted on the bone slot are both determined based on the first motion posture; the second mounting posture is adapted to the second motion posture, and the first bone added to the bone slot and the second bone mounted on the bone slot are both determined based on the second motion posture. In this way, the animation effect in the virtual scene and the sense of experience of the virtual scene can be improved.

[0111] Step 105: When the mounting animation is played and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, the second bone is controlled to move along with the first bone based on the bone slot.

[0112] In the process of the second skeleton following the movement of the first skeleton, the object part of the second virtual object bound to the second skeleton follows the movement of the object part of the first virtual object bound to the first skeleton.

[0113] In step 105, when playing the mounting animation for showing that the second virtual object is mounted on the first virtual object, the second skeleton of the second virtual object can be controlled to follow the first skeleton of the first virtual object based on the skeleton slot, so that the object part bound to the second skeleton in the second virtual object follows the object part bound to the first skeleton in the first virtual object to move. It should be noted that the object part is obtained by skinning the model vertices of the skeleton corresponding to the object part to the skeleton of the object part. Specifically, when the first skeleton includes a first sub-skeleton and a second sub-skeleton, and the first sub-skeleton is added with a first skeleton slot and the second sub-skeleton is added with a second skeleton slot, the first skeleton slot can be used to control the second virtual object to be mounted on the first virtual object, and the skeleton of the second virtual object directly mounted with the first skeleton slot follows the first sub-skeleton to move; the second skeleton slot can be used to control the skeleton of the second virtual object that is not in direct contact with the first virtual object to also follow the skeleton of the first virtual object to move. In this way, the first virtual object and the second virtual object can interact in both direct contact positions and indirect contact positions (for example, direct contact position "pelvic bone position", indirect contact position "limbs and head"), making the animation effect of the mounting animation more realistic and improving the animation effect of the mounting animation.

[0114] In this way, the bone slot is added to the first bone of the first object skeleton, and the second bone of the second object skeleton is mounted on the bone slot. It can be understood that the first bone can be any bone of the first object skeleton, and the second bone can be any bone of the second object skeleton. Therefore, it is only necessary to adjust the adding position or mounting position of the bone slot (that is, which first bone of the first object skeleton to add it to, and which second bone of the second object skeleton to use for mounting) to achieve mounting of different postures through the bone slot, without the need to create animation assets and animation logic for different mounting postures, thereby reducing the cost of animation production.

[0115] In some embodiments, when playing a mount animation through an application that supports animation production, a play instruction for the mount animation can be triggered by triggering a run instruction for the mount animation blueprint. In some embodiments, the mount animation can be part of an animation to be played (such as a film or animation). In some embodiments, the mount animation can be part of an animation in a virtual scene (such as a game scene).

[0116] In some embodiments, a first animation blueprint for a first virtual object can be created by executing the following steps: creating a first animation blueprint file for the first virtual object based on the first object skeleton; displaying a blueprint editing interface for the first animation blueprint file in response to a file open operation for the first animation blueprint file; receiving first editing information for an event graph in the first animation blueprint file and second editing information for an animation graph in the first animation blueprint file based on the blueprint editing interface; generating a first animation blueprint based on the first editing information and the second editing information. Here, the process of receiving the first editing information set for the event graph and the second editing information set for the animation graph based on the blueprint editing interface will be described below and can be implemented using the relevant implementation method for S7 below. The event graph is used to set the use object of the first animation blueprint, that is, to mount the animation blueprint; the animation graph is used to set the animation playback logic of the first animation file to place the first animation file (including the above-mentioned first standby animation file and the above-mentioned motion animation file), thereby controlling the playback of the first standby animation file or the motion animation file. In this way, by setting the event graph and the animation graph, it is ensured that when the mounting animation blueprint is run to play the mounting animation, the first animation blueprint can be called to play the animation of the first virtual object included in the first animation file, so as to realize the playback of the animation of the first virtual object in the mounting animation.

[0117] In some embodiments, a second animation blueprint for a second virtual object can be created by executing the following steps: creating a second animation blueprint file for the second virtual object based on the second object skeleton; displaying a blueprint editing interface for the second animation blueprint file in response to a file open operation for the second animation blueprint file; receiving third editing information for an event graph in the second animation blueprint file and fourth editing information for an animation graph in the second animation blueprint file based on the blueprint editing interface; generating a second animation blueprint based on the third editing information and the fourth editing information. Here, the process of receiving the third editing information for the event graph and the fourth editing information for the animation graph based on the blueprint editing interface will be described below and can be implemented using the relevant implementation method for S6 below. The event graph is used to set the use object of the second animation blueprint, that is, to mount the animation blueprint; the animation graph is used to set the animation playback logic of the second animation file to place the second animation file (including the above-mentioned second standby animation file), thereby controlling the playback of the second standby animation file. In this way, by setting the event graph and the animation graph, it is ensured that when the mounting animation blueprint is run to play the mounting animation, the second animation blueprint can be called to play the animation of the second virtual object included in the second animation file, so as to realize the playback of the animation of the second virtual object in the mounting animation.

[0118] In some embodiments, based on the bone slot, the second bone can be controlled to follow the movement of the first bone by executing the following steps: obtaining the rotation information and displacement information of the bone slot during the movement of the first bone; based on the rotation information and displacement information, determining the bone rotation angle of the second bone; based on the bone rotation angle, adjusting the bone position and bone direction of the second bone to control the second bone to follow the movement of the first bone.

[0119] Here, first obtain the rotation information and displacement information of the bone slot in the process of the first skeleton moving, specifically, as can be seen from the aforementioned embodiment, the first virtual object is located in the first animation blueprint, the first animation blueprint can record the rotation information and displacement information of the bone slot of the first virtual object, and pass the rotation information and displacement information of the bone slot to the second animation blueprint where the second virtual object is located for storage. Then based on the rotation information and displacement information, determine the bone rotation angle of the second skeleton in the process of the first skeleton moving, thereby based on the bone rotation angle, by means of bone transformation, adjust the bone position and bone direction of the second skeleton to achieve control of the second skeleton following the first skeleton to move. Specifically, determine the initial bone position and initial bone direction of the second skeleton, and determine the bone transformation matrix corresponding to the bone rotation angle, and then perform bone transformation on the initial bone position and initial bone direction based on the bone transformation matrix to obtain the target bone position and target bone direction of the second skeleton, finally adjust the bone position of the second skeleton to the target bone position and adjust the bone direction of the second skeleton to the target bone direction. In this way, the second skeleton is enabled to move following the first skeleton, so that the object part of the second virtual object that is bound to the second skeleton moves following the object part of the first virtual object that is bound to the first skeleton. This can improve the animation effect of the second virtual object being mounted on the first virtual object to move together, making the animation effect of the second virtual object being mounted on the first virtual object to move together more realistic.

[0120] In some embodiments, based on the bone slot, the second bone can also be controlled to follow the movement of the first bone by executing the following steps: obtaining the rotation information and displacement information of the bone slot during the movement of the first bone; based on the rotation information and displacement information, using inverse kinematics to determine the bone point position of each bone point on the second bone; based on the position of each bone point on the second bone, adjusting the bone position of the second bone to control the second bone to follow the movement of the first bone.

[0121] Here, first, the rotation information and displacement information of the bone slot during the movement of the first bone are obtained. Specifically, it can be seen from the above embodiment that the first virtual object is located in the first animation blueprint, and the first animation blueprint will record the rotation information and displacement information of the bone slot of the first virtual object, and pass the rotation information and displacement information of the bone slot to the second animation blueprint where the second virtual object is located for storage. After obtaining the rotation information and displacement information, based on the rotation information and displacement information, the inverse kinematics method is used to determine the bone point position of each bone point on the second skeleton. Specifically, the bone slot can be used as a bone point, based on the rotation information and displacement information of the bone slot during the movement of the first skeleton, and the inverse dynamics principle (such as the FullbodyIK algorithm) is used to determine the bone point position of each bone point on the second skeleton associated with the bone point (i.e., the bone slot), thereby determining the bone position of the second skeleton based on the bone point position of each bone point on the second skeleton, thereby adjusting the position of the second skeleton to control the second skeleton to follow the movement of the first skeleton. Specifically, the initial bone point positions of each bone point on the second skeleton are first determined, and then, based on the rotation information and displacement information, the target bone point positions of each bone point on the second skeleton are determined using an inverse kinematics method, thereby adjusting the bone point positions of each bone point on the second skeleton to the target bone point positions. In this way, the second skeleton is able to follow the movement of the first skeleton, so that the object portion of the second virtual object bound to the second bone follows the object portion of the first virtual object bound to the first bone in movement, which can improve the animation effect of the second virtual object being mounted on the first virtual object for joint movement, making the animation effect of the second virtual object being mounted on the first virtual object for joint movement more realistic.

[0122] In some embodiments, the second virtual object of the mounting animation is mounted on the first virtual object using a first mounting posture; accordingly, the following steps can also be performed: a mounting posture adjustment instruction is received, and the mounting posture adjustment instruction includes at least one of the following instructions: a first instruction to adjust the bone slot from the first bone to the third bone of the first object skeleton, and a second instruction to adjust the second bone to the fourth bone of the second object skeleton; in response to the mounting posture adjustment instruction, the second virtual object is controlled to be mounted on the first virtual object using a second mounting posture, and the second mounting posture is different from the first mounting posture.

[0123] Specifically, (1) when the mounting posture adjustment instruction is the first instruction, in response to the mounting posture adjustment instruction, the bone slot is adjusted from the first bone to the third bone; by mounting the second bone to the bone slot located at the third bone, the second virtual object is controlled to be mounted on the first virtual object using the second mounting posture; (2) when the mounting posture adjustment instruction is the second instruction, in response to the mounting posture adjustment instruction, in response to the mounting posture adjustment instruction, by mounting the fourth bone to the bone slot, the second virtual object is controlled to be mounted on the first virtual object using the second mounting posture; (3) when the mounting posture adjustment instruction includes the first instruction and the second instruction, in response to the mounting posture adjustment instruction, the bone slot is adjusted from the first bone to the third bone; by mounting the fourth bone to the bone slot located at the third bone, the second virtual object is controlled to be mounted on the first virtual object using the second mounting posture. In this way, the mounting posture can be customized and adjusted according to needs, which increases the diversity of the mounting posture; and it is only necessary to adjust the position of the bone slot in the first virtual object and / or only need to adjust the mounting position of the second virtual object in the bone slot, which is simple to implement and improves the production efficiency of the mounting animation.

[0124] By applying the above-mentioned embodiment of the present application, the first animation file of the first virtual object and the second animation file of the second virtual object are first obtained; then, the first object skeleton of the first virtual object is extracted from the first animation file, and the second object skeleton of the second virtual object is extracted from the second animation file; then, a bone slot is added to the first bone of the first object skeleton, and the second bone of the second object skeleton is mounted to the bone slot; in this way, when the mounting animation for showing the second virtual object mounted on the first virtual object is played, the second bone is controlled to move with the first bone based on the bone slot, so that the object part of the second virtual object bound to the second bone moves following the object part of the first virtual object bound to the first bone.

[0125] Here, (1) the second skeleton of the second virtual object is based on the skeleton slot and can follow the movement of the first skeleton of the first virtual object, so that the object part of the second virtual object bound to the second skeleton follows the movement of the object part of the first virtual object bound to the first skeleton. In this way, the animation effect of the second virtual object being mounted on the first virtual object for common movement can be improved, and the animation effect of the second virtual object being mounted on the first virtual object for common movement can be made more realistic; (2) since the second virtual object is mounted on the first virtual object for following movement is achieved through the added skeleton slot, it is only necessary to adjust the addition position (first skeleton) or mounting position (second skeleton) of the skeleton slot to achieve mounting in different postures through the skeleton slot, thereby increasing the diversity of mounting postures and eliminating the need to create animation assets and animation logic for different mounting postures for each virtual object, thereby reducing the cost of animation production and improving the efficiency of animation production.

[0126] The following describes an exemplary application of the present invention in a practical application scenario. In related art, (1) separate animation assets and animation logic are produced for the carrier object and the mounted object. Although this can achieve a variety of different mounting postures, the production cost is very high; (2) only one set of animation assets and animation logic is produced for the carrier object and the mounted object. However, this makes the mounting postures highly uniform and the animation effect is very poor.

[0127] Based on this, an embodiment of the present application provides an animation processing method to at least solve the above-mentioned problems. In an embodiment of the present application, a general logic is provided to achieve the effect of the second virtual object (i.e., the mounted object) and the first virtual object (i.e., the carrier object). Specifically: through hierarchical constraints, the first virtual object and the second virtual object form a mounting relationship, using only one animation asset, combined with FullBodyIK and the slots added to the skeleton of the first virtual object, so that the mounted object is mounted on the carrier object in a reasonable posture (customization is supported), and the limbs, head and other parts of the second virtual object can be linked with the body parts of the first virtual object, and the debugging cost of a single first virtual object is very low, and only the position of the slot needs to be debugged. In this way, 1) only one animation asset needs to be produced for the second virtual object, and the production cost is very low; 2) each first virtual object can independently adjust parameters such as movement rate and turning rate, so that each first virtual object has independent movement characteristics; 3) it has extremely deep scalability when applied to virtual scenes (such as games), bringing more possibilities for designing the effect of the second virtual object traveling with the first virtual object (such as the second virtual object riding the first virtual object, or the second virtual object lying on the first virtual object); 4) if a new first virtual object needs to be mounted, only the position and movement parameters of the slot need to be debugged, saving production costs; 5) FullBodyIK is used to allow the limbs, head and other parts of the second virtual object to interact with the first virtual object, making the mounting animation effect closer to reality; 6) The mounting posture supports personalized customization, and only the position of the slot needs to be debugged. The following is a detailed description.

[0128] The following describes the embodiment of the present application from the product side. Since the second skeleton of the second virtual object is mounted on the first skeleton of the first virtual object through a slot, it is possible to define which skeleton of the second virtual object follows which skeleton of the first virtual object. The actual action effect brought by the skeleton following will be very vivid. As shown in (1) and (2) in Figure 4A, when the second virtual object (such as the player's virtual object) rides on the first virtual object (such as the virtual elf in the game) to move, the first virtual object moves and the second virtual object will also have a corresponding skeleton movement effect. The embodiment of the present application also has the advantage of versatility. The second virtual object can perfectly adapt to the riding of the first virtual object of any size in a variety of action postures. As shown in (1) and (2) in Figure 4B, for different first virtual objects, the riding posture of the second virtual object is different. In addition to being applied to the second virtual object riding on the first virtual object, the embodiment of the present application can also be applied to the situation where the second virtual object (such as the virtual elf) lies on the first virtual object (such as the player's virtual object), that is, "walking together". As shown in (1) and (2) in FIG4C , when the first virtual object moves, the second virtual object lying on the body of the first virtual object will also move (eg, the tail of the second virtual object moves up and down).

[0129] The following is a technical description of the embodiment of the present application. The process of the embodiment of the present application is shown in Figure 5:

[0130] 1. Create animation files. This includes creating a first animation file for the first virtual object and a second animation file for the second virtual object. In 3ds Max, create a first standby animation file and a motion animation file for the first virtual object, and a second standby animation file for the second virtual object in a target pose (e.g., a riding pose).

[0131] 2. Export animation files. In 3dsMax, export the first standby animation file, the motion animation file, and the second standby animation file of the first virtual object. The first standby animation file of the first virtual object is recorded as file A, the motion animation file of the first virtual object is recorded as file B, and the second standby animation file of the second virtual object is recorded as file C.

[0132] 3. Import animation files. Import animation files A, B, and C into UE4. After importing the animation files, you will get the following seven files, in order:

[0133] The Skeletal Mesh file of the first virtual object (i.e., the first object model mentioned above), denoted as "SKM_PET";

[0134] The first skeleton file of the first virtual object (i.e., the first object skeleton mentioned above), recorded as "SK_Pet";

[0135] The first idle animation sequence of the first virtual object is recorded as "Pet__Anim_Idle";

[0136] The motion animation sequence of the first virtual object is recorded as “Pet__Anim_Run”;

[0137] The skeletal mesh file of the second virtual object (i.e., the second object model mentioned above), recorded as "SKM_PC1";

[0138] The second skeleton file of the second virtual object (i.e., the second object skeleton mentioned above), recorded as "SK_PC1";

[0139] The second standby animation sequence of the second virtual object is recorded as “PC1__Anim_Ride”.

[0140] 5. Create the first animation blueprint for the first virtual object. Create the first animation blueprint based on "SK_Pet" and record it as "ABP_Pet". Use it to play the animations "Pet__Anim_Idle" and "Pet__Anim_Run".

[0141] 6. Add slots to the bones of the first virtual object (i.e., the bone slots mentioned above). Add slots to "SK_Pet." These slots are used to 1) set the mount position of the second virtual object relative to the first virtual object; and 2) constrain the target bones of the second virtual object (e.g., the bones of the limbs, head, etc.). For example, the names of the slots used to constrain the target bones can be as follows:

[0142] The socket that constrains the head bone of the second virtual object is recorded as "Socket_Head";

[0143] Constrain the socket of the left hand bone of the second virtual object, recorded as "Socket_Hand_L";

[0144] The socket that constrains the right hand bone of the second virtual object is recorded as "Socket_Hand_R";

[0145] Constrain the socket of the second virtual object's left foot bone, recorded as "Socket_Foot_L";

[0146] Constrain the socket of the second virtual object's right foot bone, recorded as "Socket_Foot_R";

[0147] Mount slot, labeled "Ride".

[0148] 7. Create a second animation blueprint for the second virtual object. Create a second animation blueprint based on "SK_PC1", recorded as "ABP_PC1", which is used to play the animation "PC1__Anim_Ride" of the second virtual object and allow the second virtual object to be constrained by the slot of the first virtual object so that it can interact with the first virtual object. Specifically, obtain the "slot position and rotation data" from the animation of the first virtual object; then assign the obtained "slot position and rotation data" to FBIK; FBIK will constrain the target bone of the second virtual object to the position of the slot of the first virtual object based on the input "slot position and rotation data".

[0149] 8. Create a mounting animation blueprint. Create a blueprint with a moving component for the second virtual object, and then add two skeletal mesh components, labeled "Component A (corresponding to the first virtual object, i.e. the first skeletal mesh mentioned above)" and "Component B (corresponding to the second virtual object, i.e. the second skeletal mesh mentioned above)". Component A carries "SKM_Pet" and "ABP_Pet"; Component B carries "SKM_PC1" and "ABP_PC1". Set the hierarchy of Component B to be a child of Component A, making Component B a child of Component A, and "Component B" is constrained by the slot "Ride" in "SKM_PET" contained in "Component A".

[0150] First, let's create an animation file (i.e., the second standby animation file for the second virtual object in the target pose (e.g., riding pose). 1. Open 3dsMax; 2. Open the second skeleton file for the second virtual object; 3. Rotate and control the rotation and displacement of the skeleton (e.g., pelvis, arms, thighs, etc.) until the skeleton assumes the target pose (the riding pose shown in Figure 6); 4. Export the skeleton in the target pose as an FBX animation file, which will be referred to as the second standby animation file for the second virtual object.

[0151] Second, the logic for implementing the second virtual object mounting to the first virtual object through UE4 is described, including:

[0152] S1. Run UE4.

[0153] S2. As shown in Figure 7A, in the "Content Browser" of the Engine Asset Panel, click a blank area to display the shortcut menu and select "Blueprint Class." In the "Select Parent Class" window that pops up, select "Character." A new blueprint file named "BP_RideAll" will be created in the "Content Browser." This creates the mounting animation blueprint "BP_RideAll," which can play the mounting animation of the second virtual object being mounted on the first virtual object.

[0154] S3. In the Content Browser, open BP_RideAll by clicking on it.

[0155] S4. As shown in (1) in FIG7B , in the “Component” tab in the upper left corner of the “BP_RideAll” window, select “Mesh (CharacterMesh0) (Inherited)”. In this way, the first skeletal mesh (CharacterMesh0) is added to the mounting animation blueprint for the display of the first virtual object; as shown in (2) in FIG7B , click the “Add Component” button and select “Skeletal Mesh Component (SkeletalMesh)” in the newly popped-up tab. In this way, the second skeletal mesh (SkeletalMesh) is added to the mounting animation blueprint for the display of the second virtual object.

[0156] S5. Check whether the SkeletalMesh component is under the hierarchy of CharacterMesh0 (Inherited). Specifically, you can check whether there is a triangle symbol in front of the name of CharacterMesh0 (Inherited), as shown in (3) in Figure 7B. If there is a triangle symbol, it means that the SkeletalMesh component and CharacterMesh0 (Inherited) form a hierarchical constraint, and the SkeletalMesh component is under the hierarchy of CharacterMesh0 (Inherited).

[0157] S6. Create the second animation blueprint of the second virtual object. The process is as follows:

[0158] 6.1 Import the second standby animation file of the second virtual object.

[0159] 6.2 Create the Second Animation Blueprint for the Second Virtual Object. As shown in Figure 8A, click the second skeleton file for the second virtual object in the Content Browser. In the shortcut menu that appears, select "Create" > "Animation Blueprint." A new animation blueprint named "ABP_PC1_RideAll" will be created in the Content Browser. This second animation blueprint will be used to call the second standby animation file for the second virtual object.

[0160] 6.3 Write the logic of the event graph in the second animation blueprint.

[0161] 6.3.1 As shown in Figure 8B (1), open "ABP_PC1_RideAll". In the new window that pops up, find the "My Blueprint" tab in the lower left corner. Double-click "Event Graph". You will see the "Event Graph" tab open in the middle of the window. This step is to find and open the Event Graph because you will then write logic in it.

[0162] 6.3.2 Click in a blank area of ​​the event graph to trigger the display of the text box shown in Figure 8B (2). Enter "try get pawn" in the text box. Click "Try to get Pawn owner" in the search results to create the rightmost blueprint node "Try to get Pawn owner" as shown in Figure 8B (2). This step is to create the blueprint node "Try to get Pawn owner" to obtain the user "BP_RideAll" of the second animation blueprint.

[0163] 6.3.3 As shown in Figure 8C (1), click the "Return Value" pin in the "Try to Get Pawn Owner" blueprint node and hold it. Then move it to a blank area and release it. In the pop-up search box, enter "BP_RideALL". Select "Convert to BP_RideAll" in the search results to create the "Convert to BP_RideAll" blueprint node. This step creates the "Convert to BP_RideAll" blueprint node to obtain "BP_RideAll".

[0164] 6.3.4 As shown in (2) in Figure 8C, connect the blueprint nodes created in the second animation blueprint, and let the "Event Blueprint Update Animation" link "BP_RideALL" so that when the engine is running, the rotation information and displacement information of the slot can be obtained from "BP_RideALL" in real time.

[0165] 6.3.5 As shown in Figure 8D (1), click the "As BP Ride All" pin in the "Type Converted to BP_RideAll" blueprint node. Without releasing it, move it to a blank area and release it. Enter "get socket rotation" in the search box and select "Get socket rotation (Mesh)" from the search results. This step creates the "get socket rotation" blueprint node, which is used to obtain the socket rotation information from "BP_RideALL."

[0166] 6.3.6 As shown in Figure 8D (2), click the "As BP Ride All" pin in the "Type Converted to BP_RideAll" blueprint node. Without releasing it, move it to a blank area and release it. Enter "get socket location" in the search box and select "Get Socket Location (Mesh)" from the search results. This step creates a "get socket location" blueprint node to obtain the socket's displacement information.

[0167] In example 6.3.7, you can create 6 "get socket rotation" blueprint nodes and 5 "get socket location" blueprint nodes, which can be created by copying.

[0168] Among them, fill in the "In Socket Name" text boxes of these six "get socket rotation" blueprint nodes with: "Root", "Socket_Head", "Socket_Hand_L", "Socket_Hand_R", "Socket_Foot_L", and "Socket_Foot_R" in sequence. Fill in the "In Socket Name" text boxes of these five "get socket location" nodes with: "Socket_Head", "Socket_Hand_L", "Socket_Hand_R", "Socket_Foot_L", and "Socket_Foot_R" in sequence.

[0169] The "Socket_Head," "Socket_Hand_L," "Socket_Hand_R," "Socket_Foot_L," and "Socket_Foot_R" mentioned above are the names of the sockets to be added to the first virtual object's skeleton. They also represent the locations where the second virtual object's limbs will interact with the first virtual object's body. After creating these blueprint nodes and filling in the information as described above, the resulting blueprint node diagram is shown in Figure 8E.

[0170] For each of these 11 Blueprint nodes, click the "Return Value" pin and select "Promote to Variable" (as shown in Figure 8G). This will create a variable that will store the rotation or displacement information for that Blueprint node. Create the variables needed for each of these 11 Blueprint nodes, rename them according to their information, and connect them as shown in Figure 8F.

[0171] Step 6.3.7 is to obtain the rotation information and displacement information of the slot in the skeleton of the first virtual object and store it in the variables of the second animation blueprint of the second virtual object.

[0172] 6.4 Write the logic of the animation graph in the second animation blueprint.

[0173] 6.4.1 As shown in Figure 9A (1), open the second skeleton file of the second virtual object, click the root bone named "Root", and select "Add Bone" in the pop-up shortcut menu. For example, enter and add "Bip001-L-Hand", "Bip001-R-Hand", "Bip001-Head", "Bip001-L-Calf", and "Bip001-R-Calf" in the search box. The five bones created in this step will be used in fullbodyik to interact with the second virtual object and the first virtual object.

[0174] 6.4.2 As shown in (2) in Figure 9A, return to the animation graph of the second animation blueprint, click a blank area on the animation graph, enter "transform bone" in the pop-up search box, and select "Transform (Modify) Bone" from the search results. This step is to create a "Transform (Modify) Bone" node, which is used to modify the rotation and displacement information of the second virtual object's bones.

[0175] 6.4.3 Since the above example creates a total of 5 bones, it is also necessary to create 5 "transform (modify) bones" here, where the translation mode and rotation mode of each bone are the same: the translation mode is "Replace existing item", the translation space is "World scene", and the pins are set to public, as shown in Figure 9B (1). In this step: the public pins are so that the blueprint node can use variables to assign values; because the slot position of the first virtual object needs to be assigned 100% to the bone of the mounted second virtual object, the translation mode and rotation are both "Replace existing item"; in 6.3.7, the rotation and displacement of the slot are obtained from the scene component, so in this step, the rotation space and translation space are both set to "World scene space".

[0176] 6.4.4 Change the "Bones to Modify" in the five "Transform (Modify) Bones" nodes to the added bones. Then, in the "My Blueprint" tab, drag and connect the corresponding variables to the "Transform (Modify) Bones" node. Drag the imported standby animation file for the second virtual object from the Content Browser into this animation graph. This step uses the created single-frame animation file as a basis, and then, based on this animation file, modifies the bones' position and rotation information by connecting Blueprint nodes.

[0177] 6.4.5 Click the second skeleton file of the second virtual object and select "Create Rig Control" in the pop-up shortcut menu. Create a "Create Rig Control" file named "CtrlRig_PC1_RideAll", as shown in Figure 9B (2). This step is to create the controlrig file required for using fullbodyik.

[0178] 6.4.6 Open the "CtrlRig_PC1_RideAll" file. In the newly popped-up "RigGraph" window, right-click and search for the "fullbodyik" node. Set it up as shown in Figure 9C. This step constrains the position of the bones to the position of the skin bones. The "second virtual object's bones," already controlled by the "first virtual object's slots," constrain the "second virtual object's skin bones."

[0179] 6.4.7 As shown in Figure 9D, return to the Animation Graph of the second Animation Blueprint "ABP_PC1_RideAll" for the second Virtual Object. Click in a blank area of ​​the graph, enter "controlrig" in the search box that pops up, and select "Bind Control" from the search results. Select the "Bind Control" node and, in the "Details" tab, mount the ControlRig file you just created: "CtrlRig_PC1_RideAll." This step creates a "Bind Control" Animation Blueprint node, which will be used to mount the ControlRig file and constrain the limbs of the second Virtual Object through the slots of the first Virtual Object.

[0180] 6.4.8 The final connection of the animation chart is shown in Figure 9E.

[0181] S7: Create a first animation blueprint for the first virtual object. The process is as follows:

[0182] 7.1 Create the first animation blueprint for the first virtual object. As shown in Figure 10A, in the Content Browser, click the skeleton file for the first virtual object. In the shortcut menu that pops up, select "Create" > "Animation Blueprint." A new animation blueprint named "ABP_Pet_001" will be created in the Content Browser. This first animation blueprint is used to call the first animation file for the first virtual object.

[0183] 7.2 Logic writing of the first animation blueprint of the first virtual object.

[0184] 7.2.1 As shown in Figure 10B (1), open "ABP_Pet_001". In the new window that pops up, find the "My Blueprint" tab in the lower left corner and double-click "Event Graph". You can see that the "Event Graph" tab has been opened in the middle of the window. In the blank area of ​​the event graph, click to trigger the display of the text box shown in Figure 10B (2). Enter "try get pawn" in the text box and click "Try to get Pawn owner" in the search results to create the rightmost blueprint node "Try to get Pawn owner" as shown in Figure 10B (2). This step creates this blueprint node to obtain the user "BP_RideAll" who uses the first animation blueprint.

[0185] 7.2.2 As shown in Figure 10C (1), click the "Return Value" pin in the "Try to Get Pawn Owner" node and hold it, then move it to a blank area and release it. In the pop-up search box, enter "get velocity" and select "Get Velocity" in the search results to create the blueprint node "Get Velocity".

[0186] As shown in Figure 10C (2), click the "Return Value" pin in the "Get Speed" node and hold it, then move it to a blank area and release it. In the pop-up search box, enter "length" and select "Vector Length" in the search results to create the blueprint node "Vector Length".

[0187] As shown in Figure 10C (3), click the "Return Value" pin in the "Vector Length" node, select "Promote to Variable" in the pop-up shortcut menu, and rename the newly created variable to "Speed." This step is to create a Speed ​​variable to obtain the movement speed of the first virtual object.

[0188] 7.2.3 As shown in Figure 10D (1), click the "Return Value" pin in the "Speed" variable node and hold it. Then move it to a blank area and release it. In the pop-up search box, enter ">". Select "Float > Float" from the search results. In the newly created "Float > Float" node, enter "Specific value (such as 10)" in the second text box. This step is to compare the speed variable of the first virtual object with a specific value (such as 10) to determine whether the current speed is greater than 10 cm / s.

[0189] 7.2.4 As shown in Figure 10D (2), click the pin in the "Float > Float" node, select "Promote to Variable" in the pop-up shortcut menu, and rename the newly created variable to "isMoving". This step is to create the isMoving variable, which is used to detect whether the first virtual object is in a moving state. For example, if the speed is greater than 10 cm / s, it is in a moving state, and the value of this Boolean variable is True, otherwise it is False.

[0190] 7.2.5 As shown in Figure 10D (3), in the "My Blueprint" tab on the left side of the current window, double-click "AnimGraph" to open the animation graph. Right-click in a blank area of ​​the animation graph, enter "blend poses by bool" in the pop-up search box, and select "blend poses by bool" in the search results. This step is to create a "blend poses by bool" node, which is used to select whether to play the standby animation or the motion animation based on the movement state of the first virtual object.

[0191] 7.2.6 In the "Asset Browser" tab, drag the standby animation file and the motion animation file into the animation graph and connect the animations to the "blend poses by bool" node. Connect the motion animation file to the True pin and the standby animation file to the False pin. In the "My Blueprint" tab, click and hold the ismoving variable, drag it to the "Active Value" pin of the "blend poses by bool" node, and then connect the output pin of the "blend poses by bool" node to the "Output Pose" node. This step connects the animation file of the first virtual object to the "blend poses by bool" node. If the ismoving variable is True, the motion animation file will play; otherwise, the standby animation file will play.

[0192] S8. Write the logic for the mounting animation blueprint "BP_RideAll".

[0193] 8.1 Open "BP_RideAll".

[0194] 8.2 In the "Components" tab in the upper left corner, select "Mesh (CharacterMesh0) Inheritance." In the Details panel, select the Skeletal Mesh corresponding to the first virtual object. In the Animation Class, select the first animation blueprint you created, "ABP_Pet_001," as shown in Figure 11A. This step places the first object model and first animation blueprint of the first virtual object in the Skeletal Mesh. This operation will enable the first virtual object to "run."

[0195] 8.3 In the Components tab in the upper left corner, select SkeletalMesh. In the Details panel, select the Skeletal Mesh of the second virtual object. In the Animation class, select the second animation blueprint "ABP_PC1_RideAll" you created, as shown in Figure 11B. This step places the second object model and second animation blueprint of the second virtual object in the Skeletal Mesh.

[0196] 8.4 In the blank area of ​​the event graph, click to trigger the search box shown in Figure 11C (1). In the pop-up search box, enter "attach component to component" and select "Attach component to component (Mesh)" from the search results. The blueprint node created in this step is to allow the skeletal mesh "SkeletalMesh" used by the second virtual object to be mounted on a slot on the skeletal mesh "Mesh (CharacterMesh0) Inherited" used by the first virtual object.

[0197] 8.5 In the "Components" tab in the upper left corner, drag the "Mesh (CharacterMesh0) Inherited" component to the "Parent" pin of the "Attach Component to Component" node. Similarly, in the "Components" tab, drag the "SkeletalMesh" component to the "Target" pin of the "Attach Component to Component" node. Then, enter "Ride" in the "Socket Name" text box, and then connect the run node of the "Event Start Running" event to the "Attach Component to Component" node. This step is to make the SkeletalMesh component of the second virtual object's SkeletalMesh component be mounted on the "Ride" socket of the SkeletalMesh component of the first virtual object's SkeletalMesh component "Mesh (CharacterMesh0) Inherited" when the mounted animation blueprint starts running. The specific connection diagram is shown in Figure 11C (2).

[0198] S9. Add a slot to the skeleton of the first virtual object.

[0199] 9.1 Open the first skeleton file of the first virtual object.

[0200] 9.2. Open the first virtual object's motion animation and observe it. For example, if the second virtual object is riding the first virtual object, you'll find that in most skeletons, the pelvis can essentially drive the entire skeleton. Since the first virtual object is driving the second virtual object, you can add a "Ride" slot to the pelvis bone of the first virtual object. To do this: Click "Bip001" (the pelvis bone), select "Add Slot" from the pop-up shortcut menu, and rename it "Ride." This step creates a "Ride" slot, which will allow the second virtual object's Skeletal Mesh Component to be mounted to the "Ride" slot, allowing it to follow the movements of the first virtual object's pelvis bone.

[0201] 9.3 Continue observing the motion animation of the first virtual object and add sockets to the appropriate bones, such as "Socket_Head", "Socket_Hand_L", "Socket_Hand_R", "Socket_Foot_L", and "Socket_Foot_R". This step is to add sockets to the appropriate bones of the first virtual object. For example, if the positions of these sockets correspond to the movement of the limbs and head of the second virtual object, these sockets will follow the movement of a certain bone of the first virtual object, and the limbs and head of the second virtual object will also follow the movement of these bones of the first virtual object.

[0202] It should be noted that it is not limited to 3dsmax and UE4 engines. Other DCC software or engines that can produce animations and implement mounting interaction logic are also acceptable; FullBodyIK is a collection of IK algorithms, and any IK algorithm that can achieve mounting interaction is also acceptable.

[0203] By applying the above embodiments of the present application, 1) only one animation asset needs to be produced for the second virtual object, and the production cost is very low; 2) each first virtual object can individually adjust parameters such as movement rate and turning rate, so that each first virtual object has independent movement characteristics; 3) it has extremely deep scalability when applied to virtual scenes (such as games), which brings more possibilities for designing the effect of the second virtual object walking with the first virtual object (such as the second virtual object riding the first virtual object, the second virtual object lying on the first virtual object); 4) if a new first virtual object needs to be added for mounting, it is only necessary to debug the position and movement parameters of the slot, saving production costs; 5) FullBodyIK is used to allow the limbs, head and other parts of the second virtual object to interact with the first virtual object, making the mounting animation effect closer to reality; 6) The mounting posture supports personalized customization, and only the position of the slot needs to be debugged.

[0204] The following continues to describe an exemplary structure of the animation processing device 555 provided in an embodiment of the present application implemented as a software module. In some embodiments, as shown in Figure 2, the software modules stored in the animation processing device 555 of the memory 550 may include: an acquisition module 5551, configured to acquire a first animation file of a first virtual object and a second animation file of a second virtual object; an extraction module 5552, configured to extract the first object skeleton of the first virtual object from the first animation file, and extract the second object skeleton of the second virtual object from the second animation file; an addition module 5553, configured to add a bone slot on the first bone of the first object skeleton; a mounting module 5554, configured to mount the second bone of the second object skeleton to the bone slot; a playback module 5555, configured to control the second bone to follow the movement of the first bone based on the bone slot when playing the mounting animation and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, wherein, in the process of the second bone following the movement of the first bone, the object part of the second virtual object bound to the second bone follows the object part of the first virtual object bound to the first bone to move.

[0205] In some embodiments, the acquisition module 5551 is further configured to acquire a first standby animation file and a motion animation file of the first virtual object, and use the first standby animation file and the motion animation file as the first animation file; acquire a second standby animation file of the second virtual object, and use the second standby animation file as the second animation file; wherein the second virtual object in the second standby animation file is a target posture, and the target posture is the posture adopted by the second virtual object when it is mounted on the first virtual object.

[0206] In some embodiments, the adding module 5553 is further configured to add a first bone slot on the first sub-bone of the first object skeleton, the first bone slot indicating the direct mounting position of the second virtual object relative to the first virtual object; add a second bone slot on the second sub-bone of the first object skeleton, the second bone slot indicating the indirect mounting position of the second virtual object relative to the first virtual object, and the second bone slot is used to constrain the movement of the target bone in the second skeleton; wherein, the first bone includes the first sub-bone and the second sub-bone, and the bone slot includes the first bone slot and the second bone slot.

[0207] In some embodiments, the mounting module 5554 is further configured to, before mounting the second bone of the second object skeleton to the bone slot, create a mounting animation blueprint for the mounting animation, create a first animation blueprint for the first virtual object, and create a second animation blueprint for the second virtual object; add a first skeletal mesh and a second skeletal mesh to the mounting animation blueprint, the first skeletal mesh and the second skeletal mesh having a hierarchical relationship, and the first skeletal mesh being the parent of the second skeletal mesh; obtain a first object model of the first virtual object, and place the first object model and the first animation blueprint on the first skeletal mesh to obtain a third skeletal mesh including the first object skeleton; obtain a second object model of the second virtual object, and place the second object model and the second animation blueprint on the second skeletal mesh to obtain a fourth skeletal mesh including the second object skeleton.

[0208] In some embodiments, the mounting module 5554 is further configured to create a blueprint node in the mounting animation blueprint, wherein the blueprint node includes a slot pin, a first pin indicating a mounted object, and a second pin indicating a mounted object; control the third skeletal mesh to connect to the first pin, control the fourth skeletal mesh to connect to the second pin, and control the slot pin to indicate the bone slot.

[0209] In some embodiments, the mounting module 5554 is further configured to create a first animation blueprint file for the first virtual object based on the first object skeleton; display a blueprint editing interface for the first animation blueprint file in response to a file open operation for the first animation blueprint file; based on the blueprint editing interface, receive first editing information for the event graph in the first animation blueprint file and second editing information for the animation graph in the first animation blueprint file; and generate the first animation blueprint based on the first editing information and the second editing information.

[0210] In some embodiments, the mounting module 5554 is further configured to create a second animation blueprint file for the second virtual object based on the second object skeleton; display a blueprint editing interface for the second animation blueprint file in response to a file open operation for the second animation blueprint file; based on the blueprint editing interface, receive third editing information for the event graph in the second animation blueprint file and fourth editing information for the animation graph in the second animation blueprint file; and generate the second animation blueprint based on the third editing information and the fourth editing information.

[0211] In some embodiments, the playback module 5555 is further configured to obtain the rotation information and displacement information of the bone slot during the movement of the first bone; determine the bone rotation angle of the second bone based on the rotation information and displacement information; and adjust the bone position and bone direction of the second bone based on the bone rotation angle.

[0212] In some embodiments, the playback module 5555 is also configured to obtain the rotation information and displacement information of the bone slot during the movement of the first bone; based on the rotation information and displacement information, use the inverse kinematics method to determine the bone point position of each bone point on the second bone; based on the position of each bone point on the second bone, adjust the bone position of the second bone.

[0213] In some embodiments, in the mounting animation, the second virtual object is mounted on the first virtual object using a first mounting posture; the mounting module 5554 is also configured to receive a mounting posture adjustment instruction, and the mounting posture adjustment instruction includes at least one of the following instructions: a first instruction to adjust the bone slot from the first bone to the third bone of the first object skeleton, and a second instruction to adjust the second bone to the fourth bone of the second object skeleton; in response to the mounting posture adjustment instruction, the second virtual object is controlled to be mounted on the first virtual object using a second mounting posture, and the second mounting posture is different from the first mounting posture.

[0214] In some embodiments, the mounting module 5554 is further configured to, when the mounting posture adjustment instruction is the first instruction, adjust the bone slot from the first bone to the third bone in response to the mounting posture adjustment instruction; control the second virtual object to be mounted on the first virtual object in the second mounting posture by mounting the second bone to the bone slot located at the third bone; when the mounting posture adjustment instruction is the second instruction, control the second virtual object to be mounted on the first virtual object in the second mounting posture by mounting the fourth bone to the bone slot in response to the mounting posture adjustment instruction; when the mounting posture adjustment instruction includes the first instruction and the second instruction, adjust the bone slot from the first bone to the third bone in response to the mounting posture adjustment instruction; control the second virtual object to be mounted on the first virtual object in the second mounting posture by mounting the fourth bone to the bone slot located at the third bone.

[0215] In some embodiments, the adding module 5553 is further configured to obtain the motion posture of the first virtual object before adding the bone slot on the first bone of the first object skeleton; determine the mounting posture of the second virtual object that is compatible with the motion posture; and determine the first bone in the first object skeleton to which the bone slot is to be added, and the second bone in the second object skeleton to be mounted to the bone slot based on the motion posture and the mounting posture.

[0216] It should be noted that the description of the device embodiment in this application is similar to the description of the method embodiment described above, and has similar beneficial effects as the method embodiment, and is not repeated here. Any unfinished technical details of the animation processing device provided in the embodiment of this application can be understood based on the description of the technical details in the method embodiment described above.

[0217] The present application also provides a computer program product, which includes computer-executable instructions or a computer program stored in a computer-readable storage medium. A processor of an electronic device reads the computer-executable instructions or the computer program from the computer-readable storage medium and executes the computer-executable instructions or the computer program, causing the electronic device to perform the animation processing method provided in the present application.

[0218] An embodiment of the present application also provides a computer-readable storage medium, which stores computer-executable instructions or a computer program. When the computer-executable instructions or the computer program are executed by a processor, the processor will execute the animation processing method provided in the embodiment of the present application.

[0219] In some embodiments, the computer-readable storage medium may be a memory such as RAM, ROM, flash memory, magnetic surface memory, optical disk, or CD-ROM; or may be various devices including one or any combination of the above memories.

[0220] In some embodiments, computer-executable instructions may be in the form of a program, software, software module, script, or code, written in any form of programming language (including compiled or interpreted languages, or declarative or procedural languages), and may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.

[0221] As an example, computer-executable instructions may, but need not, correspond to a file in a file system, may be stored as part of a file that stores other programs or data, e.g., in one or more scripts in a HyperText Markup Language (HTML) document, in a single file dedicated to the program in question, or in multiple coordinating files (e.g., files storing one or more modules, subroutines, or code portions).

[0222] By way of example, computer-executable instructions may be deployed to be executed on one electronic device, or on multiple electronic devices located at one site, or on multiple electronic devices distributed across multiple sites and interconnected by a communication network.

[0223] The above description is merely an embodiment of the present application and is not intended to limit the scope of protection of the present application. Any modifications, equivalent replacements, and improvements made within the spirit and scope of the present application are included in the scope of protection of the present application.

Claims

1. An animation processing method, applied to an electronic device, comprising: Acquire a first animation file of the first virtual object and a second animation file of the second virtual object; extracting a first object skeleton of the first virtual object from the first animation file, and extracting a second object skeleton of the second virtual object from the second animation file; adding a bone socket to a first bone of the first object skeleton; Mounting a second bone of the second object skeleton to the bone slot; When the mounting animation is played and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, based on the bone slot, the second bone is controlled to follow the movement of the first bone, wherein in the process of the second bone following the movement of the first bone, the object part of the second virtual object bound to the second bone follows the object part of the first virtual object bound to the first bone.

2. The method of claim 1, wherein: The obtaining of a first animation file of a first virtual object and a second animation file of a second virtual object comprises: Acquire a first standby animation file and a motion animation file of the first virtual object, and use the first standby animation file and the motion animation file as the first animation file; Acquire a second standby animation file of the second virtual object, and use the second standby animation file as the second animation file; The second virtual object in the second standby animation file is a target posture, and the target posture is a posture adopted when the second virtual object is mounted on the first virtual object.

3. The method according to any one of claims 1 to 2, wherein: The step of adding a bone slot to the first bone of the first object skeleton comprises: Adding a first bone slot on the first child bone of the first object skeleton, wherein the first bone slot indicates a direct mounting position of the second virtual object relative to the first virtual object; Adding a second bone slot on the second child bone of the first object skeleton, the second bone slot indicating an indirect mounting position of the second virtual object relative to the first virtual object, and the second bone slot being used to constrain the movement of a target bone in the second bone; Among them, the first bone includes the first sub-bone and the second sub-bone, and the bone slot includes the first bone slot and the second bone slot.

4. The method according to any one of claims 1 to 3, wherein: Before mounting the second bone of the second object skeleton to the bone slot, the method further comprises: Creating a mounting animation blueprint for the mounting animation, creating a first animation blueprint for the first virtual object, and creating a second animation blueprint for the second virtual object; Adding a first skeletal mesh and a second skeletal mesh to the mounting animation blueprint, wherein the first skeletal mesh and the second skeletal mesh have a hierarchical relationship, and the first skeletal mesh is a parent of the second skeletal mesh; Acquire a first object model of the first virtual object, and place the first object model and the first animation blueprint on the first skeletal mesh to obtain a third skeletal mesh including the skeleton of the first object; A second object model of the second virtual object is obtained, and the second object model and the second animation blueprint are placed in the second skeletal mesh to obtain a fourth skeletal mesh including the skeleton of the second object.

5. The method of claim 4, wherein: The step of mounting the second bone of the second object skeleton to the bone slot comprises: Creating a blueprint node in the mounting animation blueprint, the blueprint node comprising a slot pin, a first pin indicating a mounting object, and a second pin indicating a mounted object; The third skeletal mesh is controlled to connect to the first pin, the fourth skeletal mesh is controlled to connect to the second pin, and the socket pin is controlled to indicate the skeletal socket.

6. The method of claim 4, wherein: The step of creating a first animation blueprint for the first virtual object comprises: Creating a first animation blueprint file of the first virtual object based on the first object skeleton; In response to a file opening operation for the first animation blueprint file, displaying a blueprint editing interface of the first animation blueprint file; Based on the blueprint editing interface, first editing information for an event graph in the first animation blueprint file and second editing information for an animation graph in the first animation blueprint file are received; Based on the first editing information and the second editing information, the first animation blueprint is generated.

7. The method of claim 4, wherein: The step of creating a second animation blueprint for the second virtual object comprises: Creating a second animation blueprint file of the second virtual object based on the second object skeleton; In response to a file opening operation on the second animation blueprint file, displaying a blueprint editing interface of the second animation blueprint file; Based on the blueprint editing interface, receiving third editing information for the event graph in the second animation blueprint file and fourth editing information for the animation graph in the second animation blueprint file; Based on the third editing information and the fourth editing information, the second animation blueprint is generated.

8. The method according to any one of claims 1 to 7, wherein: The controlling the second bone to follow the movement of the first bone based on the bone slot comprises: Acquire rotation information and displacement information of the bone slot during the movement of the first bone; Determine a bone rotation angle of the second bone based on the rotation information and the displacement information; Based on the bone rotation angle, the bone position and bone orientation of the second bone are adjusted.

9. The method according to any one of claims 1 to 7, wherein: The controlling the second bone to follow the movement of the first bone based on the bone slot comprises: Acquire rotation information and displacement information of the bone slot during the movement of the first bone; Based on the rotation information and the displacement information, using an inverse kinematics method, determining the bone point position of each bone point on the second skeleton; Based on the positions of the bone points on the second bone, the bone position of the second bone is adjusted.

10. The method according to any one of claims 1 to 9, wherein: In the mounting animation, the second virtual object is mounted on the first virtual object using a first mounting posture; The method further comprises: receiving a mounting posture adjustment instruction, the mounting posture adjustment instruction comprising at least one of the following instructions: a first instruction to adjust the bone slot from the first bone to a third bone of the first object skeleton, a second instruction to adjust the second bone to a fourth bone of the second object skeleton; In response to the mounting posture adjustment instruction, the second virtual object is controlled to be mounted on the first virtual object using a second mounting posture, where the second mounting posture is different from the first mounting posture.

11. The method of claim 10, wherein: When the mounting posture adjustment instruction is the first instruction, the step of controlling the second virtual object to be mounted on the first virtual object with a second mounting posture in response to the mounting posture adjustment instruction includes: In response to the mounting posture adjustment instruction, the bone slot is adjusted from the first bone to the third bone; by mounting the second bone to the bone slot located at the third bone, the second virtual object is controlled to be mounted on the first virtual object using a second mounting posture; When the mounting posture adjustment instruction is the second instruction, the step of controlling the second virtual object to be mounted on the first virtual object with a second mounting posture in response to the mounting posture adjustment instruction includes: In response to the mounting posture adjustment instruction, by mounting the fourth bone to the bone slot, controlling the second virtual object to be mounted on the first virtual object with a second mounting posture; When the mounting posture adjustment instruction includes the first instruction and the second instruction, the step of controlling the second virtual object to be mounted on the first virtual object using a second mounting posture in response to the mounting posture adjustment instruction includes: In response to the mounting posture adjustment instruction, the bone slot is adjusted from the first bone to the third bone; by mounting the fourth bone to the bone slot located at the third bone, the second virtual object is controlled to be mounted on the first virtual object using a second mounting posture.

12. The method according to any one of claims 1 to 11, wherein: Before adding a bone slot to the first bone of the first object skeleton, the method further includes: Acquire a motion posture of the first virtual object; determining a mounting posture of the second virtual object that is compatible with the movement posture; Based on the motion posture and the mounting posture, a first bone in the first object skeleton to which the bone slot is to be added and a second bone in the second object skeleton to be mounted to the bone slot are determined.

13. An animation processing device, comprising: An acquisition module, configured to acquire a first animation file of a first virtual object and a second animation file of a second virtual object; an extraction module configured to extract a first object skeleton of the first virtual object from the first animation file, and to extract a second object skeleton of the second virtual object from the second animation file; an adding module configured to add a bone slot on a first bone of the first object skeleton; a mounting module, configured to mount the second bone of the second object skeleton to the bone slot; The playback module is configured to control the second bone to follow the movement of the first bone based on the bone slot when playing the mounting animation and the mounting animation is used to show that the second virtual object is mounted on the first virtual object, wherein in the process of the second bone following the movement of the first bone, the object part of the second virtual object bound to the second bone follows the object part of the first virtual object bound to the first bone.

14. An electronic device, comprising: a memory configured to store computer executable instructions; The processor is configured to implement the animation processing method described in any one of claims 1 to 12 when executing the computer executable instructions stored in the memory.

15. A computer-readable storage medium storing computer-executable instructions or a computer program, wherein when the computer-executable instructions or the computer program are executed by a processor, the animation processing method according to any one of claims 1 to 12 is implemented.

16. A computer program product, comprising computer executable instructions or a computer program, wherein when the computer executable instructions or the computer program is executed by a processor, the animation processing method according to any one of claims 1 to 12 is implemented.

Citation Information

Patent Citations

  • Method and device for acquiring position coordinates of virtual game objects

    CN107137927A

  • Virtual model deformation method and device

    CN110992495A

  • Virtual character control method and device, electronic equipment and storage medium

    CN112843683A

  • Plot animation playing method, generating method, terminal, device and equipment

    CN113546415A

  • Virtual character adjusting method and device

    CN115690282A