Last weekend I was working on the “Baker Animation Series” from http://cgcookie.com/blender/series/baker-animation-series/ to get some more insight how to do animations with blender. I worked through through parts 1 – 5 when I got distracted of making an animation myself. But see for yourself:
The basic idea for the “plot” was to have someone flying around until he realizes that someone is watching. He then stops flying and pretends as if nothing had happened.
I just finished a tutorial that I always wanted to do from blenderguru.com, called “how to make a realistic asteroid” made by Andrew Price. You can find it here: http://www.blenderguru.com/videos/how-to-make-a-realistic-asteroid And this is my result: I am very happy with the outcome and I learned a lot! Blender is absolutely amazing! The tutorial was a bit quick at some parts, but was also a very nice introduction to the compositor in blender. Just as a reference, here is the image without any compositing: and the actual compositor looks something like this: The final .blend file can be downloaded here: realasteroid.blend.zip
Just recently some people started again to sell re-branded versions of Blender for money. This is perfectly legal, as free software gives you even the freedom to sell it. However those people do it in a way that they try to make money off work they didn’t do. I don’t like that. All the money that is given to them is way better spent by donating to the Blender Foundation, which will improve Blender eventually. I highly doubt that those people intend to support Blender…
Here is a link to the official report at the Blender site: 3DMagix, 3DMagixPro, IllusionMage, scam
So far the comments I got for the beta of my Asteroids game were very pleasing. Most people liked it and played the game a couple of times right away. Also the difficulty was more challenging for most players than I expected (with a few exceptions of notorious hardcore gamers). But what makes me most happy is that no major issues or strange crashes were reported! Also the debian package I created in an updated worked and installed all required dependencies. Yesss!
In the mean time I tried to explore the possibilities on how to pimp up the graphics to allow 3D objects flying around. As I am using Blender from time to time I thought of creating a simple Asteroid and import that into my game. However finding a texture that I could use freely and therefore I looked for alternatives. I found a very nice tutorial at http://www.davidjarvis.ca/dave/blender/tutorial-21.shtml on how to create an asteroid by using Blender. The tutorial itself is for Blender 2.44, however I thought I use the chance to play around with the beta version of the new Blender 2.5.
What I really liked about the tutorial was the use of multiple materials to get the surface of the asteroid properly and asteroid like. This had also a very nice benefit as the texture gets created by the materials and I would not have to search for an appropriate (i.e. freely available) one.
Here is a rendered version of my asteroid:
Having finished the asteroid itself I only had to get it into my game. I chose to use the existing Wavefront OBJ format as they are easily exported from most 3D content creation tools and are easy to read. However instead of writing my own version of importer I chose to use the code that was made available under the MIT open-source license (Yay!) at http://www.dhpoware.com/demos/glObjViewer.html. With it I was able to display my first 3D asteroid:
Yes… that’s the way it looked. A little … flat. All the nice material was gone. It took me some time that I manually had to bake the texture on a UV map that I would then be able to apply on the model. The result is the much more pleasing following:
As the color map was baked with the lighting information that Blender had, the asteroid only looks nice from the direction of the light, however the back does not get any shading at all. I could have added some more lights to improve the color map, however I thought I would try some shading fu and use normal mapping.
To do normal mapping I would need two things: a shader code for the fragment and vertex buffer and a normal map of the asteroid. Luckily there is also some shader code available from http://www.dhpoware.com so I only had to do a normal map for the asteroid. But also the creation of the normal map was much less of a hassle than expected. You only need to bake the normals in tangent space in Blender and off you go:
In these final versions the asteroids only have one colored textures and all the different shades of gray only come from the normal map combined with the shader. Notice the rough surface and the craters which actually are on quite flat surfaces. The model itself is the same as in the first in-game picture.
And now? Well, the asteroids do look very nice and creating now different kinds of asteroids and a space ship should not be too hard. But a bigger question would be whether I want to do this huge change of style, as the current 2D version of my game already looks very nice in my opinion.
But I am convinced that I will not only make one game so I will still have plenty of opportunities to use the code…
Oh and here is the model both in form of the .blend file for Blender and the exported .obj file along with material file, texture and normal map:
It seems as if there haven’t been too many updates here lately. I’ve been quite distracted with studying and getting the simulation of multi body systems into my head. And by doing so I stumbled over a few quite amazing papers and dissertations that seem to cope pretty much everything you need to know for a fully fledged physics engine (assuming you have some spare time).
For example the dissertation of Brian Mirtich (which you should be able to download here or here) covers just about everything from advanced collision detection to collision response. Even the calculation of inertia tensors in 3D is contained and the appendix covers all the math basics such as quaternion arithmacy and a rigid body primer. The whole thing wheighs a bit over 250 pages and is freely available. It still requires a lot of math knowledge, but as a math major I hope I have enough knowledge.
The method he describes in his thesis is the so called impulse based simulation which is stated in contrast to analytical methods as they are used in David Baraffs papers (as far as I understand). Instead of trying to fulfill all constraints simultaneously, instead if a constraint is violated it applies an impulse to the constrained bodies so that the constraint stays fulfilled within the next integration time horizon.
A more recent version of Mirtich’ aproach can be found at the site of Jan Bender (www.impulse-based.de). He also wrote a dissertation over impulse based simulation (however in German) which has less math in it. The best is: his code is available under the zlib license! There is also a lot of documentation in English available, so go check it out!
Oh, and of course I have not just been doing multi body simulation stuff. I was playing around with Blender already for a while to have a nice visualization for my thesis. And I finally made a model for a character in a game I have been planning already for ages. Now I added a little movement to the model. Here you have it:
Be nice, she is a little older (and my first animation). You can get the full resolution version here.