Android 3D游戏开发技术详解与典型案例

本书详述Android平台3D游戏开发技术,涵盖OpenGLES基础、光照效果、纹理映射、坐标变换等核心技术,通过七个实战案例,如《疯狂投篮》、《旋转积木》等,引导读者深入理解3D游戏开发全过程。

下载地址
first编程学吧 android游戏开发
《Android3D游戏开发技术详解与典型案例》主要以Android平台下3D游戏的开发为主题,并结合真实的案例向读者详细介绍了OpenGL ES的基础 知识及3D游戏程序开发的整个流程。

全书分为两篇共22章,第一篇以简单易懂的实例为依托,详细介绍了 OpenGLES各方面的基础知识,第二篇则对7个真实案例的开发步骤进行了 详细的介绍,逐步向读者讲解Android3D游戏的真实开发过程,同时源代 码中还包含了详细的注释,以尽量帮助读者掌握代码中的每一个细节,尽 快掌握Android3D游戏开发。

本书的讲述由浅入深,从Android平台下3D游戏开发应用的基础知识到开发大型游戏程序,结构清晰、语言简洁,非常适合初学者和进阶开发者 阅读参考。

《Android3D游戏开发技术详解与典型案例》的讲述由浅入深,从Android平台下3D游戏开发应用的基础知识到开发大型游戏程序,结构清晰、语言简洁,非常适合初学者和进阶开发者阅读参考。本书由吴亚峰、苏 亚光著。
图书目录:
第一篇 必知必会的基础知识

第1章 英雄还看今朝——Android简介

1.1 群雄割据的手机市场

1.1.1  手机市场的两颗新星


1.1.2  手机操作系统的5大元老

1.2 Android的未来及特点

1.2.1  得中国市场者得天下


1.2.2  全新的概念带来全新的体验

1.3 Android开发环境的搭建

1.3.1  SDK的安装及环境配置


1.3.2  Eclipse集成开发环境的搭建


1.3.3  模拟器的创建和运行

1.4 第一个Android应用程序的开发

1.4.1  第一个Android程序


1.4.2  Android应用程序的调试

1.5 Android应用程序运行的内部机制

1.5.1  Android应用程序的项目结构


1.5.2  Android  应用程序的系统架构


1.5.3  Android  应用程序框架


1.5.4  Android  运行时


1.5.5  系统库


1.5.6  Linux内核

1.6 本章小结

第2章 数风流人物——当前流行游戏类型简介

2.1 AVG冒险游戏

2.1.1  游戏玩法


2.1.2  视觉效果


2.1.3  游戏设计

2.2 PZL益智类游戏

2.2.1  游戏玩法


2.2.2  视觉效果


2.2.3  游戏设计

2.3 ACT动作游戏

2.3.1  历代游戏介绍


2.3.2  未来动作游戏的发展

2.4 RPG角色扮演类游戏

2.4.1  历代游戏介绍


2.4.2  Android平台游戏移植

2.5 STG射击类游戏

2.5.1  游戏的分类


2.5.2  游戏的玩法


2.5.3  游戏设计

2.6 FPS第一人称视角射击游戏

2.6.1  游戏玩法


2.6.2  视觉效果


2.6.3  游戏设计

2.7 SLG策略游戏

2.7.1  游戏的玩法


2.7.2  视觉效果


2.7.3  游戏设计

2.8 SPT体育类游戏

2.8.1  游戏的玩法


2.8.2  视觉效果


2.8.3  游戏设计

2.9 本章小结

第3章 不积跬步,无以至千里—游戏开发基础知识

3.1 游戏中的声音

3.1.1  迅雷不及掩耳的即时音效


3.1.2  一个即时音效的例子


3.1.3  背景音乐播放技术


3.1.4  简单音乐播放器实现

3.2 手机中的数据库——SQLite

3.2.1  SQLite数据库简介


3.2.2  SQLite数据库的基本操作


3.2.3  SQLite操作数据库的简单应用

3.3 文件I/O

3.3.1  轻松访问SD卡


3.3.2  访问手机中的存储文件夹


3.3.3  读取assets中的文件

3.4 存储简单数据的利器——Preferences

3.4.1  Preferences简介


3.4.2  Preferences实现显示上次登录时间

3.5 SURFACEView在游戏中的使用

3.5.1  SurfaceView简单操作


3.5.2  简单动画场景的绘制

3.6 本章小结

第4章 千里之行,始于足下—3D开发基础知识

4.1 OpenGL ES 简介

4.1.1  师出名门的OpenGL  ES


4.1.2  三角形组成的世界


4.1.3  第一个OpenGL  ES三角形

4.2 不同的绘制方式

4.2.1  点和线的绘制


4.2.2  索引法绘制三角形


4.2.3  顶点法绘制三角形

4.3 不一样的投影,不一样的世界

4.3.1  正交投影


4.3.2  透视投影


4.3.3  两种投影的比较


4.3.4  近大远小的原理

4.4 本章小结

第5章 愿君多采撷,此物最相思——光照效果的开发

5.1 五彩缤纷的源泉——光源

5.1.1  光源的开启及关闭


5.1.2  设定光源的数量


5.1.3  定向光


5.1.4  定位光

5.2 光源的颜色

5.2.1  环境光


5.2.2  散射光


5.2.3  镜面反射光

5.3 材料反光属性的法官——法向量及材质

5.3.1  法向量的作用


5.3.2  光照的开启及关闭例子


5.3.3  物体的材质


5.3.4  设定光源数量的例子

5.4 两个物体发光的例子

5.4.1  定位光例子的实现


5.4.2  自发光物体加运动光源的实现


