After announcing Cutexture, Packt Publishing asked me to review their new book “Ogre 3D 1.7 Beginner’s Guide” by Felix Kerger which I would now like to review in this post. The book is structured into nine chapters, aiming to cover everything from installing Ogre, managing 3D scenes, models, materials and animations to an overview of third party Ogre extensions. It is targeted at 3D programming novices who have already got some C++ development experience and who are keen on creating a 3D application or game.
All 3D programming techniques in the book are introduced by Kerger with the statement of a programming goal and detailed instructions to achieve this goal, generally by requesting the reader to make specific program code changes. Subsequent “What just happened?” sections then explain all steps and results in detail. I like this approach because seeing results early on lets readers stay curious about experimenting further and the book’s “Pop quiz” features, where readers are asked to reach some additional goals by themselves without further instructions, tie right into this. Quiz answers are then provided at the book’s end and each technique section closes with a review of what was covered and what readers should have learned.
Although “Learn by doing: less theory, more results” is one of the book’s taglines, I found that it actually provides well written introductions to the theory behind several 3D graphics techniques as well. For anyone with a more than passing interest in 3D applications or games there is no way around these fundamentals, so becoming familiar with them early on can only be beneficial. For complex topics such as shadow calculations the author goes even further by providing pointers to more in-depth literature. I find such background information very important because it helps in understanding the “broader picture” of a field and therefore in becoming a better programmer.
For an introductory book, many essential areas needed to create basic 3D applications and games are equally covered very well. Some sections even go beyond that to an intermediate level, for example the discussion of geometry optimization techniques for faster rendering.
However, if the book’s goal really is to enable readers to “Create real-time 3D applications using Ogre 3D from scratch”, then I must also point out two bigger omissions: The first one is that “main loops” or application loops are discussed only very briefly and without any of the background information found in early chapters of the book. These loops play an essential role in tying all parts of non-trivial real-time applications together and should be treated in much more detail. As a recommendation, I would say “Game Engine Architecture” by Jason Gregory is an excellent and detailed treatment of this topic which more than fills this gap.
The second omission in “Ogre 3D 1.7 Beginner’s Guide” is in the area of User Interfaces. Ogre comes with no good default User Interface support built in, but at the same time, virtually all interactive applications require a User Interface of some sort. Consequetially, introducing readers to this area would have been very important to help them make the best out of what Ogre has to offer. (In fact, the lack of a good, well-integrated User Interface framework was one reason for me to publish Cutexture.) In my view, the author should have left out the entire chapter on particle systems (they play only an unimportant role in most 3D applications) and have replaced it with one on User Interfaces in Ogre instead.
Other than that, I would have also liked to see an introduction to the concept of state machines as part of the chapter on animations, as these let a developer define – roughly speaking – in which order different animations can be played back in sequence (e.g. standing -> walking -> running, but not standing -> running).
Finally, a minor gripe with my PDF version of the book was that Internet links were not clickable even though chapter references were.
I find that “Ogre 3D 1.7 Beginner’s Guide” is still a very good beginner book despite its omissions. Those who have never before written a 3D application but have some C++ programming experience and understanding of Object-Oriented programming should find a lot of valuable hands-on and background information in it. The author also does not try to cover up that readers need to be willing to learn some mathematics and basic programming patterns to obtain their desired 3D programming results. In my eyes, this honest approach is the only way to truly help readers advance to an intermediate 3D programmer level and therefore makes it another reason for me to recommend this book, especially compared to the many other 3D introductory books which contain lots of examples but no substance.
For those interested in picking up “Ogre 3D 1.7 Beginner’s Guide”, I will be giving away a free PDF copy by courtesy of Packt Publishing. Simply comment below on which User Interface you have seen you would like to see working in Ogre or link to this review on Twitter. I will pick a winner by the end of the first week of February 2011.
Update: The giveaway is now over and the winner has received his copy. Thanks to everyone who participated.
I will use your contact information solely for the purpose of this give-away.