Hi folks! This week, we worked mainly on interaction animations, especially to place the player's hands correctly during certain interactions, such as opening a blind, picking up an object, etc.
After a busy week with the 'Féru des sciences', we worked on procedural animations, used for example to make our characters grab objects correctly, turn handles, or align itself correctly on the ground. In general, the player plays different animations mixed together depending on the context: when he walks for example, several animations are mixed together depending on the direction he is going, other animations are played simultaneously for other details (such as breathing, or to change his gait depending on his mood, level of fatigue, etc.). Finally, the player's bones are moved in code to respect certain constraints, for example to adjust the height and angle of his feet according to the ground.
In the example above, the player's left foot is moved up to match the height of the ground. This type of adjustment is not so simple, because you have to transfer the movement of the foot to the rest of the leg to get a natural and consistent pose, and that's where the inverse kinematics come in. Without going into details, it is a matter of allowing a part of the skeleton (here the foot) to move "freely", and to propagate this movement to the other parts while respecting different constraints (which correspond globally to the possible movements of the human body).
Luckily, Unreal provides very good and numerous tools to manage complex animations, and the animation of the character thus involves many systems that coexist and provide the final animation of the character. Briefly, the following steps are performed:
This week we adapted our interaction system, so that actions on objects can easily set constraints on the player's hands, for example to make the character grab a handle at a specific point. Our system isn't finished yet (this kind of thing needs a lot of tweaking), but it's a good basis for future interactions!
Skeletons are not only used in characters and hair, we also use them to constrain many physical systems, like cars. We didn't show it publicly at the time, so I'm going to take this opportunity to show you a playpen horse that Jimmy modeled a year ago, which we put a skeleton and physics constraints on to make it react properly (this was early on in our Unreal Engine experience, so we were trying to get a handle on different aspects that we were going to need for VirtualSociety).
On Monday night, while leaving work and going to the choir, Jimmy fell on his scooter, and we had to spend the night in the emergency room to make sure nothing was broken. Fortunately everything is fine, and Jimmy was able to return to work on Wednesday (with a splint).
Above is an illustration of Jimmy's condition after his fall ;) (by the way, the picture is a good illustration of what the "ragdoll" mode looks like.
Take care, thanks for your support and see you next week!
Written by Nicolas Gauville on 02/24/2023
Co-founder of VirtualSociety - PhD in Computer Science