5.4.3  MySurfaceView.java详解

5.5 面法向量与点平均法向量

5.5.1  面法向量的应用


5.5.2  点平均法向量的应用

5.6 本章小结

第6章 为伊消得人憔悴—纹理映射

6.1 D世界的花衣——纹理贴图

6.1.1  指定纹理


6.1.2  分配纹理坐标


6.1.3  纹理贴图三角形的实现


6.1.4  纹理贴图球体的构建

6.2 使用纹理映射构建地月模型

6.2.1  浩瀚星空中的地月系


6.2.2  地月系的案例讲解

6.3 纹理拉伸

6.3.1  纹理拉伸的原理与用途


6.3.2  纹理拉伸案例讲解

6.4 纹理过滤

6.4.1  最近点采样


6.4.2  线性纹理过滤


6.4.3  mipmap:多重细节层

6.5 视角的合理设置

6.5.1  不同视角的3D世界


6.5.2  合理视角案例讲解

6.6 本章小结

第7章 海阔凭鱼跃,天高任鸟飞—3D基本形状的构建

7.1 圆柱体

7.1.1  圆柱体的几何方程


7.1.2  圆柱体的OpenGL  ES实现

7.2 圆锥体

7.2.1  圆锥体的几何方程


7.2.2  圆锥体的OpenGL  ES实现

7.3 圆环

7.3.1  圆环的几何方程


7.3.2  圆环的OpenGL  ES实现

7.4 抛物面

7.4.1  抛物面的几何方程


7.4.2  抛物面的OpenGL  ES实现

7.5 双曲面

7.5.1  双曲面的几何方程


7.5.2  双曲面的OpenGL  ES实现

7.6 螺旋面

7.6.1  螺旋面的几何方程


7.6.2  螺旋面的OpenGL  ES实现

7.7 本章小结

第8章 执子之手,与子偕老——坐标变换

8.1 理解坐标变换

8.1.1  坐标变换的实质


8.1.2  重要的堆栈操作

8.2 缩放变换

8.2.1  缩放变换原理分析


8.2.2  OpenGL  ES中的缩放变换实现

8.3 平移变换

8.3.1  平移变换理论概览


8.3.2  OpenGL  ES中的平移变换实现

8.4 旋转变换

8.4.1  旋转变换原理概述


8.4.2  OpenGL  ES中的旋转变换实现

8.5 复合变换的简单案例——地月系模型

8.6 用复合变换模拟现实世界

8.7 本章小结

第9章 孤帆远影碧空尽—摄像机与雾特效

9.1 摄像机

9.1.1  摄像机的简介


9.1.2  摄像机的设置

9.2 雾特效

9.2.1  雾特效的相关知识


9.2.2  雾特效核心代码

9.3 摄像机与雾特效实现沙漠中的金字塔

9.3.1  场景部件——四面体和太阳东升西落


9.3.2  场景部件——星空类


9.3.3  场景的创建


9.3.4  摄像机Up方向变换效果

9.4 本章小结

第10章 假作真时真亦假——混合

10.1 什么是混合

10.2 源因子和目标因子

10.2.1  源因子和目标因子的默认实现方式


10.2.2  预定义常量分析


10.2.3  常用的组合方式


10.2.4  启用混合

10.3 混合案例

10.3.1  一个混合的简单案例


10.3.2  带光晕和云层效果的地月系模型


10.3.3  滤光器中的世界

10.4 本章小结

第11章 蓦然回首,那人却在灯火阑珊处—3D高级技术

11.1 标志板

11.1.1  标志板技术概述


11.1.2  标志板的案例

11.2 飘扬的旗帜

11.2.1  旗帜飘动效果原理


11.2.2  飘扬旗帜案例讲解

11.3 山地的生成技术

11.3.1  灰度图地形技术概述


11.3.2  灰度图生成3D地形


11.3.3  地形场景效果的提升

11.4 镜像技术

11.4.1  镜像技术的简介


11.4.2  镜像技术的实现


11.4.3  镜像技术的提升

11.5 本章小结

第12章 心有灵犀一点通——传感器

12.1 传感器简介

12.1.1  磁场传感器简介


12.1.2  光传感器简介


12.1.3  距离传感器简介


12.1.4  加速度传感器简介


12.1.5  姿态传感器简介


12.1.6  SensorSimulator模拟器的配置

12.2 传感器的数据传输

12.2.1  加速传感器的数据传输


12.2.2  姿态传感器的数据传输

12.3 传感器实例——平衡球

12.4 本章小结

第13章 千锤万凿出深山——游戏中的数学与物理

13.1 必知必会的几何知识

13.1.1  三维笛卡儿坐标系


13.1.2  向量


13.1.3  加减法


13.1.4  向量的点积


13.1.5  向量的叉积


13.1.6  空间平面的确定

13.2 不可或缺的物理世界

13.2.1  重力系统


13.2.2  碰撞


13.2.3  完全弹性碰撞


13.2.4  带有能量损失的弹性碰撞


13.2.5  粒子系统

13.3 本章小结

第14章 山舞银蛇,原驰蜡象—AI基本理念

14.1 AI简介

14.1.1  什么是智能


14.1.2  什么是游戏AI

14.2 AI引擎的基本组成与设计

14.2.1  智能体


14.2.2  处理机与感知


14.2.3  导航

14.3 游戏AI中图的搜索

14.3.1  深度优先搜索


14.3.2  广度优先搜索


14.3.3  Dijkstra搜索


14.3.4  广度优先A*算法的实现


14.3.5  Dijkstra  A*算法的实现


14.3.6  A*与非A*算法之间的比较

14.4 模糊逻辑

