The objective of this project was to create a random monster generator. The team was composed by 4 people and we used the game engine Unity to develop the project. The skeleton of the monster is the core for the animation, skin mesh and movement. This task was the priority for the team and was constantly improved during the development to achieve good appearance and movement for the monster. The skeleton for the arms, legs and body are composed by 5 spheres and the size of each sphere follows a defined pattern, called AnimationCurve in Unity; this function changes the size of the prefab by the values of the curve.
An user interface was created to allow the user create their own monster; they can go between the monster scene, where they can see their creation walking and behaving, and the lab scene, where they can modify the values of the arm, legs, body and head and create the monster again. The team agreed on create the user interface to not only create a random monster by the developer interface of Unity, but to offer a real experience to the user.
The user interface have 4 embryos model created and animated in Maya and imported to Unity, the user can interact with them by clicking the button “NEXT MODEL”, this button shows all the 4 models in order and change randomly the size values of the head, body, legs and arms. Originally it was proposed to use all 35 models with different number of limbs, heads and tails but this idea had to be discarded due to complex issues that involved export/import operation between Autodesk Maya and Unity3D
The monster move using inverse kinematics, this means that the movement of the monster is by ray casting. A ray is shoot to the ground by the foot sphere and it calculated the distance between the sphere and the floor giving the movement animation. To create a good animation every sphere of the leg have to have the correct weight and rotation limits. The arms animation follows a circular pattern around the father trunk. The mesh that wraps the skeleton is generated by marching cubes to identify each skeleton sphere and wrap all of them in a single mesh.