【Stage3D学习笔记续】真正的3D世界(一):透视矩阵
2014-11-28 14:26
344 查看
如果各位看官跟着我的学习笔记一路看过来的话,一定会吐槽我的,这都是什么3D啊?从头到尾整个都是在使用GPU绘制一堆2D图像而已,的确,之前我们一直使用正交矩阵利用GPU加速来实现2D世界的展示,算不上真3D,但是正是由于有了之前的学习我们实现真3D世界的学习才会更加轻松,下面的笔记就让我们真正的进入3D世界吧!
补充一下,我们的这部分学习笔记是基于《Adobe Flash 11 Stage3D(Molehill) 游戏编程初学者指南》一书的学习而来的。
赶快进入我们的主题,是否还记得之前的2D实现我们是通过一个名为正交矩阵的转换矩阵实现的,正交矩阵可以使3D空间忽略近大远小的规则,除了Starling中的专为2D设计的正交矩阵外,目前市面上的部分2D背景3D人物的页游也是使用了更加复杂的正交矩阵来实现。那么既然存在正交矩阵,是否存在另一种矩阵,可以实现更接近现实的近大远小的规则呢?当然存在,这就是我们的本章的主题也是实现真3D世界的核心基础——透视矩阵。
要理解和实现用于Stage3D的透视矩阵Adobe官网上有一篇不得不看的文章:Stage3D和透视投影的使用,透视矩阵的实现是比较复杂的,好在Adobe给我们提供了一个可以立即使用的类PerspectiveMatrix3D,可以在Adobe的文章中找到下载链接。
注意:我们后续的3D世界搭建都是基于Adobe提供的透视矩阵PerspectiveMatrix3D类。
和2D的实现类似的,我们也以绘制一个图片来开始,但不同的是我们这次绘制的图片是存在于3D世界中的一个没有厚度的面片,我们会让其进行随机旋转和移动,通过观察可以发现透视矩阵实现的真实3D世界。
下面先看Demo:
代码
代码中已经添加了详细的注释,下面我们看看和2D实现的一点区别:
我们使用了透视矩阵类PerspectiveMatrix3D,但用法与之前的正交矩阵一致,都是先进行初始化,然后添加到模型转换矩阵上;
新添加了摄像机矩阵_cameraMatrix的支持,用来模拟摄像机的位置;
除了上面2点不同之外,我们其实可以发现和之前的绘制2D图像的代码没有任何区别,最后,最重要的还是读一下Adobe提供的透视矩阵文章,弄明白透视矩阵是开始绘制真3D矩阵的基础。
补充一下,我们的这部分学习笔记是基于《Adobe Flash 11 Stage3D(Molehill) 游戏编程初学者指南》一书的学习而来的。
赶快进入我们的主题,是否还记得之前的2D实现我们是通过一个名为正交矩阵的转换矩阵实现的,正交矩阵可以使3D空间忽略近大远小的规则,除了Starling中的专为2D设计的正交矩阵外,目前市面上的部分2D背景3D人物的页游也是使用了更加复杂的正交矩阵来实现。那么既然存在正交矩阵,是否存在另一种矩阵,可以实现更接近现实的近大远小的规则呢?当然存在,这就是我们的本章的主题也是实现真3D世界的核心基础——透视矩阵。
要理解和实现用于Stage3D的透视矩阵Adobe官网上有一篇不得不看的文章:Stage3D和透视投影的使用,透视矩阵的实现是比较复杂的,好在Adobe给我们提供了一个可以立即使用的类PerspectiveMatrix3D,可以在Adobe的文章中找到下载链接。
注意:我们后续的3D世界搭建都是基于Adobe提供的透视矩阵PerspectiveMatrix3D类。
和2D的实现类似的,我们也以绘制一个图片来开始,但不同的是我们这次绘制的图片是存在于3D世界中的一个没有厚度的面片,我们会让其进行随机旋转和移动,通过观察可以发现透视矩阵实现的真实3D世界。
下面先看Demo:
代码
代码中已经添加了详细的注释,下面我们看看和2D实现的一点区别:
我们使用了透视矩阵类PerspectiveMatrix3D,但用法与之前的正交矩阵一致,都是先进行初始化,然后添加到模型转换矩阵上;
新添加了摄像机矩阵_cameraMatrix的支持,用来模拟摄像机的位置;
除了上面2点不同之外,我们其实可以发现和之前的绘制2D图像的代码没有任何区别,最后,最重要的还是读一下Adobe提供的透视矩阵文章,弄明白透视矩阵是开始绘制真3D矩阵的基础。
相关文章推荐
- 【Stage3D学习笔记续】真正的3D世界(五):粒子特效
- 【Stage3D学习笔记续】真正的3D世界(六):空间大战
- 【Stage3D学习笔记续】真正的3D世界(四):空间大战雏形
- 【Stage3D学习笔记续】真正的3D世界(三):纹理效果
- 【Stage3D学习笔记续】真正的3D世界(二):显示模型
- 【学习笔记】3D图形核心基础精炼版-5:stage3D实战-矩阵计算
- 【学习笔记】3D图形核心基础精炼版-6:stage3D实战-顶点
- 【学习笔记】3D图形核心基础精炼版-4:stage3D实战-环境搭建
- Away3D学习笔记2--3D世界的坐标系
- 【学习笔记】3D图形核心基础精炼版-9:stage3D实战-图片纹理
- 【学习笔记】3D图形核心基础精炼版-7:stage3D实战-范例工程1
- 【学习笔记】3D图形学:stage3D实战-延迟着色技术DeferredShading
- 【学习笔记】3D图形核心基础精炼版-11:stage3D实战-光照效果和范例工程3
- 【学习笔记】3D图形核心基础精炼版-8:stage3D实战-范例工程2
- Away3D学习笔记2--3D世界的坐标系
- 【J2me3D系列学习文章之二】(立即模式)构造我们3D世界中的第一个立方体!
- [Unity 3D] 物理引擎学习笔记(一)
- OpenGL学习笔记(5)3D基本概念
- OpenGl学习笔记3——屏幕坐标(2维)转化为世界坐标(3维)
- WPF 3D学习笔记