14.4.1  普通集合


14.4.2  模糊集合


14.4.3  模糊语言变量


14.4.4  模糊规则

14.5 本章小结

第15章 独上高楼,望尽天涯路——开发小秘籍

15.1 地图设计器

15.1.1  不可或缺的地图设计器


15.1.2  简单的地图设计器

15.2 多键技术

15.2.1  增加游戏可玩度的多键技术


15.2.2  多键技术的实例演示

15.3 虚拟键盘

15.4 查找表技术

15.5 状态机

15.6 AABB边界框

15.6.1  AABB的表达方法


15.6.2  计算AABB


15.6.3  AABB与边界球的比较


15.6.4  球与球的碰撞


15.6.5  两个AABB的碰撞


15.6.6  球与AABB的碰撞

15.7 穿透效应

15.8 拾取技术

15.8.1  拾取技术的原理


15.8.2  拾取技术的实现

15.9 天空盒与天空穹

15.9.1  天空盒的介绍


15.9.2  天空穹的介绍

15.10 本章小结

第二篇 案例实战

第16章 体育类游戏—《疯狂投篮》

16.1 游戏的背景及功能概述

16.1.1  背景概述


16.1.2  功能简介

16.2 游戏的策划及准备工作

16.2.1  游戏的策划


16.2.2  Android平台下游戏的准备工作

16.3 游戏的架构

16.3.1  游戏中用到的主要技术


16.3.2  各类的简要介绍


16.3.3  游戏的框架简介

16.4 游戏公共类的设计与实现

16.4.1  主类BasketballActivity的实现


16.4.2  游戏常量类的介绍

16.5 游戏菜单界面类的设计与实现

16.5.1  游戏开始菜单的框架设计


16.5.2  游戏开始菜单的实现


16.5.3  游戏帮助、关于、加载及结束界面的设计与实现

16.6 游戏界面的设计与实现

16.6.1  游戏界面的框架设计


16.6.2  游戏界面的实现

16.7 游戏界面中主要场景的绘制及篮球运动

16.7.1  游戏中墙壁、地板、球和篮板等的绘制


16.7.2  篮板的整体绘制


16.7.3  篮球的运动实现

16.8 游戏界面的碰撞检测及物体拾取

16.8.1  篮球与篮框的碰撞检测


16.8.2  篮球与墙壁、地板和屋顶的碰撞检测


16.8.3  手机屏幕拾取技术

16.9 游戏的优化与改进

第17章 益智类游戏—《旋转积木》

17.1 游戏的背景及功能概述

17.1.1  背景概述


17.1.2  功能简介

17.2 游戏的策划及准备工作

17.2.1  游戏的策划


17.2.2  Android平台下游戏的准备工作

17.3 游戏的架构

17.3.1  游戏中用到的主要技术


17.3.2  各类的简要介绍


17.3.3  游戏的框架简介

17.4 地图设计器的开发

17.5 游戏公共类的设计与实现

17.5.1  主类MainActivity的实现


17.5.2  游戏常量类的介绍

17.6 游戏菜单界面类的设计与实现

17.6.1  游戏开始菜单的框架设计


17.6.2  游戏开始菜单的实现


17.6.3  游戏帮助、关于、设置及胜利界面的设计与实现

17.7 游戏界面的设计与实现

17.7.1  游戏界面的框架设计


17.7.2  游戏触控方法的实现


17.7.3  游戏界面的实现


17.7.4  生成纹理ID的方法

17.8 游戏界面中主要场景的绘制

17.8.1  游戏中背景、移表板、图标的绘制


17.8.2  地图的绘制


17.8.3  积木的绘制

17.9 游戏界面的动画效果

17.9.1  积木转动的动画效果


17.9.2  游戏失败、获胜的动画效果

17.10 游戏界面的碰撞检测

17.11 游戏的优化与改进

第18章 休闲类游戏—《摩天大楼》

18.1 游戏的背景及功能概述

18.1.1  背景概述


18.1.2  功能简介

18.2 游戏的策划及准备工作

18.2.1  游戏的策划


18.2.2  Android平台下游戏的准备工作

18.3 游戏的架构

18.3.1  游戏中用到的主要技术


18.3.2  各类的简要介绍


18.3.3  游戏的框架简介

18.4 游戏公共类的设计与实现

18.4.1  主类GL_Demo的实现


18.4.2  游戏常量类的介绍

18.5 游戏菜单界面类的设计与实现

18.5.1  游戏开始菜单的框架设计


18.5.2  游戏开始菜单的实现


18.5.3  游戏帮助、关于、设置、加载及胜利界面的设计与实现

18.6 游戏界面的设计与实现

18.6.1  游戏界面的框架设计


18.6.2  游戏界面的实现

18.7 游戏界面中主要场景的绘制

18.7.1  游戏中背景、地板、建筑块的绘制


18.7.2  树的绘制

18.8 游戏界面的碰撞检测

18.9 游戏的优化与改进

第19章 动作类游戏—《3D空战》

19.1 游戏的背景及功能概述

19.1.1  背景概述


19.1.2  功能简介

19.2 游戏的策划及准备工作

19.2.1  游戏的策划


19.2.2  Android平台下游戏的准备工作

19.3 游戏的架构

19.3.1  游戏中用到的主要技术


19.3.2  各类的简要介绍


19.3.3  游戏的框架简介

19.4 游戏公共类的设计与实现

19.4.1  主类GL_Demo的实现


19.4.2  游戏常量类的介绍

19.5 游戏菜单界面类的设计与实现

19.5.1  游戏菜单的框架设计


19.5.2  游戏菜单的实现


