Michael Mohan
The project for this module was a program to import and display an animated model from the Xbox Kinect (in real-time), using XNA and COLLADA. This project was developed along with 5 other students, and Apache Subversion was used in order to provide source code management. The source code for the project can be downloaded here.


















Goblin Model Importer
This project was developed using the agile methodology. As a group project developed with 5 other students, the development needed to be streamlined so that we could work together and communicate effectively in order to complete the required tasks within the limited amount of time provided. We used various techniques in order to carry out the agile methodology to the project. The development was split up into 2 sprints of 2 weeks each. The team agreed on times throughout the week to commit to work together in the project. Also, each day the team met in the morning for a scrum meeting. In the scrum meetings, each team member let the team know what they had worked on the day before and the progress they had made, what they planned to work on that day and any issues that were causing them trouble and holding them back. For each of the scrum meetings, one of the team acted as a scrum master. The scrum master was responsible for driving the meetings, resolving any issues that any of the team members were having and writing up the minutes for the meeting. This role was cycled through every 2 days so that each team member had experience being the scrum master during development. At the end of each of the sprints, the group had a sprint review to go over the things we felt we did well and the things we didn’t do well during the sprint. This allowed us to have a retrospective of the sprint and improve upon the previous sprint going into the next one.
In order for the team work on the requirements for the project, we created a backlog of tasks to complete, allowing team members to choose unassigned tasks based on priority to work on. During each scrum meeting, the members estimated the amount of time they thought it would take to finish the task they were currently working on. We used Apache Subversion as a source control management system, in the form of TortoiseSVN. This allowed each team member to work on the code base separately and integrate the code into the master branch at the end of the day. We also used a Hartmann-Orona spreadsheet to keep track of the features that were being worked on and the progress being made in the project. The team members kept the spreadsheet updated with the amount of time they had taken each day on the task they were working on and whether or not the task had been completed. The spreadsheet calculated a burn down chart of the progress each team member was making over time with the tasks. It also calculated a burn down chart of the tasks as a whole, showing the amount of work left to complete each day as well as the rate of completion of the tasks over time.
Another agile technique we used as a team during development was pair programming. We would pair up in groups of 2 to tackle features together, allowing us to aid each other in the development and improving team cohesion. The project itself was to import the skeleton, wireframe mesh, texture and animation data from an animated model and display it. The model data was supplied in the COLLADA format, and we needed to import it into XNA. We also needed to output relevant logs for the import process and to be able to toggle between the different types of visualisation for the model (i.e. skeleton, wireframe mesh, texture), and play, pause or stop the animation of the model. During the first sprint I worked mostly on the skeletal portion of the COLLADA importer. Once I had imported the skeletal data into XNA, I displayed the skeleton by drawing the nodes representing the joints of the model as cubes and the lines between the nodes as the bones. I also created the inputs to toggle the skeleton and the wireframe mesh on or off. In the second sprint I worked on getting the animation data from the COLLADA importer and trying to display it. When the animation has been displayed I created a stop button for the animation player to reset the animation. Then I began to work on the serialisation and deserialisation of the data from COLLADA. I also added acceptance tests for the tasks in the backlog to be able to verify that they were complete.