这里就已经出错了。参考 开发者文档:generate_ray 的说明可知,这个函数的参数中,宽、高、横纵坐标都以像素为单位。而我们从来没有指定过一个像素在世界坐标系下是多大,所以这些坐标都是相对于宽度和高度的坐标,不是物理成像平面上的坐标(任何一个坐标系下都不是)。你也不可能用任何方法直接算出 x 和 y 这两个参数对应的 z 值(深度值),因为它们实际上不对应任何 z 值(深度值)。
正确的做法是:
根据深度值 1 和相机的 fov 参数算出归一化成像平面的大小(以及左上角或者中心点)
用 generate_ray 的 x / y 参数算出这个点在成像平面上的相对位置(相对于左上角或中心点都可以)