All posts Articles Weekly review
Revue de la semaine #5
1 0

Weekly review #5

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. 

Animations and inverse kinematics

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:

  • State machines determine the current state of the character (falling, walking, running, stooping, standing, sitting, or carrying something with one hand, two hands, etc.).
  • Depending on its state, different animations are played (blend space), depending on different parameters (e.g. walking speed, direction).
  • In some cases, no animation is played and the physics determines the state of the skeleton (with a simplified physical model of the character). This is the case for example when the character falls, or for hairstyles with long hair, where the hair has a skeleton (yes, we do that in games :D), and the physics allows to move the bones according to the movements, as if it was a ragdoll.
  • Additional animations are then mixed to modify the pose of the character (breathing, fatigue, etc)
  • We then adapt the size and position of certain bones to adapt the character's morphology (certain parameters of size and build directly affect the bones)
  • Finally, we apply the inverse kinematics to adjust the player's feet and hands (depending on the state of the ground, if he has to hold an object or grip somewhere, etc).

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).


Small fall and night in emergency services

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!

Image Written by Nicolas Gauville on 02/24/2023

Co-founder of VirtualSociety - PhD in Computer Science
Founder of the VirtualSociety project, and is in charge of the development and communication of VirtualSociety
After a PhD in autonomous robotics at Safran Electronics & Defense, Nicolas started a video game studio with Jimmy Etienne.

Mozillax like this post
No comment yet
You must be logged in to comment