3d 对象深度参数影响感知宽度
3d object depth parameter affects perceived width
我在 Rajawali 1.1.777 中使用默认相机创建了一个 RectangularPrism
:
RectangularPrism p = new RectangularPrism(2f, 2f, xf);
根据 x(深度),Android 屏幕上的感知宽度会有所不同。
- 如果深度为 2f,则棱镜的宽度会填满屏幕。
- 如果深度为 0.5f 和 1f,则棱镜的宽度不会填满屏幕。
那么从 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)。
我在 Rajawali 1.1.777 中使用默认相机创建了一个 RectangularPrism
:
RectangularPrism p = new RectangularPrism(2f, 2f, xf);
根据 x(深度),Android 屏幕上的感知宽度会有所不同。
- 如果深度为 2f,则棱镜的宽度会填满屏幕。
- 如果深度为 0.5f 和 1f,则棱镜的宽度不会填满屏幕。
那么从 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)。