<Real Time 3D Terrain Engines Using C++ And DX9>
Chapter 1. Getting Started With DirectX 9.0 And D3DX
今天开始看Terrain了。匆匆的读完了Chapter 1。觉得Greg Snook挺有大师风范的。写东西简单易懂,又不乏幽默。第一章主要讲的就是3D里面的数学方法,但是却起了一个与内容不太相符的名字……
和Wolfgang F. Engel一样,Snook也是使用了DX Sample中的Application Framework来写Demo的。可能有些人觉得有点儿偷懒之嫌吧,更希望看到如LaMothe那样把包括Message Pump在内的所有的东西都写出来。不过我倒是觉得这样不错,可以让一个DX的新手直接就能接触到DX最核心的东西,其他的……慢慢再说。
Snook主张不要只用复杂的数学公式来说明问题,这个观点真是说到我心里面去了。看看现在的图形学的书,里面满眼的数学公式,各种符号眼花缭乱,看的人头疼。Snook说,只要在他书里面出现的数学公式,他都用自然语言描述清楚,这个真是太Perfect了。
书里还讲了为什么3D API用Left-Hand坐标系的原因,居然是因为Right-Hand的时候,Z变大却是和原点接近,这个不形象,晕倒。
比较精彩的地方是Dot Product。尤其是Snook说Dot Product可以算点到平面的距离。以前看Dot Product,也就是看看定义算了,从没想过这玩艺还能这么用,不错不错。
那个著名的“Gimbal Lock”还是看得我云里雾里的。我明白从数学推导上证明Gimbal Lock可以让一个特定的旋转丢失一个自由度,但是想象不出来,FT,空间想象能力太差了……
摘些有趣的句子:
[1] 当两个向量被规范化了以后,他们的范数就是1了。…… 公式里面只剩下了一些乘法、加法,和一个恶心的反余弦。
[2] 许多图形学的书, …… 也是使用行占优格式。…… 我们并不孤单。