照常提出几个问题,希望通过阅读可以找到答案。
前提:所说的坐标系都是基于3维空间的3维坐标.
图中LOCAL SPACE又称为本地坐标系。描述物体本身的顶点坐标。
模型矩阵(Model Matrix)
通过矩阵相乘变换得来的。观察者矩阵(View Matrix)
通过矩阵相乘变换得来的。投影矩阵
来表示的。在这个画板上的图像才是可以用于显示的2d图像。投影矩阵(Projection Matrix)
通过矩阵相乘变换得来的。通过模型矩阵
,观察者矩阵(View Matrix)
,投影矩阵(Projection Matrix)
三步矩阵变换后最终确定该展示怎样的图像。要注意的是矩阵的计算时从右往左的所以:
result = 投影矩阵
* 观察者矩阵
* 模型矩阵
。
上面提到了投影矩阵,其实投影矩阵分为:正投影
,透视投影
,下面就投影方式做一个解释.
20181104204535641.png
视口
。以上图片都出自:_superhuihui-OpenGL中涉及到的矩阵变换
// 矩阵计算
m3dMatrixMultiply44(ModelViewMatrix(模型视图矩阵),ViewMatrix(观察者矩阵), ModelMatrix(模型矩阵));
//几何变换的管道
GLGeometryTransform transformPipeline;
transformPipeline.SetMatrixStacks(ModelViewMatrix(模型视图矩阵), ProjectionMatrix(投影矩阵));
//获得MVP
transformPipeline.GetModelViewProjectionMatrix()
MVP
数据时会使用这种方式,比较灵活。如果想要了解具体矩阵是如何计算的:3D数学 矩阵知识
在计算时会发现这种计算会导致物体唯一无法重置,为了解决这种问题OpenGL提出了矩阵栈
的概念。栈这个概念应该是很熟悉了吧!原则:先进后出
。
以上图片出自:凡几多
简单阐述一下过程:
压栈(PUSH操作)
一个单元矩阵,初始化之后本身已近就存在一个单元矩阵。通过Xcode来查看矩阵中的入内,需要变换为4行4列来看。
出栈(POP操作)
将开始提出的2个问题做一个简单回答:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有