摘要: 3d模型经过世界坐标变换、相机坐标变换后,下一步需要投影变换。投影变换的目的就是要把相机空间转换到标准视图空间,在这个空间的坐标都是正规化的,也就是坐标范围都在[-1,1]之间,之所以转换到这个空间是为了后续操作更方便。 下面的讨论都是以列向量来表示,这样在变换操作时,采用的是矩阵左乘法,如果采用的是行向量的话,那就相反,矩阵右乘法即是向量在左边乘以变换矩阵。采用哪种表示并不影响结果,只需要把该种表示下得出的变换矩阵转置一下,就是采用另外一种表示模式需要的结果。 常见的投影有两种,正交投影和透视投影,正交投影相对来说更简单,所以先来看看正交投影。 最简单的正交变换矩阵 1 0 000... 阅读全文
posted @ 2014-01-04 20:45 qzzlw 阅读(19932) 评论(0) 推荐(0) 编辑
摘要: unity3d开发3d游戏,不可避免的要用到大量的模型、图片和其他资源。通吃一个游戏Apk包才几兆大小,但是资源却又几十兆上百兆,甚至几百兆。可以把apk单独发布,然后资源包单独拷贝到SD卡里面采用文件方式访问。但是这样操作比较麻烦。发布游戏如果采用这种方式,那受众可能接受不了。还有一种方式就是把资源包打包进APK包里面,这样发布的时候,用户只用安装一个Apk包就行了,但是这样带来的问题就是Apk包比较大。那么怎么样把资源包打包进APK包里面呢?其实很简单,只要在项目文件夹里面新建一个StreamingAssets文件夹,将要打包的各种资源文件放到该目录下面就可以了。这样资源就被打包进Apk. 阅读全文
posted @ 2013-03-29 11:25 qzzlw 阅读(9340) 评论(0) 推荐(0) 编辑
摘要: 1.1.1 精度和误差对任何一个数字表示系统,我们假想一个通用方程Rep(A),该函数返回最近进A的值,最理想的系统当然就是对所有的输入,Rep(A)=A.但是在计算机上面表示极短范围内,我们也不能完全正确表示所有范围内所有的实数。Rep方程是一个多对一的映射。无限多的实数A映射到一个确定的返回值。对一个确定的返回值来说,无限多的输入并不等于输出,也就是说,几乎对所有的实数, Rep(A)!=A.这种表是一种近似表示法。 利用(Rep(A)-A),我们可以推导出几种度量误差的值。绝对误差是最简单的表示方法,他被定义为|Rep(A)-A|,仅仅是表示表示值和实际值之间的在数轴上的距离。但是绝对误 阅读全文
posted @ 2013-03-27 13:55 qzzlw 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 想重新看一篇这本书,因为是英文版,所以想看的过程中把一些东西记录下来。所以就随便翻译了一下。先记录在这里吧。第一章 真实世界的计算机数字表示1.1 引言这章我们将讨论可能是构建3d图形管道最基础的东西:计算机如何表示数字,特别是实数。虽然一些3d程序员经常成功的使用计算机表示(近似)的实数,但是却没有理解是如何实现的,这经常会在应用程序开发过程中引起一些细微的错误和性能问题,一些大学计算机结构方面的书籍给出了整数的表示(比如c或者c++中的整形和无符号整形),但是却只是简单的介绍浮点数和其他非整形数的表示。因为3d数学都是与实数打交道,因此对在这个领域工作的人来说,理解计算机表示的实数的特征和 阅读全文
posted @ 2013-03-26 16:46 qzzlw 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 1 人们很少做不加对比的选择。2 多数人只有到了具体的情境里才知道自己真正想要的是什么。3 一切都是相对的,这就是关键所在。4 我们总是靠观察周围的事物以确定彼此的关系。5 诱饵效应,如果想突出某个更好,可以找一个相对差一点的一起呈现,通过对比,好的会让人觉得更好。6 我们有生以来就被比较所束缚。7 想要人们渴望做某件事,只要使做这件事的机会难以获得即可。 阅读全文
posted @ 2013-01-30 11:23 qzzlw 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 顶点从模型空间转换到世界坐标空间只需要乘以世界转换矩阵即可,但是顶点的法向量却不能通过直接乘以这个矩阵将其变换到世界空间。原因是世界矩阵不仅包含旋转,还有可能包含着缩放操作,如果模型被不成比例的缩放,在不同方向上会有不同程度的拉伸或者压缩,顶点的坐标会因而伸缩,但是如果对法向量进行同样的伸缩,那么变化后的法向量将不再垂直于对应的表面。因此对应没有缩放或等比缩放的世界转换矩阵,可以直接采用相同的转换矩阵作为法向量的变换矩阵。那对于有不等比缩放或者通用的法向量转换矩阵,该如何求取呢?假定采用行向量,假定一个通过原点的面的法向量为n,转换矩阵为m,面上面某点为p,则有(p-0)nt==0 即 pnt 阅读全文
posted @ 2012-10-23 22:01 qzzlw 阅读(3224) 评论(0) 推荐(0) 编辑
摘要: Essential Mathematics for Games and Interactive Applications终于看完了,不过后面几张只是初略的翻了一下,不过总算到尾页了,readed文件夹算是又多了一个新文件了,鼓励一下,接下来要看的一本书是 游戏编程中的人工智能技术 。 阅读全文
posted @ 2012-10-22 09:08 qzzlw 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 在3d世界中,我们需要不停的在各个空间里面转换坐标,比如把物体由模型空间转化到世界空间,把世界空间中的点转换到摄像机的视图空间。我们知道,坐标转换可以用向量与一个转换矩阵相乘来达到转换目的。但要注意的是如果选择的是行向量,则是矩阵放在右边相乘,如果是列向量,则需要把矩阵放在向量左边相乘。如果不考虑位移,则我们可以用一个3X3矩阵来表示旋转或者缩放操作。 如果我们用行向量来表示某个模型空间中的某个点p(px py pz),假设模型经过旋转后,新的轴在世界空间中表示为 r(表示左右轴),u(表示向上的轴)f(表示向前的轴),则旋转矩阵为 rx ry rz ux uy uzfx fy fzp与矩.. 阅读全文
posted @ 2012-09-13 20:26 qzzlw 阅读(8529) 评论(2) 推荐(0) 编辑
摘要: 5.5 四元数 最后一种方位表示可以用轴角表示的变种,实际上我们用他表示旋转的时候,也可以简化的从绕轴旋转的角度来看待这种表示法,这就是四元数,由爱尔兰数学家William Hamilton爵士与19世纪发明。并由Ken Shoemake在20世纪80年代引入计算机图形领域。四元数由四个数组成,并且没有万向锁的问题。并且在数学上面的连接操作非常简单。因此如果正确构造的话,它在旋转向量计算方面非常有效。 虽然任何一个四元数都可以用来表示旋转。但是我们主要使用的还是单位四元素。所谓的单位四元数即是w2+ v*v=1,其中w是向量分部,v是数量分部。使用单位四元数的理由有三个:一是使得旋转和转换计算 阅读全文
posted @ 2012-09-10 23:03 qzzlw 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 最近在看Essential Mathmatics for games and interactive application,在网上没有找到中文版,只能看英文版,如果有中文版的话,看起来进度会快很多,看英文版的话,进度就要慢一些。目前已经看到第五章了,如果有时间,看能不能边看边译吧。 阅读全文
posted @ 2012-09-05 23:19 qzzlw 阅读(195) 评论(0) 推荐(0) 编辑