《Shader入门精要》中MVP变换的Projection矩阵与《GAMES101图形学入门》中的区别

game101的透视投影的投影矩阵是这样的
![在这里插入图片描述]( https://img-blog.csdnimg.cn/3adcaf78460545238144eeea8394ffe4.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_16,color_FFFFFF,t_70,g_se,x_16)
正交投影是这样的
在这里插入图片描述

而shader入门精要的透视投影矩阵是这样子
![在这里插入图片描述]( https://img-blog.csdnimg.cn/757836cab83c44139b1273ed9085bc25.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_14,color_FFFFFF,t_70,g_se,x_16)
正交投影矩阵是这样子
在这里插入图片描述
game101的透视投影是这样得到的
在这里插入图片描述
而正交投影的时候并没有假设中心点在面的中心
![在这里插入图片描述]( https://img-blog.csdnimg.cn/c4b37121fd9c4bbaac11fef991a159bb.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_18,color_FFFFFF,t_70,g_se,x_16)
所以区别在于正交投影的时候有没有进行一步位移操作。

可能引起误导的地方

书上投影矩阵这样表示
![在这里插入图片描述]( https://img-blog.csdnimg.cn/3fc4e5d7e86244fc85cfb006966c7e8b.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_20,color_FFFFFF,t_70,g_se,x_16)
101则是认为转换成了正方体,但其实他的w是z,所以按照书上的来看,他也还没有进行归一化。
矩阵最后一行的1乘上z就会导致w变为z。看推导过程也能知道
![在这里插入图片描述]( https://img-blog.csdnimg.cn/f82b1a8293cb4db786da4ddcb657f17e.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_18,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/db41ff906dcf43309d381df80f71c884.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_17,color_FFFFFF,t_70,g_se,x_16)
再来看入门精要。
![在这里插入图片描述]( https://img-blog.csdnimg.cn/53cd6823807e4a169416990ccb4b934e.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPcGln6aWy5YW75ZGY,size_20,color_FFFFFF,t_70,g_se,x_16)
除了w之后,就当成是一个正方体了。

结论

所以两个在不考虑位移的情况下转换的效果是一样的,都是转换相机坐标得到准备归一化但是还没有归一化的坐标!只是书上画了锥体,games101画的是标准正方体。

posted @ 2022-03-08 23:43  只懂得unity的JL  阅读(363)  评论(0)    收藏  举报