[0]laya.d3.js里定义的这个投影矩阵不太对吧

已知webgl的投影矩阵跟opengl是等价的:
2021070112561391.png

那么根据opengl相关论文(Oblique View Frustum Depth Projection and Clipping (terathon.com)),可以用矩阵数据反算出视锥体六个面(用Vector4表示,其中xyz表示该平面法线,w表示平面上任一点到原点的向量在平面法线上的投影):
QQ截图20230913144842.png

M1表示矩阵第1行四个数组成的Vector4,以此类推
拿图1的webgl投影矩阵算一下近裁面,验证下图2的正确性:
QQ截图20230913144939.png

正确无误。
 
接下来看laya.d3.js里定义的投影矩阵,它看起来像是把webgl投影矩阵转置了一下:
QQ截图20230913145020.png

那么自然应该可以用第3列+第4列之和计算出近裁面,但我算了下是有问题的:
QQ截图20230913145057.png

可以看到跟webgl的式子比起来,z项分子少了个-n导致n化约不掉,w项少乘了个2
所以很好奇,laya是如何在投影矩阵定义错误的情况下渲染出正确图像的?
已邀请:

phhh

赞同来自:

历史原因跟GL的投影矩阵有差异

要回复问题请先

商务合作
商务合作