19.5.3  游戏帮助、关于、设置、加载及胜利界面的设计与实现

19.6 游戏界面的设计与实现

19.6.1  游戏界面的框架设计


19.6.2  游戏界面的实现

19.7 游戏界面中飞机的绘制

19.8 游戏中的运动线程和碰撞检测

19.9 游戏的优化与改进

第20章 桌面类游戏—《激情台球》

20.1 游戏的背景及功能概述

20.1.1  背景概述


20.1.2  功能简介

20.2 游戏的策划及准备工作

20.2.1  游戏的策划


20.2.2  Android平台下游戏的准备工作

20.3 游戏的架构

20.3.1  游戏中用到的主要技术


20.3.2  各类的简要介绍


20.3.3  游戏的框架简介

20.4 网络端的开发

20.4.1  服务器的简要介绍


20.4.2  服务器的代码介绍


20.4.3  客户端线程的代码介绍

20.5 游戏公共类的设计与实现

20.5.1  主类MyActivity的实现


20.5.2  游戏常量类的介绍

20.6 游戏菜单界面类的设计与实现

20.6.1  游戏开始菜单的框架设计


20.6.2  游戏菜单的动画实现


20.6.3  游戏帮助、关于、设置及胜利等界面的设计与实现

20.7 游戏界面的设计与实现

20.7.1  游戏界面的框架设计


20.7.2  游戏中onKeyDown方法的实现


20.7.3  游戏界面的实现

20.8 游戏界面中主要场景的绘制

20.8.1  仪表板、地板的绘制


20.8.2  台球桌的绘制


20.8.3  球的绘制

20.9 游戏中的碰撞检测

20.9.1  球与球台边角碰撞检测的原理


20.9.2  球与球碰撞检测的原理


20.9.3  球与球台边角碰撞检测的实现


20.9.4  球与球碰撞检测的实现


20.9.5  球运动线程的实现

20.10 游戏的优化与改进

第21章 射击类游戏—《抢滩登陆》

21.1 游戏的背景及功能概述

21.1.1  背景概述


21.1.2  功能简介

21.2 游戏的策划及准备工作

21.2.1  游戏的策划


21.2.2  Android平台下游戏的准备工作

21.3 游戏的架构

21.3.1  游戏中用到的主要技术


21.3.2  各类的简要介绍


21.3.3  游戏的框架简介

21.4 游戏公共类的设计与实现

21.4.1  主类Activity的实现


21.4.2  游戏常量类的介绍

21.5 游戏菜单界面类的设计与实现

21.5.1  游戏菜单界面的框架设计


21.5.2  游戏菜单界面的实现


21.5.3  游戏帮助、关于及结束界面的设计与实现

21.6 游戏界面的设计与实现

21.6.1  游戏界面的框架设计


21.6.2  游戏界面的实现

21.7 游戏界面中主要场景的绘制及实物运动

21.7.1  游戏中的绘制


21.7.2  灯塔的整体绘制


21.7.3  物体的运动实现

21.8 游戏中的碰撞检测

21.9 游戏的优化与改进

第22章 竞技类游戏—《乡村飙车》

22.1 游戏的背景及功能概述

22.1.1  背景概述


22.1.2  功能简介

22.2 游戏的策划及准备工作

22.2.1  游戏的策划


22.2.2  Android平台下游戏的准备工作

22.3 游戏的框架介绍

22.3.1  游戏中用到的主要技术


22.3.2  各类的简单介绍


22.3.3  游戏的框架介绍

22.4 游戏公共类的设计与实现

22.4.1  主类Activity_GL_Racing的实现


22.4.2  游戏常量类的介绍

22.5 游戏菜单类的设计与实现

22.5.1  游戏主菜单的设计与实现


22.5.2  游戏加载界面的设计与实现


22.5.3  游戏历史界面的设计与实现


22.5.4  游戏帮助、设置、关于、选择等界面的设计与实现

22.6 游戏界面的设计与实现

22.6.1  游戏界面的框架设计


22.6.2  游戏界面的实现


22.6.3  传感器应用与多点触控技术

22.7 游戏界面中主要场景的绘制

22.7.1  游戏界面中场景的分层绘制及渲染优化


22.7.2  游戏界面中地图赛道的生成与绘制


22.7.3  场景部件的绘制


22.7.4  游戏中汽车的加载


22.7.5  游戏中树的绘制技术


22.7.6  场景中游戏辅助部件的绘制

22.8 游戏中的碰撞检测及行驶圈数判定

22.8.1  汽车与公路部件的碰撞检测


22.8.2  汽车行驶圈数判定


22.8.3  汽车与可碰撞部件的碰撞检测及其动画实现

22.9 游戏的优化与改进

