gpt4 book ai didi

opengl - 在 OpenGL 中,为什么我们在世界空间中默认位于 (0,0,0)?

转载 作者:行者123 更新时间:2023-12-04 08:25:13 26 4
gpt4 key购买 nike

引用“https://learnopengl.com/Getting-started/Coordinate-Systems”

Next we need to create a view matrix. We want to move slightly backwards in the scene so the object becomes visible (when in world space we're located at the origin (0,0,0)). To move around the scene, think about the following:


这让我很困惑,因为在我了解这些空间的任何概念之前,我可以简单地绘制一个三角形,其中所有顶点的 z 坐标都等于 0,并且我仍然可以看到它(如果我位于 (0,0,0 ),我想看不到)

最佳答案

似乎让许多 OpenGL(或一般的计算机图形学)初学者感到困惑的一个方面是,实际上实际上并没有相机这样的东西。
相机的效果是通过简单的几何变换实现的。透视效果,即在距离中消失的线条是通过所谓的“同质分割”实现的:3D 图形中使用的向量实际上包含 4 个值,第 4 个值通常为 1。这允许将平移和旋转合并为单个 4 ×4 变换矩阵。
它还允许将转换后的 Z 值也映射到第 4 个 W 坐标。
最后一步,实际上是硬连线,转换后的向量的所有坐标都除以 W 元素。因此,如果 Z 值不是 1,则会在 X 和 Y 分量上创建缩放,看起来像消失的线。
为了实现这一点,变换矩阵必须在 W 行 Z 列中具有非零元素,以便在 W 元素中获得 1 以外的值。
默认的恒等变换会将变换后的 W 保持为 1,因此不会发生同质划分。
最后但并非最不重要的是,可见的是剪辑空间体积内的所有内容。通过恒等变换,这就是体积 [-1;1]³

关于opengl - 在 OpenGL 中,为什么我们在世界空间中默认位于 (0,0,0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65299243/

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