3D Programming for Windows

Author: Charles Petzold 
Publisher: Microsoft Press, 2007
ISBN: 978-0735623941
Aimed at: Beginners needing a primer in 3D techniques
Rating: 2.5
Pros: Plenty of examples
Cons: Fails to motivate
Reviewed by: Mike James

This is a very conventional approach to explaining how to do 3D using WPF. It tends to use XAML rather than code to set up scenes even for animation but without the help of a drag-and-drop designer the separation into markup and code seems even more pointless. As you read through you can’t help but think “there must be a better way”. Why doesn’t Visual Studio support some 3D tools given it’s such an important feature of WPF? Until then we will have to slog through writing huge lists of object initialisation code in XAML before we get to the real business of coding. A second point that the book highlights is what are we to use WPF 3D for? Clearly it’s not for writing a 3D game because any serious effort in this area would be better off using DirectX and the range of tools that are available for the job. WPF 3D is probably  best described as “casual” 3D, its 3D for those of use who just want to drop a bit of 3D into our application as a logo, bar chart or visualisation. The book doesn’t really given any clear idea of what WPF 3D might be suitable for and this has to be seen as a failure on its part.

If you plan to use 3D then this book shows you lots of simple, but often long, examples (fortunately they can be downloaded from the website) and presents the basic ideas in a fairly dry style. It assumes that you know next to nothing about 3D and introduces all the ideas and maths that you need to get to grips with it – and yes you can’t really do 3D without mastering some reasonably advanced maths. There is the occasional comment that makes the effort of reading it worthwhile but if you already know some 3D, and particularly if you are familiar with DirectX, you don’t need this book except as a source of examples.

<Reviewed in VSJ>

Last Updated ( Saturday, 10 January 2009 )