出版時間:2006-10 出版社:兵器工業(yè)出版社 作者:金禾工作室 頁數(shù):388
Tag標(biāo)簽:無
內(nèi)容概要
這是一本講述利用Visual C++ .NET進(jìn)行3D程序設(shè)計的專著。本書討論如何進(jìn)行基于DirectX的3D程序開發(fā)的基本思維、方法和具體過程。 全書分為10章,內(nèi)容包括基于DirectX和OpenGL的3D程序,貼圖與坐標(biāo)系,從2D到3D的過渡思維,鏡像貼圖與坐標(biāo)變換,3ds max模型加載與處理——引入光源、透明、反射、陰影等3D場景效果的VC .NET程序?qū)崿F(xiàn)。 本書完全針對初學(xué)者——無須具備程序語言基礎(chǔ),以師徒問答、思維引導(dǎo)方式學(xué)用、實(shí)踐結(jié)合,文字輕松、內(nèi)容淺顯并具啟發(fā)性。注重3D思維方法,適合3D程序設(shè)計愛好者、3D游戲開發(fā)者。 配套光盤內(nèi)容為書中部分實(shí)例的源代碼。
書籍目錄
第1章 第一個3D程序 1.1 3D空間初體驗 1.1.1 視窗 1.1.2 3D世界的坐標(biāo) 1.1.3 右手坐標(biāo)系 1.1.4 左手坐標(biāo)系 1.1.5 Direct3D和OpenGL 1.1.6 采用右手坐標(biāo)系的優(yōu)點(diǎn) 1.2 如何設(shè)定視窗的視野范圍 1.2.1 默認(rèn)值 1.2.2 系統(tǒng)變量 1.2.3 單位的意義 1.2.4 決定視窗與Camera的距離 1.2.5 決定視窗的大小 1.2.6 決定觀察的最遠(yuǎn)距離 1.3 創(chuàng)建第一個D3D程序 1.3.1 本書使用的軟件工具 1.3.2 安裝軟件注意事項 1.3.3 開始安裝DirectX 9 1.3.4 以EmptyProject建立D3D程序 1.4 D3D基本Framework解說 1.4.1 InitApp() 1.4.2 IsDeviceAcceptable() 1.4.3 ModifyDeviceSettings() 1.4.4 OnCreateDevice() 1.4.5 OnResetDevice() 1.4.6 OnFrameMove() 1.4.7 OnFrameRender() 1.4.8 OnLostDevice() 1.4.9 OnDestroyDevice() 1.5 在視窗中加入一個三角形 1.5.1 介紹3D中的數(shù)據(jù)項 1.5.2 準(zhǔn)備頂點(diǎn)信息 1.5.3 設(shè)定Material 1.5.4 著色狀態(tài)值的設(shè)定 1.5.5 將World Matrix初始化 1.5.6 View Matrix的設(shè)定 1.5.7 Projection Matrix的設(shè)定 1.5.8 建立光源 1.5.9 設(shè)定CullMode 1.5.10 轉(zhuǎn)動三角形 1.5.11 畫出三角形 1.5.12 釋放資源 1.6 D3D名詞解釋 1.6.1 什么是Device 1.6.2 CPU、3D顯卡與效能的關(guān)系 1.6.3 Buffer是一種內(nèi)存嗎 1.6.4 Vertex Buffer和Buffer有什么不同 1.6.5 3D中的顏色值——Color ValueRGBA 1.6.6 Normal Vector與Light Vector 1.6.7 Color Buffer是什么樣的內(nèi)存 1.6.8 Depth Buffer與Z Buffer 1.6.9 Full Screen是全屏幕嗎 第2章 加上貼圖效果 2.1 由三角形到正方形 2.1.1 正方形的組成 2.1.2 介紹Index Buffer 2.1.3 使用Index Buffer建立正方形 2.2 關(guān)于材質(zhì)與貼圖 2.2.1 什么是貼圖 2.2.2 認(rèn)識貼圖坐標(biāo) 2.2.3 其他貼圖方法 2.3 Texture技巧演練 2.3.1 建立Texture相關(guān)程序代碼 2.3.2 介紹SetTextureStageState()函數(shù) 2.3.3 D3D中Color值的運(yùn)算 2.3.4 Filter與貼圖的關(guān)系 第3章 從平面到立體 3.1 制作每個面都有貼圖的立方體 3.1.1 立方體共點(diǎn)時的貼圖問題 3.1.2 解決問題 3.2 打造一個六面不同貼圖的立方體 3.2.1 準(zhǔn)備Vertex Buffer 3.2.2 填入Vertex Data 3.2.3 準(zhǔn)備貼圖 第4章 貼圖效果的進(jìn)一步介紹 4.1 建立一片漂亮的地板 4.1.1 建立地板的準(zhǔn)備工作 4.1.2 著手建立地板的程序代碼 4.2 試試各種貼圖方法 4.2.1 Wrap(Repeat)貼圖法 4.2.2 Clamp貼圖法 4.2.3 Mirror貼圖法 4.3 改進(jìn)貼圖品質(zhì) 4.3.1 分辨率不足的問題 4.3.2 介紹MipMap貼圖取樣 4.3.3 MipMap與Filter貼圖取樣的比較 第5章 移形換位——坐標(biāo)變換 5.1 空間坐標(biāo)變換 5.1.1 3D空間中旋轉(zhuǎn)的基本概念 5.1.2 投影的坐標(biāo)變換(Projection) 5.1.3 位移的坐標(biāo)變換(Translation) 5.1.4 旋轉(zhuǎn)的坐標(biāo)變換(Rotation) 5.1.5 矩陣具有結(jié)合律 5.1.6 World Matrix 5.1.7 View Matrix 5.1.8 Projection Matrix 5.1.9 位移效果的矩陣函數(shù) 5.1.10 旋轉(zhuǎn)效果的矩陣函數(shù) 5.1.11 World Space與Object Space 5.1.12 矩陣相乘不具備交換律 5.2 給地板施定身法 5.2.1 找出畫地板前的World Matrix 5.2.2 聲明一個單位矩陣指定給地板 5.2.3 關(guān)閉PUREDEVICE 5.3 讓Camera自由走動 5.3.1 增加Camera移動的按鍵控制 5.3.2 聲明變量來儲存Camera的位置 5.3.3 使用矩陣函數(shù) 5.3.4 使用MatrixStack for Rotating Cube 5.3.5 使用MatrixStack for Camera并加上旋轉(zhuǎn)功能 5.3.6 如何讓Camera繞著自己的坐標(biāo)系旋轉(zhuǎn)和移動 第6章 模型加載介紹 6.1 用Vertex Buffer建立模型 6.1.1 建立墻面的Vertex Buffer 6.1.2 正式在OnFrameRender()里畫出墻面 6.1.3 在OnDestroyDevice()里釋放資源 6.1.4 修改Camera的位置及步伐 6.2 使用3ds max制作含Material的模型 6.2.1 在3ds max中加入轉(zhuǎn)文件程序 6.2.2 如何簡單制作模型 6.2.3 設(shè)定模型的Material 6.24 將模型Export出去 6.3 在場景中加載3ds max模型 6.3.1 把程序與s3d_model.lib做連結(jié) 6.3.2 在程序中加載含Material的模型 6.4 激活Specular效果 6.4.1 激活Specular的步驟 6.4.2 動手開啟Specular的光源設(shè)定 6.5 使用3ds max的Texture模型 6.5.1 如何在Max中設(shè)定模型Texture 6.5.2 將含Texture的模型加入場景第7章 激活光源效果 7.1 物體的受光原理 7.1.1 紅花為什么那樣紅 7.1.2 黑色頭發(fā)會反射黑光嗎 7.2 為3D世界建立光源 7.2.1 光源的種類 7.2.2 光源的位置與方向 7.2.3 如何激活光源效果 7.2.4 在場景中加入Point Light 7.2.5 在場景中標(biāo)記光源的位置 7.2.6 在場景中加入Spot Light 7.2.7 在場景中標(biāo)記光源的方向 7.3 制作迷人的舞臺燈光效果 7.3.1 讓燈光動起來 7.3.2 制作明暗不定的多彩燈光 7.3.3 讓Cube也動起來吧 7.4 頂點(diǎn)數(shù)與光源的關(guān)系 7.4.1 計算頂點(diǎn)的顏色 7.4.2 增加頂點(diǎn)數(shù)量來強(qiáng)化光源效果 7.4.3 動態(tài)調(diào)整地板頂點(diǎn)數(shù)量的小程序 7.4.4 動態(tài)地調(diào)整墻壁的頂點(diǎn)數(shù)量 7.4.5 增加光源開關(guān)的機(jī)制 第8章 若隱若現(xiàn)的透明效果 8.1 為透明作準(zhǔn)備 8.1.1 更新模型 8.1.2 使用Material填入Square的顏色 8.1.3 關(guān)于Color Operation的疑惑 8.1.4 使用Texture Factor填入Square的顏色 8.1.5 讓Cube動起來 8.1.6 再復(fù)制一個Cube 8.2 正式進(jìn)入透明的殿堂 8.2.1 透明的定義 8.2.2 設(shè)定透明的步驟 8.2.3 為Material Square透明化 8.2.4 為Texture Factor Square透明化 8.2.5 把Cube也一起透明化吧 8.2.6 Cull Face的設(shè)定 第9章 絢麗的鏡面反射效果 9.1 為反射效果做準(zhǔn)備 9.1.1 更換模型 9.1.2 整理OnFrameRender() 9.2 反射技巧第一步——地板透明化 9.2.1 復(fù)習(xí)透明的步驟 9.2.2 動態(tài)控制地板的透明度 9.3 反射技巧第二步——畫出反射對象 9.3.1 認(rèn)識Scale矩陣 9.3.2 利用Scale矩陣做出反射效果 9.3.3 改變反射對象的旋轉(zhuǎn)方向 9.3.4 畫出反射的Cube 9.3.5 探討畫出反射Cube失敗的原因 9.3.6 修正反射部分的光線 9.3.7 畫出其他反射對象 9.4 反射技巧第三步——Stencil Buffer 9.4.1 請Stencil Buffer登場 9.4.2 設(shè)定Stencil Buffer內(nèi)存 9.4.3 Clear Stencil Buffer 9.4.4 在Stencil Buffer里做記號 9.4.5 Stencil Test 9.4.6 將所有地板下的反射對象都藏起來吧 第10章 陰影效果 10.1 為陰影做準(zhǔn)備 10.1.1 更換模型 10.1.2 陰影的形成過程 10.2 為Cube畫出陰影 10.2.1 設(shè)定投影的變換矩陣 10.2.2 設(shè)定陰影的顏色及透明度 10.2.3 畫出Cube的陰影 10.3 陰影重疊的問題 10.3.1 畫出其他對象的陰影 10.3.2 發(fā)現(xiàn)陰影破碎的問題 10.4 解決陰影重疊問題 10.4.1 向硬件尋找可以使用Stencil Buffer功能組合 10.4.2 使用Stencil Buffer解決陰影破碎問題
編輯推薦
與2D圖形圖像畫面相比,3D畫面帶給玩家的是更具現(xiàn)實(shí)立體感的世界。于是乎,3D游戲成為主流,而人氣最旺的在線游戲,亦逐漸轉(zhuǎn)向3D化。由于3D程序概念之艱澀難懂,故而本書舍棄傳統(tǒng)程序設(shè)計書籍的論述方式,改為具有啟發(fā)性的對話過程。此對話方式,一來可以拉近作者與讀者之間的距離,讓讀者在閱讀上無心理負(fù)擔(dān),再者更可籍由啟發(fā)式的對話來加深讀者對3D程序設(shè)計的領(lǐng)悟。相信即便是相關(guān)領(lǐng)域的讀者,亦可籍由此書輕松踏入3D程序設(shè)計之門,進(jìn)而成為3D領(lǐng)域的佼佼者!
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載