måndag 4 april 2016

Nihteana: Animations

A while ago I finished Nihteana's animations, at least up until a point where I could do no more before I could see all of them implemented correctly in the engine. Fortunately the coders have not found any issues so far.

Nihteana out for a walk, testing the rig and skin in 3Ds Max

I had all my mocap data cleaned since before Christmas and the frames which I was going to use selected. As expected her animations were like a dream to clean up, since I was completely still apart from moving my upper body when doing the shoot and how she always keep her arms apart, there was barely any occlusion. I had hopes that Nihteana's animations would be less of a problem than Tamarrion's had been.

Elbow bone not matching fold in 3Ds Max

 I soon noticed that there was an issue with her arm, as I could not get the elbow to fold properly. It turned out that I had not aligned the fold and the bone well enough, meaning that I had to return to the high poly sculpt to fix it and then readjust the lowpoly and re-skin the model. So Tamarrion taught me how not to make a shoulder and Nihteana how not to make an elbow. This was a setback, but it also gave me a chance to go back to the highpoly and make her hands bigger and have a better-looking bend, pushing their quality further.

Channel spell animation, before animating fingers

The experience of animating hands which I had had before was that it was not that big of an issue. The difference between Tamarrion and Nihteana is that Tamarrion always has one hand firm on her sword and the other slightly closed, all fingers moving simultaneously while Nihteana's animations are all about the movement of her long fingers. I hoped that they just might not be a problem although I had a feeling deep inside that I could be terribly wrong. That feeling was right. The fingers turned out to be a complete pain, and it was seriously tricky to figure out how they would move in relation to each other. What I did was film my own hands, trying to move them as I wanted her fingers to move and then take keyframe screenshots to see how the fingers should be positioned at different stages of the animations. This was something that I had to redo several times with various animations, since they did not want to cooperate. I had to be really really careful in which order I applied the poses on the fingers.

Screenshot used for her finger animations

Motionbuilder was not always cooperating either, causing additional issues with the key frame animations for the fingers. Apart from the fingers, my biggest problem, which I have never come across before, which occurred in almost every single animation was that there was twitching in the upper body flowing all the way through the arms and hands. This meant that I had to go and look at the fcurves of every single bone to find and attempt to fix the problem. It took me a great deal of time and I am still not completely sure of why I had this issue. Sometimes the animation had seemed fine while working on it and then all of a sudden there it was. I believe that it might have something to do with which frames you select when you choose your looping sequence, but I had been really careful to make sure that the first and last frames matched as close as possible in position.

Trying to fix the fcurves

I also got this weird bug in Motionbuilder (2015) it took me days to find no answer at all until I finally found someone with the same problem. The problem I had was that the bones were invisible even though the xray mode was activated. I tried sending the file to a friend and he could see the rig, so I knew it was not the file but the program. To fixed this I did a complete reinstall of the software, which worked, for a day or so. This is when I finally found the answer, it seems as if Motionbuilder remembers this "setting" for the file, so you have to open Motionbuilder by opening an uncorrupted file and from that open up the file you want to work with.

Skinning below belt is not perfect, but it does not matter since we use cloth physics

Animating the shoulder pads was another challenge, which I had to redo a couple of times. I needed to readjust the rig slightly to get a better pivot point, but I believe this is something that can still be improved. This was also an attempt to fix an issue with the feathers which seemed to have a life of their own. Somehow the feathers moved from there position in the keyframes when I added new ones. Since I had to move the shoulder pads with the arms my greatest fear was that they would twitch between animations since I was unable to use poses on them for some reason. The programmer who is working with her has not noticed any problem with them so far though.

Feathers no longer wanting to follow their bones

There was another great issue with the shoulder pads however, which caused a great deal of stress. Once I had redone all their animations, since they would not follow when I transferred the animations to an updated version of the model, everything was working fine in Motionbuilder so I sent it to my colleague to test in the engine. Everything seemed to be working fine, apart from the small detail of the shoulder pads and skulls hanging from the belt were flying around in a complete mess somewhere in the vicinity of the character model. I went back to Motionbuilder to find what could be wrong, but did not find anything. I tried creating a clean take and import the animations to a new character but there was no difference. It was only the .fbx from Motionbuilder, one that was rigged and skinned but not animated from 3Ds Max was perfect. I tried to find an answer if it could have anything to do with the character extensions but found nothing. To test if it might be something with Unity I opened the .fbx in Unreal and all animations worked perfectly.

Dance dance, Underground Rave test in Unreal


This meant that whatever the issue was it was something that only Unity reacted on. The solution turned out to be removing the skinning of the shoulder pads and skulls, luckily they were skinned as separate objects, reset the xform and re-skin them. This time when I imported the animations, expecting to have to redo the shoulder pad animations, everything seemed to follow and I could send it to test in Unity again. This time there were no problems that we could find before seeing how the animations blend between each other when she behaves in the way she is supposed to in the game, meaning that my work was done for this time.