OGRE 3D 1.7 Beginner’s Guide: book review & giveaway

Ogre 3D 1.7 - Beginner's Guide

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.

Conclusion

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.

Giveaway

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.

About these ads

8 thoughts on “OGRE 3D 1.7 Beginner’s Guide: book review & giveaway

  1. would be super nice to see an in-depth explanation on integration on any good GUI frameworks, though I’d prefer using Crazy Eddie’s GUI, as it’s highly regarded and quite widespread !

  2. Great review. :)
    I disagree with you that particles is a seldom used feature, though.
    Most games, if not all, relies heavily on particle effects, so it’s a very important topic.
    So, instead of one chapter, there should have been two! One for basic effects and one for advanced effects, like fog and volume lights. (Maybe). But leaving that topic out would have been a grave mistake, IMO. ;)
    I agree with you one the loop issue; that could have received more coverage, by the sound of it.
    User interfaces.. That one is difficult..
    There’s just so many choices: advanced, simple, based on Qt, Flash, HTML, …
    Maybe it was a good decision to leave it out.
    I trust that the GUI libraries have decent tutorials on how to integrate it.
    If that was in the book, then what about physics? And sound?
    Just a couple of thoughts, as I am yet to read the book.
    Hoping that I am lucky to be receiving the give-away. :D

  3. Pingback: Mirlixs thoughts

  4. libRocket look neat
    but QML in OGRE would be also interessting….mhm I choose QML.

    OT BTW: I looked into your Cutexture src code, in main.cpp use QScopedPointer and you can remove all deletes.

  5. UI seems to be an oft-neglected element of game design, yet it is important nonetheless. I’ll retweet your giveaway to give it some more exposure.

  6. @Suvash
    Thanks for the tip. I’ll check it out. Have you seen Qt’s new “QML” tool set? If not, check it out. I am not aware of any other UI toolkits which make creating fluent UIs that easy.

    @Hudson
    libRocket looks interesting. Thanks. I think the integration of web-technologies into “traditional” application frameworks makes a lot of sense as these areas will undoubtedly blur more and more in the future, so this framework seems to be on a good path. Hopefully they will improve their website though, I didn’t see the navigation at the bottom until my third visit *rolling eyes*

    @Jacmoe
    Regarding particles, I guess it is in the eye of the beholder. I see your point but as the book doesn’t target games specifically, I’d argue particles are not critical. Same goes for physics: while quite important in many types of games, it is not that critical in applications. For example, I’ve been recently working on an OpenGL-based air traffic management system and we certainly don’t need a physics simulation there – nature does that for us ;-)
    However, perhaps you have book suggestions which would cover these areas as a supplement to the Beginner’s Guide?

    @FrameFever
    Yes, QML looks very promising. I’m currently writing a small application in it to learn it. Also, thanks for the pointer tip. I will check it out.

    @IIW
    Thanks, appreciate the support.

  7. I said that if UI was going to be covered in a book about Ogre, then why not physics?
    And by that I meant that it doesn’t really belong in a book about Ogre3D.
    Simply because it doesn’t feature neither UI nor Physics. :)
    But that’s debatable.
    By the way: the poster IIW is a spammer.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s