第1章 新一代的王者——android概览 1 1.1 智能手机市场现状 1 1.1.1 五大智能手机操作系统 1 1.1.2 智能手机市场的新星 2 1.2 android平台的特点及未来的趋势 3 1.2.1 全新理念带来的体验风暴 3 1.2.2 中国手机市场的主导性作用 4 1.2.3 手机3d游戏和应用增长迅速 4 1.3 如何搭建android开发环境 4 1.3.1 sdk的安装及环境配置 5 1.3.2 eclipse集成开发环境的搭建 7 1.3.3 创建并启动模拟器 9 1.4 hello android应用程序的开发 11 1.4.1 第一个android应用程序 12 1.4.2 android应用程序的项目结构 14 1.4.3 android应用程序的调试 16 1.4.4 实际设备的联机调试 18 1.5 android应用程序运行的机制 19 1.5.1 应用程序的系统架构 19 .1.5.2 应用程序框架 20 1.5.3 android运行时 20 1.5.4 系统库 21 1.5.5 底层linux内核 21 1.6 本章小结 22 第2章 游戏开发相关android基础知识 23 2.1 游戏中的音效 23 2.1.1 游戏中的即时音效 23 2.1.2 即时音效的一个案例 24 2.1.3 背景音乐播放技术 27 2.1.4 简易音乐播放器的实现 29 2.2 简单数据的存储——preferences 33 2.2.1 preferences简介 33 2.2.2 preferences实现访问时间的记录 33 2.3 手机自带数据库——sqlite 34 2.3.1 初识sqlite 35 2.3.2 sqlite数据库的基本操作 35 2.3.3 sqlite数据库的简单案例 37 2.3.4 使用contentprovider组件共享数据 40 2.3.5 使用contentresolver获取分享数据 42 2.4 文件i/o 43 2.4.1 访问sd卡中的文件 44 2.4.2 访问手机中的文件夹 46 2.4.3 读取assets文件夹下的内容 48 2.5 2d动画的开发 50 2.5.1 surfaceview用法简介 50 2.5.2 使用surfaceview实现2d动画 50 2.6 socket网络通信 56 2.6.1 socket开发基本知识 56 2.6.2 服务器端 57 2.6.3 客户端 58 2.7 蓝牙通信 59 2.7.1 蓝牙通信的基本知识 60 2.7.2 聊天案例概览 60 2.7.3 聊天案例的开发过程 62 2.8 本章小结 75 第3章 初识opengl es 2.0 77 3.1 opengl es 2.0概览 77 3.1.1 opengl es 2.0简介 77 3.1.2 初识opengl es 2.0应用程序 80 3.2 着色器渲染管线 89 3.2.1 opengl es 1.x的渲染管线 89 3.2.2 opengl es 2.0的渲染管线 94 3.2.3 opengl es中立体物体的构建 97 3.3 主流android手机gpu大pk 98 3.3.1 手机gpu四大家族对比 99 3.3.2 主流gpu的性能参数比较 103 3.4 本章小结 104 第4章 着色语言shading language 105 4.1 着色语言概述 105 4.2 着色语言基础 106 4.2.1 数据类型概述 106 4.2.2 数据类型的基本使用 110 4.2.3 运算符 112 4.2.4 类型转换 114 4.2.5 限定符 115 4.2.6 流程控制 119 4.2.7 函数的声明使用 121 4.2.8 片元着色器中浮点变量精度的指定 122 4.2.9 程序的基本结构 123 4.3 特殊的内建变量 123 4.3.1 顶点着色器中的内建变量 124 4.3.2 片元着色器中的内建变量 124 4.4 着色语言的内置函数 125 4.4.1 角度转换三角函数 126 4.4.2 指数函数 127 4.4.3 常见函数 127 4.4.4 几何函数 130 4.4.5 矩阵函数 132 4.4.6 向量关系函数 133 4.4.7 纹理采样函数 134 4.4.8 微分函数 135 4.5 本章小结 135 第5章 投影及各种变换 136 5.1 摄像机的设置 136 5.2 两种投影方式 137 5.2.1 正交投影 137 5.2.2 透视投影 145 5.3 各种变换 148 5.3.1 基本变换的相关数知识 148 5.3.2 平移变换 148 5.3.3 旋转变换 152 5.3.4 缩放变换 153 5.3.5 基本变换的实质 155 5.4 绘制方式 156 5.4.1 各种绘制方式概览 156 5.4.2 点线段绘制方式 157 5.4.3 三角形条带扇面绘制方式 159 5.4.4 顶点法索引法 165 5.5 设置合理的视角 167 5.6 卷绕和背面剪裁 173 5.6.1 基本知识 173 5.6.2 一个简单的案例 174 5.7 本章小结 176 第6章 光照 177 6.1 曲面物体的构建 177 6.1.1 球体构建的基本原理 177 6.2.2 案例效果概览 178 6.2.3 开发步骤 179 6.2 基本光照效果 182 6.2.1 光照的基本模型 182 6.2.2 环境光 183 6.2.3 散射光 185 6.2.4 镜面光 190 6.2.5 三种光照通道的合成 194 6.3 定位光定向光 196 6.4 点法向量和面法向量 199 6.5 光照的每顶点计算每片元计算 202 6.6 本章小结 204 第7章 纹理映射 205 7.1 初识纹理映射 205 7.1.1 基本原理 205 7.1.2 纹理映射的简单案例 206 7.2 纹理拉伸 212 7.2.1 两种拉伸方式概览 212 7.2.2 不同拉伸方式的案例 214 7.3 纹理采样 217 7.3.1 纹理采样概述 217 7.3.2 最近点采样 218 7.3.3 线性纹理采样 219 7.3.4 minmag采样 220 7.3.5 不同纹理采样方式的案例 221 7.4 mipmap纹理技术 226 7.5 多重纹理过程纹理 227 7.5.1 案例概览 227 7.5.2 将2d纹理映射到球面上的策略 228 7.5.3 案例的场景结构 229 7.5.4 开发过程 230 7.6 本章小结 238 第8章 3d基本形状的构建 239 8.1 圆柱体 239 8.1.1 顶点原始位置的生成 239 8.1.2 案例的开发 241 8.2 圆锥体 244 8.2.1 顶点原始位置的生成 244 8.2.2 案例的开发 246 8.3 圆环体 248 8.3.1 顶点原始位置的生成 248 8.3.2 案例的开发 249 8.4 螺旋管 251 8.4.1 顶点原始位置的生成 252 8.4.2 案例的开发 252 8.5 几何球 253 8.5.1 顶点原始位置的生成 254 8.5.2 案例的开发 255 8.6 足球碳分子模型的搭建 262 8.6.1 搭建的基本原理 262 8.6.2 案例的开发 264 8.7 贝塞尔曲线及旋转面 270 8.7.1 三维旋转曲面的生成 270 8.7.2 贝塞尔曲线 270 8.7.3 bezier曲线生成工具 272 8.7.4 印度古典建筑场景的开发 274 8.8 本章小结 276 第9章 3d模型加载 277 9.1 obj模型文件概览 277 9.1.1 obj文件的格式 277 9.1.2 用3dmax设计3d模型 278 9.2 加载obj文件 279 9.2.1 加载仅有顶点坐标面数据的obj文件 279 9.2.2 加载后自动计算面法向量 283 9.2.3 加载后自动计算平均法向量 286 9.2.4 加载纹理坐标 289 9.3 本章小结 292 第10章 混合雾 293 10.1 混合技术 293 10.1.1 混合基本知识 293 10.1.2 源因子和目标因子 294 10.1.3 简单混合效果案例 295 10.2 地月系云层效果的实现 297 10.3 雾 300 10.3.1 雾的原理优势 300 10.3.2 雾的简单实现 301 10.4 本章小结 304 第11章 常用3d开发技巧 305 11.1 标志板 305 11.1.1 案例效果基本原理 305 11.1.2 开发步骤 306 11.2 灰度图地形 310 11.2.1 基本原理 311 11.2.2 普通灰度图地形 311 11.2.3 过程纹理地形 314 11.2.4 mipmap地形 317 11.3 天空盒天空穹 318 11.3.1 天空盒 318 11.3.2 天空穹 320 11.3.3 天空盒天空穹的使用技巧 321 11.4 镜像技术 322 11.4.1 镜像基本原理 322 11.4.2 基本效果案例 322 11.4.3 升级效果案例 325 11.5 动态文本输出 327 11.5.1 案例效果基本原理 327 11.5.2 具体开发步骤 328 11.6 非真实感绘制 330 11.6.1 案例效果基本原理 330 11.6.2 具体开发步骤 331 11.7 本章小结 332 第12章 几种剪裁测试 333 12.1 剪裁测试 333 12.1.1 基本原理核心代码 333 12.1.2 一个主次视角的简单案例 334 12.2 alpha测试 335 12.2.1 alpha测试基本原理 335 12.2.2 一个椭圆窗口的案例 335 12.3 模板测试 337 12.3.1 基本原理 337 12.3.2 一个简单的案例 340 12.4 任意剪裁平面 341 12.4.1 基本原理 341 12.4.2 茶壶被任意平面剪裁的案例 342 12.5 本章小结 344 第13章 顶点着色器的妙用 345 13.1 飘扬的旗帜 345 13.1.1 基本原理 345 13.1.2 开发步骤 346 13.2 扭动的软糖 349 13.2.1 基本原理 349 13.2.2 开发步骤 350 13.3 风吹椰林场景的开发 351 13.3.1 椰子树随风摇摆的基本原理 351 13.3.2 开发步骤 352 13.4 展翅飞翔的雄鹰 356 13.4.1 基本原理 356 13.4.2 开发步骤 357 13.5 二维扭曲 359 13.5.1 基本原理 359 13.5.2 开发步骤 360 13.6 opengl es 1.xopengl es 2.0实现方案的对比 363 13.7 本章小结 364 第14章 片元着色器的妙用 365 14.1 程序纹理技术 365 14.1.1 砖块着色器 365 14.1.2 沙滩球着色器 367 14.2 数字图像处理 368 14.2.1 卷积的基本知识 369 14.2.2 平滑过滤 369 14.2.3 边缘检测 371 14.2.4 锐化处理 372 14.2.5 浮雕效果 373 14.2.6 图像渐变 374 14.3 分形着色器 375 14.3.1 曼德布罗集简介 375 14.3.2 曼德布罗集着色器的实现 376 14.3.3 将曼德布罗集纹理应用到实际物体上 378 14.3.4 茱莉亚集着色器的实现 379 14.4 本章小结 380 第15章 真实光环境的模拟 381 15.1 投影贴图 381 15.1.1 案例效果基本原理 381 15.1.2 开发步骤 382 15.2 反射环境模拟 385 15.2.1 案例效果基本原理 385 15.2.2 开发步骤 386 15.3 折射环境模拟 388 15.3.1 案例效果基本原理 388 15.3.2 开发步骤 390 15.4 色散效果的模拟 391 15.4.1 案例效果基本原理 391 15.4.2 开发步骤 392 15.5 菲涅尔效果的模拟 393 15.5.1 案例效果基本原理 393 15.5.2 开发步骤 394 15.6 凹凸映射 395 15.6.1 案例效果基本原理 395 15.6.2 法向量纹理图的生成 396 15.6.3 案例的开发 399 15.7 平面阴影 404 15.7.1 案例效果基本原理 405 15.7.2 开发步骤 406 15.8 阴影映射 409 15.8.1 案例效果基本原理 409 15.8.2 距离纹理图的生成 411 15.8.3 阴影场景的绘制 417 15.9 光线跟踪 419 15.9.1 案例效果基本原理 419 15.9.2 开发步骤 423 15.10 本章小结 436 第16章 游戏开发中的物理 437 16.1 碰撞检测基本技术 437 16.1.1 aabb包围盒的基本原理 437 16.1.2 aabb包围盒的计算 438 16.1.3 aabb包围盒的碰撞检测 440 16.1.4 一个aabb包围盒的案例 442 16.1.5 旋转后的aabb包围盒 444 16.1.6 aabb包围盒的使用要点 448 16.1.7 obb包围盒 448 16.2 穿透效应 449 16.2.1 案例的运行效果基本原理 449 16.2.2 具体开发步骤 450 16.3 粒子系统 450 16.3.1 案例运行效果基本原理 451 16.3.2 cpu版案例的开发 452 16.3.3 gpu版案例开发步骤 453 16.4 弹簧质点模型 455 16.4.1 案例运行效果基本原理 455 16.4.2 具体开发步骤 457 16.5 本章小结 462 第17章 游戏的心脏——物理引擎 463 17.1 物理引擎很重要 463 17.1.1 什么是物理引擎 463 17.1.2 常见的物理引擎 463 17.2 jbullet物理引擎 466 17.2.1 基本的物理概念 466 17.2.2 jbullet中常用类的介绍 468 17.3 箱子相互碰撞的案例 475 17.3.1 案例运行效果及准备工作 476 17.3.2 案例的基本框架结构 476 17.3.3 常量类——constant 477 17.3.4 3d场景渲染类——mysurfaceview 478 17.3.5 水平地面——texfloor类 480 17.3.6 箱子——texcube类 481 17.4 复合碰撞形状的使用 483 17.4.1 案例运行效果 483 17.4.2 立方体圆柱复合形状——cubecylinder类 483 17.5 凹凸地形的案例 486 17.5.1 案例运行效果 486 17.5.2 地形类——landform 486 17.6 任意形状物体的碰撞 488 17.6.1 案例运行效果 488 17.6.2 加载物体类——loadedobjectvertexnormal 488 17.6.3 加载物体刚体类——loadrigidbody 490 17.7 铰链关节 491 17.7.1 铰链关节的基本知识 491 17.7.2 案例的运行效果 492 17.7.3 铰链关节旋转角速度的计算 493 17.7.4 3d界面渲染类——mysurfaceview 494 17.8 滑动关节 496 17.8.1 滑动关节的基本知识 496 17.8.2 案例效果图 497 17.8.3 3d界面渲染类——mysurfaceview 498 17.9 六自由度关节 502 17.9.1 六自由度关节的基本知识 502 17.9.2 案例的运行效果 503 17.9.3 人偶类——doll 503 17.9.4 拾取时采用的点对点关节 505 17.10 本章小结 509 第18章 传感器应用的开发 510 18.1 基本的开发流程 510 18.2 加速度传感器 512 18.2.1 加速度传感器简介 513 18.2.2 案例的开发 514 18.3 磁场传感器 514 18.3.1 磁场传感器简介 514 18.3.2 案例的开发 514 18.4 光传感器 516 18.4.1 光传感器简介 516 18.4.2 案例的开发 516 18.5 温度传感器 518 18.5.1 温度传感器简介 518 18.5.2 案例的开发 518 18.6 接近传感器 519 18.6.1 接近传感器简介 519 18.6.2 案例的开发 520 18.7 姿态传感器 521 18.7.1 姿态传感器简介 521 18.7.2 案例的开发 522 18.8 本章小结 528 第19章 游戏开发小贴士 529 19.1 3d拾取技术 529 19.1.1 案例效果基本原理 529 19.1.2 开发步骤 531 19.2 多点触控 537 19.2.1 案例效果基本原理 537 19.2.2 开发步骤 538 19.3 多键监听 541 19.3.1 案例效果基本原理 541 19.3.2 开发步骤 542 19.4 本章小结 544 第20章 bn赛艇 545 20.1 游戏背景及功能概述 545 20.1.1 背景概述 545 20.1.2 功能介绍 545 20.2 游戏的策划及准备工作 547 20.2.1 游戏的策划 547 20.2.2 android平台下游戏的准备工作 548 20.3 游戏的架构 552 20.3.1 各个类简要介绍 553 20.3.2 游戏框架简介 558 20.4 主控制类myactivity 559 20.5 2d界面相关类 563 20.5.1 欢迎界面类welcomeview 563 20.5.2 2d界面父类mysfview 565 20.5.3 主菜单类menuview 565 20.5.4 2d界面绘制类viewfordraw 566 20.5.5 数据库工具类dbutil 568 20.5.6 android系统版本对话框androidversiondialog 570 20.6 选船界面相关类 570 20.6.1 着色器管理类shadermanager 571 20.6.2 围墙类colorlightrect 571 20.6.3 选船房间类housefordraw 573 20.6.4 展台类displaystation 575 20.6.5 赛艇类boat 576 20.6.6 选船界面xcsurfaceview 576 20.7 游戏界面相关类 582 20.7.1 进度条类process 583 20.7.2 3d物体父类bndrawer 584 20.7.3 3d物体控制类tdobjectforcontrol 584 20.7.4 赛艇类boat 585 20.7.5 可碰撞物体父类kzbjdrawer 586 20.7.6 可碰撞物体控制类kzbjforcontr
本书共分两篇,第一篇介绍了Android 3D游戏开发的基础知识,主要对OpenGL ES的相关内容进行了介绍。   章 名主 要 内 容   第1章 英雄还看今朝—Android简介本章介绍了市场上主流的手机平台,同时也分析了未来手机平台的发展趋势及Android平台的前景   第2章 数风流人物—当前流行游戏类型简介本章以分类的方式简要地介绍了当前流行的游戏的玩法,游戏的视觉效果,游戏的设计及《仙剑》等著名游戏的历史   第3章 不积跬步,无以至千里—游戏开发基础知识本章初步介绍了游戏开发的基础知识   第4章 千里之行,始于足下—3D开发基础知识本章介绍了3D开发中的基础知识,包括OpenGL ES的介绍及OpenGL ES中绘制模型的原理,并通过点、线和三角形的绘制介绍了OpenGL ES中模型的几种绘制方式。最后介绍了3D场景中常用的两种投影方式,并通过例子比较了这两种投影的区别   第5章 愿君多采撷,此物最相思—光照效果的开发本章介绍了光照的基础知识,包括环境光、散射光及镜面光   第6章 为伊消得人憔悴——纹理映射本章主要介绍了纹理的基础知识,以及纹理的不同拉伸方式和纹理过滤高级技术,从绘制三角形开始到绘制地月系,可能会经历很长时间,但是这对以后的习是有帮助的   第7章 海阔凭鱼跃,天高任鸟飞—3D基本形状的构建在本章中介绍了圆柱体、圆锥体、圆环、抛物面、双曲面和螺旋面在OpenGL ES中的渲染方法。这些基本形状在3D世界中应用广泛,在构造一些复杂物体时,经常会运用这些基本形状来进行拼装组合   第8章 执子之手,子偕老—坐标变换本章介绍了坐标变换的应用。绘制3D场景的过程,主要是旋转和平移操作的组合,通过合理的堆栈操作,就比较容易绘制出所需的3D场景   第9章 孤帆远影碧空尽—摄像机雾特效在本章中,首先对摄像机及其配置做了介绍。摄像机在3D编程中至关重要,没有正确的配置,摄像机可能不能获得想要的场景效果。然后对雾特效做了具体介绍,应用雾特效可以使场景更加逼真,并且可以减少场景渲染量来提高性能   第10章 假作真时真亦假—混合本章主要为读者介绍了混合,从混合的背景知识到如何配置源因子和目标因子。在介绍源因子和目标因子的时候,向读者介绍了一些预定义常量和一些常用的组合方式,以及如何启用混合   第11章 蓦然回首,那人却在灯火阑珊处—3D高级技术本章主要为读者介绍了3D的一部分高级技术。每一项技术通过讲解其原理和案例,使读者对3D高级技术有一定的了解   第12章 心有灵犀一点通—传感器在本章中,向读者介绍了Android中传感器的相关知识。包括传感器的种类、配置,并且着重介绍了姿态传感器的应用   第13章 千锤万凿出深山—游戏中的数物理在本章中对3D游戏中可能会用到的数及物理知识进行了简单的介绍,这在3D游戏开发中是相当重要的。游戏中的核心算法,基本上都要用到数和物理知识。一款游戏的性能很大程度上取决于游戏设计的算法   第14章 山舞银蛇,原驰蜡象—AI基本理念本章主要介绍了AI、AI引擎的基本组成设计,以及游戏AI中图的搜索和模糊逻辑,其中游戏AI中图的搜索为本章的重点。在本章中详细介绍了5种算法的原理实现   第15章 独上高楼,望尽天涯路—开发小秘籍本章介绍了地图设计器、多键技术、虚拟键盘、查找表技术、状态机、AABB边界框、穿透效应、拾取技术,以及天空盒和天空穹在OpenGL ES中的应用 第二篇以7个比较大的案例来说明Android平台下3D游戏的开发流程,通过这7个案例的讲解,读者对3D游戏的开发将会有更深层次的理解。   章 名主 要 内 容   第16章 体育类游戏——《疯狂投篮》本章介绍了Android 3D游戏《疯狂投篮》的开发。通过该案例向读者介绍了在Android平台下进行3D游戏开发的相关知识和基本流程,并对游戏开发中的编程技巧进行了介绍,并主要介绍了篮球地面、墙面及篮框的碰撞检测及运动动画的实现方法   第17章 益智类游戏——《旋转积木》本章介绍了Android 3D游戏《旋转积木》的开发。主要介绍了积木旋转的不同状态的实现方法和地图设计器的应用   第18章 休闲类游戏——《摩天大楼》本章介绍了Android 3D游戏《摩天大楼》的开发。主要介绍了楼层楼层之间的衔接碰撞及掉落后翻转动画的实现   第19章 动作类游戏——《3D空战》本章介绍了Android 3D游戏《3D空战》的开发。主要介绍了飞机的构造方法和我方战机敌方战机的操控及动画实现   第20章 桌面类游戏——《激情台球》本章介绍了Android 3D游戏《激情台球》的开发。主要介绍了台球台球的碰撞检测实现、台球球桌的碰撞检测实现和进球的判定实现   第21章 射击类游戏——《抢滩登陆》本章介绍了Android 3D游戏《抢滩登陆》的开发。主要运用了灰度图生成技术并且主要介绍了坦克运动的实现方法及炮弹碰撞检测的实现   第22章 竞技类游戏——《乡村飙车》本章介绍了Android 3D游戏《乡村飙车》的开发。主要介绍了运用分层绘制和拼接绘制的策略进行场景的优化绘制,并且对场景部件进行了分类控制   本书面向的读者   本书的内容详细,且几乎涵盖了Android 3D游戏开发所有相关的技术,并向读者介绍了真实项目的开发流程,主要面向以下读者。   Android的初者   本书详细介绍了OpenGL ES的基础知识,并对Android 3D游戏程序的开发进行了介绍。作为一名Android的初者,通过本书的习可以快速全面地掌握Android 3D游戏开发的相关知识,稳健地步入Android 3D游戏开发人员的行列。   有一定Android基础且希望Android 3D游戏开发的读者   有一定Android基础的读者通过阅读本书的前半部分便可快速掌握OpenGL ES的基础知识,然后通过7个真实案例习迅速掌握Android平台下应用程序的开发。   在职的开发人员
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值