3d 对象深度参数影响感知宽度

3d object depth parameter affects perceived width

我在 Rajawali 1.1.777 中使用默认相机创建了一个 RectangularPrism

RectangularPrism p = new RectangularPrism(2f, 2f, xf);

根据 x(深度),Android 屏幕上的感知宽度会有所不同。

那么从 Rajawali/OpenGL 的角度来看,深度参数如何以及为什么会影响屏幕上对象的感知宽度?由于宽度 (2f) 保持不变,棱镜不应该总是以相同的方式填满屏幕吗?

0.1f:

1f:

2f:

回答来自https://github.com/Rajawali/Rajawali/issues/1883

默认相机是透视相机,远处的脸看起来比近处的脸小。默认相机位于 0,0,4 并注视 0,0,0。如果将大小为 2,2,0.5 的 RectangularPrism 放置在 0,0,0 处,则相机与最近的面之间的距离为 3.75。如果将大小为 2,2,2 的 RectangularPrism 放置在 0,0,0 处,则相机与最近的人脸之间的距离仅为 3,因此最近的人脸看起来更大。

如果不需要透视,可以实例化一个 Orthographic Camera 和 getCurrentScene().addAndSwitchCamera(orthographicCamera)。