投影矩阵
回答
如果屏幕是圆形的,FOV就足够了......但它们是矩形的,所以只有FOV是不够的。 FOV设置为屏幕高度,另一个是FOV乘以屏幕宽度与高度的比率。
m11虽然可以用来缩放宽度方向上的FOV。可以认为m22是在高度方向上缩放FOV的一种方式。
感谢您的快速反应,但规模窗口拟合是当你转移到窗口空间并用这个方程乘以每个x,y时完成的:'xwin =(xndc + 1)* width * 0.5 + x ywin =(yndc + 1)* height * 0.5 + y' – 2012-03-10 18:13:38
no,该代码看起来像是根据屏幕尺寸将位置分量(-1到+1空间,WVP输出WVP考虑后)转换为屏幕位置,并提供平移移位以将原点参考放置在左上角。这与X和Y方向上的FOV差异无关。通常,您刚刚展示的calc在顶点着色器和像素着色器之间的GPU管道中为您完成,因为您的图形设备知道您的视口尺寸。你是否手动确定3D位置的2D屏幕位置? – 2012-03-11 00:34:09
不,我只是想了解“投影矩阵”是如何工作的,当我们理解某些东西时,更容易与之合作。我的问题是为什么我需要缩放x,如果它已经完成,当我们转换到屏幕位置 – 2012-03-11 16:53:31
您可以通过缩放得到的x和y坐标来改变视野:您可以缩放它们,获得更小的视野(放大),然后缩小它们,您将获得更大的视野查看(缩小)。 3D软件中使用的透视投影是直线的,所以如果你的视野足够大,边缘的变形将变得很严重,而且视场不能超过180°。
因为OpenGL和Direct3D中的剪辑坐标从-1运行到1,所以需要纵横比。在水平方向上-1是左侧,1是右侧。垂直方向-1是底部,1是顶部。所以,如果你想让你的方块真的出现一个正方形,你需要用纵横比缩小X坐标。
- 1. 投影矩阵
- 2. 使用MATLAB投影矩阵反投影
- 3. OpenGL中的投影矩阵真的是“投影矩阵”吗?
- 4. 了解libGDX投影矩阵
- 5. 了解投影矩阵
- 6. 非对称投影矩阵
- 7. openGL - 正交投影矩阵
- 8. 矩阵乘法 - 视图/投影,世界/投影等
- 9. GLM - 计算从投影矩阵
- 10. 投影矩阵似乎是错误
- 11. 如何使用透视投影矩阵?
- 12. OpenGL中的透视投影矩阵
- 13. 投影矩阵OpenGL/GLSL问题
- 14. 的OpenGL 3.3投影矩阵错误
- 15. 投影矩阵 - 如何获得它
- 16. 从OpenGL到DirectX的投影矩阵
- 17. OpenGL投影,视图和世界矩阵
- 18. 带阴影的场景的投影矩阵
- 19. 带阴影矩阵的投影,简单测试失败
- 20. 更新摄像头帮助程序投影矩阵(three.js)
- 21. 发现在Collada场景中的投影矩阵
- 22. 了解透视投影矩阵的第三行
- 23. y轴朝向前方的投影矩阵
- 24. 为什么我的正交投影矩阵不起作用?
- 25. 如何正确计算正射投影矩阵?
- 26. OpenGL,投影矩阵 - 盒子的前面更小...?
- 27. 具有非标准投影矩阵的GLSL法线
- 28. 为什么OpenGL投影矩阵不必要地复杂?
- 29. 问题与改变正交投影矩阵
- 30. 用于3D透视投影的剪贴矩阵
投影矩阵图片的链接是这样的:http://medialab.di.unipi.it/web/IUM/Waterloo/img284.gif – 2012-03-10 13:13:54
这个答案可能有帮助吗? http://stackoverflow.com/questions/28286057/trying-to-understand-the-math-behind-the-perspective-matrix-in-webgl/28301213#28301213 – gman 2015-06-25 09:26:41