Categories
Blog posts

Character design project- Ghosty

With the prompt “children’s character, with target audience aged 10 and under, themed around a local holiday or festivity”, I decided to pick Halloween in the UK. For me this seasonal festivity sparked the most creative potential, though I would have to be careful designing a “spooky” character, taking in mind this has to be appropriate for a much younger audience.

Using the ideation exercises from class, I began sketching soft and squishy silhouettes, aiming at creating a gentle character that was friendly to a younger demographic.

Figure posing using motion lines
The first characters that came to mind when experimenting with soft shapes

Moving on from ideation, I decided to try and take one of my characters a little further, and this is a little development of a skeleton design.

After some thought and expansion of this design, I felt like the character wasn’t quite kind enough, with the thin bony look being too harsh and perhaps a little too scary. I also felt it resembled the skeleton characters from the video game Undertale, and I wanted to get away from this.

Here is my exploration with a progression of this design, following a more ghost like idea.

Happy with these concept sketches, I decided to move on to digital work, to create a character sheet.

This is a finalised concept / character sheet of “Ghosty”, a soft ghost character with disembodied boots and little hand nubs. It’s main communication is though its eye shapes, as I think the character would not be able to talk or make noise. Therefore, its main expression will be in the form of movement; gestures, walking style and head tilts.

Here I have brought the two profiles of Ghosty from my character sheet into Maya to begin modelling.

Through modelling techniques learnt in class, I built a low poly Ghosty switching between poly and smooth mode, creating the sheet of their body, and the boots.

Though the image above shows the final low poly model, I actually had a few developments to bring me to this point. Initially I didn’t have any “gloves” for the character. In the original design I had planned to deform the sheet to give the impression of arms under the material, though decided against this due to complexity. I went with a “chunky space gloves” look, to match the large astronaut boots I had envisioned. Also, the original dimensions of the sheet and boots where a little too tall, and squishing it to be a little shorter improved the look a lot.

Here you can see the low poly gloves and boots on the right compared to the smooth view on left.

This is the finished mesh for Ghosty. I subdivided twice from the low poly, giving it the rounded smoothed look in the actual geometry. In the end I didn’t need to do any organic sculpting but I could have added this here.

Then I had to UV unwrap the mesh to create textures. Here you can see the UV for the sheet of the body and the final texture for it.

Here are the final images of Ghosty with my finished textures. I used an iPad Pro and a graphics tablet to create the textures, and used the .psd shader creator in the hypershade to be able to update the textures in photoshop and then see them update on the 3D model live in Maya. This can in useful for positioning details correctly such as the eyes, the lines on the boots and the markings on the gloves.

For the final renders, I gave the shaders a translucent appearance, so that things can be seen through Ghosty, making it more ghost like.

The next step to prepare for animating my character was to give it a skeleton. I used the quick rig to create guides and bones for the body, but in the end, I didn’t end up using the quick rig for skinning the mesh. I made the bones for the hands by hand and added them to the skeleton.

After going through many issues getting the skin to bind, and then getting it to work, then weight painting, I realised that a lot of the bones had strange rotations, and all of the bones were facing the wrong axis. I also had not created the bind pose in tpose, which was going to be an issue when it came to adding mocap data. All of this essentially meant I had to start all over again, and so I turned my model around and had to rebuild the skeleton, reskin and weight paint it. However, this was worth it (though getting to this point and then starting over took a long time). I ended up learning a lot a long the way, which improved the quality of the model a lot. Above is the final skeleton I made.

Here you can see the some of the issues I was having with my original skeleton and weight paint. The bind pose is in a neutral position, and really needs to be in apose or tpose for animating.

As my model has separate geometry, using the quick rig skinning didn’t work, and so I used the bind skin function, which has a lot of distance issues with my character in this pose. The hand bones were getting weights affecting the legs and body, and these were very difficult to remove.

You can also see there are a lot of bones with rotations that would cause unnatural motion when animated, for example in the arms and legs.

This is what the original skeleton and bind made the model look like when animated by some example mocap data. The weights were a total mess and the bones were not following the same movements as the mocap data.

For my revised skeleton, as I still had to use the bind skin function, so I used the component editor to fix the weight assignment. This was needed for the legs and body as they were affecting each other. Thankfully, the standard weights it assigned for the hands were actually perfect though.

Then I hand painted the weights for the body and legs and used a variety of techniques, while cross referencing the models behaviour when animated, to ensure it was moving correctly with the bones and not clipping. This whole process was very time consuming.

Here is the final model with the final corrected skeleton and weights. Getting to this point was a very time demanding process, but I am happy with how it turned out.

In order to animate the character with mocap data as we had intended in the project, I needed to create a character definition for the skeleton. Here you can see the beginning of this assignment and the beginning of the mocap data transfer. To animate Ghosty with mocap data I also needed to assign the bone definition to the skeleton of the mocap armature that imports. However, as I later learned, the animation requires having a matching rest post to your model, on the first frame, for the movements to be accurately matched.

This is what the model should have looked like with the example mocap data from earlier, however now, with the fixed skeleton and weights, the model accurately follows the mocap’s motion.

