リファレンス perspective()

perspective()

3Dスケッチにおいて、現在のカメラに遠近法投影を設定します。

遠近法投影では、カメラから遠い形状は近い形状よりも小さく見えます。この技術は フォアショートニングと呼ばれ、リアルな3Dシーンを作成します。WebGLモードでは デフォルトで適用されます。

perspective()は、カメラの視錐台を変更することでカメラの遠近法を変更します。 視錐台は、カメラから見える空間の体積です。 その形状は、上部が切り取られたピラミッドです。カメラはピラミッドの 上部があるべき場所に配置され、視錐台の上面(近面)と底面(遠面)の間の すべてを見ることができます。

最初のパラメータfovyは、カメラの垂直視野角です。これは カメラがどれだけ高く、または狭く見えるかを表す角度です。 例えば、perspective(0.5)を呼び出すと、カメラの垂直視野角が 0.5ラジアンに設定されます。デフォルトでは、fovyはスケッチの 高さとカメラのデフォルトのz座標(800)に基づいて計算されます。デフォルトの fovyの計算式は2 * atan(height / 2 / 800)です。

2番目のパラメータaspectは、カメラのアスペクト比です。これは 上面の幅と高さの比率を表す数値です。 例えば、perspective(0.5, 1.5)を呼び出すと、カメラの視野角が 0.5ラジアンに、アスペクト比が1.5に設定され、正方形のキャンバスでは 形状がより細く見えるようになります。デフォルトでは、アスペクト比はwidth / heightに設定されます。

3番目のパラメータnearは、カメラから近面までの距離です。 例えば、perspective(0.5, 1.5, 100)を呼び出すと、カメラの 視野角が0.5ラジアン、アスペクト比が1.5に設定され、近面がカメラから 100ピクセルの位置に配置されます。カメラから100ピクセル未満の距離に描画された 形状は表示されません。デフォルトでは、nearは0.1 * 800に設定されます。 これは、カメラと原点の間のデフォルトの距離の1/10です。

4番目のパラメータfarは、カメラから遠面までの距離です。 例えば、perspective(0.5, 1.5, 100, 10000)を呼び出すと、 カメラの視野角が0.5ラジアン、アスペクト比が1.5に設定され、近面が カメラから100ピクセルの位置に、遠面がカメラから10,000 ピクセルの位置に配置されます。カメラから10,000ピクセル以上離れた場所に描画された 形状は表示されません。デフォルトでは、farは10 * 800に設定されます。 これは、カメラと原点の間のデフォルトの距離の10倍です。

注意:perspective()はWebGLモードでのみ使用できます。

実例

シンタックス

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

パラメーター

fovy
Number:

カメラの視錐台の垂直視野角。デフォルトは 2 * atan(height / 2 / 800)です。

aspect
Number:

カメラの視錐台のアスペクト比。デフォルトは width / heightです。

near
Number:

カメラから近クリッピング平面までの距離。 デフォルトは0.1 * 800です。

far
Number:

カメラから遠クリッピング平面までの距離。 デフォルトは10 * 800です。

Notice any errors or typos? Please let us know. Please feel free to edit src/webgl/p5.Camera.js and open a pull request!

関連するリファレンス