gpt4 book ai didi

java - 投影矩阵的作用不仅仅是缩放,对吗?

转载 作者:行者123 更新时间:2023-11-30 02:58:40 28 4
gpt4 key购买 nike

据我了解,投影矩阵根据多边形距相机的远近来缩放多边形。尽管我可能完全错了。 我的问题是,投影矩阵如何“知道”显示以下cube的侧面,当相机移动时,矩阵只是假设“缩放”多边形?

请注意,在图像中,通过将相机向左移动,立方体已移至屏幕右侧。如果相机向相反方向(向右)移动以使立方体居中,则立方体的一侧将如预期消失。

这是我的矩阵代码:

private void createProjectionMatrix(){
float aspectRatio = (float) Display.getWidth() / (float) Display.getHeight();
float y_scale = (float) ((1f / Math.tan(Math.toRadians(FOV/2f))) * aspectRatio);
float x_scale = y_scale / aspectRatio;
float frustum_length = FAR_PLANE - NEAR_PLANE;
projectionMatrix = new Matrix4f();
projectionMatrix.m00 = x_scale;
projectionMatrix.m11 = y_scale;
projectionMatrix.m22 = -((FAR_PLANE + NEAR_PLANE) / frustum_length);
projectionMatrix.m23 = -1;
projectionMatrix.m32 = -((2 * NEAR_PLANE * FAR_PLANE) / frustum_length);
projectionMatrix.m33 = 0;
}

最佳答案

投影矩阵的功能(在图形 API 的上下文中,例如 OpenGL)是将顶点位置从 View 空间转换到剪辑空间。

剪辑空间通常是一个单位框(尽管在 D3D 中它是一个半单位框)。如果变换到裁剪空间后的顶点位置不在该单位框中,则它将被裁剪。这本质上就是系统“知道”立方体在屏幕上可见的方式。

关于java - 投影矩阵的作用不仅仅是缩放,对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36505453/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com