PerspectiveCamera 透视相机

—> Camera —> Object3D

透视投影模式旨在模仿人眼看到的方式, 它是用于渲染3D场景的最常见投影方式。它能把物体呈现出近大远小, 聚焦等效果。透视相机的可拍摄区域由一个frustum 平截头体构成, 类似金字塔被一平行于底面的平面截取一块。构造函数的4个参数分别是fov, aspect, near, far。调节下面演示demo, 可看到物体随参数:视角fov的变换而改变大小, 随frustum的长宽变换而压缩或拉伸, 随近平面near和远平面far的距离改变可能会看不到了。 而且当物体远离焦点时, 形状有所改变, 如下面的左下角的球, 其实是正圆的, 但看起来像椭圆了。

function PerspectiveCamera( fov, aspect, near, far ) { } var camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 10, 10000); camera.lookAt(scene.position); camera.position.set(800, 0, 300);

Attributes

type : String

Default value : 'PerspectiveCamera'
Description : 类型.

isPerspectiveCamera : Boolean

Default value : true (只读)
Description : 类型是否为PerspectiveCamera.

fov : Float

Default value : 50
Description : Field Of View。相机视椎体的视角, 从下到上的夹角. fov越大, 物体被拍摄出来的就越小。

aspect : Float

Default value : 1
Description : 相机视椎体垂直平面的长宽比。

near : Float

Default value : 0.1
Description : 相机视椎体近平面到相机的距离。当物体到相机的距离小于near时, 便不能完全被展示。

far : Float

Default value : 2000
Description : 相机视椎体远平面到相机的距离。取值从近平面near到无穷大。当物体到相机的距离大于far时, 便不能完全被展示。

filmGauge : Float

Default value : 35(毫米)
Description : 用于较大轴的胶片尺寸, 单位毫米。 此参数不会影响投影矩阵, 除非filmOffset设置为非零值。

filmOffset : Float

Default value : 0
Description : 水平方向离心偏移量, 单位毫米。

focus : Float

Default value : 10
Description : 用于立体视觉和景深效果的物距。 此参数不会影响投影矩阵, 除非使用StereoCamera。

view : Object

Default value : null
Description : 视椎体窗口格式。 使用setViewOffset()设置的, 并使用clearViewOffset()清除。

zoom : Number

Default value : 1
Description : 缩放系数。

Methods

clearViewOffset( ) : null

清除视图偏移。

getEffectiveFOV( ) : Float

以zoom来返回当前垂直视角范围, 以度为单位。

getFilmWidth( ) : Float

返回胶片上图像的宽度。 如果aspect≥1(横向格式), 则结果等于filmGauge。

getFilmHeight( ) : Float

返回胶片上图像的高度。 如果aspect≥1(纵向格式), 则结果等于filmGauge。

getFocalLength( ) : Float

返回当前fov相对于filmGauge的焦距。

setFocalLength( focalLength ) : null
focalLength Float 焦距

根据当前filmGauge的焦距来设置fov。

setViewOffset( fullWidth, fullHeight, x, y, width, height ) : null
fullWidth Float 多视图设置的总宽度
fullHeight Float 多视图设置的总高度
x Float 前置摄像头的水平偏移
y Float 前置摄像头的纵向偏移
width Float 前置摄像头的宽度
height Float 前置摄像头的高度

设置较大视椎体的偏移量。 这对于多窗口或多显示器/多机器设置很有用.

updateProjectionMatrix( ) : null

更新相机投影矩阵, 在参数发生变化后必须调用. window.addEventListener( 'resize', onWindowResize, false ); function onWindowResize() { camera.aspect = container.clientWidth / container.clientHeight; camera.updateProjectionMatrix(); renderer.setSize( container.clientWidth, container.clientHeight ); }

图解API