参考 perspective()

perspective()

为相机设置透视投影。

在透视投影中,距离相机更远的形状比靠近相机的形状看起来更小。这种称为透视缩短的技术创建了逼真的三维场景。在新的 p5.Camera 对象中默认应用此技术。

myCamera.perspective() 通过改变其视锥体来改变相机的透视。视锥体是相机可见的空间体积。视锥体的形状是一个顶部被切掉的金字塔。相机放置在金字塔应该顶部的位置,并朝着金字塔的底部。它查看视锥体内的所有内容。

第一个参数 fovy 是相机的垂直视场角。它是一个描述相机视图有多高或多窄的角度。例如,调用 myCamera.perspective(0.5) 将相机的垂直视场角设置为 0.5 弧度。默认情况下,fovy 根据绘图的高度和相机的默认 z 坐标(即 800)计算。默认 fovy 的公式是 2 * atan(height / 2 / 800)

第二个参数 aspect 是相机的宽高比。它是一个数字,描述顶部平面宽度与高度的比例。例如,调用 myCamera.perspective(0.5, 1.5) 将相机的视场角设置为 0.5 弧度,宽高比设置为 1.5,这会使形状在正方形画布上看起来更细。默认情况下,aspect 设置为 width / height

第三个参数 near 是相机到近平面的距离。例如,调用 myCamera.perspective(0.5, 1.5, 100) 将相机的视场角设置为 0.5 弧度,宽高比设置为 1.5,并将近平面放置在相机 100 像素处。任何距离相机少于 100 像素的形状都不可见。默认情况下,near 设置为 0.1 * 800,即相机与原点之间的默认距离的十分之一。

第四个参数 far 是相机到远平面的距离。例如,调用 myCamera.perspective(0.5, 1.5, 100, 10000) 将相机的视场角设置为 0.5 弧度,宽高比设置为 1.5,将近平面放置在相机 100 像素处,并将远平面放置在相机 10,000 像素处。任何距离相机超过 10,000 像素的形状都不可见。默认情况下,far 设置为 10 * 800,即相机与原点之间的默认距离的十倍。

示例

语法

perspective([fovy], [aspect], [near], [far])

参数

fovy
数字:

相机视锥体的垂直视场角。默认为 2 * atan(height / 2 / 800)

aspect
数字:

相机视锥体的宽高比。默认为 width / height

near
数字:

相机到近裁剪平面的距离。默认为 0.1 * 800

far
数字:

相机到远裁剪平面的距离。默认为 10 * 800

This page is generated from the comments in src/webgl/p5.Camera.js . Please feel free to edit it and submit a pull request!

相关参考