gpt4 book ai didi

opengl - 使用 "spherical frustum"进行 3D 投影

转载 作者:行者123 更新时间:2023-12-04 15:58:18 36 4
gpt4 key购买 nike

我目前正在编写从模型空间到剪辑空间的转换,以便在 OpenGL 中使用。据我所知,程序员通常使用传统的矩形截头体来定义模型空间中的裁剪边界。我个人想到了一个像截锥体的形状,除了近平面和远平面是以截锥体(相机)顶点为中心的球体。所以看起来像这样:

Circular sector

黄色区域对应于 OpenGL 的裁剪空间,两个球体(在此横截面图像中描绘为圆圈)对应于 OpenGL 的 z=-1 (内球体)和 z=1 (外球体)。

这是一种更现实的投影建模方式,还是在设计投影矩阵时我应该坚持使用传统的矩形截头体?

最佳答案

不。我不确定你说的完全诚实是什么意思,但无论如何都不是。

  • 你的意思是 View 坐标(通常是视锥体)应该以球体为界?

  • 好吧,在许多(全部?,大多数?)与剪切平面相交的大多边形中,实际上被分解成较小的三角形,否则,外部有一个顶点的单个大多边形将被简单地忽略。这就是剪辑实际涉及的内容。

    还记得当你玩旧游戏并走进物体时,如果你离得太近,它们就会消失吗?如果当多边形的角刚好在 View 之外时,洞的东西就消失了,这不是很糟糕吗?见 this为了澄清。
  • 另一方面,您可能意味着 View 空间应该是
    投影到球体而不是平面上。

  • 屏幕是平坦的,因此 3d 场景中的对象被投影到平坦的表面上,相当于跟踪从对象到相机的光线并找到它与显示器相交的位置。奇怪的“不切实际”的 3d 外观是由于观看者的眼睛 a) 不是点相机和 b) 很少在正确的视场距离处。

    关于opengl - 使用 "spherical frustum"进行 3D 投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740829/

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