Skeletal Animation (Rigging/Skinning)

April 30th, 2008

Right now, I’m working on an animation system for the XNA, which I will release its first version tomorrow. The first version of this system will come with some basic features, such as animation playback, animation speed and loop control, animation interpolation control and others. Also, I’m planning to add many more cool features to it in the next weeks. Before I release the animation system I decided to post an introduction about skeletal animation. I hope you enjoy it! =)

In the skeletal animation, each model is composed by one or more meshes and a skeleton. The model’s skeleton is a hierarchy of bones, in a n-tree like form, where each bone has a local configuration.

Skeleton Diagram

You can see by the picture above that the model’s skeleton looks like a very simplified human skeleton. If you consider that a bone can be translated, rotated or even scaled, its local configuration will be the combination of all these transformations. Note that I’m using the term “local configuration” here because the bone’s configuration is relative to its parent. Thus, if we translate or rotate any bone in the hierarchy all its children will be affected.

Skeleton Diagram 2

Now you may ask: why I need this skeleton, how can I use it? Ok. Every vertex of the model’s mesh is linked to one or more skeleton’s bones. In this way, any transformation applied over a bone can deform a model’s mesh. Therefore, if you rotate a character’s forearm bone the forearm of the model’s mesh will be rotate too.

Interesting, isn’t it? Now you may ask: Where can I create a skeleton? How can I link it to a mesh? There a lot of Digital Content Creation (DCC) Tools available that can handle this task, such as: 3D Studio Max, Maya, SoftImage XSI, MilkShape 3D and many others. If you are working with the XNA I would recommend you use Maya, 3D Studio Max. Another good option is the MilkShape 3D which has low price. Below is a picture of the marine model used in the XNA TPS and its skeleton.

Mesh Skeleton

The last thing we need to learn is how to store and play animations using skeletal animation. We already know that the model’s mesh is deformed according to the model’s skeleton, and that each skeleton’s bone stores its configuration (translation + rotation + scale). In this case, an animation can be stored as an array containing the new bone configuration and the time to set this new configuration. Finally, you can play an animation traversing the new bone configuration array and modifying the configuration of the skeleton’s bones over the time.

ESL Podcast

April 24th, 2008

One of my favorite podcasts is the ESL POD, which is a free english as a second language podcast. If you are not a native english speaker you will really enjoy this podcast!

In the ESL POD, a new podcast episode is released every monday, wednesday and friday. So you don’t need to worry, there is always a new episode waiting for you! And if you want to have access to the podcasts’ transcript and extra materials you can become an ESL podcast member for $10 bucks a month. I usually burn a CD with many ESL podcast episodes and keep listening them while driving! =D

Everytime, when Jeff McQuillan (the podcast host) starts a podcast he says: “I’m your host, Dr. Jeff McQuillan, coming to you from the Center for Educational Development in the beautiful city of Los Angeles …”. Taking advantage of this post and the fact that I always wanted to say the same, now it is my time!

My name is Bruno Evangelista, and I’m coming to you from the wonderful city of Belo Horizonte, MG. If you want to know more about BH City check the video below for some great pictures of the city, as well as local music.

Me on the News

April 22nd, 2008

After the XNA Challenge contest, the “Hoje em Dia” newspaper interviewed me and published an interesting article about the contest. You can read it in Portuguese below. Thanks for Amintas Neto who send me the picture!

Hoje em Dia Newspaper

Microsoft XNA Challenge 2008

April 15th, 2008

After the release of the XNA Game Studio in late 2006, every year Microsoft Brazil holds a competition called Microsoft XNA Challenge Brazil. In this competition, students are invited to create a game with XNA about a theme that is revealed when the competition begins. The competition lasts about two months and after that, all the submitted games are judge based on its production quality, fun factor, innovation and adherence to the theme. Then, the best 5 games are selected to the finals, where the author of each game is invited to present his work at Microsoft Brazil. At Microsoft the games are presented and judge by a group formed by people from Abragames (Brazilian Association of Game Developers), game companies, universities and magazines. And finally, the winner is announced. =D

It is the second time that I participate in the XNA Challenge and I can say that both times it was an amazing experience. This year the theme of the competition was the same theme of the Imagine Cup 2008: “Sustainable Environment”. And fortunately, I could reach the finals again. The five games that made it to the finals were:

Alice, the Parasites and the Book of Time – by Bruno Evangelista (UFMG)

Yeah, this is my game and I could put good graphics on it. In this game you play as Alice, who needs to destroy the parasites that are turning the humans into unsustainable humans.

Gariman – by Carolina Gomes (UNICAMP)
Gariman
In this game you play as a garbageman who needs to clean the city streets as fast as possible.

City Rain – by Guilherme Campos (UNESP)
City Rain
A mix of SimCity and Tetris where you construct your city with city blocks that fall on the screen.

Great Adventures of Ted – by José Lourenço (UNIVAP)
Ted
A game where you go to dungeons, collect crystals and defeat monsters to save the nature.

Recicle – by Vitor Antonioli (UNICAMP)
Recicle
A game where you collect the garbage that flows down a river, controlling up to four collectors at the same time.

