使用几何的正交投影被远平面剪裁

Posted

技术标签:

【中文标题】使用几何的正交投影被远平面剪裁【英文标题】:Othographic projection causing geometry to get clipped by the far plane 【发布时间】:2021-05-30 00:09:26 【问题描述】:

假设我有一个矩形,我想将其渲染为与相机的 x 轴成 45 度角。所以它看起来像这样:

(剪裁在底部只是因为它是窗口的边缘)。

当我沿着它的局部 y 方向移动这个矩形时(即在我们围绕 x 轴旋转它之前增加它的顶点上的 y)然后它最终被远平面剪裁:

如何防止这种情况发生?当从视口移开但仍在实际视图中时,矩形应该被完全切断,这似乎不自然。

我确实想以正交方式渲染我的矩形。

我对 OpenGL 很陌生,所以我想我在这里遗漏了一些东西。

【问题讨论】:

@Rabbid76 你能提供更多细节吗?你的意思是把矩形移回它的本地y?整个问题是我想把它放在首位。 @Rabbid76 你的评论好像删了又重新添加了 如果不发布任何代码,您将不会获得任何进一步的详细信息。你的问题不清楚。缺少上下文。但是,如果对象被远平面剪裁,则要么增加与远平面的距离,要么沿视图空间 z 轴移动对象。 @Rabbid76 说得对,但代码很长而且很复杂。我看看我能不能把它剪下来…… @Rabbid76 我希望你的建议只是将东西移到全局 z 轴上,这可能是正确的答案。我只是想知道有关此远平面剪裁的更多信息 【参考方案1】:

原来的诀窍就是压缩顶点着色器中顶点的 z 位置。这样更多的顶点可以容纳在截锥体内。这确实会扭曲网格,但在正交投影中这实际上并没有产生明显的差异(至少在我的情况下)。

即在顶点着色器中执行以下操作:

gl_Position.z *= 0.5; // or whatever scale you want

【讨论】:

以上是关于使用几何的正交投影被远平面剪裁的主要内容,如果未能解决你的问题,请参考以下文章

设置正交投影矩阵?

高等数学-线性代数:正交投影和正交分量

对 SceneKit 中相机的正交投影感到困惑

opengl中的正交投影和纹理坐标

没有 OpenGL 的重复 OpenGL 正交投影行为

左上原点的 OpenTK 正交投影