在三维场景中为当前相机设置透视投影。
在透视投影中,距离相机更远的形状比距离相机更近的形状看起来更小。这种技术称为透视缩放,可以创建出逼真的三维场景。在 WebGL 模式下,默认情况下会应用这种技术。
perspective()
通过改变相机的视锥来改变相机的透视效果。视锥是相机可见的空间体积。它的形状是一个顶部被截掉的金字塔。相机放置在金字塔的顶部应该在的位置,并查看视锥的顶部(近)平面和底部(远)平面之间的所有内容。
第一个参数 fovy
是相机的垂直视野。它是一个角度,描述相机的视野有多高或多窄。例如,调用 perspective(0.5)
将相机的垂直视野设置为 0.5 弧度。默认情况下,fovy
是根据绘图的高度和相机的默认 z 坐标(800)计算的。默认 fovy
的公式是 2 * atan(height / 2 / 800)
。
第二个参数 aspect
是相机的宽高比。它是一个数字,描述了顶部平面的宽度与其高度的比率。例如,调用 perspective(0.5, 1.5)
将相机的视野设置为 0.5 弧度,宽高比设置为 1.5,这会使形状在正方形画布上看起来更窄。默认情况下,宽高比被设置为 width / height
。
第三个参数 near
是相机到近平面的距离。例如,调用 perspective(0.5, 1.5, 100)
将相机的视野设置为 0.5 弧度,宽高比设置为 1.5,并将近平面放置在相机的 100 像素处。任何距离相机少于 100 像素的形状都不会可见。默认情况下,near 被设置为 0.1 * 800
,这是相机与原点之间默认距离的十分之一。
第四个参数 far
是相机到远平面的距离。例如,调用 perspective(0.5, 1.5, 100, 10000)
将相机的视野设置为 0.5 弧度,宽高比设置为 1.5,将近平面放置在相机的 100 像素处,并将远平面放置在相机的 10,000 像素处。任何距离相机超过 10,000 像素的形状都不会可见。默认情况下,far 被设置为 10 * 800
,这是相机与原点之间的默认距离的十倍。
注意:perspective()
只能在 WebGL 模式下使用。
示例
语法
perspective([fovy], [aspect], [near], [far])
参数
相机视锥体的垂直视场角。默认为 2 * atan(height / 2 / 800)
。
相机的宽高比。默认为 width / height
。
相机到近裁剪平面的距离。默认为 0.1 * 800
。
相机到远裁剪平的距离。默认为 10 * 800
。