And the Oscar goes to:

  1. Recicle
  2. City Rain
  3. Alice, the Parasites and the Book of Time

I didn’t need to mention that the winner of the XNA Challenge wins a travel to the “Microsoft Academic Days on Game Development in Computer Science Education” aboard the Celebrity Century Cruise Ship. Great prize, isn’t it?

Acamedic Cruise

SBGames 2007

March 24th, 2008

In this post I would like to talk about SBGames, the Brazillian Symposium of Computer Games and Digital Entertainment. SBGames is the main symposium of game development in Brazil (something like a game developer conference) and it’s now composed of four tracks: Computing, Art & Design, Industry and Game & Culture. Last year, we had SBGames 2007 (the VI edition of the symposium) which was held from November 7 to November 9 at UNISINOS (a university in the south region of Brazil).

SBGames 2007 was a great symposium despite some organization problems, and many exciting things happened there!!! SBGames 2007 had some great international speakers, like Soren Johnson from EA, Bruno Matzdorf, Mark Danks and Sarah Stocker from Sony Computer Entertainment America (SCEA), Licinio Roque from University of Coimbra and Nelson Zagalo from University of Minho. John Nordlinger from Microsoft was also schedule as a keynote speaker but he didn’t show up. It appears that he had problems to come to Brazil because he didn’t know he needs a visa to enter in Brazil… =(

One of the first keynotes in the symposium was Soren Johnson from EA. Soren was the lead designer of Civilization IV and he wrote whole AI of the game. In his presentation he talked a lot about the AI in Civilization IV, and how to make the AI fun but not necessary fair!

SBGames SBGames

The Sony presentation was entitled “Incubation of Developers in Latin America” and it was presented by Bruno Matzdorf (Developer Support Line Manager) and Mark Danks (Senior Manager, Curriculum Engineering). One interesting thing to note is that in past few years some Brazilian developers have tried become official Playstation developers but Sony didn’t approve any of them. So, developers thought that Sony was not interested in having or licensing any developer in Brazil. Is it changing now?

SBGames SBGames

I’ve also participated in the SBGames 2007 hosting a tutorial with my friend Alessandro Silva, and I also sent an XNA game to the independent games festival that took place inside the SBGames. The tutorial that I gave with Alessandro was entitled: “Creating photorealistic and non-photorealistic effects for games”. It was a fast tutorial because we had only an hour and a half but it was great!

SBGames SBGames

SBGames SBGames

Finally, every year SBGames has a festival of independent games, and last year they opened a new category for games made with XNA. I couldn’t miss that opportunity, so I sent the XNA Third-Person Shooter (TPS) game that I was working to the festival. Despite the XNA TPS game was unfinished it had some good looking graphics. xD

SBGames SBGames

The XNA TPS game finished the independent game festival in third place. This game was made by Me, Alessandro Silva and Carlos Augusto. The game also uses a free beast model from Psionic.

XNA TPS

September 18th, 2007

XNA TPS is a shooter demo made with XNA. This first version is simple, featuring a basic AI, physics system and some good graphics effects. I will post more information about this demo soon, you can check a YouTube video of the game below.

Detailed Surface Viewer

September 8th, 2007

Detailed Surface Viewer is a tool that allows the comparison of different techniques used to render virtual details on different types of surfaces. These techniques usually don’t increase the surface complexity but simulate the wrinkles and unevenness on the surface using maps, such as normal or height maps.

In this version of the tool there are many techniques implemented, such as: Normal Mapping, Offset Parallax Mapping, Relief Mapping, Parallax Occlusion Mapping, Cone Step Mapping, Multi-Layer Cone Step Mapping, Sphere Tracing, Displacement Mapping, and others. I’m planning to add the “quad-directional cone” and the “relaxed cone” techniques soon!

You can check a video of the tool below, you can find more about the Detailed Surface Viewer in the Projects section.

XNA and Game Market Lectures

May 21st, 2007

I’ve posted the slides of the lectures “Developing Games and Game Market” and “Creating Games for Xbox 360 and PCs using XNA” in the Publications section. Both lectures were presented at the CGGT 2007 and are in Portuguese.

You can check some pictures of the XNA lecture below.

Lecture Picture Lecture Picture
Lecture Picture Lecture Picture

Boid Simulation Video

May 13th, 2007

I’m creating a demo about boid simulation using XNA. The first version of this program was made for the Computer Graphics subject during my master course.

Now I want to improve the boids algorithm, clean the code and I expect to release this demo in some weeks! You can check some videos below:

First Microsoft XNA Challenge Brazil

February 7th, 2007

I’m very happy to say that I’ve participated of the first Microsoft XNA Challenge Brazil. I was one of the five finalists and finished the competition in second place. The competition was to create the best mod for the game Spacewar Evolved in almost 3 weeks.

Next week, I will post some pictures of the competition and the modified version of the game that I made. Below (in the left) is a picture of the five finalists of the competition, from the left to right: Jose Lúcio, Mairlo Luz (3rd place), Me (2nd place), Alexandre Lobão and André Furtado (1st place).

XNA Challenge 2007 Finalists XNA Challenge 2007 Awards