Eager to use mocap for this project, and with the lack of a functioning suit in school, I decided to again use my own mocap at home. This exploration ended up also being a very time consuming process. However, I am happy that I got to include this in the project somewhere, even if it is not in the final render. Above is a recording from inside Mocap Fusion, which uses consumer VR hardware to create mocap files, among other things. I used 10 point tracking, to capture feet, knee, waist, elbow, head and hand positions. I also used finger tracking to capture full finger motion. In the video the main view is what I saw in the VR headset, looking back at myself in a mirror. The view in the bottom right is a camera in the world, looking at myself from the outside.

As I later found out, this software is really aimed at game engines, and none of the file exports are easy to get into Maya.

Despite the fact that Mocap fusion only really exports files supported by game engines, such as .anim files for Unity, it could be possible to embed these animations to my model in Unity and export it as an .fbx to Maya. However, every time I tried this, it corrupted the animation, so I decided in the end to just demonstrate the mocap working on my model which I brought into Unity, and use a stock animation file from Mixamo for the Maya render.

To prepare my model for the Maya render, I needed to find a good animation. I used a slow walk that I edited with the Mixamo built in gait effects, and brought this into Maya. However, as previously discussed, for mocap linking to another model, transferring the movements requires both models to have the same rest pose. All Mixamo files come without a rest pose. So when importing this, you have to get an identical skeleton in the correct rest post that you need, assign its bone definition, and then import the same skeleton with the desired animation over the top. This gives the skeleton the desired animation to copy to your model, and the correct rest pose so that the motions are accurately copied. Eventually I worked this all out with the help of some tutorials online, and I got my model to follow the motions of the walk animation I had chosen.

In the end I also baked the animation into the skeleton / control rig of Ghosty, so that the project runs without the original mocap data being needed.

Here you can see the graveyard scene I found online, that I picked for the setting for my character. I thought the low poly look matched the look of my character and it seemed a suitable setting.

Here I created a motion path and a camera and aiming system, to animate the camera to give a little motion to the render. I decided to have a simple walking animation for the render, so I had the camera move towards the character as they walk forwards and past.

Using two panels, I checked that the camera view was suitable, to make sure I was happy with the composition and motion for the final render.

I also added a skydome that gave the scene a dusk / dawn atmosphere, to give it a light but still eery feel. I added an area light to give a little ambient lighting in another colour, to add a little more depth to the scene.

As the final render is too large to upload into the blog, I have included the first and last frame from the render. I ensured to match the frame rate of the animation on the character, the frame rate of the scene and the frame rate of the render, and in end I used 24fps. The animation was only five seconds long, which at 24fps and 1080p at a reasonable render quality, was around 100 frames, and took 3 hours to render. I then used media encoder to compile the frames to a video, and I had to really adjust the encoding settings to get a decent video quality out. I think this is because the scene is very dark and the encoder struggles with bitrate and quality with the darkness. However, I eventually got a really nice video of the render, and I am really pleased with the result.

I am really really happy with what I produced for this project. I put a lot of work into my character and outcomes, and though it is not very complicated (or at least it doesn’t seem so on paper), it was a huge effort to get it all to work. I encountered numerous issues and setback, had to trouble fix an immense number of things that through curve balls at my plans and ultimately spent a lot of time on things that shouldn’t have taken so long, but I suppose, that’s what learning is all about, and I really enjoyed it!

Looking back at my plans at the early development of the character, there were a few things I wanted to include that I didn’t have time for, or the skill or knowledge to put together in time.

I wanted to have the body of the character simulated as cloth, so that it would hang down as though over someone’s head. This wouldn’t have been a hugely complicated thing to implement, but it’s something I don’t know how to do, and didn’t have the time to learn. I am still happy with the way the body turned out in the animation as it still conveys the idea I imagined.

I also wanted to animate the eyes of the character using 2D images, with a variety of different eye drawings and set keys, to hand animate the expressions changing. I did actually start this process, but ran out of time to fully implement and animate it, so instead picked a fixed expression and put this onto the body texture for the final render.

I would like to work out how to get my mocap data into Maya in the future, as I really wanted to make my own mocap for this animation. However, I am happy that I still got to include it in the project. If I could have gotten my mocap into Maya within good time, I would have definitely gone for a longer and more ambition animation as well, but I think the walk animation I used in the end shows off the project well, despite being quite short. In fact, at the end of the project, the night before submission, I tried bringing mocap data into the project in a way which nearly broke my character irreversibly and could have meant needing to spend a lot of time fixing things. However, the damage was not actually apparent in the render, so I fixed everything as best I could and made sure to just stick with the stock animation, and get a render out before I broke anything else.

If I had had more time, I would have liked to have got more creative with the scene, to have included more hand made elements and more animated parts. Despite this, I think the scene I created works well with the character and looks good in the render.

As an accompanying piece, I would’ve like to have 3D printed my character to have a real world model, which would be really cool. I may still do this, even if it didn’t make it into the project.

As I final accompanying idea, I wanted to also try and import my model into something like VRChat so that I can wear my model in VR, which would have been really cool too. Also, I will probably still do this, but I would have liked to have got it into the project.

Overall, I am really pleased with the outcome and quite proud of myself, especially considering all the issues I had along the way. It’s been a really valuable project and I hope to expand on it more.