圖書信息
出版社: 兵器工業出版社,北京希望電子出版社; 第1版 (2006年10月1日)
平裝: 388頁
開本: 16開
ISBN: 7801727118
條形碼: 9787801727114
尺寸: 25.8 x 18.6 x 2 cm
重量: 662 g
內容簡介
與2D圖形圖像畫面相比,3D畫面帶給玩家的是更具現實立體感的世界。於是乎,3D遊戲成為主流,而人氣最旺的線上遊戲,亦逐漸轉向3D化。由於3D程式概念之艱澀難懂,故而本書捨棄傳統程式設計書籍的論述方式,改為具有啟發性的對話過程。此對話方式,一來可以拉近作者與讀者之間的距離,讓讀者在閱讀上無心理負擔,再者更可籍由啟發式的對話來加深讀者對3D程式設計的領悟。相信即便是相關領域的讀者,亦可籍由此書輕鬆踏入3D程式設計之門,進而成為3D領域的佼佼者!
目錄
第1章 第一個3D程式
3D空間初體驗
視窗
3D世界的坐標
右手坐標系
左手坐標系
Direct3D和OpenGL
採用右手坐標系的優點
如何設定視窗的視野範圍
默認值
系統變數
單位的意義
決定視窗與Camera的距離
決定視窗的大小
決定觀察的最遠距離
創建第一個d3d程式
本書使用的軟體工具
安裝軟體注意事項
開始安裝DirectX
以EmptyProiect建立D3D程式
D3D基本Framework解說
InitApp()
IsDeviceAcceptable()
ModifyDeviceSettings()
OnCreateDevice()
OnResetDevice()
OnFrameMove()
OnFrameRender()
OnLostDevice()
OnDestroyDevice()
在視窗中加入一個三角形
介紹3D中的數據項
準備頂點信息
設定Material
著色狀態值的設定
將World Matrix初始化
View Matrix的設定
Pro{ection Matrix的設定
建立光源
設定CullMode
轉動三角形
畫出三角形
釋放資源
3D名詞解釋
什麼是Device
CPU、3D顯示卡與效能的關係
Buffer是一種記憶體嗎
VertexBuffer和Buffer
有什麼不同
3D中的顏色值——Color Value
RGBA
Normal Vector與Li#t Vector
Color Buffer是什麼樣的記憶體
DepthBuffel與ZBuffer
Full Screen是全螢幕幕嗎
第2章 加上貼圖效果
由三角形到正方形
正方形的組成
介紹Index Buffer
使用IndexBuffer建立正方形
關於材質與貼圖
什麼是貼圖
認識貼圖坐標
其他貼圖方法
Fexture技巧演練
建立Texture相關程式代碼
介紹SefrexntreStageState()函式
D3D中Color值的運算
Filter與貼圖的關係
第3章 從平面到立體
製作每個面都有貼圖的立方體
立方體共點時的貼圖問題
解決問題
打造一個六面不同貼圖的立方體
準備Vertex Buffer
填入Vertex Data
準備貼圖
第4章 貼圖效果的進一步介紹
建立一片漂亮的地板
建立地板的準備工作
著手建立地板的程式代碼
試試各種貼圖方法
Wrap(Repeat)貼圖法
Clamp貼圖法
Mirror‘貼圖法
改進貼圖品質
解析度不足的問題
介紹Mipmap貼圖取樣
MipMap與Filter貼圖
取樣的比較
第5章 移形換位——坐標變換
空間坐標變換
3D空間中旋轉的基本概念
投影的坐標變換(Proiection)
位移的坐標變換(Translation)
旋轉的坐標變換(Rotation)
矩陣具有結合律
World Matrix
View Matrix
Proiection Matrix
位移效果的矩陣函式
旋轉效果的矩陣函式
World Space與Object Space
矩陣相乘不具備交換律
給地板施定身法
找出畫地板前的World Matrix
聲明一個單位矩陣指定給地板
關閉PUREDEVICE
讓Camera自由走動
增加Camera移動的按鍵控制
聲明變數來儲存Camera的位置
使用矩陣函式
使用MatrixStack for Rotating Cube
使用MatrixStack for Camera
並加上旋轉功能
如何讓Camera繞著自己的坐標
旋轉和移動
第6章 模型載入介紹
用VertexBuffer建立模型
建立牆面的Vertex Buffer
正式在OnFrameRender()里
畫出牆面
在OnDestroyDevice()里
釋放資源
修改Camera的位置及步伐
使用3ds max製作含Material的模型
在ds max中加入轉檔案程式
如何簡單製作模型
設定模型的Material
將模型Export出去
在場景中載入3ds max模型
把程式與3sd modellib做連結
在程式中載入含Material的模型
激活Specular效果
激活Specular的步驟
動手開啟Specular的光源設定
使用3dsmax的Texture模型
如何在Max中設定模型Texture
將含Texture的模型加入場景
第7章 激活光源效果
物體的受光原理
紅花為什麼那樣紅
黑色頭髮會反射黑光嗎
為3D世界建立光源
光源的種類
光源的位置與方向
如何激活光源效果
在場景中加入Point Light
在場景中標記光源的位置
在場景中加入Spot Light
在場景中標記光源的方向
製作迷人的舞台燈光效果
讓燈光動起來
製作明暗不定的多彩燈光
讓Cube也動起來吧
頂點數與光源的關係
計算頂點的顏色
增加頂點數量來強化光源效果
動態調整地板頂點數量的
小程式
動態地調整牆壁的頂點數量
增加光源開關的機制
第8章 若隱若現的透明效果
為透明作準備
更新模型
使用Material填入Square的顏色
關於Color Operation的疑惑
使用Texture Factor 填入Square的顏色
讓Cube動起來
再複製一個Cube
正式進入透明的殿堂
透明的定義
設定透明的步驟
為Material Square透明化
為Texture Factor Square透明化
把Cube也一起透明化吧
Cull Face的設定
第9章 絢麗的鏡面反射效果
為反射效果做準備
更換模型
整理OnFrameRender()
反射技巧第一步——地板透明化
複習透明的步驟
動態控制地板的透明度
反射技巧第二步——畫出反射對象
認識Scale矩陣
利用Scale矩陣做出反射效果
改變反射對象的旋轉方向
畫出反射的Cube
探討畫出反射Cube失敗的原因
修正反射部分的光線
畫出其他反射對象
反射技巧第三步——stencil Buffer
請StencilBuffer登場
設定Stencil Buffer記憶體
Clear Stencil Buffer
在Stencil Buffer里做記號
Stencil Test
將所有地板下的反射對象
都藏起來吧
第10章 陰影效果
為陰影做準備
更換模型
陰影的形成過程
為Cube畫出陰影
設定投影的變換矩陣
設定陰影的顏色及透明度
畫出Cube的陰影
陰影重疊的問題
畫出其他對象的陰影
發現陰影破碎的問題
解決陰影重疊問題
向硬體尋找可以使用
StencilBuffer功能組合
使用Stencil Buffer解決陰影
破碎問題