本書主要介紹Cocos2D-X 3X以上版本使用的3D圖形學渲染技術,以及關于3D引擎的架構和模型加密等,全書共分12章,主要內容包括可編程流水線、OpenGL編程、矩陣變換算法、3D坐標系統、包圍盒算法、3D架構設計、3D特效、Shader渲染、3D模型渲染、引擎的濾鏡渲染、3D骨骼動畫、3D模型加密。本書重點介紹3D引擎架構設計、Shader渲染、3D特效、3D模型渲染算法及模型骨骼動畫。第12章介紹了3D模型加密算法,在游戲開發中對模型加密是必須要實現的。本書適合具備一定游戲開發經驗的初學者和具備3D項目開發經驗的游戲開發者閱讀。
當今,網絡游戲和VR虛擬現實得到了蓬勃發展,越來越多的IT從業者加入到這個行業中。在2D游戲開發領域,Cocos2D引擎已占據大半江山,而3D領域幾乎已被Unity全部占領,Cocos2D-X引擎在3D開發方面的投入明顯不足,到現在3D引擎版本也只是個半成品,配套的編輯器還沒有制作,如果想用它開發3D游戲,限制還是很大的。但Cocos2D最大的優勢是代碼開源,而且代碼量相對來說比較小,對于想學習3D游戲開發的愛好者來說是一個優勢。開發者可以在此基礎上進行功能擴展,實用性非常強。它不像UE4引擎那樣代碼量很大,初學者不易學習,而且在移動端包體非常大,這也是UE4引擎的一個劣勢,而Unity的包體相對Cocos2D包體也是比較大的,代碼不開源,所以Cocos2D引擎的3D模塊還是值得開發者學習和借鑒的。隨著時間的推移,Cocos2D中的3D模塊肯定會獨立于Cocos2D成為真正的3D引擎,因此開發者現在學習非常及時。
Cocos2D-X在2D領域的參考資料非常多,有針對性的書籍也很多,但是關于Cocos2D在3D開發方面的書籍市面上還沒有。本書并不是介紹Cocos2D的基礎知識以及安裝步驟的,而是針對Cocos2D中的3D模塊進行講解:包括GPU編程、3D模型、3D模型骨骼動畫、3D模型材質渲染、3D模型加密等核心技術。衡量3D引擎最重要的指標就是渲染,本書圍繞3D渲染進行講解,對學習3D游戲開發的從業人員非常有幫助。
很多以前從事2D游戲開發的人員也在轉向3D游戲開發,但是他們對3D的知識了解得比較少,經驗就更無從談起了。他們對學習3D知識非常渴望,就筆者的了解,他們也學習過許多關于3D方面知識的書,但是在技能方面提升不明顯,筆者曾經也迷茫,不知道該如何學習才能快速提高自己的技能。經過多年的研發積累,筆者通過編寫此書幫助初學者快速提升3D技能,借助Cocos2D中的3D模塊給想從事3D項目開發的人員介紹關于3D模塊的開發,書中知識點并沒有做到面面俱到,但都是最實用的技術,可以直接應用到項目開發中。
任何跨平臺3D引擎的渲染都是基于OpenGL庫實現的,它們的底層都是對OpenGL的封裝,通過對Cocos2D引擎中3D模塊的剖析,讓學習者更容易掌握3D渲染技術。尤其對于GPU編程,很多人對編寫Shader望而卻步,其實如果真正明白其實現原理,掌握起來并沒有想象的那么難。本書針對開發者所關心的3D問題逐一講解,用通俗的語言結合實際案例讓讀者真正明白3D渲染技術,本書在講解中會將圖形學算法運用到Shader編程中,最終實現非常絢麗的效果。
本書由姜雪偉著,參與本書編寫的還有張燕華、姜翠香、呂鳳珍、姜瑞慶、張曉賓、朱曉磊和張興華,在此一并表示感謝。
關于本書的代碼,讀者可以登錄華信教育資源網(http://www.hxedu.com.cn)免費注冊后再進行下載。
姜雪偉,碩士研究生,IT公司技術合伙人,資深圖形學開發者,從事IT行業12年以上,主要擅長3D圖形學渲染,客戶端架構,虛擬現實等技術,CSDN博客專家,已出版IT著作《手把手教你架構3D游戲引擎》電子工業出版社等書籍。
第1章 可編程流水線
1.1 GPU功能介紹
1.2 GPU編程語言
1.3 GPU編程案例
小結
第2章 OpenGL編程
2.1 OpenGL庫介紹
2.2 著色器介紹
2 3 OpenGL屬性
2.4 OpenGL案例
小結
第3章 矩陣變換算法
3.1 矩陣平移變換算法
3 .2 矩陣旋轉變換算法
3.3 矩陣縮放變換算法
小結
第4章 3D坐標系統
4.1 局部空間
4..2世界空間
4.3 觀察空間
4.4 裁剪空間
4.5 正交投影
4.6 透視投影
小結
第5章 包圍盒算法
5.1 OBB包圍盒算法
5.2 AABB包圍盒算法
小結
第6章 3D架構設計
6.1 3D框架組成
6.2 3D核心模塊
6.2.1 CCSkybox天空盒案例
6.2.2 CCFrustrum視景體案例
6.2.3 CCBundle3D數據加載
6.2.4 CCRay射線實現案例
6.2.5 CCSprite3D類的作用
6.2.6 CCAttachNode類實現換裝
6.2.7 CCMeshSkin網格蒙皮作用
6.2.8 CCSprite3DMaterial材質加載
小結
第7章 3D特效
7.1 3D特效組織架構
7.2 3D特效渲染
7.3 3D特效運行案例
小結
第8章 Shader渲染
8.1 Shader框架
8.2 GLProgram類功能
8.3 VertexIndexData類功能
8.4 MeshVertexIndexData類功能
8.5 VertexIndexBuffer類功能
8.6 Renderer渲染功能
8.7 TextureAtlas圖集功能
8.8 Technique技術實現
8.9 Pass通道處理
8.10 Material材質揭秘
8.11 Primitive類功能
8.12 RenderState類功能
8.13 Texture2D類實現
8.14 Shader加載案例
小結
第9章 3D模型渲染
9.1 3D模型介紹
9.2 3D模型加載
9.3 3D材質渲染
9.4 材質高光、法線渲染
9.5 材質反射渲染
9.6 模型渲染案例
小結
第10章 引擎的濾鏡渲染
10.1 Bloom渲染效果
10.2 Blur渲染效果
10.3 LensFlare鏡頭眩光
小結
第11章 3D骨骼動畫
11.1 3D骨骼動畫介紹
11.2 3D骨骼動畫制作規范
11.3 3D骨骼動畫加載案例
小結
第12章 3D模型加密
12.1 3D模型加密方式
12.2 3D模型加密代碼編寫
12.3 3D模型加密案例
小結